protected override void Update(GameTime gameTime) { _networkClient.Update(); if (!_isWindowFocused) { return; } _ftc.Calculate(gameTime); _imGuiRenderer.UpdateInput(); Window.Title = $"MSPF: {_ftc.AverageFrameTime / 10000.0f:F2} | FPS: {_ftc.Fps:F0}"; var currentKeyboardState = Keyboard.GetState(); var currentMouseState = Mouse.GetState(); var cameraWasMoved = _camera.Update( Window.ClientBounds.Width, Window.ClientBounds.Height, currentKeyboardState, currentMouseState, _previousKeyboardState, _previousMouseState); if (cameraWasMoved) { var cameraChunkPositionX = MathF.Floor(_camera.Position.X / ChunkData.ChunkSize); var cameraChunkPositionY = MathF.Floor(_camera.Position.Y / ChunkData.ChunkSize); var cameraChunkPositionZ = MathF.Floor(_camera.Position.Z / ChunkData.ChunkSize); _logger.Debug("Camera: {@CamChkX}:{@CamChkY}:{@CamChkZ}", cameraChunkPositionX, cameraChunkPositionY, cameraChunkPositionZ); var chunkPosition = new Point((int)cameraChunkPositionX, (int)cameraChunkPositionY); _networkClient.RequestChunk(_clientStartParameters.ProjectId, chunkPosition); } if (currentKeyboardState.IsKeyDown(Keys.Escape)) { Exit(); } _previousKeyboardState = currentKeyboardState; _previousMouseState = currentMouseState; base.Update(gameTime); }