Merge pull request #183 from SHADE-DP/SP3-6-c-scripting
Added support for parameter-less CallbackEvent and CallbackAction in C#
This commit is contained in:
commit
80ab010b4b
|
@ -34,6 +34,99 @@ namespace SHADE
|
|||
Object TargetObject { get; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Represents a function call that can be serialised and put togetheer with scripts.
|
||||
/// This variant accepts functions with 0 parameter.
|
||||
/// </summary>
|
||||
public class CallbackAction : ICallbackAction
|
||||
{
|
||||
#region Properties ------------------------------------------------------------
|
||||
/// <inheritdoc/>
|
||||
public Object TargetObject { get; private set; }
|
||||
/// <inheritdoc/>
|
||||
public string TargetMethodName => targetMethod == null ? "" : targetMethod.Name;
|
||||
/// <inheritdoc/>
|
||||
public bool IsRuntimeAction => targetAction != null;
|
||||
#endregion
|
||||
|
||||
#region Fields ------------------------------------------------------------------
|
||||
private MethodInfo targetMethod;
|
||||
private Action targetAction;
|
||||
private Object[] parameters;
|
||||
#endregion
|
||||
|
||||
#region Constructors ------------------------------------------------------------
|
||||
/// <summary>
|
||||
/// Constructs an empty Callback action.
|
||||
/// </summary>
|
||||
public CallbackAction() {}
|
||||
/// <summary>
|
||||
/// Constructs a CallbackAction that represents a call to the specified static
|
||||
/// method.
|
||||
/// </summary>
|
||||
/// <param name="method">Method to call.</param>
|
||||
/// <exception cref="ArgumentException">
|
||||
/// Thrown if a method that is not compatible with the target is specified. The method's
|
||||
/// source type must match the target's type.
|
||||
/// </exception>
|
||||
public CallbackAction(MethodInfo method)
|
||||
{
|
||||
// No errors, assign
|
||||
targetMethod = method;
|
||||
|
||||
// Create storage for parameters for calling
|
||||
parameters = new Object[0];
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs a CallbackAction that represents a call to a specified member
|
||||
/// method on the specified target.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
/// <exception cref="ArgumentException">
|
||||
/// Thrown if a method that is not compatible with the target is specified. The method's
|
||||
/// source type must match the target's type.
|
||||
/// </exception>
|
||||
public CallbackAction(Object target, MethodInfo method)
|
||||
{
|
||||
// Error Checks
|
||||
if (method.DeclaringType != target.GetType())
|
||||
throw new ArgumentException("[CallbackAction] Attempted register an action using an incompatible target object and method.");
|
||||
|
||||
// No errors, assign
|
||||
TargetObject = target;
|
||||
targetMethod = method;
|
||||
|
||||
// Create storage for parameters for calling
|
||||
parameters = new Object[0];
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs a Callback action based on an action.
|
||||
/// </summary>
|
||||
/// <param name="action">Action that wraps a function to be called.</param>
|
||||
public CallbackAction(Action action)
|
||||
{
|
||||
targetAction = action;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Usage Functions ---------------------------------------------------------
|
||||
/// <summary>
|
||||
/// Invokes the CallbackAction's stored method/action with the specified parameters.
|
||||
/// </summary>
|
||||
public void Invoke()
|
||||
{
|
||||
if (targetAction != null)
|
||||
{
|
||||
targetAction.Invoke();
|
||||
}
|
||||
else if (targetMethod != null)
|
||||
{
|
||||
_ = targetMethod.Invoke(TargetObject, parameters);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
/// <summary>
|
||||
/// Represents a function call that can be serialised and put togetheer with scripts.
|
||||
/// This variant accepts functions with 1 parameter.
|
||||
|
|
|
@ -50,12 +50,12 @@ namespace SHADE
|
|||
Object TargetObject { get; }
|
||||
}
|
||||
|
||||
<# for (int i = 1; i <= max; ++i) { #>
|
||||
<# for (int i = 0; i <= max; ++i) { #>
|
||||
/// <summary>
|
||||
/// Represents a function call that can be serialised and put togetheer with scripts.
|
||||
/// This variant accepts functions with <#=i#> parameter<# if (i > 1) {#>s<#} #>.
|
||||
/// </summary>
|
||||
public class CallbackAction<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>> : ICallbackAction
|
||||
public class CallbackAction<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #> : ICallbackAction
|
||||
{
|
||||
#region Properties ------------------------------------------------------------
|
||||
/// <inheritdoc/>
|
||||
|
@ -68,7 +68,7 @@ namespace SHADE
|
|||
|
||||
#region Fields ------------------------------------------------------------------
|
||||
private MethodInfo targetMethod;
|
||||
private Action<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>> targetAction;
|
||||
private Action<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #> targetAction;
|
||||
private Object[] parameters;
|
||||
#endregion
|
||||
|
||||
|
@ -121,7 +121,7 @@ namespace SHADE
|
|||
/// Constructs a Callback action based on an action.
|
||||
/// </summary>
|
||||
/// <param name="action">Action that wraps a function to be called.</param>
|
||||
public CallbackAction(Action<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>> action)
|
||||
public CallbackAction(Action<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #> action)
|
||||
{
|
||||
targetAction = action;
|
||||
}
|
||||
|
|
|
@ -45,6 +45,92 @@ namespace SHADE
|
|||
IEnumerable<ICallbackAction> Actions { get; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A container of CallbackActions that is correlated to a specific scenario as
|
||||
/// specified by the user of this class.
|
||||
/// This variant accepts CallbackEvents with 1 generic parameter.
|
||||
/// </summary>
|
||||
public class CallbackEvent : ICallbackEvent
|
||||
{
|
||||
#region Properties --------------------------------------------------------------
|
||||
/// <inheritdoc/>
|
||||
public IEnumerable<ICallbackAction> Actions => actions;
|
||||
#endregion
|
||||
|
||||
#region Fields ------------------------------------------------------------------
|
||||
private List<ICallbackAction> actions = new List<ICallbackAction>();
|
||||
#endregion
|
||||
|
||||
#region Usage Functions ---------------------------------------------------------
|
||||
/// <inheritdoc/>
|
||||
public void RegisterAction()
|
||||
{
|
||||
actions.Add(new CallbackAction());
|
||||
}
|
||||
/// <inheritdoc/>
|
||||
public void RegisterAction(ICallbackAction action)
|
||||
{
|
||||
// Check if valid action
|
||||
if (action.GetType() != typeof(CallbackAction))
|
||||
{
|
||||
Debug.LogWarning("Attempted to register an invalid CallbackAction type. Ignoring.", this);
|
||||
return;
|
||||
}
|
||||
|
||||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">CallbackAction to add.</param>
|
||||
public void RegisterAction(CallbackAction action)
|
||||
{
|
||||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action action)
|
||||
{
|
||||
actions.Add(new CallbackAction(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
public void RegisterAction(Object target, MethodInfo method)
|
||||
{
|
||||
actions.Add(new CallbackAction(target, method));
|
||||
}
|
||||
/// <inheritdoc/>
|
||||
public void DeregisterAction(ICallbackAction action)
|
||||
{
|
||||
if (!actions.Remove(action))
|
||||
{
|
||||
Debug.LogWarning("Attempted to deregister invalid action. Ignored.", this);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Invokes all stored CallbackActions with the specified parameters.
|
||||
/// </summary>
|
||||
public void Invoke()
|
||||
{
|
||||
foreach (CallbackAction action in actions)
|
||||
{
|
||||
try
|
||||
{
|
||||
action.Invoke();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.LogException(e, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
/// <summary>
|
||||
/// A container of CallbackActions that is correlated to a specific scenario as
|
||||
/// specified by the user of this class.
|
||||
|
@ -88,7 +174,7 @@ namespace SHADE
|
|||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<T1> action)
|
||||
|
@ -96,7 +182,7 @@ namespace SHADE
|
|||
actions.Add(new CallbackAction<T1>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
|
@ -174,7 +260,7 @@ namespace SHADE
|
|||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<T1, T2> action)
|
||||
|
@ -182,7 +268,7 @@ namespace SHADE
|
|||
actions.Add(new CallbackAction<T1, T2>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
|
@ -260,7 +346,7 @@ namespace SHADE
|
|||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<T1, T2, T3> action)
|
||||
|
@ -268,7 +354,7 @@ namespace SHADE
|
|||
actions.Add(new CallbackAction<T1, T2, T3>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
|
@ -346,7 +432,7 @@ namespace SHADE
|
|||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4> action)
|
||||
|
@ -354,7 +440,7 @@ namespace SHADE
|
|||
actions.Add(new CallbackAction<T1, T2, T3, T4>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
|
@ -432,7 +518,7 @@ namespace SHADE
|
|||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5> action)
|
||||
|
@ -440,7 +526,7 @@ namespace SHADE
|
|||
actions.Add(new CallbackAction<T1, T2, T3, T4, T5>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
|
@ -518,7 +604,7 @@ namespace SHADE
|
|||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6> action)
|
||||
|
@ -526,7 +612,7 @@ namespace SHADE
|
|||
actions.Add(new CallbackAction<T1, T2, T3, T4, T5, T6>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
|
@ -604,7 +690,7 @@ namespace SHADE
|
|||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7> action)
|
||||
|
@ -612,7 +698,7 @@ namespace SHADE
|
|||
actions.Add(new CallbackAction<T1, T2, T3, T4, T5, T6, T7>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
|
@ -690,7 +776,7 @@ namespace SHADE
|
|||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7, T8> action)
|
||||
|
@ -698,7 +784,7 @@ namespace SHADE
|
|||
actions.Add(new CallbackAction<T1, T2, T3, T4, T5, T6, T7, T8>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
|
@ -776,7 +862,7 @@ namespace SHADE
|
|||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7, T8, T9> action)
|
||||
|
@ -784,7 +870,7 @@ namespace SHADE
|
|||
actions.Add(new CallbackAction<T1, T2, T3, T4, T5, T6, T7, T8, T9>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
|
@ -862,7 +948,7 @@ namespace SHADE
|
|||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> action)
|
||||
|
@ -870,7 +956,7 @@ namespace SHADE
|
|||
actions.Add(new CallbackAction<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
|
|
|
@ -61,13 +61,13 @@ namespace SHADE
|
|||
IEnumerable<ICallbackAction> Actions { get; }
|
||||
}
|
||||
|
||||
<# for (int i = 1; i <= max; ++i) { #>
|
||||
<# for (int i = 0; i <= max; ++i) { #>
|
||||
/// <summary>
|
||||
/// A container of CallbackActions that is correlated to a specific scenario as
|
||||
/// specified by the user of this class.
|
||||
/// This variant accepts CallbackEvents with 1 generic parameter.
|
||||
/// </summary>
|
||||
public class CallbackEvent<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>> : ICallbackEvent
|
||||
public class CallbackEvent<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #> : ICallbackEvent
|
||||
{
|
||||
#region Properties --------------------------------------------------------------
|
||||
/// <inheritdoc/>
|
||||
|
@ -82,13 +82,13 @@ namespace SHADE
|
|||
/// <inheritdoc/>
|
||||
public void RegisterAction()
|
||||
{
|
||||
actions.Add(new CallbackAction<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>>());
|
||||
actions.Add(new CallbackAction<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #>());
|
||||
}
|
||||
/// <inheritdoc/>
|
||||
public void RegisterAction(ICallbackAction action)
|
||||
{
|
||||
// Check if valid action
|
||||
if (action.GetType() != typeof(CallbackAction<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>>))
|
||||
if (action.GetType() != typeof(CallbackAction<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #>))
|
||||
{
|
||||
Debug.LogWarning("Attempted to register an invalid CallbackAction type. Ignoring.", this);
|
||||
return;
|
||||
|
@ -100,26 +100,26 @@ namespace SHADE
|
|||
/// Adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">CallbackAction to add.</param>
|
||||
public void RegisterAction(CallbackAction<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>> action)
|
||||
public void RegisterAction(CallbackAction<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #> action)
|
||||
{
|
||||
actions.Add(action);
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="action">System.Action to add as a CallbackAction.</param>
|
||||
public void RegisterAction(Action<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>> action)
|
||||
public void RegisterAction(Action<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #> action)
|
||||
{
|
||||
actions.Add(new CallbackAction<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>>(action));
|
||||
actions.Add(new CallbackAction<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #>(action));
|
||||
}
|
||||
/// <summary>
|
||||
/// Constructs and adds a CallbackACtion into the event.
|
||||
/// Constructs and adds a CallbackAction into the event.
|
||||
/// </summary>
|
||||
/// <param name="target">Object to call the method on.</param>
|
||||
/// <param name="method">Method to call.</param>
|
||||
public void RegisterAction(Object target, MethodInfo method)
|
||||
{
|
||||
actions.Add(new CallbackAction<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>>(target, method));
|
||||
actions.Add(new CallbackAction<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #>(target, method));
|
||||
}
|
||||
/// <inheritdoc/>
|
||||
public void DeregisterAction(ICallbackAction action)
|
||||
|
@ -132,9 +132,9 @@ namespace SHADE
|
|||
/// <summary>
|
||||
/// Invokes all stored CallbackActions with the specified parameters.
|
||||
/// </summary>
|
||||
public void Invoke(<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#> t<#=t#><# if (t != i) { #>, <# } #><# } #>)
|
||||
public void Invoke(<# if (i != 0) { for (int t = 1; t < i + 1; ++t) { #>T<#=t#> t<#=t#><# if (t != i) { #>, <# } #><# } } #>)
|
||||
{
|
||||
foreach (CallbackAction<<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>> action in actions)
|
||||
foreach (CallbackAction<# if (i != 0) { #><<# for (int t = 1; t < i + 1; ++t) { #>T<#=t#><# if (t != i) { #>, <# } #><# } #>><# } #> action in actions)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
@ -8,6 +8,8 @@ public class RaccoonSpin : Script
|
|||
private float RotateSpeed = 1.0f;
|
||||
private float rotation = 0.0f;
|
||||
[SerializeField]
|
||||
private CallbackEvent emptyEvent;
|
||||
[SerializeField]
|
||||
private CallbackEvent<int> testEvent;
|
||||
[SerializeField]
|
||||
private CallbackEvent<int, double, Vector3> testEvent3 = new CallbackEvent<int, double, Vector3>();
|
||||
|
@ -17,6 +19,8 @@ public class RaccoonSpin : Script
|
|||
|
||||
protected override void awake()
|
||||
{
|
||||
emptyEvent = new CallbackEvent();
|
||||
emptyEvent.RegisterAction(() => Debug.Log("Empty event action!"));
|
||||
testEvent = new CallbackEvent<int>();
|
||||
Action<int> action = (x) => Debug.Log($"{x}");
|
||||
testEvent.RegisterAction(action);
|
||||
|
|
Loading…
Reference in New Issue