these need to be differentiatable lol
This commit is contained in:
parent
9748cb3839
commit
a5de10fce6
4 changed files with 32 additions and 7 deletions
|
|
@ -29,7 +29,8 @@ typedef enum
|
|||
ev_console,
|
||||
ev_mouse,
|
||||
ev_joystick,
|
||||
ev_sensor,
|
||||
ev_accelerometer,
|
||||
ev_gyroscope,
|
||||
} evtype_t;
|
||||
|
||||
// Event structure.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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]));
|
||||
|
|
|
|||
Loading…
Reference in a new issue