public bool QueueEvent(VSGameEvent evt) { if (!delegates.ContainsKey(evt.GetType())) { Debug.LogWarning("EventManager: QueueEvent failed due to no listeners for event: " + evt.GetType()); return(false); } mEventQueue.Enqueue(evt); return(true); }
public void TriggerEvent(VSGameEvent vSGameEvent) { EventDelegate del; if (delegates.TryGetValue(vSGameEvent.GetType(), out del)) { del.Invoke(vSGameEvent); // remove listeners which should only be called once foreach (EventDelegate k in delegates[vSGameEvent.GetType()].GetInvocationList()) { if (onceLookups.ContainsKey(k)) { delegates[vSGameEvent.GetType()] -= k; if (delegates[vSGameEvent.GetType()] == null) { delegates.Remove(vSGameEvent.GetType()); } delegateLookup.Remove(onceLookups[k]); onceLookups.Remove(k); } } } else { Debug.LogWarning("Event: " + vSGameEvent.GetType() + " has no listeners"); } }