示例#1
0
        private void ProcessBucket(TimeTravelMap.Bucket bucket)
        {
            //Сдвигает 3d модели к определённому моменту времени в прошлое
            timeMachine.TravelToTime(bucket.TickNumber);

            foreach (var lagCompensationSystem in lagCompensationSystems)
            {
                //todo зачем это нужно?
                // lagCompensationSystem.PastState = pastState;
                // lagCompensationSystem.PresentState = presentState;

                foreach (ServerGameEntity entity in bucket.GameEntities)
                {
                    lagCompensationSystem.Execute(entity);
                }
            }
        }
示例#2
0
        public void Execute()
        {
            timeMachine.SetActualGameState(serverSnapshotHistory.GetActualGameState());


            List <TimeTravelMap.Bucket> buckets = travelMap.RefillBuckets(contexts);

            for (int bucketIndex = 0; bucketIndex < buckets.Count; bucketIndex++)
            {
                TimeTravelMap.Bucket bucket = buckets[bucketIndex];
                ProcessBucket(bucket);
            }

            //В конце лагкомпенсации мы восстанавливаем физический мир
            //в исходное состояние
            int tickNumber = serverSnapshotHistory.GetLastTickNumber();

            timeMachine.TravelToTime(tickNumber);
        }