Exemplo n.º 1
0
 public void RemoveEventListener(EventType type, EventDispatcher listener, EVENT_FUNCTION callback)
 {
     lock (gListenerDict)
     {
         for (var i = 0; i < mListListener.Count; i++)
         {
             LISTENER item = mListListener[i];
             if (item.Type == type && item.Function == callback && item.Listener.Target == listener)
             {
                 if (mListListener.Count == 1)
                 {
                     for (var j = 0; j < listener.mListListenTo.Count; j++)
                     {
                         if (listener.mListListenTo[j].Target == this)
                         {
                             listener.mListListenTo.RemoveAt(j);
                             j--;
                             break;
                         }
                     }
                     gListenerDict.Remove(this);
                 }
                 mListListener.Remove(item);
                 i--;
                 break;
             }
         }
     }
 }
Exemplo n.º 2
0
 public void AddEventListener(EventType type, EventDispatcher listener, EVENT_FUNCTION callback)
 {
     lock (gListenerDict)
     {
         LISTENER listen = new LISTENER();
         listen.Type     = type;
         listen.Listener = new WeakReference(listener);
         listen.Function = callback;
         RemoveEventListener(type, listener, callback);
         if (!gListenerDict.ContainsKey(this))
         {
             gListenerDict[this] = new Dictionary <EventDispatcher, int>();
         }
         gListenerDict[this][listener] = 0;
         mListListener.Add(listen);
         foreach (var item in listener.mListListenTo)
         {
             if (item.Target == this)
             {
                 return;
             }
         }
         listener.mListListenTo.Add(new WeakReference(this));
     }
 }