From 4e37aafe6a5612dd8ac5ae0e235d06f6848ad6fd Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 21 Nov 2023 00:01:46 +0100 Subject: [PATCH] Fix BT logic flow when start/stopping behavior --- Source/Engine/AI/Behavior.cpp | 8 +++++++- Source/Engine/AI/BehaviorKnowledge.cpp | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Source/Engine/AI/Behavior.cpp b/Source/Engine/AI/Behavior.cpp index ab853e2a3..98fb9ba22 100644 --- a/Source/Engine/AI/Behavior.cpp +++ b/Source/Engine/AI/Behavior.cpp @@ -114,14 +114,19 @@ void Behavior::UpdateAsync() void Behavior::StartLogic() { + if (_result == BehaviorUpdateResult::Running) + return; PROFILE_CPU(); - // Ensure to have tree loaded on begin play + // Ensure to have tree loaded on play CHECK(Tree && !Tree->WaitForLoaded()); BehaviorTree* tree = Tree.Get(); CHECK(tree->Graph.Root); + // Setup state _result = BehaviorUpdateResult::Running; + _accumulatedTime = 0.0f; + _totalTime = 0; // Init knowledge _knowledge.InitMemory(tree); @@ -135,6 +140,7 @@ void Behavior::StopLogic(BehaviorUpdateResult result) _accumulatedTime = 0.0f; _totalTime = 0; _result = result; + _knowledge.FreeMemory(); } void Behavior::ResetLogic() diff --git a/Source/Engine/AI/BehaviorKnowledge.cpp b/Source/Engine/AI/BehaviorKnowledge.cpp index ffc011818..a73a1cfd4 100644 --- a/Source/Engine/AI/BehaviorKnowledge.cpp +++ b/Source/Engine/AI/BehaviorKnowledge.cpp @@ -83,7 +83,7 @@ bool AccessVariant(Variant& instance, const StringAnsiView& member, Variant& val } } #endif - else + else if (typeName.HasChars()) { LOG(Warning, "Missing scripting type \'{0}\'", String(typeName)); }