Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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;
            }
        }
Exemplo n.º 3
0
        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);
            });
        }
Exemplo n.º 4
0
        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);
            });
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
        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;
            }
        }
Exemplo n.º 7
0
        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;
            }
        }
Exemplo n.º 8
0
        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;
            }
        }
Exemplo n.º 9
0
 void OnEnable()
 {
     mUDPBox = new UDPBox();
 }
Exemplo n.º 10
0
        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;
            }
        }
Exemplo n.º 11
0
        public override void OnUnregistedFromUDPBox(UDPBox udpBox)
        {
            base.OnUnregistedFromUDPBox(udpBox);

            udpBox.UnregistWorkThreadOperate(WorkThreadOperateLoop);
        }
Exemplo n.º 12
0
        public override void OnRegistedToUDPBox(UDPBox udpBox)
        {
            base.OnRegistedToUDPBox(udpBox);

            udpBox.RegistWorkThreadOperate(WorkThreadOperateLoop);
        }