summaryrefslogtreecommitdiff
path: root/src/player-input.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/player-input.cpp')
-rw-r--r--src/player-input.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/player-input.cpp b/src/player-input.cpp
index 412be75..2bf412c 100644
--- a/src/player-input.cpp
+++ b/src/player-input.cpp
@@ -441,6 +441,49 @@ const pke_input_event *pke_input_query_by_action_name(const char *actionName) {
return ev;
}
+void pke_input_query_by_mask(pke_input_event_mask mask, pke_input_event &ev) {
+ pke_input_event_hash type = mask.computedHash & PKE_INPUT_HASH_ALL_EVENTS;
+ switch (type) {
+ case PKE_INPUT_HASH_EVENT_TYPE_CURSOR_ENTER:
+ /* no-op */
+ break;
+ case PKE_INPUT_HASH_EVENT_TYPE_CURSOR_POS:
+ /* no-op */
+ break;
+ case PKE_INPUT_HASH_EVENT_TYPE_KEY:
+ ev.type = PKE_INPUT_HASH_EVENT_TYPE_KEY;
+ ev.sourceSet = pke_input_action_set_handle_MAX;
+ ev.data.key.button = mask.button;
+ ev.data.key.isPressed = bool(glfwGetKey(window, mask.button));
+ ev.data.key.mods = 0;
+ ev.data.key.thisTick = false;
+ break;
+ case PKE_INPUT_HASH_EVENT_TYPE_MOUSE_BUTTON:
+ ev.type = PKE_INPUT_HASH_EVENT_TYPE_MOUSE_BUTTON;
+ ev.sourceSet = pke_input_action_set_handle_MAX;
+ ev.data.mouse_button.button = mask.button;
+ ev.data.mouse_button.isPressed = bool(glfwGetMouseButton(window, mask.button));
+ ev.data.mouse_button.mods = 0;
+ ev.data.mouse_button.thisTick = false;
+ break;
+ case PKE_INPUT_HASH_EVENT_TYPE_SCROLL:
+ /* no-op */
+ break;
+ case PKE_INPUT_HASH_EVENT_TYPE_WINDOW_FOCUS:
+ /* no-op */
+ break;
+ default:
+ fprintf(stderr, "[pke_input_query_by_mask] unhandled input type: %i", pke_input_event_hash_T(type));
+ break;
+ }
+ return;
+}
+
+void pke_input_query_mouse_pos(double &x, double &y) {
+ x = lastMousePos.x;
+ y = lastMousePos.y;
+}
+
void CursorEnterCallback(GLFWwindow *window, int entered) {
if (registeredCursorEnterEvents.next) {
pk_arr_append_t(&unhandled_events, { .type = PKE_INPUT_HASH_EVENT_TYPE_CURSOR_ENTER, .data = { .cursor_enter = { .entered = bool(entered) } } });