couch/core/Input.cpp

37 lines
1013 B
C++
Raw Normal View History

2021-01-13 18:51:58 -06:00
#include "Input.h"
Input::Input() {}
Input *Input::instance = nullptr;
Input *Input::GetInstance() {
if (!instance) {
instance = new Input();
2021-01-13 22:50:01 -06:00
instance->lastx = 0.0;
instance->lasty = 0.0;
2021-01-13 18:51:58 -06:00
}
return instance;
}
void Input::Use(Window *window){
2021-01-13 22:50:01 -06:00
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
2021-01-13 18:51:58 -06:00
glfwSetKeyCallback(window, (GLFWkeyfun)HandleKeys);
2021-01-13 22:50:01 -06:00
glfwSetCursorPosCallback(window, (GLFWcursorposfun)HandleMousePosition);
2021-01-13 18:51:58 -06:00
}
void Input::HandleKeys(Window *window, int keys, int code, int action, int mods) {
for (KeyHandler keyHandler : instance->keyHandlers) {
keyHandler(window, keys, code, action, mods);
}
2021-01-13 18:51:58 -06:00
}
2021-01-13 22:50:01 -06:00
void Input::HandleMousePosition(Window *window, double xpos, double ypos) {
double relx = xpos - instance->lastx;
double rely = ypos - instance->lasty;
for (MousePositionHandler mousePositionHandler : instance->mousePositionHandlers) {
mousePositionHandler(window, xpos, ypos, relx, rely);
}
2021-01-13 22:50:01 -06:00
instance->lastx = xpos;
instance->lasty = ypos;
}