Exemple #1
0
    /// <summary>
    /// Equality operator.
    /// </summary>

    public override bool Equals(object obj)
    {
        if (obj == null)
        {
            return(!isValid);
        }

        if (obj is Callback)
        {
            Callback callback = obj as Callback;
                        #if REFLECTION_SUPPORT
            if (callback.Equals(mCachedCallback))
            {
                return(true);
            }
            MonoBehaviour mb = callback.Target as MonoBehaviour;
            return(mTarget == mb && string.Equals(mMethodName, GetMethodName(callback)));
                        #elif UNITY_FLASH
            return(callback == mCachedCallback);
                        #else
            return(callback.Equals(mCachedCallback));
                        #endif
        }

        if (obj is UEEventDelegate)
        {
            UEEventDelegate del = obj as UEEventDelegate;
            return(mTarget == del.mTarget && string.Equals(mMethodName, del.mMethodName));
        }
        return(false);
    }
Exemple #2
0
    /// <summary>
    /// Assign a new event delegate.
    /// </summary>

    static public void Set(List <UEEventDelegate> list, UEEventDelegate del)
    {
        if (list != null)
        {
            list.Clear();
            list.Add(del);
        }
    }
Exemple #3
0
    /// <summary>
    /// Assign a new event delegate.
    /// </summary>

    static public UEEventDelegate Set(List <UEEventDelegate> list, Callback callback)
    {
        if (list != null)
        {
            UEEventDelegate del = new UEEventDelegate(callback);
            list.Clear();
            list.Add(del);
            return(del);
        }
        return(null);
    }
Exemple #4
0
    /// <summary>
    /// Execute an entire list of delegates.
    /// </summary>

    static public void Execute(List <UEEventDelegate> list)
    {
        if (list != null)
        {
            for (int i = 0; i < list.Count;)
            {
                UEEventDelegate del = list[i];

                if (del != null)
                {
                                        #if !UNITY_EDITOR && !UNITY_FLASH
                    try
                    {
                        del.Execute();
                    }
                    catch (System.Exception ex)
                    {
                        if (ex.InnerException != null)
                        {
                            Debug.LogError(ex.InnerException.Message);
                        }
                        else
                        {
                            Debug.LogError(ex.Message);
                        }
                    }
                                        #else
                    del.Execute();
                                        #endif

                    if (i >= list.Count)
                    {
                        break;
                    }
                    if (list[i] != del)
                    {
                        continue;
                    }

                    if (del.oneShot)
                    {
                        list.RemoveAt(i);
                        continue;
                    }
                }
                ++i;
            }
        }
    }
Exemple #5
0
    /// <summary>
    /// Convenience function to check if the specified list of delegates can be executed.
    /// </summary>

    static public bool IsValid(List <UEEventDelegate> list)
    {
        if (list != null)
        {
            for (int i = 0, imax = list.Count; i < imax; ++i)
            {
                UEEventDelegate del = list[i];
                if (del != null && del.isValid)
                {
                    return(true);
                }
            }
        }
        return(false);
    }
Exemple #6
0
    /// <summary>
    /// Remove an existing event delegate from the list.
    /// </summary>

    static public bool Remove(List <UEEventDelegate> list, UEEventDelegate ev)
    {
        if (list != null)
        {
            for (int i = 0, imax = list.Count; i < imax; ++i)
            {
                UEEventDelegate del = list[i];

                if (del != null && del.Equals(ev))
                {
                    list.RemoveAt(i);
                    return(true);
                }
            }
        }
        return(false);
    }
Exemple #7
0
    /// <summary>
    /// Append a new event delegate to the list.
    /// </summary>

    static public UEEventDelegate Add(List <UEEventDelegate> list, Callback callback, bool oneShot)
    {
        if (list != null)
        {
            for (int i = 0, imax = list.Count; i < imax; ++i)
            {
                UEEventDelegate del = list[i];
                if (del != null && del.Equals(callback))
                {
                    return(del);
                }
            }

            UEEventDelegate ed = new UEEventDelegate(callback);
            ed.oneShot = oneShot;
            list.Add(ed);
            return(ed);
        }
        Debug.LogWarning("Attempting to add a callback to a list that's null");
        return(null);
    }
Exemple #8
0
    /// <summary>
    /// Append a new event delegate to the list.
    /// </summary>

    static public void Add(List <UEEventDelegate> list, UEEventDelegate 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)
            {
                UEEventDelegate del = list[i];
                if (del != null && del.Equals(ev))
                {
                    return;
                }
            }

            UEEventDelegate copy = new UEEventDelegate(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");
        }
    }
Exemple #9
0
    /// <summary>
    /// Append a new event delegate to the list.
    /// </summary>

    static public void Add(List <UEEventDelegate> list, UEEventDelegate ev)
    {
        Add(list, ev, ev.oneShot);
    }