Example #1
0
    //-----------------------------------------------------
    ///根据初始化物体,并同步到渲染层
    public override void Initial(object pInit)
    {
        base.Initial(pInit);
        m_eSpecialState = ENUM_SPECIAL_STATE.SPECIAL_STATE_NORMAL;

        SObject_SpecialInit pSpecialInit = (SObject_SpecialInit)(pInit);

        if (pSpecialInit != null)
        {
            m_idOwner = pSpecialInit.m_idOwner;
            if (pSpecialInit.m_nDataID != MacroDefine.INVALID_ID)
            {
                m_pSpecialObjData = CDataBaseSystem.Instance.GetDataBase <_DBC_SPECIAL_OBJ_DATA>((int)DataBaseStruct.DBC_SPECIAL_OBJ_DATA).Search_Index_EQU(pSpecialInit.m_nDataID);
            }
            else
            {
                m_pSpecialObjData = null;
            }
        }
        else
        {
            m_idOwner         = MacroDefine.INVALID_ID;
            m_pSpecialObjData = null;
        }

        if (GetSpecialObjData() != null && GetSpecialObjData().m_lpszEffect_Normal != null && GetSpecialObjData().m_lpszEffect_Normal.Length > 0)
        {
            ChangEffect(GetSpecialObjData().m_lpszEffect_Normal, true);
        }
    }
        public override NET_RESULT_DEFINE.PACKET_EXE Execute(PacketBase pPacket, ref Peer pPlayer)
        {
            if (GameProcedure.GetActiveProcedure() == (GameProcedure)GameProcedure.s_ProcMain)
            {
                GCNewSpecial Packet = (GCNewSpecial)pPacket;
                //LogManager.Log("Receive GCNewSpecial Packet ObjID:" + Packet.ObjID);
                fVector2 pos = new fVector2(Packet.posWorld.m_fX, Packet.posWorld.m_fZ);
                if (!WorldManager.Instance.ActiveScene.IsValidPosition(ref pos))
                {
                    LogManager.LogError("ERROR POSITION @ GCNewSpecialHandler");
                    return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
                }

                CObject_Special pSpecial = (CObject_Special)CObjectManager.Instance.FindServerObject(Packet.ObjID);
                if (pSpecial == null)
                {
                    //创建平台生长点
                    pSpecial = (CObject_Special)CObjectManager.Instance.NewSpecialObject(Packet.ObjID);
                }
                else
                {
                    pSpecial.Release();
                }

                SObject_SpecialInit initSpecial = new SObject_SpecialInit();
                initSpecial.m_fvPos.x = Packet.posWorld.m_fX;
                initSpecial.m_fvPos.z = Packet.posWorld.m_fZ;
                initSpecial.m_fvPos.y = 0.0f;
                initSpecial.m_fvRot   = new Vector3(0.0f, Packet.Dir, 0.0f);
                initSpecial.m_nDataID = Packet.DataID;
                pSpecial.Initial(initSpecial);
                pSpecial.SetMapPosition(Packet.posWorld.m_fX, Packet.posWorld.m_fZ);
                pSpecial.SetMsgTime(GameProcedure.s_pTimeSystem.GetTimeNow());
            }
            return(NET_RESULT_DEFINE.PACKET_EXE.PACKET_EXE_CONTINUE);
        }