protected override void RegisterPorts() { delegateType = delegateType != null ? delegateType : typeof(Delegate); delegatePort = AddValueOutput(delegateType.FriendlyName(), "Delegate", delegateType, () => { return(reflectedEvent.AsDelegate()); }); callbackPort = AddFlowOutput("Callback"); if (delegateType == typeof(Delegate)) { return; } if (reflectedEvent == null) { reflectedEvent = new ReflectedDelegateEvent(delegateType); reflectedEvent.Add(Callback); } var parameters = delegateType.RTGetDelegateTypeParameters(); for (var _i = 0; _i < parameters.Length; _i++) { var i = _i; var parameter = parameters[i]; AddValueOutput(parameter.Name, "arg" + i, parameter.ParameterType, () => { return(args[i]); }); } }
///Start listening to a reflected delegate event using this wrapper public void StartListening(ReflectedDelegateEvent reflectedEvent, ReflectedDelegateEvent.DelegateEventCallback callback) { if (reflectedEvent == null || callback == null) { return; } reflectedEvent.Add(callback); eventInfo.AddEventHandler(instance, reflectedEvent.AsDelegate()); }
public override void OnGraphStarted() { if (eventInfo == null) { return; } instance = null; if (!isStaticEvent) { instance = instancePort.value; if (instance == null) { Fail("Target is null"); return; } } eventInfo.AddEventHandler(instance, reflectedEvent.AsDelegate()); reflectedEvent.Add(OnEventRaised); }