public void NextTick() { CurrentServerTick++; if (!snapshots.ContainsKey(CurrentServerTick)) { Debug.Log("No next snapshot"); return; } HashSet <int> playersToRemove = new HashSet <int>(clientWorld.Players.Keys); foreach (var playerState in snapshots[CurrentServerTick].PlayerStates) { playersToRemove.Remove(playerState.PlayerId); if (playerState.PlayerId != clientWorld.PlayerId) { if (clientWorld.Players.ContainsKey(playerState.PlayerId)) { ApplyInterpolation(playerState); } else { clientWorld.CreateClientPlayer(playerState); } } } foreach (var playerId in playersToRemove) { clientWorld.RemoveClientPlayer(playerId); } snapshots.Remove(CurrentServerTick); }