// update the scene based on the time elapsed since last update static void Update(float secondsElapsed) { //constantly move position of camera forward gCamera.fly(secondsElapsed * flyingSpeed); //accelerate flying speed based on XZ keys const GLfloat accelerateFlyingPerSecond = 1.3f; //units per second if(glfwGetKey(gWindow, 'X')){ flyingSpeed += secondsElapsed * accelerateFlyingPerSecond; } else if(glfwGetKey(gWindow, 'Z')){ flyingSpeed -= secondsElapsed * accelerateFlyingPerSecond; } //rotate camera based on WASDQE keys const GLfloat pitchDegreesPerSecond = 25.0f; //degrees per second const GLfloat yawDegreesPerSecond = 25.0f; //degrees per second const GLfloat rollDegreesPerSecond = 25.0f; //degrees per second if(glfwGetKey(gWindow, 'S')){ gCamera.pitch(secondsElapsed * -pitchDegreesPerSecond); } else if(glfwGetKey(gWindow, 'W')){ gCamera.pitch(secondsElapsed * pitchDegreesPerSecond); } if(glfwGetKey(gWindow, 'A')){ gCamera.yaw(secondsElapsed * yawDegreesPerSecond); } else if(glfwGetKey(gWindow, 'D')){ gCamera.yaw(secondsElapsed * -yawDegreesPerSecond); } if(glfwGetKey(gWindow, 'Q')){ gCamera.roll(secondsElapsed * -rollDegreesPerSecond); } else if(glfwGetKey(gWindow, 'E')){ gCamera.roll(secondsElapsed * rollDegreesPerSecond); } }