Ejemplo n.º 1
0
        private void Unregister(EventKey InEventKey, Delegate InDelegate, EventDelegateType InEventDelegateType)
        {
            EventDelegate eventDelegate;

            if (router.TryGetValue(InEventKey, out eventDelegate))
            {
                eventDelegate = eventDelegate.NextNode;
                if (null == eventDelegate)
                {
                    Debug.LogError(string.Format("Unregister event named {0}.", InEventKey));
                }
                else
                {
                    do
                    {
                        if (eventDelegate.Equals(InDelegate, InEventDelegateType))
                        {
                            if (eventDelegate.NextNode == null)
                            {
                                eventDelegate.PrevNode.NextNode = null;
                            }
                            else
                            {
                                eventDelegate.PrevNode.NextNode = eventDelegate.NextNode;
                                eventDelegate.NextNode.PrevNode = eventDelegate.PrevNode;
                            }
                        }

                        eventDelegate = eventDelegate.NextNode;
                    } while (null != eventDelegate);
                }
            }

            InvokeEventUnregisterEvent(InEventKey);
        }
Ejemplo n.º 2
0
 private EventDelegate(Delegate InCusDelegate, EventDelegateType InType, bool InIsSingleTime)
 {
     CusDelegate  = InCusDelegate;
     Type         = InType;
     IsSingleTime = InIsSingleTime;
     PrevNode     = null;
     NextNode     = null;
 }
Ejemplo n.º 3
0
 public static EventDelegate RegisterHead(EventDelegateType InEventDelegateType)
 {
     return(new EventDelegate(null, InEventDelegateType, false));
 }
Ejemplo n.º 4
0
 public bool Equals(Delegate InDelegate, EventDelegateType InEventDelegateType)
 {
     return(Type == InEventDelegateType && CusDelegate == InDelegate);
 }