Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 Sometime VA do not recognize symbols in UE
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

ThomasR
New Member

France
7 Posts

Posted - Jul 05 2021 :  10:45:02 AM  Show Profile  Reply with Quote
Hello,
Our team is having many issues with VA and UE 4.26, it started maybe at least a year ago but we were too lazy to ask, thinking it would be fixed in a coming patch... But well it became nearly unusable.
So here's an example
I have a function with a struct parameter of type FFloatRange and "Go To Definition" is disabled on it (VA stopped parsing everything a while ago).



If I open the "Find Symbols" dialog I see that VA knows it.



When I check the VA log the file has been parsed.



I also have some log each time I try to go to definition with "Alt+G"


-PooledThread: FsisLoader
 (92953 t)
OnSetAggregate	 0000001A 00000000 23C8A458
 (15 t)
OnSetViewFocus e	 272A9828 00000000 23C8A458
EdSFo: 00000000
+PooledThread: CheckResUpdate
OnSetViewFocus l	 272A9828 8A2A8EB0 23C8A458
-PooledThread: CheckResUpdate
PooledThreadProc VAX:CheckResUpdate exit tid 0x2c8c in 0 ticks
OnSetAggregate	 0000001A 8A2A8EB0 23C8A458
EdTmr:122
 (63 t)
CheckForSaveAsOrRecycling
EdTmr:146
 (15 t)
EdTmr:9333
 (32 t)
CheckForSaveAsOrRecycling
+PooledThread: ParseThrdFn-MPGetScopeCls
PooledThreadProc VAX:ParseThrdFn-MPGetScopeCls exit tid 0x2c8c in 0 ticks
-PooledThread: ParseThrdFn-MPGetScopeCls
EdTmr:9339
 (93 t)
EdTmr:139
 (63 t)
EdTmr:131
 (234 t)
SetStatusInfo
VaEventWCE Wpw::Wp actV=8A2A8EB0 hwnd=0x6d0746 msg=0x104 wp=0x12 lp=0x20380001
 (532 t)
EdOSKD:
VaS::Exec 2 158
 (203 t)
Ed::Exec 158
GotoDefX
GotoDef1
GotoDef4
GotoDef6
GotoDef6
GotoDef6
VaEventED Navigate  ln=0, sym='', SCHelpers.h
 (1015 t)
DFileOpen: h:\unrealengine\Engine\Plugins\Sloclap\SCCore\Source\SCCore\Public\Helpers\SCHelpers.h (0) dte(1)
DFileOpen: f(23C8A458) c(91166EC8) p(91166EC8)
VaEventWCE Wpw::Wp actV=8A2A8EB0 hwnd=0x6d0746 msg=0x105 wp=0x47 lp=0xe0220001
 (16 t)
VaEventWCE Wpw::Wp actV=8A2A8EB0 hwnd=0x6d0746 msg=0x101 wp=0x12 lp=0xc0380001
VaEventUE  OnKeyUp '', key=0x12, flags=c038, pos=0x60048024
VACS::PE  0x12, 0x101
VaEventLB ucp p2(00000c62)
VaEventLB sie p1(00000c5f) p2(00000c62) '' 'FFl'
VaEventWCE Wpw::Wp actV=8A2A8EB0 hwnd=0x6d0746 msg=0x104 wp=0x12 lp=0x20380001
EdOSKD:
VaEventLB sie p1(ffffffff) p2(ffffffff) 'FFl' ''
EdTmr:102
EdTmr:609
EdTmr:131
 (62 t)
SetStatusInfo
OnKillAggregate e	 0000001A 8A2A8EB0 23C8A458
 (32 t)
OnKillAggregate l	 00000000 8A2A8EB0 23C8A458
OnKillViewFocus e	 272A9828 8A2A8EB0 23C8A458
OnSetViewFocus e	 00000000 8A2A8EB0 23C8A458
OnSetViewFocus l	 00000000 00000000 23C8A458
EdTmr:7
 (15 t)
EdSFo: 00000000
+PooledThread: CheckResUpdate
-PooledThread: CheckResUpdate
PooledThreadProc VAX:CheckResUpdate exit tid 0x2c8c in 0 ticks
OnSetAggregate	 0000001A 00000000 23C8A458
OnSetViewFocus e	 272A9828 00000000 23C8A458
EdSFo: 00000000
+PooledThread: CheckResUpdate
 (16 t)
OnSetViewFocus l	 272A9828 8A2A8EB0 23C8A458
-PooledThread: CheckResUpdate
PooledThreadProc VAX:CheckResUpdate exit tid 0x2c8c in 0 ticks
OnSetAggregate	 0000001A 8A2A8EB0 23C8A458
EdTmr:144
EdTmr:151
 (31 t)
+PooledThread: ParseThrdFn-MPGetScopeCls
PooledThreadProc VAX:ParseThrdFn-MPGetScopeCls exit tid 0x2c8c in 0 ticks
-PooledThread: ParseThrdFn-MPGetScopeCls
SetStatusInfo
EdTmr:122
 (31 t)
CheckForSaveAsOrRecycling
EdTmr:146
 (16 t)
EdTmr:9333
 (31 t)
CheckForSaveAsOrRecycling
+PooledThread: ParseThrdFn-MPGetScopeCls
PooledThreadProc VAX:ParseThrdFn-MPGetScopeCls exit tid 0x2c8c in 0 ticks
-PooledThread: ParseThrdFn-MPGetScopeCls
EdTmr:9339
 (94 t)
EdTmr:139
 (63 t)
EdTmr:610
 (109 t)
EdTmr:131
 (125 t)
SetStatusInfo
VaEventWCE Wpw::Wp actV=8A2A8EB0 hwnd=0x6d0746 msg=0x101 wp=0x9 lp=0xc00f0001
 (32016 t)
VaEventUE  OnKeyUp '	', key=0x9, flags=c00f, pos=0x60048024
VACS::PE  0x9, 0x101
VaEventLB ucp p2(00000c62)
VaEventLB sie p1(00000c5f) p2(00000c62) '' 'FFl'
EdTmr:131
 (62 t)
SetStatusInfo
EdTmr:144
 (47 t)
EdTmr:102
 (78 t)
EdTmr:610
 (313 t)
VaEventWCE Wpw::Wp actV=8A2A8EB0 hwnd=0x6d0746 msg=0x104 wp=0x12 lp=0x20380001
 (453 t)
EdOSKD:
VaEventLB sie p1(ffffffff) p2(ffffffff) 'FFl' ''
EdTmr:102
OnKillAggregate e	 0000001A 8A2A8EB0 23C8A458
 (250 t)
OnKillAggregate l	 00000000 8A2A8EB0 23C8A458
OnKillViewFocus e	 272A9828 8A2A8EB0 23C8A458
OnSetViewFocus e	 00000000 8A2A8EB0 23C8A458
OnSetViewFocus l	 00000000 00000000 23C8A458
EdTmr:609
 (47 t)


It's just an example, we're having this issue most of the time with almost everything. Rebuilding the database might fix the problem for this symbol, but then fail on some others. It's quite inconsistent and hard to present a clear repro.

Any help would be really appreciated

ThomasR
New Member

France
7 Posts

Posted - Jul 05 2021 :  11:06:28 AM  Show Profile  Reply with Quote
Another easier example (FFloatRange is declared by a macro so it can be tricky)

I have this simple property declaration

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Inputs, meta = (DisplayName = "Behaviour struct"))
FInputBehaviourStruct m_BehaviourStruct;


Using this simple struct


USTRUCT(BlueprintType)
struct XXX_API FInputBehaviourStruct
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Inputs, meta = (DisplayName = "Behavior"))
	InputBehavior m_behavior = InputBehavior::JustPressed;
...


In this case the find symbols windows don't show any result at all. Also in the va.log I see this, is it related ?


-PooledThread: ProjectLoader
PooledThreadProc VAX:ProjectLoader exit tid 0x4b8c in 120797 ticks
TimeThreshold SwapExt H:\UnrealEngine\XXX\Source\XXX\Inputs\Conditions\InputData.h 2328 ticks



I had this log when pressing "Alt+G"


OnKillAggregate e	 00000002 23A0F590 23C8A458
 (78 t)
OnKillAggregate l	 00000000 23A0F590 23C8A458
OnKillViewFocus e	 3AD25968 23A0F590 23C8A458
OnSetViewFocus e	 00000000 23A0F590 23C8A458
OnSetViewFocus l	 00000000 00000000 23C8A458
OnSetAggregate	 00000002 00000000 23C8A458
 (8954 t)
OnSetViewFocus e	 3AD25968 00000000 23C8A458
EdSFo: 00000000
+PooledThread: CheckResUpdate
OnSetViewFocus l	 3AD25968 23A0F590 23C8A458
-PooledThread: CheckResUpdate
PooledThreadProc VAX:CheckResUpdate exit tid 0x2c8c in 0 ticks
OnSetAggregate	 00000002 23A0F590 23C8A458
VaEventWCE Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x101 wp=0x9 lp=0xc00f0001
 (15 t)
VaEventUE  OnKeyUp '	', key=0x9, flags=c00f, pos=0x60017013
VACS::PE  0x9, 0x101
VaEventLB ucp p2(00000290)
VaEventLB sie p1(0000027f) p2(00000290) '' 'FInputBehaviourSt'
EdTmr:122
 (47 t)
CheckForSaveAsOrRecycling
EdTmr:146
 (16 t)
EdTmr:131
SetStatusInfo
EdTmr:9333
 (31 t)
CheckForSaveAsOrRecycling
+PooledThread: ParseThrdFn-MPGetScopeCls
PooledThreadProc VAX:ParseThrdFn-MPGetScopeCls exit tid 0x2c8c in 0 ticks
-PooledThread: ParseThrdFn-MPGetScopeCls
EdTmr:144
 (16 t)
EdTmr:9339
 (78 t)
EdTmr:610
 (312 t)
VaEventME Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x201 wp=0x1 lp=0x1da00bf
 (891 t)
VaEventWCE Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x201 wp=0x1 lp=0x1da00bf
VaEventWCE a
VaEventME Ed::wp hwnd=0x20bce msg=0x201 wp=0x1 lp=0x1da00bf
VaEventUE OnLButtonDown  key=0x1
VaEventLB sie p1(ffffffff) p2(ffffffff) 'FInputBehaviourSt' ''
VaEventME Mpredwp msg=0x201 wp=0x1 lp=0x1da00bf
VaEventME Mpostdwp msg=0x201 wp=0x1 lp=0x1da00bf
VaEventME Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x202 wp=0x0 lp=0x1da00bf
 (62 t)
VaEventWCE Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x202 wp=0x0 lp=0x1da00bf
VaEventME Ed::wp hwnd=0x20bce msg=0x202 wp=0x0 lp=0x1da00bf
VaEventUE  OnLButtonUp  key=0x0
VaEventME Ed::Dwp hwnd=0x20bce msg=0x202 wp=0x0 lp=0x1da00bf
VaEventME Wpw::Wpwp hwnd=0x6d0746 msg=0x202 wp=0x0 lp=0x1da00bf
VaEventME Mpredwp msg=0x202 wp=0x0 lp=0x1da00bf
VaEventME Mpostdwp msg=0x202 wp=0x0 lp=0x1da00bf
EdTmr:141
 (47 t)
SetStatusInfo
VaEventME Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x201 wp=0x1 lp=0x1da00bf
 (31 t)
VaEventWCE Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x201 wp=0x1 lp=0x1da00bf
VaEventWCE a
VaEventME Ed::wp hwnd=0x20bce msg=0x201 wp=0x1 lp=0x1da00bf
VaEventUE OnLButtonDown  key=0x1
VaEventME Mpredwp msg=0x201 wp=0x1 lp=0x1da00bf
VaEventME Mpostdwp msg=0x201 wp=0x1 lp=0x1da00bf
VaEventME Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x202 wp=0x0 lp=0x1da00bf
 (94 t)
VaEventWCE Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x202 wp=0x0 lp=0x1da00bf
VaEventME Ed::wp hwnd=0x20bce msg=0x202 wp=0x0 lp=0x1da00bf
VaEventUE  OnLButtonUp  key=0x0
VaEventME Ed::Dwp hwnd=0x20bce msg=0x202 wp=0x0 lp=0x1da00bf
VaEventME Wpw::Wpwp hwnd=0x6d0746 msg=0x202 wp=0x0 lp=0x1da00bf
VaEventME Mpredwp msg=0x202 wp=0x0 lp=0x1da00bf
 (16 t)
VaEventME Mpostdwp msg=0x202 wp=0x0 lp=0x1da00bf
EdTmr:141
SetStatusInfo
VaEventWCE Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x104 wp=0x12 lp=0x20380001
 (172 t)
EdOSKD:
VaS::Exec 2 158
 (234 t)
Ed::Exec 158
GotoDefX
GotoDef1
GotoDef4
GotoDef7
VaEventED Navigate  ln=0, sym='', InputData.h
DFileOpen: []\Inputs\Conditions\InputData.h (0) dte(1)
DFileOpen: f(23C8A458) c(17D89130) p(17D89130)
EdTmr:102
 (16 t)
EdTmr:7
 (93 t)
EdSFo: 17D89130
+PooledThread: CheckResUpdate
-PooledThread: CheckResUpdate
PooledThreadProc VAX:CheckResUpdate exit tid 0x2c8c in 0 ticks
VaEventWCE Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x105 wp=0x47 lp=0xe0220001
 (16 t)
EdTmr:151
 (31 t)
+PooledThread: ParseThrdFn-MPGetScopeCls
PooledThreadProc VAX:ParseThrdFn-MPGetScopeCls exit tid 0x2c8c in 0 ticks
-PooledThread: ParseThrdFn-MPGetScopeCls
SetStatusInfo
EdTmr:122
 (16 t)
CheckForSaveAsOrRecycling
EdTmr:146
 (16 t)
EdTmr:9333
 (31 t)
CheckForSaveAsOrRecycling
VaEventWCE Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x101 wp=0x12 lp=0xc0380001
VaEventUE  OnKeyUp '', key=0x12, flags=c038, pos=0x60017017
VACS::PE  0x12, 0x101
VaEventLB ucp p2(00000294)
VaEventLB sie p1(0000027f) p2(00000294) '' 'FInputBehaviourStruct'
EdTmr:131
 (62 t)
SetStatusInfo
EdTmr:9339
 (32 t)
EdTmr:144
 (15 t)
EdTmr:610
 (391 t)
EdTmr:9333
 (500 t)
CheckForSaveAsOrRecycling
VaEventWCE Wpw::Wp actV=23A0F590 hwnd=0x6d0746 msg=0x104 wp=0x12 lp=0x20380001
 (390 t)
EdOSKD:
VaEventLB sie p1(ffffffff) p2(ffffffff) 'FInputBehaviourStruct' ''
OnKillAggregate e	 00000002 23A0F590 23C8A458
 (79 t)
OnKillAggregate l	 00000000 23A0F590 23C8A458
OnKillViewFocus e	 3AD25968 23A0F590 23C8A458
OnSetViewFocus e	 00000000 23A0F590 23C8A458
OnSetViewFocus l	 00000000 00000000 23C8A458
EdTmr:102
 (187 t)
EdTmr:609
 (297 t)
EdTmr:9333
 (47 t)
CheckForSaveAsOrRecycling

Edited by - ThomasR on Jul 05 2021 11:11:40 AM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17436 Posts

Posted - Jul 06 2021 :  08:13:23 AM  Show Profile  Reply with Quote
As a first step, in your screen shot, the type "FFloatRange" is not being shown in italics, but the macro UFUNCTION is.

There is a known limitation in VA, that it wont correctly pick up the Unreal Engine directory tree if it installed outside of C:\Program Files\"

case=105950

to work around this problem can you please create a junction point link to point at the installed engine. So:

Create the directory C:\Program Files\Epic Games
Open a command prompt inside this directory, running as administrator, and run the command:

mklink /J UE_4.26 "H:\unrealengine"

Where the second path is the directory where you have installed / placed Unreal Engine. This will create a directory link inside the Windows file system, so while Unreal Engine will appear to exist inside this Program Files sub-directory, is still where it was originally installed.

Now make sure all instances of the IDE are closed, and then go into the directory that holds your game solution. From here you should find in the following files:

Intermediate\ProjectFiles\UE4.vcxproj
Intermediate\ProjectFiles\UE4.vcxproj.filters

Open both files in a text editor, and do a search and replace for the old Unreal Engine path to the new Unreal Engine path, so in this case search

"H:\unrealengine\"

And turn all instances into:

"C:\Program Files\Epic Games\UE_4.26\"

Save the changes and now reload the IDE and your solution.

To avoid having to do this again, if you run the Unreal Engine editor, or Unreal Engine script files via the junction point path then when they update the Visual Studio solution and project files Unreal Engine will use this junction path, rather than the actual physical path that the engine is installed into. So running:

C:\Program Files\Epic Games\UE_4.26\Engine\Binaries\Win64\UE4Editor.exe

This may not fix all of your problems with VA and Unreal Engine, but it should certainly help with some of them, hopefully most of them.

We have made various changes and fixes to VA to better understand and support Unreal Engine, but they don't take full effect unless VA properly picks up that you are working with Unreal Engine.

zen is the art of being at one with the two'ness
Go to Top of Page

ThomasR
New Member

France
7 Posts

Posted - Jul 07 2021 :  04:44:44 AM  Show Profile  Reply with Quote
Thanks a lot! I'll try this when I can
Go to Top of Page

msew
Ketchup Master

91 Posts

Posted - Jul 08 2021 :  5:25:21 PM  Show Profile  Reply with Quote
This all seems pretty crazy to have to do. :-)

Can't you just go to: 'Visual Assist Options' and then under 'Unreal Engine' 'Enable Support for Unreal Engine (UE4)' Choose 'Always'

And that will obviate the need for doing all of the above?


Also, I have like 7 different versions/locations of Unreal Engine that are being used. Different streams and different versions of the engine for different products. Having to manage junction points between restarts/crashes of Visual Studio to make certain it is pointing to the correct directory seems untenable.

The bool will just work correct?


Edited by - msew on Jul 08 2021 5:26:34 PM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17436 Posts

Posted - Jul 09 2021 :  06:23:56 AM  Show Profile  Reply with Quote
It depends on the specifics of your situation. If the Unreal Engine source code is located under:

C:\Program Files
then everything should just work. If some, or all of the versions are outside of this directory tree then this will stop VA showing Unreal Engine symbols in italics, but I am not sure how well everything else will work. It also depends on your version(s) of Unreal Engine, since recent versions add a flag to the solution file, so VA knows that the solution uses Unreal Engine, for those cases when it isn't clear that this is the case.

zen is the art of being at one with the two'ness
Go to Top of Page

ThomasR
New Member

France
7 Posts

Posted - Jul 09 2021 :  06:33:05 AM  Show Profile  Reply with Quote
Is it possible to manualy add the flag instead of doing the find and replace/junction point solution ?
When was this flag added ? We're using UE's latest version
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17436 Posts

Posted - Jul 09 2021 :  10:33:20 AM  Show Profile  Reply with Quote
The flag is used to tell VA that the solution uses Unreal Engine. Without the flag VA looks for solutions containing a project called something like "UE4", which works most of the time, but it can fail.

Unfortunately knowing that a solution contains Unreal Engine isn't enough to work around the bug where UE symbols are not shown in italics when the engine is installed outside of Program Files, so the flag on its own isn't going to help much. The VA check was added in January 2021, so I would assume that any version of Unreal Engine from the last few months would set this flag when the solution is created / updated.

What problems, specifically, are you seeing with Unreal Engine?

zen is the art of being at one with the two'ness
Go to Top of Page

ThomasR
New Member

France
7 Posts

Posted - Jul 09 2021 :  2:40:41 PM  Show Profile  Reply with Quote
Well this seems to fix our issues thanks a lot for your help!
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17436 Posts

Posted - Jul 12 2021 :  06:14:19 AM  Show Profile  Reply with Quote
Thank you for the update, and I am glad that this has helped, and things are working better for you now

Please do let me know if you run into any more problems with Unreal Engine, it is complex, so I don't want to assume that we are handling everything perfectly.

zen is the art of being at one with the two'ness
Go to Top of Page

ThomasR
New Member

France
7 Posts

Posted - Jul 13 2021 :  10:07:02 AM  Show Profile  Reply with Quote
Sadly this is still an issue for us, as we moved the project to H:/ to avoid the path size limitation (260 char) while cooking the project.
Is there any plans to fix this ? Meanwhile what exactly is the constraint ?
For example would "C:/Program Files/Project" be a valid path ?
Anyway it's a real pleasure for us to see VA working after all this time !
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17436 Posts

Posted - Jul 13 2021 :  12:50:51 PM  Show Profile  Reply with Quote
We are looking to fix this, it is down as a high priority bug, but I don't currently have an estimate for when it will be fixed.

Any path under "C:/Program Files/" is fine, and you can do this with the junction point, which works across drive letters just fine in all of my tests.

zen is the art of being at one with the two'ness
Go to Top of Page

ThomasR
New Member

France
7 Posts

Posted - Jul 13 2021 :  12:53:44 PM  Show Profile  Reply with Quote
Great! This should do the trick. Thanks again for your help!
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2021 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000