public void Update(GameTime gameTime)
        {
            player.Update(gameTime, GamePad.GetState(PlayerIndex.One));

            if (!paused)
            {
                rot += updateStep * new Vector3(1, 0.82f, 0.71f) * (float)gameTime.ElapsedGameTime.TotalSeconds;
            }
            else
            {
                rot.Z += updateStep * 0.71f * (float)gameTime.ElapsedGameTime.TotalSeconds;
            }

            if (KeyReleased(Keys.Space))
            {
                rebuild = true;
            }
            if (KeyReleased(Keys.D1))
            {
                technique = 0;
            }
            if (KeyReleased(Keys.D2))
            {
                technique = 1;
            }
            if (KeyReleased(Keys.D3))
            {
                technique = 2;
            }
            if (KeyReleased(Keys.OemPlus))
            {
                latticeSize++;
                rebuild = true;
            }
            if (KeyReleased(Keys.Pause))
            {
                paused = !paused;
            }
            if (KeyReleased(Keys.PageUp))
            {
                updateStep *= 2;
            }
            if (KeyReleased(Keys.PageDown))
            {
                updateStep /= 2;
            }
            if (KeyReleased(Keys.OemMinus))
            {
                latticeSize = Math.Max(0, latticeSize - 1);
                rebuild     = true;
            }
            if (KeyReleased(Keys.Q))
            {
                drawInstanced = false;
            }
            if (KeyReleased(Keys.W))
            {
                drawInstanced = true;
            }

            camera.SetLookAt(player.Position, player.Position + player.Facing, player.Up);

            InitLights();
        }