DoN's 3D Pathfinding for Flying A.I. [Support Thread]

Does the 4.15 version in the Unreal store have the new multi-threading and optimization updates?

Only 4.17 has those.

In general, you can always use the MaxPathSolverIterationsPerTick and related variables to restrict the CPU usage (whether single-threaded or multi) to a fixed amount based on your project’s needs.

Thank you for the answer. I will check it out.

Hi! I want to thank you as well for sharing this with the community. This is incredibly useful and I think you’ve made an outstandingly designed and engineered solution.

I’ve run across one issue so far in playing with it that I figured I should pass along:
In certain circumstances, ADonNavigationManager::GetVoxelCollisionProfileFromMesh() can access bad memory - not yet entirely sure what circumstances cause this, but I believe it may have to do with a flying pawn exiting the flight bounds volume while debug drawing is on for the FlyToTarget node.

Here’s what I’ve got so far:


Exception thrown: read access violation.
**PreferredCache** was 0x5F0. occurred

Occurs here:


// Does the collision cache have an entry for this mesh?    
if (!bDisableCacheUsage && !bReloadCollisionCache && PreferredCache.Contains(MeshId))
{
    bResultIsValid = true;

    return *PreferredCache.Find(MeshId);
}

The relevant bit of the callstack:


>    UE4Editor-DonAINavigation.dll!ADonNavigationManager::GetVoxelCollisionProfileFromMesh(const FDonMeshIdentifier & MeshId, bool & bResultIsValid, TMap<FDonMeshIdentifier,FDonVoxelCollisionProfile,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FDonMeshIdentifier,FDonVoxelCollisionProfile,0> > & PreferredCache, bool bIgnoreMeshOriginOccupancy, bool bDisableCacheUsage, FName CustomCacheIdentifier, bool bReloadCollisionCache, bool bUseCheapBoundsCollision, float BoundsScaleFactor, bool DrawDebug) Line 573    C++
     UE4Editor-DonAINavigation.dll!ADonNavigationManager::Debug_DrawVoxelCollisionProfile(UPrimitiveComponent * MeshOrPrimitive, bool bDrawPersistent, float Duration) Line 1281    C++
     UE4Editor-DonAINavigation.dll!UBTTask_FlyTo::TickPathNavigation(UBehaviorTreeComponent & OwnerComp, FBT_FlyToTarget * MyMemory, float DeltaSeconds) Line 290    C++
     UE4Editor-DonAINavigation.dll!UBTTask_FlyTo::TickTask(UBehaviorTreeComponent & OwnerComp, unsigned char * NodeMemory, float DeltaSeconds) Line 279    C++
     UE4Editor-AIModule.dll!UBTTaskNode::WrappedTickTask(UBehaviorTreeComponent & OwnerComp, unsigned char * NodeMemory, float DeltaSeconds) Line 50    C++
     UE4Editor-AIModule.dll!UBehaviorTreeComponent::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction * ThisTickFunction) Line 1102    C++
     [Inline Frame] UE4Editor-Engine.dll!FActorComponentTickFunction::ExecuteTick::__l2::<lambda_a8128609955b5bb0ccb5da311e0c1d1a>::operator()(float) Line 792    C++

Local variable contents at the time of the exception:


+        this    0x0000000000000000 <NULL>    ADonNavigationManager *
        bDisableCacheUsage    false    bool
        bIgnoreMeshOriginOccupancy    false    bool
        BoundsScaleFactor    1.00000000    float
        bReloadCollisionCache    false    bool
        bResultIsValid    true (102)    bool &
        bUseCheapBoundsCollision    false    bool
+        collisionData    {RelativeVoxelOccupancy=Invalid WorldVoxelsOccupied=Invalid }    FDonVoxelCollisionProfile
+        CustomCacheIdentifier    0x00000208225664d0 "None"    FName
        DrawDebug    false    bool
+        MeshId    {Mesh=0x000002087a5d3580 (Name=0x0000020822990328 "CollisionCylinder") CustomCacheIdentifier=0x00000208225664d0 "None" ...}    const FDonMeshIdentifier &
+        PreferredCache    {...}    TMap<FDonMeshIdentifier,FDonVoxelCollisionProfile,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FDonMeshIdentifier,FDonVoxelCollisionProfile,0> > &

Hope this is useful to you!
Thanks again for sharing this with us!

I’m running into one other issue, and I’m not sure yet what’s causing it:

I’ve set up a simple test map and have a flying pawn pursuing the player. It works fine as long as I’m using a DonNavigationManager object, but if I try replacing it with a DonNavigationManagerUnbound, the pawn runs its AI, and breakpoints set in UBTTask_FlyTo::TickPathNavigation() do get hit, but the pawn never moves. If I pull out the unbound manager and put the bounded manager back, it runs again. I migrated DemoMap into the project and verified that the Unbound manager does work, so I’m guessing there’s something I’ve set up in my pawn or my decision tree that’s making the unbound manager unhappy but not impeding the bounded manager.

Any thoughts on where I should be looking for the culprit?

Thanks so much!

Edit: It appears that the behavior tree was calling FlyTo before a valid destination point had been found. Adding some logic to the behavior tree to keep it from attempting to fly to the target before the target had been identified seems to have helped. (The VisionCheck BTService works fairly similarly to what Asher Einhorn describes in his tutorial here: Creating AI in UE4 Part 2 - Sight - YouTube )

Edit2: Confirmed - the problem was entirely my own. The two fixes were to add the logic described above and to offset the flight destination to a point that didn’t penetrate the target character’s collision. Unbound manager now seems to be working well, even on a very large test map.

Glad to hear it’s solved! For the other issue, the “Preferred Cache” code was added in 4.17 for the multi-threading update. Sounds like there are some edge-cases relating to Debug visualization that haven’t been taken into account yet. As we’re dealing with a direct reference to to simple value types I’m surprised that crash is even possible. If I manage to reproduce it I’ll take a closer look.

Also thanks for the kind words, appreciate it :slight_smile:

** v1.9 Released (4.18)**

The latest version of the plugin tested for 4.18 is here:
Download Link.

A major bugfix for “Dynamic collision updates” in single-threaded mode comes with this version. Most users should be unaffected as multi-threading is used by default and dynamic collision updates aren’t used/required for most projects/usecases.

Marketplace version should be available soon-ish too! :slight_smile:

Hello,

First of all Thanks for creating such a lovely free flying AI plug-in. I have a question regarding using the AI with the Character class.

I need to do root motions for the project I am working on, so I have to use the character class for the AI movement. I downloaded and checked out the examples you had, and it seemed like it’s using a pawn class by default to run the AI. When I tried changing that to Character Class, it is causing problems in the AI behavior. I’ve listed the problems below and wondering if you have any insights on:

  1. I have to set the character to flying mode in order to get it working. However it doesn’t use flying speed to move around. Instead, it uses Max Acceleration and Breaking factor to start and stop.

  2. When the character moves, it weirdly accelerates and then decelerates when it reaches the end point.

Here are my settings for the character class:

[ATTACH=JSON]{“data-align”:“none”,“data-size”:“medium”,“data-tempid”:“temp_129527_1518625293547_237”}[/ATTACH]

Here is my heirarchy setup:

[ATTACH=JSON]{“data-align”:“none”,“data-size”:“medium”,“data-tempid”:“temp_129528_1518625312233_580”}[/ATTACH]

I’ve already included the DON navigator and flying Pawn interface in my class settings.

I am using the normal Fly To Node to move the object around in different places. It would be great if you can give me your insights into solving the problem.

Cheers,
Parth

Hello,
This is great and I’ve got it working awesome, except for one thing; the Flying AI works perfectly whenever I run any map with the FlyingAI in it from the editor by loading it and running it…but when i call a different map load from within a pawn or a trigger, when the new map loads my flying pawns just fly off into the distance, even though they have found their waypoints and locations. it’s very strange because individually each map works perfectly, but when i string them together this weird behavior happens. Im using the unbound navmanager. any suggestions?
thank you!

  • khazum

hiya!

i made a post about a problem im having with the flying AI (unbound) and i emailed your support link on the website but haven’t gotten any reply in almost a week - it works AWESOME if i load my game level map, and i can switch back and forth to a menu level and back to my original game level, but if I start with the menu and load my game level the AI doesn’t work. or, if i load a different level map with the AI on it then it doesnt work either. i made a short unlisted youtube video showing whats happening, i’m really hoping you have any help or suggestions because i’m kind of stuck with one-level…

thank you very much
khazum

@tailedmouse
Locomotion support is beyond the purview of this plugin so you’ll need to figure out what movement attributes are needed on your pawn/character for it to move as desired. The plugin solves a requested path and routes the solution to your pawn (via the Fly To node’s AddMovementInput call) for you to implement any requisite locomotion functionality. The demo project’s Pawn locomotion is only an example which should be adapted/extended for your pawn/character/etc.

@**khazum **
You mentioned the waypoints/locations have been found correctly so it sounds like pathfinding is working. To understand why the bots are flying off into the distance you’ll need to debug the locomotion code of your pawn (start with AddMovementInput) and figure out whether the distant location they’re flying off to is constant (eg: World Origin/etc) or if there is some other pattern here sheds light on the root cause.

As this issue hasn’t been reported before it is difficult to diagnose it going by just the description/video. Ultimately you’ll need to add breakpoints at various places in the code (eg: your pawn’s AddMovementInput, the plugin’s FlyTo node’s TickTask, etc) and debug this in Visual Studio line by line. Due to variations in project setup, the way the levels may be loaded (linear/async/streaming) direct debugging is the quickest way to solve issues like this.

Heya,

thanks, you put me on the right track but it was really weird…i am not using any addmovementinput (just the AI flyto) so after disconnecting EVERYTHING (the behavior trees, the pawn tick…i mean EVERYTHING) it was still doing the zooming away thing…so i simply removed the flyingpawnmovement component from my pawn and put a new one in and now it’s working. i have no idea why or how that fixed it but it did, so thank you! whew!

this plugin ROCKS!

thx much!
-khazum

4.19 Update & Multi-threading Rewrite

Download: DonAINavigation_4.19.zip

Multi-threading Robustness Improved
The previous multi-threading code had issues with high-frequency usecases that could result in pawns getting stuck.

Mutli-threading has now been completely rewritten to ensure sequence-integrity of new-request/abort-request tasks by using a unified TQueue. This has dramatically improved the reliability of flying creatures in my game and eliminated all multi-threading issues related with creatures getting stuck in mid-air/etc.

Any usecase which generates multiple “new/abort/new/abort” pathfinding requests per second (think of Dragonflies chasing bees!) will benefit immensely from this update.

~

Marketplace version has been submitted and should be approved soon.

There is probably something incredibly basic that I’m missing, but when using “Find Random Point From Actor in Nav World” my AI will often pick a location beneath the landscape and end up timing out. How do I stop this from happening? I’m using world composition, streaming levels, and the unbound nav manager, if that matters.

Edit: After further testing, it appears that the “is location under landscape” node isn’t seeing my terrain when it does the line trace. Not sure why. It’s just regular steaming terrain that I imported from a World Machine heightmap.

Is there a method of accessing the raw path solution as an array of vectors via blueprint? The only node that I can find which exposes it is the stress testing one, and that node doesn’t seem to output the correct path. (it’s only 2 points). Thank you so much.

Thanks for this info - was able to get the plugin to re-create the path when my goal actor (which moves) goes a certain distance away from the goal key of the AI bot.

great job with the plugin. :slight_smile:

I’ve got an issue, when i put fly to on the behaviour tree it crashes, but if i put some navmesh on the map. doesn’t crash but doesnt run tick events. also i’ve got this on the output

LogStats: Warning: MetaData mismatch. Did you assign a stat to two groups? New //STATGROUP_Threads//DonNavigationWorker///Thread_3548_0///####STATCAT_Advanced#### old //STATGROUP_Threads//DonNavigationWorker///Thread_808_0///####STATCAT_Advanced####

what’s the issue? :confused:

hope that you are able to update the plugin to 4.20 whenever you have time. running into an issue with compatibility from the code plugin source.

I am getting errors when trying to compile the 4.19 version with a source build of UE4 4.19.2:


2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(21): error C2504: 'FRunnable': base class undefined
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(22): error C2143: syntax error: missing ';' before '*'
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(22): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(22): error C2238: unexpected token(s) preceding ';'
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(26): error C3646: 'StopTaskCounter': unknown override specifier
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(26): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(30): error C2061: syntax error: identifier 'int32'
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(35): error C3646: 'Run': unknown override specifier
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(35): error C2059: syntax error: ')'
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(35): error C2238: unexpected token(s) preceding ';'
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(45): error C3646: 'MaxPathSolverIterations': unknown override specifier
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(45): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(46): error C3646: 'MaxCollisionSolverIterations': unknown override specifier
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\Multithreading/DonNavigationWorker.h(46): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(19): error C2079: 'FDrawDebugLineRequest::LineStart' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(20): error C2079: 'FDrawDebugLineRequest::LineEnd' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(21): error C2079: 'FDrawDebugLineRequest::Color' uses undefined struct 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(31): error C2027: use of undefined type 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(31): error C2439: 'FDrawDebugLineRequest::LineStart': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(19): note: see declaration of 'FDrawDebugLineRequest::LineStart'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(31): error C2439: 'FDrawDebugLineRequest::LineEnd': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(20): note: see declaration of 'FDrawDebugLineRequest::LineEnd'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(31): error C2027: use of undefined type 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(31): error C2439: 'FDrawDebugLineRequest::Color': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(21): note: see declaration of 'FDrawDebugLineRequest::Color'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(38): error C2079: 'FDrawDebugPointRequest::PointLocation' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(40): error C2079: 'FDrawDebugPointRequest::Color' uses undefined struct 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(48): error C2027: use of undefined type 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(48): error C2439: 'FDrawDebugPointRequest::PointLocation': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(38): note: see declaration of 'FDrawDebugPointRequest::PointLocation'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(48): error C2027: use of undefined type 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(48): error C2439: 'FDrawDebugPointRequest::Color': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(40): note: see declaration of 'FDrawDebugPointRequest::Color'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(55): error C2079: 'FDrawDebugVoxelRequest::Center' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(56): error C2079: 'FDrawDebugVoxelRequest::Box' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(57): error C2079: 'FDrawDebugVoxelRequest::Color' uses undefined struct 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(67): error C2027: use of undefined type 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(67): error C2439: 'FDrawDebugVoxelRequest::Center': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(55): note: see declaration of 'FDrawDebugVoxelRequest::Center'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(67): error C2439: 'FDrawDebugVoxelRequest::Box': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(56): note: see declaration of 'FDrawDebugVoxelRequest::Box'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(67): error C2027: use of undefined type 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(67): error C2439: 'FDrawDebugVoxelRequest::Color': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(57): note: see declaration of 'FDrawDebugVoxelRequest::Color'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(74): error C2079: 'FDrawDebugSphereRequest::Center' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(77): error C2079: 'FDrawDebugSphereRequest::Color' uses undefined struct 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(85): error C2027: use of undefined type 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(85): error C2439: 'FDrawDebugSphereRequest::Center': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(74): note: see declaration of 'FDrawDebugSphereRequest::Center'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(85): error C2027: use of undefined type 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(85): error C2439: 'FDrawDebugSphereRequest::Color': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(77): note: see declaration of 'FDrawDebugSphereRequest::Color'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(19): error C2079: 'FDrawDebugLineRequest::LineStart' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(20): error C2079: 'FDrawDebugLineRequest::LineEnd' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(21): error C2079: 'FDrawDebugLineRequest::Color' uses undefined struct 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(31): error C2027: use of undefined type 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(31): error C2439: 'FDrawDebugLineRequest::LineStart': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(19): note: see declaration of 'FDrawDebugLineRequest::LineStart'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(31): error C2439: 'FDrawDebugLineRequest::LineEnd': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(20): note: see declaration of 'FDrawDebugLineRequest::LineEnd'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(31): error C2027: use of undefined type 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(31): error C2439: 'FDrawDebugLineRequest::Color': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(21): note: see declaration of 'FDrawDebugLineRequest::Color'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(38): error C2079: 'FDrawDebugPointRequest::PointLocation' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(40): error C2079: 'FDrawDebugPointRequest::Color' uses undefined struct 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(48): error C2027: use of undefined type 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(48): error C2439: 'FDrawDebugPointRequest::PointLocation': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(38): note: see declaration of 'FDrawDebugPointRequest::PointLocation'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(48): error C2027: use of undefined type 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(48): error C2439: 'FDrawDebugPointRequest::Color': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(40): note: see declaration of 'FDrawDebugPointRequest::Color'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(55): error C2079: 'FDrawDebugVoxelRequest::Center' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(56): error C2079: 'FDrawDebugVoxelRequest::Box' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(57): error C2079: 'FDrawDebugVoxelRequest::Color' uses undefined struct 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(67): error C2027: use of undefined type 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(67): error C2439: 'FDrawDebugVoxelRequest::Center': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(55): note: see declaration of 'FDrawDebugVoxelRequest::Center'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(67): error C2439: 'FDrawDebugVoxelRequest::Box': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(56): note: see declaration of 'FDrawDebugVoxelRequest::Box'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(67): error C2027: use of undefined type 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(67): error C2439: 'FDrawDebugVoxelRequest::Color': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(57): note: see declaration of 'FDrawDebugVoxelRequest::Color'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(74): error C2079: 'FDrawDebugSphereRequest::Center' uses undefined struct 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(77): error C2079: 'FDrawDebugSphereRequest::Color' uses undefined struct 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(85): error C2027: use of undefined type 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(29): note: see declaration of 'FVector'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(85): error C2439: 'FDrawDebugSphereRequest::Center': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(74): note: see declaration of 'FDrawDebugSphereRequest::Center'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(85): error C2027: use of undefined type 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>  C:\Dev\UE4\4.19.2\Engine\Source\Runtime\Core\Public\CoreFwd.h(22): note: see declaration of 'FColor'
2>c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(85): error C2439: 'FDrawDebugSphereRequest::Color': member could not be initialized
2>  c:\dev\ascentroid\plugins\donainavigation\source\donainavigation\classes\Multithreading/DonDrawDebugThreadSafe.h(77): note: see declaration of 'FDrawDebugSphereRequest::Color'
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\DonNavigatorInterface.h(21): error C2504: 'UInterface': base class undefined
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\DonNavigatorInterface.h(22): error C3646: 'Super': unknown override specifier
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\DonNavigatorInterface.h(22): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
2>C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\DonNavigatorInterface.h(22): error C2440: 'return': cannot convert from 'UDonNavigator *' to 'UObject *'
2>  C:\Dev\Ascentroid\Plugins\DonAINavigation\Source\DonAINavigation\Classes\DonNavigatorInterface.h(22): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

I deleted ‘Binaries’, ‘DerivedDataCache’, ‘Intermediate’ and ‘Saved’ folders, and deleted the *.sln file. I pointed my Ascentroid.uproject file to the new source build path. I built UE4 from source. Then, my project was cleaned and rebuilt as well (and the DoN plugin compilation fails per logs above).

The 4.19 version of the plugin was placed in:
[project]\Plugins\DonAINavigation\

My Ascentroid.build.cs:


PrivateDependencyModuleNames.Add("DonAINavigation");
PrivateIncludePathModuleNames.Add("DonAINavigation");
PublicIncludePaths.AddRange(new string] { "DonAINavigation/Public", "DonAINavigation/Classes" });

It almost looks like UE4 can’t see the engine “Core” dependency for the plugin? It’s strange. I see “Core” defined in DonAINavigation.Build.cs.

Any ideas on what I missed? I’ve been banging my head against a wall for days now.

Thanks!

I nuked everything and started over. It worked. Something must have gotten corrupt along the way in the first attempt.