예제 #1
0
    static int DoAddAll(int msg, int code, object onFire)
    {
        EventObserver observer = IdTypePool <EventObserver> .Get();

        observer.Init(null, msg, code, true, onFire);
        AllNotifier.Add(observer);
        m_observersById.Add(observer.Id, observer);
        return(observer.Id);
    }
예제 #2
0
    //取消监听
    public static void Remove(EventObserver observer)
    {
        if (observer.IsInPool)
        {
            Debuger.LogError(string.Format("重复删除监听者:{0} {1}", observer.Id, Util.GetDelegateName(observer.GetDelegate())));
            return;
        }
        if (observer.removeCounter > 0 && m_fireCount > 0)
        {
            //    Debuger.LogError(string.Format("重复删除监听者:{0} {1}", observer.Id,  Util.GetDelegateName(observer.GetDelegate())));
            return;
        }
        observer.removeCounter = 1;
        if (m_fireCount > 0)
        {
            m_delayRemovesObservers.Add(observer);
            return;
        }


        if (!observer.isAll)
        {
            observer.notifier.Remove(observer);
            AllFireNotifier.Remove(observer);
        }
        else
        {
            AllNotifier.Remove(observer);
        }
        if (!m_observersById.Remove(observer.Id))
        {
            Debuger.LogError(string.Format("删除了不存在的监听者:{0}", observer.Id));
        }

        IdTypePool <EventObserver> .Put(observer);
    }