testcontroller: demonstrate multiple sensors on the virtual controller
diff --git a/test/testcontroller.c b/test/testcontroller.c
index 345b712..990878b 100644
--- a/test/testcontroller.c
+++ b/test/testcontroller.c
@@ -1587,7 +1587,10 @@
static void OpenVirtualGamepad(void)
{
SDL_VirtualJoystickTouchpadDesc virtual_touchpad = { 1, { 0, 0, 0 } };
- SDL_VirtualJoystickSensorDesc virtual_sensor = { SDL_SENSOR_ACCEL, 0.0f };
+ SDL_VirtualJoystickSensorDesc virtual_sensors[] = {
+ { SDL_SENSOR_ACCEL, 0.0f },
+ { SDL_SENSOR_GYRO, 0.0f }
+ };
SDL_VirtualJoystickDesc desc;
SDL_JoystickID virtual_id;
@@ -1601,8 +1604,8 @@
desc.nbuttons = SDL_GAMEPAD_BUTTON_COUNT;
desc.ntouchpads = 1;
desc.touchpads = &virtual_touchpad;
- desc.nsensors = 1;
- desc.sensors = &virtual_sensor;
+ desc.nsensors = SDL_arraysize(virtual_sensors);
+ desc.sensors = virtual_sensors;
desc.SetPlayerIndex = VirtualGamepadSetPlayerIndex;
desc.Rumble = VirtualGamepadRumble;
desc.RumbleTriggers = VirtualGamepadRumbleTriggers;
@@ -2362,10 +2365,13 @@
SDL_AppResult SDLCALL SDL_AppIterate(void *appstate)
{
- /* If we have a virtual controller, send a virtual accelerometer sensor reading */
+ /* If we have a virtual controller, send virtual sensor readings */
if (virtual_joystick) {
- float data[3] = { 0.0f, SDL_STANDARD_GRAVITY, 0.0f };
- SDL_SendJoystickVirtualSensorData(virtual_joystick, SDL_SENSOR_ACCEL, SDL_GetTicksNS(), data, SDL_arraysize(data));
+ float accel_data[3] = { 0.0f, SDL_STANDARD_GRAVITY, 0.0f };
+ float gyro_data[3] = { 0.01f, -0.01f, 0.0f };
+ Uint64 sensor_timestamp = SDL_GetTicksNS();
+ SDL_SendJoystickVirtualSensorData(virtual_joystick, SDL_SENSOR_ACCEL, sensor_timestamp, accel_data, SDL_arraysize(accel_data));
+ SDL_SendJoystickVirtualSensorData(virtual_joystick, SDL_SENSOR_GYRO, sensor_timestamp, gyro_data, SDL_arraysize(gyro_data));
}
/* Wait 30 ms for joystick events to stop coming in,