diff options
| author | 2022-12-16 16:16:54 -0600 | |
|---|---|---|
| committer | 2022-12-16 18:26:11 -0600 | |
| commit | 243404bf34b1470369e1d0f5f2dd18ac02435273 (patch) | |
| tree | 90a6f4fa1da5620b07ce3c2183cbc69edd029727 /src/input_common/main.cpp | |
| parent | Merge pull request #6354 from ogniK5377/device-name (diff) | |
| download | yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.tar.gz yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.tar.xz yuzu-243404bf34b1470369e1d0f5f2dd18ac02435273.zip | |
input_common: Add virtual gamepad
Diffstat (limited to 'src/input_common/main.cpp')
| -rw-r--r-- | src/input_common/main.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp index 942a13535..75b856c95 100644 --- a/src/input_common/main.cpp +++ b/src/input_common/main.cpp | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include "input_common/drivers/touch_screen.h" | 12 | #include "input_common/drivers/touch_screen.h" |
| 13 | #include "input_common/drivers/udp_client.h" | 13 | #include "input_common/drivers/udp_client.h" |
| 14 | #include "input_common/drivers/virtual_amiibo.h" | 14 | #include "input_common/drivers/virtual_amiibo.h" |
| 15 | #include "input_common/drivers/virtual_gamepad.h" | ||
| 15 | #include "input_common/helpers/stick_from_buttons.h" | 16 | #include "input_common/helpers/stick_from_buttons.h" |
| 16 | #include "input_common/helpers/touch_from_buttons.h" | 17 | #include "input_common/helpers/touch_from_buttons.h" |
| 17 | #include "input_common/input_engine.h" | 18 | #include "input_common/input_engine.h" |
| @@ -85,6 +86,12 @@ struct InputSubsystem::Impl { | |||
| 85 | Common::Input::RegisterOutputFactory(virtual_amiibo->GetEngineName(), | 86 | Common::Input::RegisterOutputFactory(virtual_amiibo->GetEngineName(), |
| 86 | virtual_amiibo_output_factory); | 87 | virtual_amiibo_output_factory); |
| 87 | 88 | ||
| 89 | virtual_gamepad = std::make_shared<VirtualGamepad>("virtual_gamepad"); | ||
| 90 | virtual_gamepad->SetMappingCallback(mapping_callback); | ||
| 91 | virtual_gamepad_input_factory = std::make_shared<InputFactory>(virtual_gamepad); | ||
| 92 | Common::Input::RegisterInputFactory(virtual_gamepad->GetEngineName(), | ||
| 93 | virtual_gamepad_input_factory); | ||
| 94 | |||
| 88 | #ifdef HAVE_SDL2 | 95 | #ifdef HAVE_SDL2 |
| 89 | sdl = std::make_shared<SDLDriver>("sdl"); | 96 | sdl = std::make_shared<SDLDriver>("sdl"); |
| 90 | sdl->SetMappingCallback(mapping_callback); | 97 | sdl->SetMappingCallback(mapping_callback); |
| @@ -132,6 +139,9 @@ struct InputSubsystem::Impl { | |||
| 132 | Common::Input::UnregisterOutputFactory(virtual_amiibo->GetEngineName()); | 139 | Common::Input::UnregisterOutputFactory(virtual_amiibo->GetEngineName()); |
| 133 | virtual_amiibo.reset(); | 140 | virtual_amiibo.reset(); |
| 134 | 141 | ||
| 142 | Common::Input::UnregisterInputFactory(virtual_gamepad->GetEngineName()); | ||
| 143 | virtual_gamepad.reset(); | ||
| 144 | |||
| 135 | #ifdef HAVE_SDL2 | 145 | #ifdef HAVE_SDL2 |
| 136 | Common::Input::UnregisterInputFactory(sdl->GetEngineName()); | 146 | Common::Input::UnregisterInputFactory(sdl->GetEngineName()); |
| 137 | Common::Input::UnregisterOutputFactory(sdl->GetEngineName()); | 147 | Common::Input::UnregisterOutputFactory(sdl->GetEngineName()); |
| @@ -290,6 +300,9 @@ struct InputSubsystem::Impl { | |||
| 290 | if (engine == tas_input->GetEngineName()) { | 300 | if (engine == tas_input->GetEngineName()) { |
| 291 | return true; | 301 | return true; |
| 292 | } | 302 | } |
| 303 | if (engine == virtual_gamepad->GetEngineName()) { | ||
| 304 | return true; | ||
| 305 | } | ||
| 293 | #ifdef HAVE_SDL2 | 306 | #ifdef HAVE_SDL2 |
| 294 | if (engine == sdl->GetEngineName()) { | 307 | if (engine == sdl->GetEngineName()) { |
| 295 | return true; | 308 | return true; |
| @@ -338,6 +351,7 @@ struct InputSubsystem::Impl { | |||
| 338 | std::shared_ptr<CemuhookUDP::UDPClient> udp_client; | 351 | std::shared_ptr<CemuhookUDP::UDPClient> udp_client; |
| 339 | std::shared_ptr<Camera> camera; | 352 | std::shared_ptr<Camera> camera; |
| 340 | std::shared_ptr<VirtualAmiibo> virtual_amiibo; | 353 | std::shared_ptr<VirtualAmiibo> virtual_amiibo; |
| 354 | std::shared_ptr<VirtualGamepad> virtual_gamepad; | ||
| 341 | 355 | ||
| 342 | std::shared_ptr<InputFactory> keyboard_factory; | 356 | std::shared_ptr<InputFactory> keyboard_factory; |
| 343 | std::shared_ptr<InputFactory> mouse_factory; | 357 | std::shared_ptr<InputFactory> mouse_factory; |
| @@ -347,6 +361,7 @@ struct InputSubsystem::Impl { | |||
| 347 | std::shared_ptr<InputFactory> tas_input_factory; | 361 | std::shared_ptr<InputFactory> tas_input_factory; |
| 348 | std::shared_ptr<InputFactory> camera_input_factory; | 362 | std::shared_ptr<InputFactory> camera_input_factory; |
| 349 | std::shared_ptr<InputFactory> virtual_amiibo_input_factory; | 363 | std::shared_ptr<InputFactory> virtual_amiibo_input_factory; |
| 364 | std::shared_ptr<InputFactory> virtual_gamepad_input_factory; | ||
| 350 | 365 | ||
| 351 | std::shared_ptr<OutputFactory> keyboard_output_factory; | 366 | std::shared_ptr<OutputFactory> keyboard_output_factory; |
| 352 | std::shared_ptr<OutputFactory> mouse_output_factory; | 367 | std::shared_ptr<OutputFactory> mouse_output_factory; |
| @@ -423,6 +438,14 @@ const VirtualAmiibo* InputSubsystem::GetVirtualAmiibo() const { | |||
| 423 | return impl->virtual_amiibo.get(); | 438 | return impl->virtual_amiibo.get(); |
| 424 | } | 439 | } |
| 425 | 440 | ||
| 441 | VirtualGamepad* InputSubsystem::GetVirtualGamepad() { | ||
| 442 | return impl->virtual_gamepad.get(); | ||
| 443 | } | ||
| 444 | |||
| 445 | const VirtualGamepad* InputSubsystem::GetVirtualGamepad() const { | ||
| 446 | return impl->virtual_gamepad.get(); | ||
| 447 | } | ||
| 448 | |||
| 426 | std::vector<Common::ParamPackage> InputSubsystem::GetInputDevices() const { | 449 | std::vector<Common::ParamPackage> InputSubsystem::GetInputDevices() const { |
| 427 | return impl->GetInputDevices(); | 450 | return impl->GetInputDevices(); |
| 428 | } | 451 | } |