Ejemplo n.º 1
0
        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);
        }