From a5de10fce6dcd649e78f4d23c5b90ffb73d2f297 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Sun, 15 Feb 2026 23:40:38 -0500 Subject: [PATCH] these need to be differentiatable lol --- src/d_event.h | 3 ++- src/g_game.c | 6 ++++++ src/sdl/i_gamepad.c | 18 ++++++++++++++++++ src/sdl/i_video.cpp | 12 ++++++------ 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/d_event.h b/src/d_event.h index eb207aa4e..eade8173c 100644 --- a/src/d_event.h +++ b/src/d_event.h @@ -29,7 +29,8 @@ typedef enum ev_console, ev_mouse, ev_joystick, - ev_sensor, + ev_accelerometer, + ev_gyroscope, } evtype_t; // Event structure. diff --git a/src/g_game.c b/src/g_game.c index 48796acab..16ca44edb 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2180,6 +2180,12 @@ boolean G_Responder(event_t *ev) case ev_joystick: return true; // eat events + case ev_accelerometer: + return true; // eat events + + case ev_gyroscope: + return true; // eat events + default: break; } diff --git a/src/sdl/i_gamepad.c b/src/sdl/i_gamepad.c index d37ece3da..3cf807397 100644 --- a/src/sdl/i_gamepad.c +++ b/src/sdl/i_gamepad.c @@ -90,6 +90,24 @@ void I_ShutdownController(UINT8 index) D_PostEvent(&event); } + // reset sensors + event.type = ev_accelerometer; + for (i = 0; i < 3; i++) + { + event.data1 = 0; + event.data2 = 0; + event.data3 = 0; + D_PostEvent(&event); + } + event.type = ev_gyroscope; + for (i = 0; i < 3; i++) + { + event.data1 = 0; + event.data2 = 0; + event.data3 = 0; + D_PostEvent(&event); + } + I_ControllerReset(&controllerInfo[index]); } diff --git a/src/sdl/i_video.cpp b/src/sdl/i_video.cpp index 9a2fd0bea..57ebb309a 100644 --- a/src/sdl/i_video.cpp +++ b/src/sdl/i_video.cpp @@ -941,8 +941,6 @@ static void Impl_HandleControllerSensorEvent(SDL_GamepadSensorEvent evt) { event_t event; - event.type = ev_sensor; - event.device = 1 + evt.which; event.data1 = event.data2 = event.data3 = INT32_MAX; @@ -958,16 +956,18 @@ static void Impl_HandleControllerSensorEvent(SDL_GamepadSensorEvent evt) // data[1]: y acceleration in m/s // data[2]: z acceleration in m/s case SDL_SENSOR_ACCEL: + event.type = ev_accelerometer; event.data1 = FLOAT_TO_FIXED(evt.data[0]); event.data2 = FLOAT_TO_FIXED(evt.data[1]); event.data3 = FLOAT_TO_FIXED(evt.data[2]); break; - // data[0]: delta pitch in rad/s - // data[1]: delta yaw in rad/s - // data[2]: delta roll in rad/s - case SDL_SENSOR_GYRO: + // data[0]: delta pitch in rad/s + // data[1]: delta yaw in rad/s + // data[2]: delta roll in rad/s +case SDL_SENSOR_GYRO: #define RAD2DEG 57.295779513f + event.type = ev_gyroscope; event.data1 = FixedAngle(FLOAT_TO_FIXED(RAD2DEG * evt.data[0])); event.data2 = FixedAngle(FLOAT_TO_FIXED(RAD2DEG * evt.data[1])); event.data3 = FixedAngle(FLOAT_TO_FIXED(RAD2DEG * evt.data[2]));