/// <summary> /// Stop listening to events /// </summary> /// <typeparam name="VncEvent">Type of event to unlisten to</typeparam> /// <param name="listener">Remove itself as event listener</param> public static void Unlisten <VncEvent>(this IVncEventListener <VncEvent> listener) where VncEvent : struct { List <IVncEventListenerGeneric> _eventList; if (_events.TryGetValue(typeof(VncEvent), out _eventList)) { _eventList.Remove(listener); } else { throw new UnityException("Cannot unlisten this listener. It doesn't exist."); } }
/// <summary> /// Start listening to events /// </summary> /// <typeparam name="VncEvent">Type of event to listen to</typeparam> /// <param name="listener">Register itself as event listener</param> public static void Listen <VncEvent>(this IVncEventListener <VncEvent> listener) where VncEvent : struct { Type eType = typeof(VncEvent); List <IVncEventListenerGeneric> _eventList; if (!_events.ContainsKey(eType)) { _eventList = new List <IVncEventListenerGeneric>(); _events.Add(eType, _eventList); } else { _eventList = _events[eType]; } if (!_eventList.Contains(listener)) { _eventList.Add(listener); } }