using System; namespace RebootKit.Engine.AI { public class Selector : BehaviourNode { readonly Func m_Condition; public Selector(string name, Func 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: Reset(); return Status.Success; case Status.Failure: m_CurrentChild += 1; return Status.Running; case Status.Running: return Status.Running; } } Reset(); return Status.Failure; } } }