diff --git a/abstractAppState.h b/abstractAppState.h index d08c71e..fbaf27b 100644 --- a/abstractAppState.h +++ b/abstractAppState.h @@ -29,6 +29,7 @@ namespace gameBase { virtual void onRawKeyPress(int){} virtual void onRawCharPress(unsigned int){} virtual void onRawMousePress(int){} + virtual void onRawMouseWheelScroll(bool){} virtual void onRawJoystickMove(int, float){} virtual void onRawJoystickPress(int){} protected: diff --git a/inputManager.cpp b/inputManager.cpp index fd0dca1..7538142 100644 --- a/inputManager.cpp +++ b/inputManager.cpp @@ -10,6 +10,12 @@ namespace gameBase{ double *posX, *posY, strX, strY; int width, height; StateManager *manager = nullptr; + + void scroll_callback(GLFWwindow* window, double xOffset, double yOffset) { + if(manager) + for(AbstractAppState *a : manager->getAppStates()) + a->onRawMouseWheelScroll(yOffset == 1); + } void foo(GLFWwindow *window, double newPosX, double newPosY){ strX = (*posX - newPosX) / width, strY = (newPosY - *posY) / height; @@ -118,6 +124,8 @@ namespace gameBase{ glfwSetCursorPosCallback(window, foo); + glfwSetScrollCallback(window, scroll_callback); + if(glfwJoystickPresent(GLFW_JOYSTICK_1)){ for(int i = 0; i < numAxis; i++) if(abs(axis[i]) == 1)