예제 #1
0
        /// <summary>
        /// Remove an existing event delegate from the list.
        /// </summary>
        public static bool Remove(List <ActionDelegate> list, ActionDelegate ev)
        {
            if (list != null)
            {
                for (int i = 0, imax = list.Count; i < imax; ++i)
                {
                    ActionDelegate del = list[i];

                    if (del != null && del.Equals(ev))
                    {
                        list.RemoveAt(i);
                        return(true);
                    }
                }
            }

            return(false);
        }
예제 #2
0
        /// <summary>
        /// Append a new event delegate to the list.
        /// </summary>
        public static ActionDelegate Add(List <ActionDelegate> list, Callback callback, bool oneShot)
        {
            if (list != null)
            {
                for (int i = 0, imax = list.Count; i < imax; ++i)
                {
                    ActionDelegate del = list[i];
                    if (del != null && del.Equals(callback))
                    {
                        return(del);
                    }
                }

                ActionDelegate ed = new ActionDelegate(callback);
                ed.oneShot = oneShot;
                list.Add(ed);
                return(ed);
            }

            Debug.LogWarning("Attempting to add a callback to a list that's null");
            return(null);
        }
예제 #3
0
        /// <summary>
        /// Append a new event delegate to the list.
        /// </summary>
        public static void Add(List <ActionDelegate> list, ActionDelegate 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)
                {
                    ActionDelegate del = list[i];
                    if (del != null && del.Equals(ev))
                    {
                        return;
                    }
                }

                ActionDelegate copy = new ActionDelegate(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");
            }
        }