/// <summary> /// Remove an existing event delegate from the list. /// </summary> static public bool Remove (List<EventDelegate> list, EventDelegate ev) { if (list != null) { for (int i = 0, imax = list.Count; i < imax; ++i) { EventDelegate del = list[i]; if (del != null && del.Equals(ev)) { list.RemoveAt(i); return true; } } } return false; }
/// <summary> /// Append a new event delegate to the list. /// </summary> static public void Add (List<EventDelegate> list, EventDelegate ev, bool oneShot) { if (ev.mRawDelegate || ev.target == null || string.IsNullOrEmpty(ev.methodName)) { Add(list, ev.mCachedCallback, oneShot); } else if (list != null) { for (int i = 0, imax = list.Count; i < imax; ++i) { EventDelegate del = list[i]; if (del != null && del.Equals(ev)) return; } EventDelegate copy = new EventDelegate(ev.target, ev.methodName); copy.oneShot = oneShot; if (ev.mParameters != null && ev.mParameters.Length > 0) { copy.mParameters = new Parameter[ev.mParameters.Length]; for (int i = 0; i < ev.mParameters.Length; ++i) copy.mParameters[i] = ev.mParameters[i]; } list.Add(copy); } else Debug.LogWarning("Attempting to add a callback to a list that's null"); }
/// <summary> /// Append a new event delegate to the list. /// </summary> static public void Add (List<EventDelegate> list, EventDelegate ev) { Add(list, ev, ev.oneShot); }
/// <summary> /// Append a new event delegate to the list. /// </summary> static public EventDelegate Add (List<EventDelegate> list, Callback callback, bool oneShot) { if (list != null) { for (int i = 0, imax = list.Count; i < imax; ++i) { EventDelegate del = list[i]; if (del != null && del.Equals(callback)) return del; } EventDelegate ed = new EventDelegate(callback); ed.oneShot = oneShot; list.Add(ed); return ed; } Debug.LogWarning("Attempting to add a callback to a list that's null"); return null; }
/// <summary> /// Assign a new event delegate. /// </summary> static public void Set (List<EventDelegate> list, EventDelegate del) { if (list != null) { list.Clear(); list.Add(del); } }
/// <summary> /// Assign a new event delegate. /// </summary> static public EventDelegate Set (List<EventDelegate> list, Callback callback) { if (list != null) { EventDelegate del = new EventDelegate(callback); list.Clear(); list.Add(del); return del; } return null; }