// update the scene based on the time elapsed since last update void Update(float secondsElapsed) { const GLfloat degreesPerSecond = 180.0f; gDegreesRotated += secondsElapsed * degreesPerSecond; while(gDegreesRotated > 360.0f) gDegreesRotated -= 360.0f; // Move position of camera base on WASD keys const float moveSpeed = 3.0; // Units per second; if(glfwGetKey(gWindow, 'S')) { gCamera.offsetPosition(secondsElapsed * moveSpeed * -gCamera.forward()); }else if(glfwGetKey(gWindow, 'W')) { gCamera.offsetPosition(secondsElapsed * moveSpeed * gCamera.forward()); } if(glfwGetKey(gWindow, 'A')) { gCamera.offsetPosition(secondsElapsed * moveSpeed * gCamera.right()); }else if(glfwGetKey(gWindow, 'D')) { gCamera.offsetPosition(secondsElapsed * moveSpeed * -gCamera.right()); } if(glfwGetKey(gWindow, 'Z')) { gCamera.offsetPosition(secondsElapsed * moveSpeed * -gCamera.up()); }else if(glfwGetKey(gWindow, 'X')) { gCamera.offsetPosition(secondsElapsed * moveSpeed * gCamera.up()); } //rotate camera based on mouse movement const float mouseSensitivity = 0.1f; double mouseX, mouseY; glfwGetCursorPos(gWindow, &mouseX, &mouseY); gCamera.offsetOrientation(mouseSensitivity * (float)mouseY, mouseSensitivity * (float)mouseX); glfwSetCursorPos(gWindow, 0, 0); //reset the mouse, so it doesn't go out of the window //increase or decrease field of view based on mouse wheel const float zoomSensitivity = -0.2f; float fieldOfView = gCamera.fieldOfView() + zoomSensitivity * (float)gScrollY; if(fieldOfView < 5.0f) fieldOfView = 5.0f; if(fieldOfView > 130.0f) fieldOfView = 130.0f; gCamera.setFieldOfView(fieldOfView); gScrollY = 0; }