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;
 }
        /// <summary>
        /// Sets up the arguments for the Return Event, and triggers it upon entering the unit.
        /// </summary>
        public ControlOutput Enter(Flow flow)
        {
            List <object> argumentList = new List <object>();
            var           eventData    = new ReturnEventData(new ReturnEventArg(this, global ? (GameObject)null : flow.GetValue <GameObject>(target), flow.GetValue <string>(name), global, argumentList.ToArray()));

            argumentList.Add(eventData);
            argumentList.AddRange(arguments.Select(new System.Func <ValueInput, object>(flow.GetConvertedValue)));
            ReturnEvent.Trigger(this, global ? (GameObject)null : flow.GetValue <GameObject>(target), flow.GetValue <string>(name), global, argumentList.ToArray());

            return(exit);
        }