public bool AbortEvent <EventType>(bool allOfType = false) where EventType : Cv_Event { Cv_Debug.Assert((m_iActiveQueue >= 0 && m_iActiveQueue < NUM_QUEUES), "EventManager must have an active event queue."); Cv_EventType eType = Cv_Event.GetType <EventType>(); var success = false; Cv_Debug.Log("Events", "Attempting to abort event type " + typeof(EventType).Name); var queue = m_EventQueues[m_iActiveQueue]; if (allOfType) { if (queue.Remove(queue.First(e => e.Type == eType))) { success = true; } } else { while (queue.Remove(queue.First(e => e.Type == eType))) { success = true; } } if (success) { Cv_Debug.Log("Events", "Successfully aborted event type " + typeof(EventType).Name); } return(success); }
internal Cv_EventListenerHandle(int ID) { ListenerID = ID; Delegate = null; ScriptDelegate = ""; IsScriptListener = false; EventType = Cv_EventType.INVALID_EVENT; Entity = null; EventName = ""; Manager = null; }
public Cv_EventListenerHandle AddListener(string eventName, string onEvent, Cv_Entity entity) { Cv_Debug.Log("Events", "Attempting to add listener for event type " + eventName); Cv_EventType eType = Cv_Event.GetType(eventName); lock (m_ScriptEventListeners) { if (!m_ScriptEventListeners.ContainsKey(eType)) { m_ScriptEventListeners[eType] = new List <Cv_ScriptListener>(); } var listeners = m_ScriptEventListeners[eType]; foreach (var l in listeners) { if (l.Delegate == onEvent && l.Entity == entity) { Cv_Debug.Warning("Attempting to double register a listener."); return(Cv_EventListenerHandle.NullHandle); } } listeners.Add(new Cv_ScriptListener(entity, onEvent)); } Cv_Debug.Log("Events", "Successfully added listener for event type " + eventName); var handle = new Cv_EventListenerHandle(m_iEventHandleNum); m_iEventHandleNum++; handle.EventName = eventName; handle.EventType = eType; handle.ScriptDelegate = onEvent; handle.IsScriptListener = true; handle.Entity = entity; handle.Manager = this; return(handle); }
public Cv_EventListenerHandle AddListener <EventType>(NewEventDelegate callback) where EventType : Cv_Event { Cv_Debug.Log("Events", "Attempting to add listener for event type " + typeof(EventType).Name); Cv_EventType eType = Cv_Event.GetType <EventType>(); lock (m_EventListeners) { if (!m_EventListeners.ContainsKey(eType)) { m_EventListeners[eType] = new List <NewEventDelegate>(); } var listeners = m_EventListeners[eType]; foreach (var l in listeners) { if (l == callback) { Cv_Debug.Warning("Attempting to double register a listener."); return(Cv_EventListenerHandle.NullHandle); } } listeners.Add(callback); } Cv_Debug.Log("Events", "Successfully added listener for event type " + typeof(EventType).Name); var handle = new Cv_EventListenerHandle(m_iEventHandleNum); m_iEventHandleNum++; handle.EventType = eType; handle.EventName = typeof(EventType).Name; handle.Delegate = callback; handle.Manager = this; return(handle); }
public bool RemoveListener <EventType>(NewEventDelegate listener) where EventType : Cv_Event { Cv_Debug.Log("Events", "Attempting to remove listener from event type " + typeof(EventType).Name); var success = false; Cv_EventType eType = Cv_Event.GetType <EventType>(); lock (m_EventListeners) { if (m_EventListeners.ContainsKey(eType)) { var listeners = m_EventListeners[eType]; success = listeners.Remove(listener); } } if (success) { Cv_Debug.Log("Events", "Successfully removed listener from event type " + typeof(EventType).Name); } return(success); }