Exemplo n.º 1
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.º 2
0
        IEnumerator Start()
        {
            if (udpBoxContainer != null)
            {
                SetUDPBoxContainer(udpBoxContainer.GetNativeContainer());
            }

            mPackageTemplate = new SyncTransformsPackage(mUdpBoxContainer.PackageHeadBytes);
            var waitForSecond = new WaitForSeconds(delay);

            while (true)
            {
                if (mUdpBoxContainer.State != UDPBoxContainer.EState.HasClients && mUdpBoxContainer.State != UDPBoxContainer.EState.HasServer)
                {
                    yield return(null);

                    continue;
                }

                if (mUdpBoxContainer.IsMaster)
                {
                    mPackageTemplate.TransformList.Clear();
                    for (int i = 0, iMax = mUdpBoxContainer.ClientIPConnectList.Count; i < iMax; i++)
                    {
                        var client = mUdpBoxContainer.ClientIPConnectList[i];

                        mPackageTemplate.Op = SyncTransformsPackage.EOperate.Fetch;
                        mUdpBoxContainer.SendUDPMessageToRandomPort(mPackageTemplate.Serialize(), client);
                        Debug.Log("Send to client!");
                    }
                }
                else
                {
                    mPackageTemplate.Op = SyncTransformsPackage.EOperate.FetchAll;
                    mUdpBoxContainer.SendUDPMessageToRandomPort(mPackageTemplate.Serialize(), mUdpBoxContainer.MasterIPConnectInfo);
                    Debug.Log("Send to master!");
                }

                yield return(waitForSecond);
            }
        }
Exemplo n.º 3
0
 public SyncTransformsHandler(byte[] packageHeadBytes)
 {
     transformsList = new List <SyncTransforms_TransformMono>(8);
     mTemplate      = new SyncTransformsPackage(packageHeadBytes);
 }