Initial Cross Platform Work
This commit is contained in:
33
backends/desktop/source/pd_hid_glfw.cpp
Normal file
33
backends/desktop/source/pd_hid_glfw.cpp
Normal file
@ -0,0 +1,33 @@
|
||||
#include <pd_hid_glfw.hpp>
|
||||
|
||||
namespace PD {
|
||||
PD_BKND_DESKTOP_API HidGLFW::HidGLFW(GLFWwindow* win) : Hid("GLFW") {
|
||||
Window = win;
|
||||
binds[GLFW_MOUSE_BUTTON_LEFT] = Touch;
|
||||
}
|
||||
PD_BKND_DESKTOP_API void HidGLFW::Update() {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
key_events[i][Event_Down] = 0;
|
||||
key_events[i][Event_Held] = 0;
|
||||
key_events[i][Event_Up] = 0;
|
||||
}
|
||||
int state = glfwGetMouseButton(Window, GLFW_MOUSE_BUTTON_LEFT);
|
||||
if (state == GLFW_PRESS) {
|
||||
if (PrevState == GLFW_RELEASE) {
|
||||
key_events[0][Event_Down] |= Touch;
|
||||
}
|
||||
key_events[0][Event_Held] |= Touch;
|
||||
} else if (state == GLFW_RELEASE && PrevState == GLFW_PRESS) {
|
||||
key_events[0][Event_Up] |= Touch;
|
||||
}
|
||||
|
||||
PrevState = state;
|
||||
if (locked) {
|
||||
SwappyTable();
|
||||
}
|
||||
double x, y;
|
||||
glfwGetCursorPos(Window, &x, &y);
|
||||
touch[1] = touch[0]; // Cycle touch pos
|
||||
touch[0] = fvec2(x, y);
|
||||
}
|
||||
} // namespace PD
|
Reference in New Issue
Block a user