#if GRAPH_DESIGNER
/// ---------------------------------------------
/// Behavior Designer
/// Copyright (c) Opsive. All Rights Reserved.
/// https://www.opsive.com
/// ---------------------------------------------
namespace Opsive.BehaviorDesigner.Runtime.Tasks
{
using Opsive.GraphDesigner.Runtime;
using Opsive.GraphDesigner.Runtime.Variables;
using Opsive.Shared.Utility;
using System;
using System.Reflection;
using UnityEngine;
///
/// The TaskDelegateBase task is an abstract class used for any action classes that use reflection to execute the action.
///
[HideInFilterWindow]
public abstract class TaskDelegateBase : Task, IAction
{
[Tooltip("The object that the delegate belongs to. Can be null for static variables.")]
[SerializeField] [HideInInspector] protected SharedVariable m_Target;
[Tooltip("The type of delegate that should be created.")]
[SerializeField] [HideInInspector] protected string m_ReflectedType;
[Tooltip("The type of parameters that the delegate uses.")]
[SerializeField] [HideInInspector] protected string[] m_ParameterTypes;
[Tooltip("The name of the method that should be called by the delegate.")]
[SerializeField] [HideInInspector] protected string m_MethodName;
public SharedVariable Target => m_Target;
public string ReflectedType => m_ReflectedType;
public string[] ParameterTypes => m_ParameterTypes;
public string MethodName => m_MethodName;
protected bool m_ConditionalTask;
///
/// Binds the task to the specified method.
///
/// The MethodInfo to bind the task to.
internal void Bind(MethodInfo methodInfo)
{
m_ReflectedType = methodInfo.ReflectedType.FullName;
var parameters = methodInfo.GetParameters();
if (parameters != null && parameters.Length > 0) {
m_ParameterTypes = new string[parameters.Length];
for (int i = 0; i < parameters.Length; ++i) {
m_ParameterTypes[i] = parameters[i].ParameterType.FullName;
}
}
m_MethodName = methodInfo.Name;
}
///
/// Initializes the task.
///
/// A reference to the owning BehaviorTree.
/// Does the delegate belong to an IConditional task?
/// The runtime index of the node.
internal void Initialize(BehaviorTree behaviorTree, ushort runtimeIndex, bool conditionalTask)
{
m_ConditionalTask = conditionalTask;
base.Initialize(behaviorTree, runtimeIndex);
}
///
/// Callback when the behavior tree is initialized.
///
public override void OnAwake()
{
base.OnAwake();
CreateDelegate();
if (m_Target != null) {
m_Target.OnValueChange += CreateDelegate;
}
}
///
/// Creates the task delegate.
///
protected virtual void CreateDelegate() { }
///
/// Returns the target value.
///
/// The target value.
protected object GetTargetValue()
{
// The target will be null if no SharedVariable value has been assigned.
var target = m_Target.GetValue();
if (target == null) {
var targetType = m_ReflectedType.Replace("UnityEngine.", string.Empty);
if (string.Equals(targetType, "GameObject")) {
return m_GameObject;
}
var value = m_GameObject.GetComponent(targetType);
if (value == null) {
var splitType = m_ReflectedType.Split(".");
value = m_GameObject.GetComponent(splitType[splitType.Length - 1]);
if (value == null) {
Debug.LogError($"Error: Unable to find the component {m_ReflectedType} on the {m_GameObject.name} GameObject.");
}
}
return value;
}
return target;
}
///
/// Returns the method from the given type and name.
///
/// The object type that the method belongs to.
/// The name of the method.
/// The types of parameters that the method uses.
/// The method from the given type and name.
protected static MethodInfo GetMethod(string reflectedType, string methodName, string[] parameterTypeNames)
{
var type = TypeUtility.GetType(reflectedType);
if (type == null) {
Debug.LogError($"Error: Unable to find the type {reflectedType}.");
return null;
}
Type[] parameterTypes;
if (parameterTypeNames != null) {
parameterTypes = new Type[parameterTypeNames.Length];
for (int i = 0; i < parameterTypeNames.Length; ++i) {
parameterTypes[i] = TypeUtility.GetType(parameterTypeNames[i]);
if (parameterTypes[i] == null) {
Debug.LogError($"Error: Unable to find the parameter type {parameterTypeNames[i]}.");
return null;
}
}
} else {
parameterTypes = new Type[0];
}
// Get the method based on the type and parameter types.
var method = type.GetMethod(methodName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static, null, parameterTypes, null);
if (method == null) {
Debug.LogError($"Error: Unable to find the method {methodName} on type {type}.");
return null;
}
return method;
}
///
/// Specifies the type of reflection that should be used to save the task.
///
/// The index of the sub-task. This is used for the task set allowing each contained task to have their own save type.
public override MemberVisibility GetSaveReflectionType(int index)
{
return MemberVisibility.Public;
}
///
/// Returns a friendly name for the task.
///
/// A friendly name for the task.
public override string ToString()
{
return m_MethodName;
}
}
///
/// Task which executes a delegate with no parameters.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(System.Action)) as System.Action;
} else {
m_Delegate = method.CreateDelegate(typeof(System.Action), GetTargetValue()) as System.Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate();
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with no parameters but a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate();
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with one parameter.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Action)) as Action;
} else {
m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate(m_Parameter1.Value);
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with one parameter and a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate(m_Parameter1.Value);
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with two parameters.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Action)) as Action;
} else {
m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate(m_Parameter1.Value, m_Parameter2.Value);
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with two parameters and a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value);
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with three parameters.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Action)) as Action;
} else {
m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value);
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with three parameters and a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value);
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with four parameters.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Action)) as Action;
} else {
m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value);
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with four parameters and a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value);
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with five parameters.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Action)) as Action;
} else {
m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value);
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with five parameters and a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value);
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with six parameters.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The sixth parameter.")]
[SerializeField] protected SharedVariable m_Parameter6;
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Action)) as Action;
} else {
m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value);
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with six parameters and a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The sixth parameter.")]
[SerializeField] protected SharedVariable m_Parameter6;
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value);
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with seven parameters.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The sixth parameter.")]
[SerializeField] protected SharedVariable m_Parameter6;
[Tooltip("The seventh parameter.")]
[SerializeField] protected SharedVariable m_Parameter7;
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Action)) as Action;
} else {
m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value);
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with seven parameters and a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The sixth parameter.")]
[SerializeField] protected SharedVariable m_Parameter6;
[Tooltip("The seventh parameter.")]
[SerializeField] protected SharedVariable m_Parameter7;
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value);
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with eight parameters.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The sixth parameter.")]
[SerializeField] protected SharedVariable m_Parameter6;
[Tooltip("The seventh parameter.")]
[SerializeField] protected SharedVariable m_Parameter7;
[Tooltip("The eigth parameter.")]
[SerializeField] protected SharedVariable m_Parameter8;
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Action)) as Action;
} else {
m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value);
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with eight parameters and a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The sixth parameter.")]
[SerializeField] protected SharedVariable m_Parameter6;
[Tooltip("The seventh parameter.")]
[SerializeField] protected SharedVariable m_Parameter7;
[Tooltip("The eigth parameter.")]
[SerializeField] protected SharedVariable m_Parameter8;
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value);
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with nine parameters.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The sixth parameter.")]
[SerializeField] protected SharedVariable m_Parameter6;
[Tooltip("The seventh parameter.")]
[SerializeField] protected SharedVariable m_Parameter7;
[Tooltip("The eigth parameter.")]
[SerializeField] protected SharedVariable m_Parameter8;
[Tooltip("The ninth parameter.")]
[SerializeField] protected SharedVariable m_Parameter9;
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Action)) as Action;
} else {
m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value, m_Parameter9.Value);
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with nine parameters and a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The sixth parameter.")]
[SerializeField] protected SharedVariable m_Parameter6;
[Tooltip("The seventh parameter.")]
[SerializeField] protected SharedVariable m_Parameter7;
[Tooltip("The eigth parameter.")]
[SerializeField] protected SharedVariable m_Parameter8;
[Tooltip("The ninth parameter.")]
[SerializeField] protected SharedVariable m_Parameter9;
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value, m_Parameter9.Value);
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with ten parameters.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The sixth parameter.")]
[SerializeField] protected SharedVariable m_Parameter6;
[Tooltip("The seventh parameter.")]
[SerializeField] protected SharedVariable m_Parameter7;
[Tooltip("The eigth parameter.")]
[SerializeField] protected SharedVariable m_Parameter8;
[Tooltip("The ninth parameter.")]
[SerializeField] protected SharedVariable m_Parameter9;
[Tooltip("The tenth parameter.")]
[SerializeField] protected SharedVariable m_Parameter10;
private Action m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Action)) as Action;
} else {
m_Delegate = method.CreateDelegate(typeof(Action), GetTargetValue()) as Action;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value, m_Parameter9.Value, m_Parameter10.Value);
return TaskStatus.Success;
}
}
///
/// Task which executes a delegate with ten parameters and a returned value.
///
[NodeIcon("3bbdfa553da4d554e9d74f8d88915aac", "6437308e972f99f48953f20198fd4e94")]
public class TaskValueDelegate : TaskDelegateBase
{
[Tooltip("The first parameter.")]
[SerializeField] protected SharedVariable m_Parameter1;
[Tooltip("The second parameter.")]
[SerializeField] protected SharedVariable m_Parameter2;
[Tooltip("The third parameter.")]
[SerializeField] protected SharedVariable m_Parameter3;
[Tooltip("The fourth parameter.")]
[SerializeField] protected SharedVariable m_Parameter4;
[Tooltip("The fifth parameter.")]
[SerializeField] protected SharedVariable m_Parameter5;
[Tooltip("The sixth parameter.")]
[SerializeField] protected SharedVariable m_Parameter6;
[Tooltip("The seventh parameter.")]
[SerializeField] protected SharedVariable m_Parameter7;
[Tooltip("The eigth parameter.")]
[SerializeField] protected SharedVariable m_Parameter8;
[Tooltip("The ninth parameter.")]
[SerializeField] protected SharedVariable m_Parameter9;
[Tooltip("The tenth parameter.")]
[SerializeField] protected SharedVariable m_Parameter10;
[Tooltip("The returned result.")]
[SerializeField] [RequireShared] protected SharedVariable m_Result;
private Func m_Delegate;
///
/// Creates the task delegate.
///
protected override void CreateDelegate()
{
var method = GetMethod(m_ReflectedType, m_MethodName, m_ParameterTypes);
if (method == null) {
return;
}
if (method.IsStatic) {
m_Delegate = method.CreateDelegate(typeof(Func)) as Func;
} else {
m_Delegate = method.CreateDelegate(typeof(Func), GetTargetValue()) as Func;
}
}
///
/// Invokes the delegate.
///
/// The status of the task.
public override TaskStatus OnUpdate()
{
m_Result.Value = m_Delegate(m_Parameter1.Value, m_Parameter2.Value, m_Parameter3.Value, m_Parameter4.Value, m_Parameter5.Value, m_Parameter6.Value, m_Parameter7.Value, m_Parameter8.Value, m_Parameter9.Value, m_Parameter10.Value);
if (m_ConditionalTask) {
return Convert.ToBoolean(m_Result.Value) ? TaskStatus.Success : TaskStatus.Failure;
}
return TaskStatus.Success;
}
}
}
#endif