private void AddListenerInternal <T>(Delegate originalHandler, EnvoyEventHandler wrapperHandler) where T : EventData { EventInfo eventInfo = GetEvent <T>(); if (eventInfo.DelegateLookup.ContainsKey(originalHandler)) { Debug.LogWarning(string.Format("An attempt to attach method {0} to an event multiple times was detected. Ignoring", typeof(T))); return; } eventInfo.DelegateLookup.Add(originalHandler, wrapperHandler); eventInfo.EnvoyEvent += wrapperHandler; }
/// <summary> /// Removes an event listener. /// </summary> /// <param name="handler"> /// The event listener delegate. /// </param> /// <typeparam name="T"> /// The type of event listener is listening for. /// </typeparam> public void RemoveListener <T>(EnvoyEventHandler <T> handler) where T : EventData { RemoveListenerInternal <T>(handler); }
/// <summary> /// Adds an event listener. /// </summary> /// <param name="handler"> /// The event listener delegate. /// </param> /// <typeparam name="T"> /// The type of event listener is listening for. /// </typeparam> public void AddListener <T>(EnvoyEventHandler <T> handler) where T : EventData { AddListenerInternal <T>(handler, args => handler((T)args)); }