ZeroVR/ZeroPacientVR/Assets/Scripts/Tree/TunnelAction.cs

44 lines
1.3 KiB
C#

using NodeCanvas.BehaviourTrees;
using NodeCanvas.Framework;
using ParadoxNotion.Design;
using UnityEngine;
namespace NodeCanvas.Tasks.Actions
{
[Name("Action")]
[Category("Decorators")]
[Description("Executes and returns the child status only if the condition is true. Returns Failure if the condition is false.")]
[ParadoxNotion.Design.Icon("Action")]
public class TunnelAction : BTDecorator, ITaskAssignable<ActionTask>
{
[SerializeField] private ActionTask _action;
private ActionTask actionTask
{
get => _action;
set => _action = (ActionTask)value;
}
public Task task
{
get => actionTask;
set => actionTask = (ActionTask)value;
}
protected override Status OnExecute(Component agent, IBlackboard blackboard)
{
if (decoratedConnection == null)
{
return Status.Optional;
}
if (actionTask == null)
{
return decoratedConnection.Execute(agent, blackboard);
}
var executeStatus = actionTask.Execute(agent, blackboard);
return executeStatus != Status.Failure ? decoratedConnection.Execute(agent, blackboard) : executeStatus;
}
}
}