public void Execute() { if (matchStartTime == null) { matchStartTime = tickStartTimeStorage.GetTickStartTime(); log.Info($"Установка времени старта матча {matchStartTime}"); } float matchTime = (float)(tickStartTimeStorage.GetTickStartTime() - matchStartTime.Value).TotalSeconds; int tickNumber = serverSnapshotHistory.GetLastTickNumber() + 1; var snapshot = snapshotFactory.Create(); SnapshotWithTime snapshotWithTime = new SnapshotWithTime(tickNumber, matchTime); snapshotWithTime.Modify(snapshot); serverSnapshotHistory.Add(snapshotWithTime); }
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); }