private void ProcessQueuedListener(QueuedListener queuedListener) { AbstractEventHandler eventHandler; if (Instance.eventListeners.TryGetValue(queuedListener.eventType, out eventHandler)) { eventHandler.AddListener(queuedListener.internalDelegate, queuedListener.onEvent, queuedListener.handle, queuedListener.args); } else { RegisterEvent(queuedListener.eventType).AddListener(queuedListener.internalDelegate, queuedListener.onEvent, queuedListener.handle, queuedListener.args); } }
private void LateUpdate() { while (queuedRemoveListeners.Count > 0) { QueuedListener queuedListener = queuedRemoveListeners[queuedRemoveListeners.Count - 1]; queuedRemoveListeners.RemoveAt(queuedRemoveListeners.Count - 1); AbstractEventHandler eventHandler; if (Instance.eventListeners.TryGetValue(queuedListener.eventType, out eventHandler)) { eventHandler.RemoveListener(queuedListener.internalDelegate, queuedListener.onEvent, queuedListener.args); } } while (queuedListeners.Count > 0) { QueuedListener queuedListener = queuedListeners[0]; queuedListeners.RemoveAt(0); ProcessQueuedListener(queuedListener); } }