public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint) { mTemplate.Deserialize(packageBytes); switch (mTemplate.Op) { case RequestStringPackage.EOp.Request: var request = mTemplate.Content; UDPBox_GameThreadMediator.Instance.EnqueueToUpdateQueue(() => { var respText = mOnProcessRequest(request); mTemplate.RequestCache = request; mTemplate.Content = respText; mTemplate.Op = RequestStringPackage.EOp.Response; udpBox.SendMessage(mTemplate.Serialize(), ipEndPoint); }); break; case RequestStringPackage.EOp.Response: var content = mTemplate.Content; UDPBox_GameThreadMediator.Instance.EnqueueToUpdateQueue(() => { mOnProcessResponse(mTemplate.RequestCache, mTemplate.Content); }); break; default: break; } }
public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint) { mTemplate.Deserialize(packageBytes); switch (mTemplate.Op) { case SyncGOTransformsPackage.EOperate.Push: //接收到推送消息的处理 { var transformList = mTemplate.TransformList; UpdateTransforms(transformList); } break; case SyncGOTransformsPackage.EOperate.Fetch: //有主机向该机器拉取自己控制的部分数据 { FetchSelfTransforms(transformsList, udpBox, ipEndPoint); } break; case SyncGOTransformsPackage.EOperate.FetchAll: //有主机向该机器拉取全部数据 { FetchSelfTransforms(transformsList, udpBox, ipEndPoint, true); } break; } }
void FetchSelfTransforms(List <SyncTransforms_TransformMono> transformsList, UDPBox udpBox, IPEndPoint ipEndPoint, bool isFetchAll = false) { UDPBox_GameThreadMediator.Instance?.EnqueueToUpdateQueue(() => { var package = new SyncTransformsPackage(mTemplate.HeadBytes); package.Op = SyncTransformsPackage.EOperate.Push; for (int i = 0, iMax = transformsList.Count; i < iMax; i++) { var transformMono = transformsList[i]; if (!transformMono.isSelfControl && !isFetchAll) { continue; } var transformInfo = new SyncTransformData(); transformInfo.NetworkID = transformMono.networkID; transformInfo.Pos_X = transformMono.transform.position.x; transformInfo.Pos_Y = transformMono.transform.position.y; transformInfo.Pos_Z = transformMono.transform.position.z; transformInfo.Euler_X = transformMono.transform.eulerAngles.x; transformInfo.Euler_Y = transformMono.transform.eulerAngles.y; transformInfo.Euler_Z = transformMono.transform.eulerAngles.z; transformInfo.SCALE_X = transformMono.transform.localScale.x; transformInfo.SCALE_Y = transformMono.transform.localScale.y; transformInfo.SCALE_Z = transformMono.transform.localScale.z; package.TransformList.Add(transformInfo); } var transformPackageBytes = package.Serialize(); udpBox.SendMessage(transformPackageBytes, ipEndPoint); }); }
public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint) { mTemplate.Deserialize(packageBytes); var stateID = mTemplate.StateID; var argInfo = mTemplate.ArgInfo; UDPBox_GameThreadMediator.Instance.EnqueueToUpdateQueue(() => { OnStateChanged?.Invoke(stateID, argInfo); }); }
public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint) { mTemplate.Deserialize(packageBytes); switch (mTemplate.Op) { case OperateGOTransformPackage.EOperate.PushToServer: mTemplate.Op = OperateGOTransformPackage.EOperate.ApplyEffect; ApplyEffect(); DispatchToClients(mTemplate.Serialize(), ipEndPoint); break; case OperateGOTransformPackage.EOperate.ApplyEffect: ApplyEffect(); break; default: break; } }
public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint) { mTemplate.Deserialize(packageBytes); switch (mTemplate.Op) { case GetMasterClientCountPackage.EOperate.Get: mTemplate.ClientCount = mUdpBoxContainer.ClientIPConnectList.Count; mTemplate.Op = GetMasterClientCountPackage.EOperate.Set; udpBox.SendMessage(mTemplate.Serialize(), ipEndPoint); break; case GetMasterClientCountPackage.EOperate.Set: ClientCount = mTemplate.ClientCount; break; default: break; } }
public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint) { mTemplate.Deserialize(packageBytes); switch (mTemplate.Op) { case RTT_TestPackage.EOp.A: mTemplate.BTime = DateTime.Now.Ticks; mTemplate.Op = RTT_TestPackage.EOp.B; udpBox.SendMessage(mTemplate.Serialize(), ipEndPoint); break; case RTT_TestPackage.EOp.B: Debug.LogError("RTT: " + ((mTemplate.BTime - mTemplate.ATime) / (float)TimeSpan.TicksPerMillisecond) + " ms" + " ipEndPoint: " + ipEndPoint); break; default: break; } }
public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint) { UnityEngine.Debug.Log(" Sync Trans mTemplate1"); mTemplate.Deserialize(packageBytes); UnityEngine.Debug.Log(" Sync Trans mTemplate.Op);: " + mTemplate.Op); switch (mTemplate.Op) { case SyncTransformsPackage.EOperate.Push: { var transformList = mTemplate.TransformList; UpdateTransforms(transformList); } break; case SyncTransformsPackage.EOperate.Fetch: { FetchSelfTransforms(transformsList, udpBox, ipEndPoint); } break; case SyncTransformsPackage.EOperate.FetchAll: { FetchSelfTransforms(transformsList, udpBox, ipEndPoint, true); } break; case SyncTransformsPackage.EOperate.RestoreList: { var transformList = mTemplate.TransformList; UpdateTransforms(transformList); } break; } }
void OnEnable() { mUDPBox = new UDPBox(); }
public override void Process(UDPBox udpBox, byte[] packageBytes, IPEndPoint ipEndPoint) { mTemplate.Deserialize(packageBytes); switch (mTemplate.Op) { case UserNameListPackage.EOperate.Push: var fetchedItem = mTemplate.UserNameInfoList[0]; UpdateUserInfoList(fetchedItem); break; case UserNameListPackage.EOperate.Fetch: mTemplate.Op = UserNameListPackage.EOperate.Push; mTemplate.UserNameInfoList.Clear(); mTemplate.UserNameInfoList.Add(new UserNameInfoData() { IPAddress = mUDPBoxContainer.SelfIPAddress.ToString(), BeginPort = mUDPBoxContainer.UdpBoxBeginPort, EndPort = mUDPBoxContainer.UdpBoxEndPort, UserName = SelfUserName, }); udpBox.SendMessage(mTemplate.Serialize(), ipEndPoint); break; case UserNameListPackage.EOperate.FetchAll: mTemplate.Op = UserNameListPackage.EOperate.RestoreList; mTemplate.UserNameInfoList.Clear(); for (int i = 0, iMax = UserNameInfoList.Count; i < iMax; i++) { var item = UserNameInfoList[i]; mTemplate.UserNameInfoList.Add(new UserNameInfoData() { IPAddress = item.IPAddress, BeginPort = item.BeginPort, EndPort = item.EndPort, UserName = item.UserName, }); } udpBox.SendMessage(mTemplate.Serialize(), ipEndPoint); break; case UserNameListPackage.EOperate.RestoreList: UserNameInfoList.Clear(); for (int i = 0, iMax = mTemplate.UserNameInfoList.Count; i < iMax; i++) { var item = mTemplate.UserNameInfoList[i]; UserNameInfoList.Add(new UserNameInfoData() { IPAddress = item.IPAddress, BeginPort = item.BeginPort, EndPort = item.EndPort, UserName = item.UserName }); } break; default: break; } }
public override void OnUnregistedFromUDPBox(UDPBox udpBox) { base.OnUnregistedFromUDPBox(udpBox); udpBox.UnregistWorkThreadOperate(WorkThreadOperateLoop); }
public override void OnRegistedToUDPBox(UDPBox udpBox) { base.OnRegistedToUDPBox(udpBox); udpBox.RegistWorkThreadOperate(WorkThreadOperateLoop); }