Add Time Limit and Cooldown decorators to BT

This commit is contained in:
Wojtek Figat
2023-08-24 16:41:01 +02:00
parent d2034622cb
commit 8c1dfb3087
7 changed files with 159 additions and 19 deletions

View File

@@ -31,6 +31,7 @@ void Behavior::StopLogic(BehaviorUpdateResult result)
if (_result != BehaviorUpdateResult::Running || result == BehaviorUpdateResult::Running)
return;
_accumulatedTime = 0.0f;
_totalTime = 0;
_result = result;
}
@@ -43,6 +44,7 @@ void Behavior::ResetLogic()
// Reset state
_knowledge.FreeMemory();
_accumulatedTime = 0.0f;
_totalTime = 0;
_result = BehaviorUpdateResult::Success;
if (isActive)
@@ -73,6 +75,7 @@ void Behavior::OnLateUpdate()
if (_accumulatedTime < updateDeltaTime)
return;
_accumulatedTime -= updateDeltaTime;
_totalTime += updateDeltaTime;
// Update tree
BehaviorUpdateContext context;
@@ -81,6 +84,7 @@ void Behavior::OnLateUpdate()
context.Memory = _knowledge.Memory;
context.RelevantNodes = &_knowledge.RelevantNodes;
context.DeltaTime = updateDeltaTime;
context.Time = _totalTime;
const BehaviorUpdateResult result = tree->Graph.Root->InvokeUpdate(context);
if (result != BehaviorUpdateResult::Running)
_result = result;