Files
BH3/Assets/Plugins/Assembly-CSharp-firstpass/BehaviorDesigner/Runtime/Tasks/Sequence.cs
2025-08-13 09:26:42 +08:00

41 lines
1.1 KiB
C#

namespace BehaviorDesigner.Runtime.Tasks
{
[TaskDescription("The sequence task is similar to an \"and\" operation. It will return failure as soon as one of its child tasks return failure. If a child task returns success then it will sequentially run the next task. If all child tasks return success then it will return success.")]
[TaskIcon("{SkinColor}SequenceIcon.png")]
[HelpURL("http://www.opsive.com/assets/BehaviorDesigner/documentation.php?id=25")]
public class Sequence : Composite
{
private int currentChildIndex;
private TaskStatus executionStatus;
public override int CurrentChildIndex()
{
return currentChildIndex;
}
public override bool CanExecute()
{
return currentChildIndex < children.Count && executionStatus != TaskStatus.Failure;
}
public override void OnChildExecuted(TaskStatus childStatus)
{
currentChildIndex++;
executionStatus = childStatus;
}
public override void OnConditionalAbort(int childIndex)
{
currentChildIndex = childIndex;
executionStatus = TaskStatus.Inactive;
}
public override void OnEnd()
{
executionStatus = TaskStatus.Inactive;
currentChildIndex = 0;
}
}
}