private void EGMI_ACK_OBJECT_PROPERTY_ENTRY(int id, MemoryStream stream) { NFMsg.MsgBase xMsg = NFMsg.MsgBase.Parser.ParseFrom(stream); NFMsg.MultiObjectPropertyList xData = NFMsg.MultiObjectPropertyList.Parser.ParseFrom(xMsg.MsgData); for (int i = 0; i < xData.MultiPlayerProperty.Count; i++) { NFMsg.ObjectPropertyList xPropertyData = xData.MultiPlayerProperty[i]; NFGUID xObjectID = mHelpModule.PBToNF(xPropertyData.PlayerId); ObjectDataBuff xDataBuff; if (mxObjectDataBuff.TryGetValue(xObjectID, out xDataBuff)) { xDataBuff.xPropertyList = xPropertyData; if (xObjectID.IsNull()) { AttachObjectData(xObjectID); } } else { xDataBuff = new ObjectDataBuff(); xDataBuff.xPropertyList = xPropertyData; mxObjectDataBuff[xObjectID] = xDataBuff; AttachObjectData(xObjectID); } } }
private void EGMI_ACK_MOVE_IMMUNE(int id, MemoryStream stream) { Debug.Log("EGMI_ACK_MOVE_IMMUNE " + Time.time); NFMsg.MsgBase xMsg = NFMsg.MsgBase.Parser.ParseFrom(stream); NFMsg.ReqAckPlayerPosSync xData = NFMsg.ReqAckPlayerPosSync.Parser.ParseFrom(xMsg.MsgData); if (xData.SyncUnit.Count <= 0) { return; } for (int i = 0; i < xData.SyncUnit.Count; ++i) { NFMsg.PosSyncUnit posSync = xData.SyncUnit[i]; NFGUID xMover = mHelpModule.PBToNF(posSync.Mover); if (xMover.IsNull()) { return; } GameObject xGameObject = mSceneModule.GetObject(xMover); if (!xGameObject) { return; } NFHeroSync xHeroSync = xGameObject.GetComponent <NFHeroSync>(); if (!xHeroSync) { return; } //TODO //GC---------- /* * UnityEngine.Vector3 v = new UnityEngine.Vector3(); * v.x = vector.X; * v.y = vector.Y; * v.z = vector.Z; */ //xHeroSync.AddSyncData(v); //float fSpeed = mKernelModule.QueryPropertyInt(xMover, NFrame.NPC.MOVE_SPEED) / 100.0f; //fSpeed *= 1.5f; //mSceneModule.MoveImmuneBySpeed(PBToNF(xData.mover), new Vector3(xData.target_pos[0].x, xData.target_pos[0].y, xData.target_pos[0].z), fSpeed, true); } }
////////////////////////////////// /// private void EGMI_ACK_MOVE(int id, MemoryStream stream) { Debug.Log("Move " + Time.time); NFMsg.MsgBase xMsg = NFMsg.MsgBase.Parser.ParseFrom(stream); NFMsg.ReqAckPlayerPosSync xData = NFMsg.ReqAckPlayerPosSync.Parser.ParseFrom(xMsg.MsgData); if (xData.SyncUnit.Count <= 0) { return; } NFMsg.PosSyncUnit syncUnit = xData.SyncUnit[0]; NFGUID xMover = mHelpModule.PBToNF(syncUnit.Mover); if (xMover.IsNull()) { Debug.LogError("xMover " + Time.time); return; } if (xMover == mLoginModule.mRoleID) { return; } GameObject xGameObject = mSceneModule.GetObject(xMover); if (!xGameObject) { Debug.LogError("xGameObject " + Time.time); return; } NFHeroMotor xHeroMotor = xGameObject.GetComponent <NFHeroMotor>(); if (!xHeroMotor) { Debug.LogError("xHeroSync " + Time.time); return; } UnityEngine.Vector3 v = new UnityEngine.Vector3(); v.x = syncUnit.Pos.X; v.y = syncUnit.Pos.Y; v.z = syncUnit.Pos.Z; xHeroMotor.MoveTo(v); }
private void EGMI_ACK_POS_SYNC(int id, MemoryStream stream) { NFMsg.MsgBase xMsg = NFMsg.MsgBase.Parser.ParseFrom(stream); NFMsg.ReqAckPlayerPosSync xData = NFMsg.ReqAckPlayerPosSync.Parser.ParseFrom(xMsg.MsgData); NFGUID xMover = mHelpModule.PBToNF(xData.Mover); if (xMover.IsNull()) { Debug.LogError("xMover " + Time.time); return; } if (xMover == mLoginModule.mRoleID) { return; } GameObject xGameObject = mSceneModule.GetObject(xMover); if (!xGameObject) { Debug.LogError("xGameObject " + Time.time); return; } NFHeroSync xHeroSync = xGameObject.GetComponent <NFHeroSync>(); if (!xHeroSync) { Debug.LogError("xHeroSync " + Time.time); return; } xHeroSync.AddSyncData(xData); }
private void EGMI_ACK_OBJECT_RECORD_ENTRY(int id, MemoryStream stream) { NFMsg.MsgBase xMsg = NFMsg.MsgBase.Parser.ParseFrom(stream); NFMsg.MultiObjectRecordList xData = NFMsg.MultiObjectRecordList.Parser.ParseFrom(xMsg.MsgData); for (int i = 0; i < xData.MultiPlayerRecord.Count; i++) { NFMsg.ObjectRecordList xObjectRecordList = xData.MultiPlayerRecord[i]; NFGUID xObjectID = mHelpModule.PBToNF(xObjectRecordList.PlayerId); //Debug.Log ("new record enter Object: " + xObjectID.ToString () ); ObjectDataBuff xDataBuff; if (mxObjectDataBuff.TryGetValue(xObjectID, out xDataBuff)) { xDataBuff.xRecordList = xObjectRecordList; if (xObjectID.IsNull()) { AttachObjectData(xObjectID); } } } }
private void ADD_ROW(NFGUID self, string strRecordName, NFMsg.RecordAddRowStruct xAddStruct) { NFIObject go = mKernelModule.GetObject(self); if (go == null) { Debug.LogError("error id" + self); return; } NFIRecordManager xRecordManager = go.GetRecordManager(); Hashtable recordVecDesc = new Hashtable(); Hashtable recordVecData = new Hashtable(); for (int k = 0; k < xAddStruct.RecordIntList.Count; ++k) { NFMsg.RecordInt addIntStruct = (NFMsg.RecordInt)xAddStruct.RecordIntList[k]; if (addIntStruct.Col >= 0) { recordVecDesc[addIntStruct.Col] = NFDataList.VARIANT_TYPE.VTYPE_INT; recordVecData[addIntStruct.Col] = addIntStruct.Data; } } for (int k = 0; k < xAddStruct.RecordFloatList.Count; ++k) { NFMsg.RecordFloat addFloatStruct = (NFMsg.RecordFloat)xAddStruct.RecordFloatList[k]; if (addFloatStruct.Col >= 0) { recordVecDesc[addFloatStruct.Col] = NFDataList.VARIANT_TYPE.VTYPE_FLOAT; recordVecData[addFloatStruct.Col] = addFloatStruct.Data; } } for (int k = 0; k < xAddStruct.RecordStringList.Count; ++k) { NFMsg.RecordString addStringStruct = (NFMsg.RecordString)xAddStruct.RecordStringList[k]; if (addStringStruct.Col >= 0) { recordVecDesc[addStringStruct.Col] = NFDataList.VARIANT_TYPE.VTYPE_STRING; if (addStringStruct.Data != null) { recordVecData[addStringStruct.Col] = addStringStruct.Data.ToStringUtf8(); } else { recordVecData[addStringStruct.Col] = ""; } } } for (int k = 0; k < xAddStruct.RecordObjectList.Count; ++k) { NFMsg.RecordObject addObjectStruct = (NFMsg.RecordObject)xAddStruct.RecordObjectList[k]; if (addObjectStruct.Col >= 0) { recordVecDesc[addObjectStruct.Col] = NFDataList.VARIANT_TYPE.VTYPE_OBJECT; recordVecData[addObjectStruct.Col] = mHelpModule.PBToNF(addObjectStruct.Data); } } for (int k = 0; k < xAddStruct.RecordVector2List.Count; ++k) { NFMsg.RecordVector2 addObjectStruct = (NFMsg.RecordVector2)xAddStruct.RecordVector2List[k]; if (addObjectStruct.Col >= 0) { recordVecDesc[addObjectStruct.Col] = NFDataList.VARIANT_TYPE.VTYPE_VECTOR2; recordVecData[addObjectStruct.Col] = mHelpModule.PBToNF(addObjectStruct.Data); } } for (int k = 0; k < xAddStruct.RecordVector3List.Count; ++k) { NFMsg.RecordVector3 addObjectStruct = (NFMsg.RecordVector3)xAddStruct.RecordVector3List[k]; if (addObjectStruct.Col >= 0) { recordVecDesc[addObjectStruct.Col] = NFDataList.VARIANT_TYPE.VTYPE_VECTOR3; recordVecData[addObjectStruct.Col] = mHelpModule.PBToNF(addObjectStruct.Data); } } NFDataList varListDesc = new NFDataList(); NFDataList varListData = new NFDataList(); for (int m = 0; m < recordVecDesc.Count; m++) { if (recordVecDesc.ContainsKey(m) && recordVecData.ContainsKey(m)) { NFDataList.VARIANT_TYPE nType = (NFDataList.VARIANT_TYPE)recordVecDesc[m]; switch (nType) { case NFDataList.VARIANT_TYPE.VTYPE_INT: { varListDesc.AddInt(0); varListData.AddInt((Int64)recordVecData[m]); } break; case NFDataList.VARIANT_TYPE.VTYPE_FLOAT: { varListDesc.AddFloat(0.0f); varListData.AddFloat((float)recordVecData[m]); } break; case NFDataList.VARIANT_TYPE.VTYPE_STRING: { varListDesc.AddString(""); varListData.AddString((string)recordVecData[m]); } break; case NFDataList.VARIANT_TYPE.VTYPE_OBJECT: { varListDesc.AddObject(new NFGUID()); varListData.AddObject((NFGUID)recordVecData[m]); } break; case NFDataList.VARIANT_TYPE.VTYPE_VECTOR2: { varListDesc.AddVector2(new NFVector2()); varListData.AddVector2((NFVector2)recordVecData[m]); } break; case NFDataList.VARIANT_TYPE.VTYPE_VECTOR3: { varListDesc.AddVector3(new NFVector3()); varListData.AddVector3((NFVector3)recordVecData[m]); } break; default: break; } } else { //���� //Debug.LogException(i); } } NFIRecord xRecord = xRecordManager.GetRecord(strRecordName); if (null == xRecord) { Debug.Log("Empty record:" + strRecordName); string strClassName = mKernelModule.QueryPropertyString(self, NFrame.IObject.ClassName); NFIClass xLogicClass = mClassModule.GetElement(strClassName); NFIRecord xStaticRecord = xLogicClass.GetRecordManager().GetRecord(strRecordName); xRecord = xRecordManager.AddRecord(strRecordName, 512, varListDesc, xStaticRecord.GetTagData()); } if (self.IsNull()) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < varListData.Count(); ++i) { stringBuilder.Append(varListData.GetData(i).ToString()); stringBuilder.Append(";"); } Debug.Log(strRecordName + " add row:" + stringBuilder.ToString()); } xRecord.AddRow(xAddStruct.Row, varListData); }
////////////////////////////////// /// private void EGMI_ACK_MOVE(int id, MemoryStream stream) { Debug.Log("Move " + Time.time); NFMsg.MsgBase xMsg = NFMsg.MsgBase.Parser.ParseFrom(stream); NFMsg.ReqAckPlayerPosSync xData = NFMsg.ReqAckPlayerPosSync.Parser.ParseFrom(xMsg.MsgData); if (xData.SyncUnit.Count <= 0) { return; } for (int i = 0; i < xData.SyncUnit.Count; ++i) { NFMsg.PosSyncUnit syncUnit = xData.SyncUnit[i]; NFGUID xMover = mHelpModule.PBToNF(syncUnit.Mover); if (xMover.IsNull()) { Debug.LogError("xMover " + Time.time); return; } if (xMover == mLoginModule.mRoleID && syncUnit.Type == PosSyncUnit.Types.EMoveType.EmtWalk) { //平常自己行走不需要同步 return; } GameObject xGameObject = mSceneModule.GetObject(xMover); if (!xGameObject) { Debug.LogError("xGameObject " + Time.time); return; } NFHeroMotor xHeroMotor = xGameObject.GetComponent <NFHeroMotor>(); if (!xHeroMotor) { Debug.LogError("xHeroSync " + Time.time); return; } NFHeroSync xHeroSync = xGameObject.GetComponent <NFHeroSync>(); if (!xHeroSync) { Debug.LogError("xHeroSync " + Time.time); return; } UnityEngine.Vector3 v = new UnityEngine.Vector3(); v.x = syncUnit.Pos.X; v.y = syncUnit.Pos.Y; v.z = syncUnit.Pos.Z; if (syncUnit.Type == PosSyncUnit.Types.EMoveType.EmtWalk) { xHeroSync.AddSyncData(xData.Sequence, syncUnit); } else if (syncUnit.Type == PosSyncUnit.Types.EMoveType.EetSpeedy) { xHeroMotor.MoveToImmune(v, 0.1f); } else if (syncUnit.Type == PosSyncUnit.Types.EMoveType.EetTeleport) { xHeroMotor.MoveToImmune(v, 0.001f); } } }