mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-03-20 15:51:07 +01:00
testcontroller: demonstrate multiple sensors on the virtual controller
This commit is contained in:
@@ -1587,7 +1587,10 @@ static bool SDLCALL VirtualGamepadSetLED(void *userdata, Uint8 red, Uint8 green,
|
|||||||
static void OpenVirtualGamepad(void)
|
static void OpenVirtualGamepad(void)
|
||||||
{
|
{
|
||||||
SDL_VirtualJoystickTouchpadDesc virtual_touchpad = { 1, { 0, 0, 0 } };
|
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_VirtualJoystickDesc desc;
|
||||||
SDL_JoystickID virtual_id;
|
SDL_JoystickID virtual_id;
|
||||||
|
|
||||||
@@ -1601,8 +1604,8 @@ static void OpenVirtualGamepad(void)
|
|||||||
desc.nbuttons = SDL_GAMEPAD_BUTTON_COUNT;
|
desc.nbuttons = SDL_GAMEPAD_BUTTON_COUNT;
|
||||||
desc.ntouchpads = 1;
|
desc.ntouchpads = 1;
|
||||||
desc.touchpads = &virtual_touchpad;
|
desc.touchpads = &virtual_touchpad;
|
||||||
desc.nsensors = 1;
|
desc.nsensors = SDL_arraysize(virtual_sensors);
|
||||||
desc.sensors = &virtual_sensor;
|
desc.sensors = virtual_sensors;
|
||||||
desc.SetPlayerIndex = VirtualGamepadSetPlayerIndex;
|
desc.SetPlayerIndex = VirtualGamepadSetPlayerIndex;
|
||||||
desc.Rumble = VirtualGamepadRumble;
|
desc.Rumble = VirtualGamepadRumble;
|
||||||
desc.RumbleTriggers = VirtualGamepadRumbleTriggers;
|
desc.RumbleTriggers = VirtualGamepadRumbleTriggers;
|
||||||
@@ -2362,10 +2365,13 @@ SDL_AppResult SDLCALL SDL_AppEvent(void *appstate, SDL_Event *event)
|
|||||||
|
|
||||||
SDL_AppResult SDLCALL SDL_AppIterate(void *appstate)
|
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) {
|
if (virtual_joystick) {
|
||||||
float data[3] = { 0.0f, SDL_STANDARD_GRAVITY, 0.0f };
|
float accel_data[3] = { 0.0f, SDL_STANDARD_GRAVITY, 0.0f };
|
||||||
SDL_SendJoystickVirtualSensorData(virtual_joystick, SDL_SENSOR_ACCEL, SDL_GetTicksNS(), data, SDL_arraysize(data));
|
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,
|
/* Wait 30 ms for joystick events to stop coming in,
|
||||||
|
|||||||
Reference in New Issue
Block a user