AI/ActionSystem/BehaviorTree/SequenceNode.cs
namespace HC3;
public class SequenceNode : Node
{
private readonly List<Node> _children;
private int _current;
public SequenceNode( List<Node> children )
{
_children = children;
_current = 0;
}
public override Status Tick()
{
while ( _current < _children.Count )
{
var result = _children[_current].TickInternal();
if ( result == Status.Running )
return Status.Running;
if ( result == Status.Failure )
{
_current = 0;
return Status.Failure;
}
_current++;
}
_current = 0;
return Status.Success;
}
public override ActionDisplayInfo? GetDisplay()
{
if ( _current < _children.Count )
return _children[_current]?.GetDisplay();
return null;
}
}