Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/BehaviorDesigner/Runtime/Tasks/Selector.cs
2026-02-21 16:45:37 +08:00

41 lines
1.1 KiB
C#

namespace BehaviorDesigner.Runtime.Tasks
{
[TaskIcon("{SkinColor}SelectorIcon.png")]
[HelpURLAttribute("http://www.opsive.com/assets/BehaviorDesigner/documentation.php?id=26")]
[TaskDescription("The selector task is similar to an \"or\" operation. It will return success as soon as one of its child tasks return success. If a child task returns failure then it will sequentially run the next task. If no child task returns success then it will return failure.")]
public class Selector : Composite
{
private int currentChildIndex;
private TaskStatus executionStatus;
public override int CurrentChildIndex()
{
return currentChildIndex;
}
public override bool CanExecute()
{
return currentChildIndex < children.Count && executionStatus != TaskStatus.Success;
}
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;
}
}
}