51 lines
1.2 KiB
C#
51 lines
1.2 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace MBT
|
|
{
|
|
[AddComponentMenu("")]
|
|
[MBTNode(name = "Sequence", order = 150)]
|
|
public class Sequence : 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:
|
|
index += 1;
|
|
continue;
|
|
case Status.Failure:
|
|
return NodeResult.failure;
|
|
}
|
|
return child.runningNodeResult;
|
|
}
|
|
return NodeResult.success;
|
|
}
|
|
}
|
|
}
|