diff --git a/src/Camera.cpp b/src/Camera.cpp index 575c7e2..ca55886 100644 --- a/src/Camera.cpp +++ b/src/Camera.cpp @@ -55,10 +55,13 @@ void Camera::updatePositionFromKeyboardInput(bool *cameraActionRegister, float d position += deltaPos; } -void Camera::updateDirectionFromMouseInput(float deltaCursorX, float deltaCursorY) { - if(deltaCursorX==0 && deltaCursorY==0) return; - yaw += deltaCursorX; - pitch += deltaCursorY; +void Camera::updateDirectionFromMouseInput(double *cameraMouseActionRegister) { + + if(cameraMouseActionRegister[cameraMouseDeltaX]==0 && cameraMouseActionRegister[cameraMouseDeltaY]==0) + return; + + yaw += cameraMouseActionRegister[cameraMouseDeltaX]; + pitch += cameraMouseActionRegister[cameraMouseDeltaY]; if(pitch > 89.0f) pitch = 89.0f; diff --git a/src/Camera.h b/src/Camera.h index 60a4c8b..737c214 100644 --- a/src/Camera.h +++ b/src/Camera.h @@ -12,7 +12,7 @@ public: void updateVPM(); void updateAspectRatio(int width, int height); void updatePositionFromKeyboardInput(bool *actionCameraRegister, float deltaTime); - void updateDirectionFromMouseInput(float deltaCursorX, float deltaCursorY); + void updateDirectionFromMouseInput(double *cameraMouseActionRegister); void translate(glm::vec3 translateVector); diff --git a/src/Controller.cpp b/src/Controller.cpp index 31b6c71..05f98c8 100644 --- a/src/Controller.cpp +++ b/src/Controller.cpp @@ -157,7 +157,7 @@ void Controller::run() { camera->updatePositionFromKeyboardInput(gameEventHandler->getCameraActionRegister(), deltaTime); if(gameWindow->getMouseIsCatched()) - camera->updateDirectionFromMouseInput(gameEventHandler->getCursorDeltaX(), gameEventHandler->getCursorDeltaY()); + camera->updateDirectionFromMouseInput(gameEventHandler->getCursorDelta()); gameWindow->handleActionRegister(gameEventHandler->getWindowActionRegister()); } diff --git a/src/EventHandler.cpp b/src/EventHandler.cpp index 77325be..59a40ad 100644 --- a/src/EventHandler.cpp +++ b/src/EventHandler.cpp @@ -3,9 +3,11 @@ #include bool EventHandler::cameraActionRegister[CAMERA_ACTION_NUM_ITEMS] = {0}; +double EventHandler::cameraMouseActionRegister[CAMERA_MOUSE_ACTION_NUM_ITEMS] = {0.0, 0.0}; bool EventHandler::windowActionRegister[WINDOW_ACTION_NUM_ITEMS] = {0}; bool EventHandler::firstMouseInput = 1; +float EventHandler::mouseSensitivity = 0.08f; EventHandler::EventHandler(GLFWwindow *window) @@ -14,42 +16,26 @@ EventHandler::EventHandler(GLFWwindow *window) glfwSetKeyCallback(window, key_callback); // Currently disabled because callbacks are shitty - //glfwSetCursorPosCallback(window, mouse_callback); + glfwSetCursorPosCallback(window, mouse_callback); } void EventHandler::handleEvents() { + for(int i = 0; i < CAMERA_MOUSE_ACTION_NUM_ITEMS; i++) + cameraMouseActionRegister[i] = 0.0; + glfwPollEvents(); - for(int i=0; i