示例#1
0
        public override void CopyFrom(InputDataBase fromBase)
        {
            InputData from = (InputData)fromBase;

            var stringTableEnum = from.stringTable.GetEnumerator();

            while (stringTableEnum.MoveNext())
            {
                var kv = stringTableEnum.Current;
                this.stringTable.Add(kv.Key, kv.Value);
            }

            var byteTableEnum = from.byteTable.GetEnumerator();

            while (byteTableEnum.MoveNext())
            {
                var kv = byteTableEnum.Current;
                this.byteTable.Add(kv.Key, kv.Value);
            }

            var intTableEnum = from.intTable.GetEnumerator();

            while (intTableEnum.MoveNext())
            {
                var kv = intTableEnum.Current;
                this.intTable.Add(kv.Key, kv.Value);
            }

            var fpTableEnum = from.fpTable.GetEnumerator();

            while (fpTableEnum.MoveNext())
            {
                var kv = fpTableEnum.Current;
                this.fpTable.Add(kv.Key, kv.Value);
            }

            var byteArrayTableEnum = from.byteArrayTable.GetEnumerator();

            while (byteArrayTableEnum.MoveNext())
            {
                var kv = byteArrayTableEnum.Current;
                this.byteArrayTable.Add(kv.Key, kv.Value);
            }

            var tsVectorTableEnum = from.tsVectorTable.GetEnumerator();

            while (tsVectorTableEnum.MoveNext())
            {
                var kv = tsVectorTableEnum.Current;
                this.tsVectorTable.Add(kv.Key, kv.Value);
            }

            var tsVectorTable2Enum = from.tsVectorTable2.GetEnumerator();

            while (tsVectorTable2Enum.MoveNext())
            {
                var kv = tsVectorTable2Enum.Current;
                this.tsVectorTable2.Add(kv.Key, kv.Value);
            }
        }
        public void UpdateAllCoroutines()
        {
            InputDataBase oldInputData = TrueSyncInput.CurrentSimulationData;

            UpdateAllCoroutines(lockStep.Ticks, TrueSyncManager.Time);
            TrueSyncInput.CurrentSimulationData = (InputData)oldInputData;
        }
        void GetLocalData(InputDataBase playerInputData)
        {
            TrueSyncInput.CurrentInputData = (InputData) playerInputData;

            if (behaviorsByPlayer.ContainsKey(playerInputData.ownerID)) {
                List<TrueSyncManagedBehaviour> managedBehavioursByPlayer = behaviorsByPlayer[playerInputData.ownerID];
                for (int index = 0, length = managedBehavioursByPlayer.Count; index < length; index++) {
                    TrueSyncManagedBehaviour bh = managedBehavioursByPlayer[index];

                    if (bh != null && !bh.disabled) {
                        bh.OnSyncedInput();
                    }
                }
            }

            TrueSyncInput.CurrentInputData = null;
        }
示例#4
0
        /**
         * @brief Returns true if this {@link SyncedData} has all actions information equals to the provided one.
         **/
        public override bool EqualsData(InputDataBase otherBase)
        {
            InputData other = (InputData)otherBase;

            if (this.stringTable.Count != other.stringTable.Count ||
                this.byteTable.Count != other.byteTable.Count ||
                this.intTable.Count != other.intTable.Count ||
                this.fpTable.Count != other.fpTable.Count ||
                this.byteArrayTable.Count != other.byteArrayTable.Count ||
                this.tsVectorTable.Count != other.tsVectorTable.Count ||
                this.tsVectorTable2.Count != other.tsVectorTable2.Count)
            {
                return(false);
            }

            if (!checkEqualsTable(this, other))
            {
                return(false);
            }

            return(true);
        }
示例#5
0
 public SyncedData()
 {
     this.inputData = AbstractLockstep.instance.InputDataProvider();
 }
示例#6
0
        void OnStepUpdate(List <InputDataBase> allInputData)
        {
            time += lockedTimeStep;

            if (ReplayRecord.replayMode != ReplayMode.LOAD_REPLAY)
            {
                CheckGameObjectsSafeMap();
            }

            TrueSyncInput.SetAllInputs(null);

            for (int index = 0, length = generalBehaviours.Count; index < length; index++)
            {
                TrueSyncManagedBehaviour bh = generalBehaviours[index];

                if (bh != null && !bh.disabled)
                {
                    bh.OnPreSyncedUpdate();
                    instance.scheduler.UpdateAllCoroutines();
                }
            }

            for (int index = 0, length = allInputData.Count; index < length; index++)
            {
                InputDataBase playerInputData = allInputData[index];

                if (behaviorsByPlayer.ContainsKey(playerInputData.ownerID))
                {
                    List <TrueSyncManagedBehaviour> managedBehavioursByPlayer = behaviorsByPlayer[playerInputData.ownerID];
                    for (int index2 = 0, length2 = managedBehavioursByPlayer.Count; index2 < length2; index2++)
                    {
                        TrueSyncManagedBehaviour bh = managedBehavioursByPlayer[index2];

                        if (bh != null && !bh.disabled)
                        {
                            bh.OnPreSyncedUpdate();
                            instance.scheduler.UpdateAllCoroutines();
                        }
                    }
                }
            }

            TrueSyncInput.SetAllInputs(allInputData);

            TrueSyncInput.CurrentSimulationData = null;
            for (int index = 0, length = generalBehaviours.Count; index < length; index++)
            {
                TrueSyncManagedBehaviour bh = generalBehaviours[index];

                if (bh != null && !bh.disabled)
                {
                    bh.OnSyncedUpdate();
                    instance.scheduler.UpdateAllCoroutines();
                }
            }

            for (int index = 0, length = allInputData.Count; index < length; index++)
            {
                InputDataBase playerInputData = allInputData[index];

                if (behaviorsByPlayer.ContainsKey(playerInputData.ownerID))
                {
                    TrueSyncInput.CurrentSimulationData = (InputData)playerInputData;

                    List <TrueSyncManagedBehaviour> managedBehavioursByPlayer = behaviorsByPlayer[playerInputData.ownerID];
                    for (int index2 = 0, length2 = managedBehavioursByPlayer.Count; index2 < length2; index2++)
                    {
                        TrueSyncManagedBehaviour bh = managedBehavioursByPlayer[index2];

                        if (bh != null && !bh.disabled)
                        {
                            bh.OnSyncedUpdate();
                            instance.scheduler.UpdateAllCoroutines();
                        }
                    }
                }

                TrueSyncInput.CurrentSimulationData = null;
            }

            CheckQueuedBehaviours();
        }
示例#7
0
        /// <summary>
        ///DV 帧更新
        ///是在lockstep创建的时候传这个方法给他
        /// </summary>
        void OnStepUpdate(List <InputDataBase> allInputData)
        {
            // 添加当前时间
            time += lockedTimeStep;

            if (ReplayRecord.replayMode != ReplayMode.LOAD_REPLAY)
            {
                // 非录像模式, 检测GameObject CheckGameObjectsSafeMap();
                CheckGameObjectsSafeMap();
            }

            TrueSyncInput.SetAllInputs(null);

            // 遍历generalBehaviours普通行为列表,调行为的OnPreSyncedUpdate()。还会调协程更新instance.scheduler.UpdateAllCoroutines();
            for (int index = 0, length = generalBehaviours.Count; index < length; index++)
            {
                TrueSyncManagedBehaviour bh = generalBehaviours[index];

                if (bh != null && !bh.disabled)
                {
                    bh.OnPreSyncedUpdate();
                    instance.scheduler.UpdateAllCoroutines();
                }
            }

            // 遍历allInputData,和对应玩家的行为列表behaviorsByPlayer。 调行为的OnPreSyncedUpdate()。还会调协程更新instance.scheduler.UpdateAllCoroutines();
            for (int index = 0, length = allInputData.Count; index < length; index++)
            {
                InputDataBase playerInputData = allInputData[index];

                if (behaviorsByPlayer.ContainsKey(playerInputData.ownerID))
                {
                    List <TrueSyncManagedBehaviour> managedBehavioursByPlayer = behaviorsByPlayer[playerInputData.ownerID];
                    for (int index2 = 0, length2 = managedBehavioursByPlayer.Count; index2 < length2; index2++)
                    {
                        TrueSyncManagedBehaviour bh = managedBehavioursByPlayer[index2];

                        if (bh != null && !bh.disabled)
                        {
                            bh.OnPreSyncedUpdate();
                            instance.scheduler.UpdateAllCoroutines();
                        }
                    }
                }
            }

            TrueSyncInput.SetAllInputs(allInputData);

            TrueSyncInput.CurrentSimulationData = null;
            // 遍历generalBehaviours普通行为列表,调行为的OnSyncedUpdate()。还会调协程更新instance.scheduler.UpdateAllCoroutines();
            for (int index = 0, length = generalBehaviours.Count; index < length; index++)
            {
                TrueSyncManagedBehaviour bh = generalBehaviours[index];

                if (bh != null && !bh.disabled)
                {
                    bh.OnSyncedUpdate();
                    instance.scheduler.UpdateAllCoroutines();
                }
            }

            // 遍历allInputData,和对应玩家的行为列表behaviorsByPlayer。 调行为的OnSyncedUpdate()。还会调协程更新instance.scheduler.UpdateAllCoroutines();
            for (int index = 0, length = allInputData.Count; index < length; index++)
            {
                InputDataBase playerInputData = allInputData[index];

                if (behaviorsByPlayer.ContainsKey(playerInputData.ownerID))
                {
                    TrueSyncInput.CurrentSimulationData = (InputData)playerInputData;

                    List <TrueSyncManagedBehaviour> managedBehavioursByPlayer = behaviorsByPlayer[playerInputData.ownerID];
                    for (int index2 = 0, length2 = managedBehavioursByPlayer.Count; index2 < length2; index2++)
                    {
                        TrueSyncManagedBehaviour bh = managedBehavioursByPlayer[index2];

                        if (bh != null && !bh.disabled)
                        {
                            bh.OnSyncedUpdate();
                            instance.scheduler.UpdateAllCoroutines();
                        }
                    }
                }

                TrueSyncInput.CurrentSimulationData = null;
            }

            // 检测占存行为列表CheckQueuedBehaviours()。给他们分配拥有者和调同步开始方法
            CheckQueuedBehaviours();
        }
 public abstract void CopyFrom(InputDataBase fromBase);
 public abstract bool EqualsData(InputDataBase otherBase);
示例#10
0
 public SyncedData()
 {
     this.inputData = AbstractLockstep.instance.InputDataProvider();            //TrueSyncManager:ProvideInputData{new InputData}
 }