2024-06-23 19:12:22 +01:00

51 lines
1.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MBT
{
[AddComponentMenu("")]
[MBTNode(name = "Selector", order = 100)]
public class Selector : Composite
{
private int index;
public override void OnAllowInterrupt()
{
if (random)
{
ShuffleList(children);
}
}
public override void OnEnter()
{
index = 0;
}
public override void OnBehaviourTreeAbort()
{
// Do not continue from last index
index = 0;
}
public override NodeResult Execute()
{
while (index < children.Count)
{
Node child = children[index];
switch (child.status)
{
case Status.Success:
return NodeResult.success;
case Status.Failure:
index += 1;
continue;
}
return child.runningNodeResult;
}
return NodeResult.failure;
}
}
}