public override void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen)
        {
            InputManager.Update();
            Time.Update(gameTime);

            GameObject3d.UpdateObjects();

            while (terrainRenderer.lastRowDepth < camera.Transform.Position.Z - 5)
            {
                terrainRenderer.updateNormals(Math.Abs(terrainRenderer.lastRowDepth - 5), Vector3.Up);
                terrainRenderer.updateDepth(terrainRenderer.lastRowDepth);
                terrainRenderer.updateNormals(terrainRenderer.lastRowDepth + 1, Vector3.Down);
            }

            terrainRenderer.songPos = (float)waveOut.GetPosition() / (float)reader.Length;
            if (terrainRenderer.songPos < 1)
            {
                terrainRenderer.avgE = 1 / (float)(avgE[(int)(avgE.Length * terrainRenderer.songPos)] - 100);
            }

            if (!songStarted && terrainRenderer.lastRowDepth > 100)
            {
                songStarted = true;
                newHoop();
                waveOut.Play();
            }

            if (InputManager.IsKeyPressed(Keys.T))
            {
                postToggle = !postToggle;
            }
            if (InputManager.IsKeyPressed(Keys.N))
            {
                noisyToggle = !noisyToggle;
            }
            if (InputManager.IsKeyPressed(Keys.F))
            {
                GameScreenManager.graphics.ToggleFullScreen();
            }

            if (InputManager.IsKeyDown(Keys.Up))
            {
                camera.FieldOfView += 0.01f;
            }
            if (InputManager.IsKeyDown(Keys.Down))
            {
                camera.FieldOfView -= 0.01f;
            }

            if (!noisyToggle)
            {
                updateCam();
            }

            checkSongEnding();
            //pos.Y += terrainRenderer.avgE;
            //terrainRenderer.totalFrames = mp3Frames.Count();
        }