//----------------------------------------------------- ///根据初始化物体,并同步到渲染层 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); }