private bool remove_listener(string event_name, PurpleLogCallback listener) { if (eventListeners.ContainsKey (event_name)) { eventListeners[event_name] -= listener; return true; } return false; }
public static bool RemoveListener(string event_name, PurpleLogCallback listener) { return Instance.remove_listener (event_name, listener); }
// EVENT DISPATCH //////////////////// private void add_listener(string event_name, PurpleLogCallback listener) { if (!eventListeners.ContainsKey (event_name)) { eventListeners.Add(event_name, null); } // prevent chaining the same delegate listener multiple times if(eventListeners[event_name] != null) { Delegate [] callbackList = eventListeners[event_name].GetInvocationList(); foreach(PurpleLogCallback singleCallback in callbackList) { if(listener.Method.Name == singleCallback.Method.Name) return; } } // delegates can be chained using addition eventListeners[event_name] += listener; }
public static void AddListener(string event_name, PurpleLogCallback listener) { Instance.add_listener(event_name, listener); }