Behaviour Tree

This commit is contained in:
2025-10-10 18:09:23 +02:00
parent fe7dea3c7c
commit d1583c9f58
13 changed files with 208 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
using System;
namespace RebootKit.Engine.AI {
public class Sequence : BehaviourNode {
readonly Func<bool> m_Condition;
public Sequence(string name, Func<bool> condition = null) : base(name) {
m_Condition = condition;
}
public override Status Process(float dt) {
if (m_Condition != null && !m_Condition()) {
return Status.Failure;
}
if (m_CurrentChild < Children.Count) {
Status status = Children[m_CurrentChild].Process(dt);
switch (status) {
case Status.Success:
m_CurrentChild += 1;
return m_CurrentChild == Children.Count ? Status.Success : Status.Running;
case Status.Failure:
Reset();
return Status.Failure;
case Status.Running:
return Status.Running;
}
}
Reset();
return Status.Success;
}
}
}