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

40 lines
1.3 KiB
C#

namespace BehaviorDesigner.Runtime.Tasks
{
[HelpURL("http://www.opsive.com/assets/BehaviorDesigner/documentation.php?id=35")]
[TaskDescription("The interrupt task will stop all child tasks from running if it is interrupted. The interruption can be triggered by the perform interruption task. The interrupt task will keep running its child until this interruption is called. If no interruption happens and the child task completed its execution the interrupt task will return the value assigned by the child task.")]
[TaskIcon("{SkinColor}InterruptIcon.png")]
public class Interrupt : Decorator
{
private TaskStatus interruptStatus = TaskStatus.Failure;
private TaskStatus executionStatus;
public override bool CanExecute()
{
return executionStatus == TaskStatus.Inactive || executionStatus == TaskStatus.Running;
}
public override void OnChildExecuted(TaskStatus childStatus)
{
executionStatus = childStatus;
}
public void DoInterrupt(TaskStatus status)
{
interruptStatus = status;
BehaviorManager.instance.Interrupt(base.Owner, this);
}
public override TaskStatus OverrideStatus()
{
return interruptStatus;
}
public override void OnEnd()
{
interruptStatus = TaskStatus.Failure;
executionStatus = TaskStatus.Inactive;
}
}
}