private ControlOutput Trigger(Flow flow)
        {
            if (_eventType == null)
            {
                return(exit);
            }

            var eventInstance = System.Activator.CreateInstance(_eventType);

            for (var i = 0; i < inputPorts.Count; i++)
            {
                var inputPort = inputPorts[i];
                var key       = inputPort.key;
                var value     = flow.GetValue(inputPort);
                if (Info.reflectedFields.ContainsKey(key))
                {
                    var reflectedField = Info.reflectedFields[key];
                    reflectedField.SetValue(eventInstance, value);
                }
                else if (Info.reflectedProperties.ContainsKey(key))
                {
                    var reflectedProperty = Info.reflectedProperties[key];
                    reflectedProperty.SetValue(eventInstance, value);
                }
            }

            DefinedEventNode.Trigger(flow.GetValue <GameObject>(zzzEventTarget), eventInstance);

            return(exit);
        }
Beispiel #2
0
 /// <summary>
 /// Registers a C# listener for an event on the target object.  This is the scripting
 /// equivalent to the Defined Event unit.  Notice the IDisposable return value, which allows you
 /// to end the subscription for the event (via calling the .Dispose() method).
 /// </summary>
 /// <typeparam name="T">The type to listen for.</typeparam>
 /// <param name="target">The game object to listen on to receive the event.</param>
 /// <param name="onEvent">The action or method to call when the event occurs</param>
 /// <returns>A disposable that, when .Dispose is called, will unsubscribe from the
 /// event, essentially cancelling the call to RegisterListener.</returns>
 public static IDisposable RegisterListener <T>(GameObject target, Action <T> onEvent)
 {
     return(DefinedEventNode.RegisterListener <T>(target, onEvent));
 }
Beispiel #3
0
 /// <summary>
 /// Triggers Defined Event units listening for the passed eventData on the target gameobject.
 /// This is the scripting quivalent to the Trigger Defined Event unit.
 /// </summary>
 /// <param name="target">The game object that event units should listen on to receive the event.</param>
 /// <param name="eventData">This is a filled object of the type of event you want to trigger.</param>
 public static void Trigger(GameObject target, object eventData)
 {
     DefinedEventNode.Trigger(target, eventData);
 }