public void RegisterListener(int eventId, IEventListener listener, int priority = 0) { if (!m_eventListenerContainers.ContainsKey(eventId)) { m_eventListenerContainers[eventId] = new List <ListenerContainer>(); } List <ListenerContainer> listeners = m_eventListenerContainers[eventId]; int listenerCount = listeners.Count; for (int i = 0; i < listenerCount; i++) { if (listeners[i].Listener == listener) { JSLDebug.LogException(new Exception("[EventManager] - Listener is already registered for this object.")); return; } } listeners.Add(new ListenerContainer(listener, priority)); listeners.Sort(); m_eventListenerContainers[eventId] = listeners; if (m_eventListenerArrays.ContainsKey(eventId)) { m_eventListenerArrays[eventId] = listeners.ToArray(); } else { m_eventListenerArrays.Add(eventId, listeners.ToArray()); } }