public void UpdateLogicEvent()
    {
        if (m_listLogicEvent.Count == 0)
        {
            return;
        }


        _LOGIC_EVENT pLogicEvent;

        uint uTimeNow = GameProcedure.s_pTimeSystem.GetTimeNow();
        int  iterator = 0;

        while (iterator < m_listLogicEvent.Count &&
               m_listLogicEvent.Count != 0)
        {
            pLogicEvent = m_listLogicEvent[iterator];
            bool bMustRemove = false;
            bool bMustDo     = false;
            if (pLogicEvent.m_nSenderID != MacroDefine.UINT_MAX)
            {
                CObject pObject = CObjectManager.Instance.FindServerObject((int)pLogicEvent.m_nSenderID);
                if (pObject != null)
                {
                    uint elapseTime = pLogicEvent.m_uBeginTime + pLogicEvent.m_uRemoveTime;
                    if (pObject.IsLogicReady(pLogicEvent.m_nSenderLogicCount))
                    {
                        LogManager.Log("UpdateLogicEvent IsLogicReady" + this.m_Character.ServerID);
                        bMustDo = true;
                    }
                    else if (elapseTime < uTimeNow)
                    {
                        LogManager.Log("UpdateLogicEvent elapseTime" + this.m_Character.ServerID);
                        bMustRemove = true;
                    }
                }
                else
                {
                    LogManager.Log("UpdateLogicEvent pObject== null" + this.m_Character.ServerID);
                    bMustDo = true;
                }
            }
            else
            {
                LogManager.Log("UpdateLogicEvent pLogicEvent.m_nSenderID == MacroDefine.UINT_MAX" + this.m_Character.ServerID);
                bMustDo = true;
            }

            if (bMustDo || bMustRemove)
            {
                if (pLogicEvent.m_nEventType == ENUM_LOGIC_EVENT_TYPE.LOGIC_EVENT_TYPE_DAMAGE &&
                    pLogicEvent.m_damage.m_nBulletID != MacroDefine.INVALID_ID)
                {
                    bMustDo = false;
                    if (!bMustRemove)// 超时删除 [6/30/2011 Sun]
                    {
                        break;
                    }
                }
                //AxTrace(0, 0, "%s", "Show Damage in Update_LogicEvent!");
                if (bMustDo)
                {
                    LogManager.Log("UpdateLogicEvent DoLogicEvent" + this.m_Character.ServerID);
                    DoLogicEvent(pLogicEvent);
                }
                else
                {
                    LogManager.Log("Enter not must do");
                }

                if (!m_listLogicEvent.Remove(pLogicEvent))
                {
                    LogManager.LogWarning("m_listLogicEvent remove failed");
                }
                LogManager.Log("m_Character.IsDie()" + m_Character.IsDie() + " ServerID " + this.m_Character.ServerID + "m_listLogicEvent.Count " + m_listLogicEvent.Count + "m_Character.CharacterLogic_Get() " + m_Character.CharacterLogic_Get());
                if (m_listLogicEvent.Count == 0 &&
                    m_Character.IsDie() &&
                    m_Character.CharacterLogic_Get() != ENUM_CHARACTER_LOGIC.CHARACTER_LOGIC_DEAD)
                {
                    m_Character.OnDead(true);
                }
            }
            else
            {
                iterator++;
            }
        }
    }