public uint Execute(PacketDistributed ipacket)
        {
            GC_UPDATE_NEEDIMPACTINFO packet = (GC_UPDATE_NEEDIMPACTINFO)ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic
            bool bHasRemoveOP = false;

            for (int nImpactIndex = 0; nImpactIndex < packet.impactIdCount; nImpactIndex++)
            {
                if (packet.GetImpactId(nImpactIndex) == -1)
                {
                    continue;
                }
                //添加
                if (nImpactIndex < packet.isAddCount && packet.GetIsAdd(nImpactIndex) == 1)
                {
                    ClientImpactInfo _impactInfo = new ClientImpactInfo();
                    _impactInfo.CleanUp();
                    _impactInfo.ImpactId = packet.GetImpactId(nImpactIndex);
                    if (nImpactIndex < packet.impactLogicIdCount)
                    {
                        _impactInfo.ImpactLogicId = packet.GetImpactLogicId(nImpactIndex);
                    }
                    if (nImpactIndex < packet.isForeverCount)
                    {
                        _impactInfo.IsForever = (packet.GetIsForever(nImpactIndex) == 1 ? true : false);
                    }
                    if (nImpactIndex < packet.remainTimeCount)
                    {
                        _impactInfo.RemainTime = packet.GetRemainTime(nImpactIndex) / 1.0f;
                    }
                    GameManager.gameManager.PlayerDataPool.ClientImpactInfo.Add(_impactInfo);

                    if (_impactInfo.ImpactId == GlobeVar.MOUNTCRASH_IMPACTID)
                    {
                        if (BackCamerControll.Instance() != null)
                        {
                            BackCamerControll.Instance().PlaySceneEffect(434);
                        }
                    }
                }
                else //移除
                {
                    for (int i = 0; i < GameManager.gameManager.PlayerDataPool.ClientImpactInfo.Count; i++)
                    {
                        if (GameManager.gameManager.PlayerDataPool.ClientImpactInfo[i].ImpactId == packet.GetImpactId(nImpactIndex))
                        {
                            if (GameManager.gameManager.PlayerDataPool.ClientImpactInfo[i].ImpactId == GlobeVar.MOUNTCRASH_IMPACTID)
                            {
                                if (BackCamerControll.Instance() != null)
                                {
                                    BackCamerControll.Instance().StopSceneEffect(434, false);
                                }
                            }

                            if (GameManager.gameManager.PlayerDataPool.ClientImpactInfo[i].ImpactId >= GlobeVar.XP_IMPACT_MIN_ID && GameManager.gameManager.PlayerDataPool.ClientImpactInfo[i].ImpactId <= GlobeVar.XP_IMPACT_MAX_ID)
                            {
                                bHasRemoveOP = true;
                            }
                            ClientImpactInfo _TmpInfo = new ClientImpactInfo();
                            _TmpInfo.CleanUp();
                            GameManager.gameManager.PlayerDataPool.ClientImpactInfo[i] = _TmpInfo;
                        }
                    }
                }
            }
            //清除无效的
            List <ClientImpactInfo> impactList = new List <ClientImpactInfo>();

            for (int i = 0; i < GameManager.gameManager.PlayerDataPool.ClientImpactInfo.Count; ++i)
            {
                if (GameManager.gameManager.PlayerDataPool.ClientImpactInfo[i].IsVaild() == false)
                {
                    impactList.Add(GameManager.gameManager.PlayerDataPool.ClientImpactInfo[i]);
                }
            }

            for (int i = 0; i < impactList.Count; ++i)
            {
                GameManager.gameManager.PlayerDataPool.ClientImpactInfo.Remove(impactList[i]);
            }
            //更新主角头像图标
            if (PlayerFrameLogic.Instance() != null)
            {
                PlayerFrameLogic.Instance().UpdateBuffIcon();
            }

            Obj_MainPlayer _mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

            if (_mainPlayer != null && _mainPlayer.GetCurrentChangeState() != _mainPlayer.CurChangeState)
            {
                _mainPlayer.CurChangeState = _mainPlayer.GetCurrentChangeState();
                if (SkillBarLogic.Instance() != null)
                {
                    SkillBarLogic.Instance().OnClickXpClose();
                }

                if ((int)Games.GlobeDefine.GameDefine_Globe.ChangeModeState.CHANGE_2 == _mainPlayer.CurChangeState ||
                    (int)Games.GlobeDefine.GameDefine_Globe.ChangeModeState.CHANGE_1 == _mainPlayer.CurChangeState)
                {
                    Singleton <ObjManager> .GetInstance().ChangeMainPlayer();
                }
                else
                {
                    if ((int)Games.GlobeDefine.GameDefine_Globe.ChangeModeState.NORMAL == _mainPlayer.CurChangeState)
                    {
                        Singleton <ObjManager> .GetInstance().ChangeMainPlayerToNormal();
                    }
                }
                if (SkillBarLogic.Instance() != null)
                {
                    SkillBarLogic.Instance().CleanUpSkillBarInfo();
                    SkillBarLogic.Instance().UpdateSkillBarInfo();
                    SkillBarLogic.Instance().CleanUpAttackBarInfo();
                    SkillBarLogic.Instance().SetChangeModeAttackBtn();
                    SkillBarLogic.Instance().UpdateSkillActiveByChangeState(_mainPlayer.CurChangeState);
                }
            }
            //             //当移除了变身之后,需要恢复原先的技能
            //             if ( bHasRemoveOP && _mainPlayer != null && SkillBarLogic.Instance()
            //                  && _mainPlayer.CurChangeState == (int)Games.GlobeDefine.GameDefine_Globe.ChangeModeState.NORMAL)
            //             {
            //                 SkillBarLogic.Instance().ShowAfterChangeSkill(false);
            //                 SkillBarLogic.Instance().CleanUpSkillBarInfo();
            //                 SkillBarLogic.Instance().SaveNotChangeModeSkillBarInfo();
            //                 SkillBarLogic.Instance().OnClickXpClose();
            //             }

            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }