public ReturnEventArg(ReturnEventData data)
 {
     trigger    = data.args.trigger;
     callback   = data.args.callback;
     isCallback = data.args.isCallback;
     target     = data.args.target;
     global     = data.args.global;
     arguments  = data.args.arguments;
     name       = data.args.name;
 }
 public ReturnEventArg(TriggerReturnEvent trigger, UnityEngine.GameObject target, string name, bool global, object[] arguments = null)
 {
     this.trigger   = trigger;
     callback       = null;
     isCallback     = false;
     this.target    = target;
     this.global    = global;
     this.arguments = arguments;
     this.name      = name;
 }
 public ReturnEventArg(Action <object> callback, UnityEngine.GameObject target, string name, bool global, object[] arguments = null)
 {
     this.trigger   = null;
     this.callback  = callback;
     isCallback     = true;
     this.target    = target;
     this.global    = global;
     this.arguments = arguments;
     this.name      = name;
 }
        /// <summary>
        /// Set the data to return back, then triggers a return back to the ReturnEventUnit.
        /// </summary>
        public ControlOutput Enter(Flow flow)
        {
            var _data = flow.GetValue <ReturnEventData>(data);
            var val   = flow.GetValue(value);

            if (_data.args.trigger != null)
            {
                _data.args.trigger.storingValue = val;
            }
            if (_data.args.isCallback)
            {
                _data.args.callback?.DynamicInvoke(val);
            }
            else
            {
                TriggerReturnEvent.Trigger(_data.args);
            }
            return(null);
        }
 /// <summary>
 /// Trigger the return event. This is meant for internal use of the trigger unit.
 /// </summary>
 /// <param name="trigger">The trigger unit we will return to when it hits a return unit.</param>
 /// <param name="target">The gameobject target of the event</param>
 /// <param name="name">The name of the event.</param>
 /// <param name="global">Is the event global to all Return Events? Will ignore the target GameObject. Target can be null in this case.</param>
 /// <param name="args">The arguments to send through.</param>
 public static void Trigger(TriggerReturnEvent trigger, GameObject target, string name, bool global = false, params object[] args)
 {
     EventBus.Trigger <ReturnEventArg>("Return", new ReturnEventArg(trigger, target, name, global, args));
 }