|
|
|
@ -40,13 +40,13 @@ public:
|
|
|
|
|
void EnableMotion() {
|
|
|
|
|
if (sdl_controller) {
|
|
|
|
|
SDL_GameController* controller = sdl_controller.get();
|
|
|
|
|
if (SDL_GameControllerHasSensor(controller, SDL_SENSOR_ACCEL) && !has_accel) {
|
|
|
|
|
has_accel = SDL_GameControllerHasSensor(controller, SDL_SENSOR_ACCEL);
|
|
|
|
|
has_gyro = SDL_GameControllerHasSensor(controller, SDL_SENSOR_GYRO);
|
|
|
|
|
if (has_accel) {
|
|
|
|
|
SDL_GameControllerSetSensorEnabled(controller, SDL_SENSOR_ACCEL, SDL_TRUE);
|
|
|
|
|
has_accel = true;
|
|
|
|
|
}
|
|
|
|
|
if (SDL_GameControllerHasSensor(controller, SDL_SENSOR_GYRO) && !has_gyro) {
|
|
|
|
|
if (has_gyro) {
|
|
|
|
|
SDL_GameControllerSetSensorEnabled(controller, SDL_SENSOR_GYRO, SDL_TRUE);
|
|
|
|
|
has_gyro = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -305,6 +305,7 @@ void SDLDriver::InitJoystick(int joystick_index) {
|
|
|
|
|
auto joystick = std::make_shared<SDLJoystick>(guid, 0, sdl_joystick, sdl_gamecontroller);
|
|
|
|
|
PreSetController(joystick->GetPadIdentifier());
|
|
|
|
|
SetBattery(joystick->GetPadIdentifier(), joystick->GetBatteryLevel());
|
|
|
|
|
joystick->EnableMotion();
|
|
|
|
|
joystick_map[guid].emplace_back(std::move(joystick));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -316,6 +317,7 @@ void SDLDriver::InitJoystick(int joystick_index) {
|
|
|
|
|
|
|
|
|
|
if (joystick_it != joystick_guid_list.end()) {
|
|
|
|
|
(*joystick_it)->SetSDLJoystick(sdl_joystick, sdl_gamecontroller);
|
|
|
|
|
(*joystick_it)->EnableMotion();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -323,6 +325,7 @@ void SDLDriver::InitJoystick(int joystick_index) {
|
|
|
|
|
auto joystick = std::make_shared<SDLJoystick>(guid, port, sdl_joystick, sdl_gamecontroller);
|
|
|
|
|
PreSetController(joystick->GetPadIdentifier());
|
|
|
|
|
SetBattery(joystick->GetPadIdentifier(), joystick->GetBatteryLevel());
|
|
|
|
|
joystick->EnableMotion();
|
|
|
|
|
joystick_guid_list.emplace_back(std::move(joystick));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|