Giter Club home page Giter Club logo

donainavigation's Introduction

============================================= DoN AI Navigation Plugin for Unreal Engine 4

This plugin provides a 3D dynamic pathfinding system for use with Unreal Engine 4. This system was first developed for my game DoN The Nature Game and I decided to make a plugin out of the navigation module as a gift to the Unreal community.

It's primarly designed for Flying AI creatures based in dynamic or procedural worlds that need to solve complex pathfinding tasks and other behavior that cannot be readily solved by Unreal's native AI navigation system and also for maps that are too complex to be solved by simple ray-tracing/sweeping heuristics or by waypoint systems.

Where possible, I recommend that you use Unreal's native AI navigation or simpler navigation strategies; use this system when the more conventional strategies cannot solve your pathfinding usecases.

The plugin provides the following:

  • Navigation Manager actor for configuring the system
  • "Fly To" behavior tree node that can be readily dropped into your behavior trees
  • Nodes for managing dynamic collision and pathfinding in your scene.
  • A pathfinding API that advanced users can use for custom navigation queries from either Blueprints or C++

============================================= Download Sample Project

I've created a sample project for you to quickly test the system and understand the different usecases it covers.

Please visit the following page to grab it:

http://www.drunkonnectar.com/3d-pathfinding-ue4/

============================================= Overview and Tutorial

Youtube video - Overview and Tutorial

============================================= Technical Overview

For a technical overview of the project, please visit this link:
http://www.drunkonnectar.com/3d-pathfinding-ue4/#TechnicalOverview

donainavigation's People

Contributors

arcorvus avatar colings avatar mdcasey avatar vszue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

donainavigation's Issues

Seg-fault when using FlyTo BT node in sub-level BTs with `Recalculate Path Tolerance` enabled

The following trivial BT setup causes a crash:

  • Main BT: ROOT → Selector (empty) → Run Behavior (sub-level BT)
  • Sub-level BT: ROOT → Selector (empty) → Don's Fly To Node (Flight Location Key: PlayerLocation; Recalculate Path Tolerance: true)

Only within a few seconds on an empty map with just one flying AI-enabled pawn and a player character, the following segmentation fault can be observed:

Caught signal 11 Segmentation fault

libUnrealEditor-DonAINavigation.so!UBTTask_FlyTo::OnBlackboardValueChange(UBlackboardComponent const&, unsigned char) [/home/TheGame/Plugins/DonAINavigation/Source/DonAINavigation/Private/BehaviorTree/BTTask_FlyTo.cpp:466]
libUnrealEditor-AIModule.so!UBlackboardComponent::NotifyObservers(unsigned char) const [/mnt/data/unrealengine/Engine/Source/./Runtime/AIModule/Private/BehaviorTree/BlackboardComponent.cpp:425]
libUnrealEditor-AIModule.so!bool UBlackboardComponent::SetValue<UBlackboardKeyType_Vector>(unsigned char, UBlackboardKeyType_Vector::FDataType) [/mnt/data/unrealengine/Engine/Source/Runtime/AIModule/Classes/BehaviorTree/BlackboardComponent.h:348]
libUnrealEditor-Utility.so!UAILibrary::SetBlackboardValueAsVector(AAIController*, FString const&, UE::Math::TVector<double> const&) [/home/TheGame/Source/Utility/Private/AILibrary.cpp:60]
libUnrealEditor-Utility.so!UAILibrary::execSetBlackboardValueAsVector(UObject*, FFrame&, void*) [/home/TheGame/Intermediate/Build/Linux/B4D820EA/UnrealEditor/Inc/Utility/AILibrary.gen.cpp:37]
libUnrealEditor-CoreUObject.so!UObject::execCallMathFunction(UObject*, FFrame&, void*) [/mnt/data/unrealengine/Engine/Source/./Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:945]
libUnrealEditor-CoreUObject.so!ProcessLocalScriptFunction(UObject*, FFrame&, void*) [/mnt/data/unrealengine/Engine/Source/./Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1109]
libUnrealEditor-CoreUObject.so!void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*)) [/mnt/data/unrealengine/Engine/Source/./Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:909]
libUnrealEditor-CoreUObject.so!ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*) [/mnt/data/unrealengine/Engine/Source/./Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1143]
libUnrealEditor-CoreUObject.so!ProcessLocalScriptFunction(UObject*, FFrame&, void*) [/mnt/data/unrealengine/Engine/Source/./Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1109]
libUnrealEditor-CoreUObject.so!void ProcessScriptFunction<void (*)(UObject*, FFrame&, void*)>(UObject*, UFunction*, FFrame&, void*, void (*)(UObject*, FFrame&, void*)) [/mnt/data/unrealengine/Engine/Source/./Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:909]
libUnrealEditor-CoreUObject.so!ProcessLocalFunction(UObject*, UFunction*, FFrame&, void*) [/mnt/data/unrealengine/Engine/Source/./Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1143]
libUnrealEditor-CoreUObject.so!ProcessLocalScriptFunction(UObject*, FFrame&, void*) [/mnt/data/unrealengine/Engine/Source/./Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:1109]
libUnrealEditor-CoreUObject.so!UFunction::Invoke(UObject*, FFrame&, void*) [/mnt/data/unrealengine/Engine/Source/./Runtime/CoreUObject/Private/UObject/Class.cpp:5912]
libUnrealEditor-CoreUObject.so!UObject::ProcessEvent(UFunction*, void*) [/mnt/data/unrealengine/Engine/Source/./Runtime/CoreUObject/Private/UObject/ScriptCore.cpp:2001]
libUnrealEditor-Engine.so!AActor::ProcessEvent(UFunction*, void*) [/mnt/data/unrealengine/Engine/Source/./Runtime/Engine/Private/Actor.cpp:1030]
libUnrealEditor-Engine.so!AActor::ReceiveTick(float) [/mnt/data/unrealengine/Engine/Source/./../Intermediate/Build/Linux/B4D820EA/UnrealEditor/Inc/Engine/Actor.gen.cpp:2053]
libUnrealEditor-Engine.so!AActor::Tick(float) [/mnt/data/unrealengine/Engine/Source/./Runtime/Engine/Private/Actor.cpp:1370]
libUnrealEditor-AIModule.so!AAIController::Tick(float) [/mnt/data/unrealengine/Engine/Source/./Runtime/AIModule/Private/AIController.cpp:56]
libUnrealEditor-Engine.so!FActorTickFunction::ExecuteTick(float, ELevelTick, ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&) [/mnt/data/unrealengine/Engine/Source/./Runtime/Engine/Private/Actor.cpp:197]
libUnrealEditor-Engine.so!FTickFunctionTask::DoTask(ENamedThreads::Type, TRefCountPtr<FGraphEvent> const&) [/mnt/data/unrealengine/Engine/Source/./Runtime/Engine/Private/TickTaskManager.cpp:284]
libUnrealEditor-Engine.so!TGraphTask<FTickFunctionTask>::ExecuteTask(TArray<FBaseGraphTask*, TSizedDefaultAllocator<32> >&, ENamedThreads::Type, bool) [/mnt/data/unrealengine/Engine/Source/Runtime/Core/Public/Async/TaskGraphInterfaces.h:975]
libUnrealEditor-Core.so!FNamedTaskThread::ProcessTasksNamedThread(int, bool) [/mnt/data/unrealengine/Engine/Source/./Runtime/Core/Private/Async/TaskGraph.cpp:753]
libUnrealEditor-Core.so!FNamedTaskThread::ProcessTasksUntilQuit(int) [/mnt/data/unrealengine/Engine/Source/./Runtime/Core/Private/Async/TaskGraph.cpp:641]
libUnrealEditor-Core.so!FTaskGraphCompatibilityImplementation::ProcessThreadUntilRequestReturn(ENamedThreads::Type) [/mnt/data/unrealengine/Engine/Source/./Runtime/Core/Private/Async/TaskGraph.cpp:2114]
libUnrealEditor-Core.so!FTaskGraphCompatibilityImplementation::WaitUntilTasksComplete(TArray<TRefCountPtr<FGraphEvent>, TSizedInlineAllocator<4u, 32, TSizedDefaultAllocator<32> > > const&, ENamedThreads::Type) [/mnt/data/unrealengine/Engine/Source/./Runtime/Core/Private/Async/TaskGraph.cpp:2168]
libUnrealEditor-Engine.so!FTickTaskSequencer::ReleaseTickGroup(ETickingGroup, bool) [/mnt/data/unrealengine/Engine/Source/./Runtime/Engine/Private/TickTaskManager.cpp:564]
libUnrealEditor-Engine.so!FTickTaskManager::RunTickGroup(ETickingGroup, bool) [/mnt/data/unrealengine/Engine/Source/./Runtime/Engine/Private/TickTaskManager.cpp:1591]
libUnrealEditor-Engine.so!UWorld::Tick(ELevelTick, float) [/mnt/data/unrealengine/Engine/Source/./Runtime/Engine/Private/LevelTick.cpp:1531]
libUnrealEditor-UnrealEd.so!UEditorEngine::Tick(float, bool) [/mnt/data/unrealengine/Engine/Source/./Editor/UnrealEd/Private/EditorEngine.cpp:1775]
libUnrealEditor-UnrealEd.so!UUnrealEdEngine::Tick(float, bool) [/mnt/data/unrealengine/Engine/Source/./Editor/UnrealEd/Private/UnrealEdEngine.cpp:471]
UnrealEditor!FEngineLoop::Tick() [/mnt/data/unrealengine/Engine/Source/./Runtime/Launch/Private/LaunchEngineLoop.cpp:5209]
UnrealEditor!GuardedMain(char16_t const*) [/mnt/data/unrealengine/Engine/Source/./Runtime/Launch/Private/Launch.cpp:185]
libUnrealEditor-UnixCommonStartup.so!CommonUnixMain(int, char**, int (*)(char16_t const*), void (*)()) [/mnt/data/unrealengine/Engine/Source/Runtime/Unix/UnixCommonStartup/Private/UnixCommonStartup.cpp:264]
libc.so.6!UnknownFunction(0x2328f)
libc.so.6!__libc_start_main(+0x89)
UnrealEditor!_start()

It works fine if you use the Fly To node in the 'root' BT instead of the sub-level BT. The player location is valid, gets updated every frame, and is within the navigation volume at all times.

I am using this fork of the plugin but from my testing the issue also occurs with the original plugin (after fixing up compilation errors). In case you are using the original plugin, the crash happens at BTTask_FlyTo.cpp:456 with the same callstack. With my limited knowledge on the C++ side of BTs and the plugin itself, I was not able to fix this issue yet, so any help is highly appreciated.

Tested on Windows 10 and Linux with UE-5.0.3.

UE5 Packing fail

DOn Works in PIE, but compiling fails with :
PackagingResults: Error: [Compiler] In use pin Target no longer exists on node Find Random Point Around Origin in Nav World . Please refresh node or break links to remove pin. from Source: /Game/1_EnemyStore/BT_tasks/BTT_rdmFlyLoc.BTT_rdmFlyLoc PackagingResults: Error: [Compiler] In use pin Navigation Actor no longer exists on node Find Random Point Around Origin in Nav World . Please refresh node or break links to remove pin. from Source: /Game/1_EnemyStore/BT_tasks/BTT_rdmFlyLoc.BTT_rdmFlyLoc PackagingResults: Error: [Compiler] In use pin Origin no longer exists on node Find Random Point Around Origin in Nav World . Please refresh node or break links to remove pin. from Source: /Game/1_EnemyStore/BT_tasks/BTT_rdmFlyLoc.BTT_rdmFlyLoc PackagingResults: Error: [Compiler] In use pin Distance no longer exists on node Find Random Point Around Origin in Nav World . Please refresh node or break links to remove pin. from Source: /Game/1_EnemyStore/BT_tasks/BTT_rdmFlyLoc.BTT_rdmFlyLoc PackagingResults: Error: [Compiler] In use pin Return Value no longer exists on node Find Random Point Around Origin in Nav World . Please refresh node or break links to remove pin. from Source: /Game/1_EnemyStore/BT_tasks/BTT_rdmFlyLoc.BTT_rdmFlyLoc PackagingResults: Error: [Compiler] Could not find a function named "FindRandomPointAroundOriginInNavWorld" in 'BTT_rdmFlyLoc'. PackagingResults: Error: [Compiler] In use pin Actor no longer exists on node Don Navigation Manager for Actor . Please refresh node or break links to remove pin. from Source: /Game/1_EnemyStore/BT_tasks/BTT_rdmFlyLoc.BTT_rdmFlyLoc PackagingResults: Error: [Compiler] In use pin Return Value no longer exists on node Don Navigation Manager for Actor . Please refresh node or break links to remove pin. from Source: /Game/1_EnemyStore/BT_tasks/BTT_rdmFlyLoc.BTT_rdmFlyLoc PackagingResults: Error: [Compiler] Could not find a function named "DonNavigationManagerForActor" in 'BTT_rdmFlyLoc'.

The BTT task uses the "don navigation managor" => "find random point around origin in nav world" with target, nav actor, origon and distance connected.
However, during packaging, somehow, the pin are being discarded within the behavior tree task during compile.

multithreading issue

Hi,

I am using your fantastic navigation system and found one issue with it. When using the multi-threading option it hangs very frequently. When using one bot i have no issue, but as soon as i have 4-8 bots i get the very frequent problem of hangs (stalls for sometimes 1 sec, but could also be 1 minute). When deactivating the multi-threading option everything works smooth. It seems to deadlock on the abort task, at least that is where i am always at when i pause the debugger during these hangs.

A few important things that might make this case special:

  • I use the ForceRescheduleOption
  • I force my task to abort after 4 sec's, since my game is very fast paced and path finding has to adjust frequently. I use a time limit decorator on the fly to node.

Thanks for all your efforts. For now i have a workaround so the priority to me isn't very high.

Kind regards,
Cageman

access Raw path data?

Is there a method of accessing the raw path data in blueprint if I want to use the array of vectors directly?

The DoNNavigationManager doesn't properly clean up its threads

We discovered that the DoNNavigationManager doesn't delete the threads it creates in BeginPlay. It can lead to crashes (callstack usually dying in CreateInternal when it tries to make more threads). We fixed it by adding a delete to EndPlay.

if (WorkerThread)
	{
		WorkerThread->ShutDown();
		delete WorkerThread;
	}

Setting bRecalcPathOnDestinationChanged to true on the BTTask_FlyTo node causes the task to always fail

Hi, folks! This is a very cool plugin, and just what I've needed for the project I'm working on.

One quick thing I've noticed is that ticking the bRecalcPathOnDestinationChanged bool on the BTTask_FlyTo behavior tree node causes the node to immediately and repeatedly fail. It looks like the bit where it's checking the current target against the RecalculatePathTolerance,

if (!myMemory->TargetLocation.Equals(flightDestination, RecalculatePathTolerance))

is using Unreal's float == Vector operator, which tests whether every component of the flightDestination FVector is equal to the tolerance. If I'm not mistaken, this will only return true if the destination happens to be {X=RecalculatePathTolerance, Y=RecalculatePathTolerance, Z=RecalculatePathTolerance}; should this be an original vs new distance check?

Thanks again for creating and supporting this plugin; I'm having a great time with it!

Access violation - code c0000005

So, the plugin suddenly started making problems. Haven't changed anything about the nav, as I've been dealing with level design recently. And yet – what used to work, now crashes the engine.

Access violation - code c0000005 (first/second chance not available)

UE4Editor_DonAINavigation!TSet<AActor *,DefaultKeyFuncs<AActor *,0>,FDefaultSetAllocator>::FindId() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\core\public\containers\set.h:631]
UE4Editor_DonAINavigation!UBTTask_FlyTo::SchedulePathfindingRequest() [g:\engines\unreal\source\ue_4_20\engine\plugins\marketplace\donainavigation\source\donainavigation\private\behaviortree\bttask_flyto.cpp:92]
UE4Editor_DonAINavigation!UBTTask_FlyTo::ExecuteTask() [g:\engines\unreal\source\ue_4_20\engine\plugins\marketplace\donainavigation\source\donainavigation\private\behaviortree\bttask_flyto.cpp:58]
UE4Editor_AIModule!UBehaviorTreeComponent::ExecuteTask() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\aimodule\private\behaviortree\behaviortreecomponent.cpp:1687]
UE4Editor_AIModule!UBehaviorTreeComponent::ProcessExecutionRequest() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\aimodule\private\behaviortree\behaviortreecomponent.cpp:1448]
UE4Editor_AIModule!UBehaviorTreeComponent::TickComponent() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\aimodule\private\behaviortree\behaviortreecomponent.cpp:1172]
UE4Editor_Engine!FActorComponentTickFunction::ExecuteTickHelper<<lambda_e8384def656dc646af48282ce274db64> >() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\engine\classes\gameframework\actor.h:3095]
UE4Editor_Engine!FActorComponentTickFunction::ExecuteTick() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\engine\private\components\actorcomponent.cpp:797]
UE4Editor_Engine!TGraphTask<FTickFunctionTask>::ExecuteTask() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\core\public\async\taskgraphinterfaces.h:829]
UE4Editor_Core!FNamedTaskThread::ProcessTasksNamedThread() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\core\private\async\taskgraph.cpp:665]
UE4Editor_Core!FNamedTaskThread::ProcessTasksUntilIdle() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\core\private\async\taskgraph.cpp:585]
UE4Editor_Engine!FTickTaskSequencer::ReleaseTickGroup() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\engine\private\ticktaskmanager.cpp:558]
UE4Editor_Engine!FTickTaskManager::RunTickGroup() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\engine\private\ticktaskmanager.cpp:1455]
UE4Editor_Engine!UWorld::RunTickGroup() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\engine\private\leveltick.cpp:780]
UE4Editor_Engine!UWorld::Tick() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\engine\private\leveltick.cpp:1466]
UE4Editor_UnrealEd!UEditorEngine::Tick() [g:\engines\unreal\source\ue_4_20\engine\source\editor\unrealed\private\editorengine.cpp:1691]
UE4Editor_UnrealEd!UUnrealEdEngine::Tick() [g:\engines\unreal\source\ue_4_20\engine\source\editor\unrealed\private\unrealedengine.cpp:403]
UE4Editor!FEngineLoop::Tick() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\launch\private\launchengineloop.cpp:3495]
UE4Editor!GuardedMain() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\launch\private\launch.cpp:166]
UE4Editor!GuardedMainWrapper() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\launch\private\windows\launchwindows.cpp:144]
UE4Editor!WinMain() [g:\engines\unreal\source\ue_4_20\engine\source\runtime\launch\private\windows\launchwindows.cpp:223]
UE4Editor!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll

dealt with access violation once before, it was due to the pawn being out of the nav volume bounds. It is not the case this time, I made double-sure of that.

UE 4.20.2, Blueprint project
Relevant screenshots: https://imgur.com/gallery/PEV3uwx

Up to date fork UE5, UE4.27+

In the last year I have collected fixes from various forks and added some of my own. I also updated the plugin for UE5 and UE4.26, I think this repository might have been abandoned, but @VSZue: If you ever see my PR or this Issue consider merging it.

In case this repository is really abandoned, Issues & PRs in my fork are welcome, I sometimes check other forks for new developments too:

master...FAUSheppy:master

PR: #19

Build error on UE 4.15

When I upgrade to 4.15. THere are some error when built:

1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(49): error C2065: 'FILETIME': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(49): error C2146: syntax error: missing ';' before identifier 'ft'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(49): error C2065: 'ft': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(50): error C2065: 'LARGE_INTEGER': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(50): error C2146: syntax error: missing ';' before identifier 'li'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(50): error C2065: 'li': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(54): error C2065: 'ft': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(54): error C3861: 'GetSystemTimeAsFileTime': identifier not found
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): error C2065: 'li': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): error C2228: left of '.LowPart' must have class/struct/union
1>  f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): note: type is 'unknown-type'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): error C2065: 'ft': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): error C2228: left of '.dwLowDateTime' must have class/struct/union
1>  f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): note: type is 'unknown-type'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): error C2065: 'li': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): error C2228: left of '.HighPart' must have class/struct/union
1>  f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): note: type is 'unknown-type'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): error C2065: 'ft': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): error C2228: left of '.dwHighDateTime' must have class/struct/union
1>  f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): note: type is 'unknown-type'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(58): error C2065: 'li': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(58): error C2228: left of '.QuadPart' must have class/struct/union
1>  f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(58): note: type is 'unknown-type'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(49): error C2065: 'FILETIME': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(49): error C2146: syntax error: missing ';' before identifier 'ft'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(49): error C2065: 'ft': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(50): error C2065: 'LARGE_INTEGER': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(50): error C2146: syntax error: missing ';' before identifier 'li'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(50): error C2065: 'li': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(54): error C2065: 'ft': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(54): error C3861: 'GetSystemTimeAsFileTime': identifier not found
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): error C2065: 'li': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): error C2228: left of '.LowPart' must have class/struct/union
1>  f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): note: type is 'unknown-type'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): error C2065: 'ft': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): error C2228: left of '.dwLowDateTime' must have class/struct/union
1>  f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(55): note: type is 'unknown-type'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): error C2065: 'li': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): error C2228: left of '.HighPart' must have class/struct/union
1>  f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): note: type is 'unknown-type'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): error C2065: 'ft': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): error C2228: left of '.dwHighDateTime' must have class/struct/union
1>  f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(56): note: type is 'unknown-type'
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(58): error C2065: 'li': undeclared identifier
1>f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(58): error C2228: left of '.QuadPart' must have class/struct/union
1>  f:\project\plugins\donainavigation\source\donainavigation\classes\DonNavigationCommon.h(58): note: type is 'unknown-type'
1>f:\project\Plugins\DonAINavigation\Source\DonAINavigation\Private\Legacy\DEPRECATED_VolumeAdaptiveBuilder.cpp(253): error C2039: 'ComponentOverlapComponents_NEW': is not a member of 'UKismetSystemLibrary'
1>  C:\Program Files\Epic Games\UE_4.15\Engine\Source\Runtime\Engine\Classes\Kismet/KismetSystemLibrary.h(76): note: see declaration of 'UKismetSystemLibrary'
1>f:\project\Plugins\DonAINavigation\Source\DonAINavigation\Private\Legacy\DEPRECATED_VolumeAdaptiveBuilder.cpp(253): error C3861: 'ComponentOverlapComponents_NEW': identifier not found
1>f:\project\Plugins\DonAINavigation\Source\DonAINavigation\Private\Legacy\DEPRECATED_VolumeAdaptiveBuilder.cpp(276): error C2039: 'ComponentOverlapComponents_NEW': is not a member of 'UKismetSystemLibrary'
1>  C:\Program Files\Epic Games\UE_4.15\Engine\Source\Runtime\Engine\Classes\Kismet/KismetSystemLibrary.h(76): note: see declaration of 'UKismetSystemLibrary'
1>f:\project\Plugins\DonAINavigation\Source\DonAINavigation\Private\Legacy\DEPRECATED_VolumeAdaptiveBuilder.cpp(276): error C3861: 'ComponentOverlapComponents_NEW': identifier not found
1>f:\project\Plugins\DonAINavigation\Source\DonAINavigation\Private\Legacy\DEPRECATED_VolumeAdaptiveBuilder.cpp(421): error C2039: 'ComponentOverlapComponents_NEW': is not a member of 'UKismetSystemLibrary'
1>  C:\Program Files\Epic Games\UE_4.15\Engine\Source\Runtime\Engine\Classes\Kismet/KismetSystemLibrary.h(76): note: see declaration of 'UKismetSystemLibrary'
1>f:\project\Plugins\DonAINavigation\Source\DonAINavigation\Private\Legacy\DEPRECATED_VolumeAdaptiveBuilder.cpp(421): error C3861: 'ComponentOverlapComponents_NEW': identifier not found
1>f:\project\Plugins\DonAINavigation\Source\DonAINavigation\Private\Legacy\DEPRECATED_VolumeAdaptiveBuilder.cpp(1116): error C2039: 'ComponentOverlapComponents_NEW': is not a member of 'UKismetSystemLibrary'
1>  C:\Program Files\Epic Games\UE_4.15\Engine\Source\Runtime\Engine\Classes\Kismet/KismetSystemLibrary.h(76): note: see declaration of 'UKismetSystemLibrary'
1>f:\project\Plugins\DonAINavigation\Source\DonAINavigation\Private\Legacy\DEPRECATED_VolumeAdaptiveBuilder.cpp(1116): error C3861: 'ComponentOverlapComponents_NEW': identifier not found

Question: Is it possible to compile for UE v4.5.1?

Before I go down a rabbit hole exploring whether this is possible, I wanted to ask whether there is any reason why this plugin could not be conceivably compiled for UE4 v4.5.1?

Before you ask, I realize v4.5.1 is miles behind the current version of UE4, but unfortunately I am tied into this version as it is the version of the engine that is used by the game that I mod.

This leads me to another question: Would I encounter any issues in building this plugin for a version of UE4 which is essentially a developer kit for this game? Ie: I don't have access to some of the menus normally present in the standard UE4 editor such as making a new C++ project or C++ class from UE4 itself.

I do have Visual Studio installed, however I'm not a C++ programmer though (I work in web technologies), but can usually follow instructions competently enough when provided.

Basically what I am trying to ask is whether this would be worth my time, or am I likely to bang my head against a brick wall trying to get it to work? Failing all else, would anyone else be able to compile a version for v4.5.1 for me?

Many thanks for any help or advise offered. Keeping my fingers crossed that I can make use of this awesome plugin - it definitely would solve my use case.

Pawn circles around the 'fly-to' destination

Hey,

Just want to say first that this is awesome thanks a lot for releasing it! I'm testing out the unbound manager and I've got my pawn flying around with a simple find random point from actor in my behavior tree however when the pawn reaches the point it seems to circle it quite a few times before finding another point.

Tree/Blueprints:

Behavior Tree

Random Point Task

Pawn Screenshots:

Point 1

Point 2

Sometimes it works fine the first location it flew straight too then found another one but then it began to circle around it.

Any ideas?

Please migrate plugin to 4.16

Could you please add Hash function for struct FLocVector : public FVector. You can do it in next way FORCEINLINE friend uint32 GetTypeHash(const FLocVector& Temp) { return ::GetTypeHash(FVector(Temp.X, Temp.Y, Temp.Z)); }

Best regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.