public static void TriggerEvent(string eventType, RealmEventBase eventData) { RealmEventTopic thisEvent = null; if (instance.realmEventDictionary.TryGetValue(eventType, out thisEvent)) { thisEvent.Invoke(eventData); } }
/*public static void StartListening<T>(UnityAction<T> listener) where T : RealmEvent { * UnityAction<RealmEvent> callback = (RealmEvent eventData) => { * listener.Invoke((T)Convert.ChangeType(eventData, typeof(T))); * }; * * StartListening(GetEventType<T>(), callback); * }*/ public static void StartListening(string eventName, UnityAction <RealmEventBase> listener) { RealmEventTopic thisEvent = null; if (instance.realmEventDictionary.TryGetValue(eventName, out thisEvent)) { thisEvent.AddListener(listener); } else { RealmEventTopic myEvent = new RealmEventTopic(); myEvent.AddListener(listener); instance.realmEventDictionary.Add(eventName, myEvent); } }
public static void StopListening(string eventName, UnityAction <RealmEventBase> listener) { if (eventManager == null) { return; } RealmEventTopic thisEvent = null; if (instance.realmEventDictionary.TryGetValue(eventName, out thisEvent)) { thisEvent.RemoveListener(listener); } else { Debug.Log("Tried to remove non-existent listener on event " + eventName); } }