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

39 lines
1.1 KiB
C#

namespace BehaviorDesigner.Runtime.Tasks
{
[TaskIcon("{SkinColor}InverterIcon.png")]
[TaskDescription("The inverter task will invert the return value of the child task after it has finished executing. If the child returns success, the inverter task will return failure. If the child returns failure, the inverter task will return success.")]
[HelpURL("http://www.opsive.com/assets/BehaviorDesigner/documentation.php?id=36")]
public class Inverter : Decorator
{
private TaskStatus executionStatus;
public override bool CanExecute()
{
return executionStatus == TaskStatus.Inactive || executionStatus == TaskStatus.Running;
}
public override void OnChildExecuted(TaskStatus childStatus)
{
executionStatus = childStatus;
}
public override TaskStatus Decorate(TaskStatus status)
{
switch (status)
{
case TaskStatus.Success:
return TaskStatus.Failure;
case TaskStatus.Failure:
return TaskStatus.Success;
default:
return status;
}
}
public override void OnEnd()
{
executionStatus = TaskStatus.Inactive;
}
}
}