diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/input.h | 34 | ||||
| -rw-r--r-- | src/core/hid/emulated_console.cpp | 4 | ||||
| -rw-r--r-- | src/core/hid/emulated_controller.cpp | 20 | ||||
| -rw-r--r-- | src/core/hid/emulated_devices.cpp | 14 | ||||
| -rw-r--r-- | src/input_common/helpers/stick_from_buttons.cpp | 15 | ||||
| -rw-r--r-- | src/input_common/helpers/touch_from_buttons.cpp | 3 | ||||
| -rw-r--r-- | src/input_common/main.cpp | 102 |
7 files changed, 102 insertions, 90 deletions
diff --git a/src/common/input.h b/src/common/input.h index 4030ad2e5..449e0193f 100644 --- a/src/common/input.h +++ b/src/common/input.h | |||
| @@ -383,6 +383,16 @@ void RegisterFactory(const std::string& name, std::shared_ptr<Factory<InputDevic | |||
| 383 | } | 383 | } |
| 384 | } | 384 | } |
| 385 | 385 | ||
| 386 | inline void RegisterInputFactory(const std::string& name, | ||
| 387 | std::shared_ptr<Factory<InputDevice>> factory) { | ||
| 388 | RegisterFactory<InputDevice>(name, std::move(factory)); | ||
| 389 | } | ||
| 390 | |||
| 391 | inline void RegisterOutputFactory(const std::string& name, | ||
| 392 | std::shared_ptr<Factory<OutputDevice>> factory) { | ||
| 393 | RegisterFactory<OutputDevice>(name, std::move(factory)); | ||
| 394 | } | ||
| 395 | |||
| 386 | /** | 396 | /** |
| 387 | * Unregisters an input device factory. | 397 | * Unregisters an input device factory. |
| 388 | * @tparam InputDeviceType the type of input devices the factory can create | 398 | * @tparam InputDeviceType the type of input devices the factory can create |
| @@ -395,6 +405,14 @@ void UnregisterFactory(const std::string& name) { | |||
| 395 | } | 405 | } |
| 396 | } | 406 | } |
| 397 | 407 | ||
| 408 | inline void UnregisterInputFactory(const std::string& name) { | ||
| 409 | UnregisterFactory<InputDevice>(name); | ||
| 410 | } | ||
| 411 | |||
| 412 | inline void UnregisterOutputFactory(const std::string& name) { | ||
| 413 | UnregisterFactory<OutputDevice>(name); | ||
| 414 | } | ||
| 415 | |||
| 398 | /** | 416 | /** |
| 399 | * Create an input device from given paramters. | 417 | * Create an input device from given paramters. |
| 400 | * @tparam InputDeviceType the type of input devices to create | 418 | * @tparam InputDeviceType the type of input devices to create |
| @@ -416,6 +434,14 @@ std::unique_ptr<InputDeviceType> CreateDeviceFromString(const std::string& param | |||
| 416 | return pair->second->Create(package); | 434 | return pair->second->Create(package); |
| 417 | } | 435 | } |
| 418 | 436 | ||
| 437 | inline std::unique_ptr<InputDevice> CreateInputDeviceFromString(const std::string& params) { | ||
| 438 | return CreateDeviceFromString<InputDevice>(params); | ||
| 439 | } | ||
| 440 | |||
| 441 | inline std::unique_ptr<OutputDevice> CreateOutputDeviceFromString(const std::string& params) { | ||
| 442 | return CreateDeviceFromString<OutputDevice>(params); | ||
| 443 | } | ||
| 444 | |||
| 419 | /** | 445 | /** |
| 420 | * Create an input device from given parameters. | 446 | * Create an input device from given parameters. |
| 421 | * @tparam InputDeviceType the type of input devices to create | 447 | * @tparam InputDeviceType the type of input devices to create |
| @@ -435,4 +461,12 @@ std::unique_ptr<InputDeviceType> CreateDevice(const ParamPackage& package) { | |||
| 435 | return pair->second->Create(package); | 461 | return pair->second->Create(package); |
| 436 | } | 462 | } |
| 437 | 463 | ||
| 464 | inline std::unique_ptr<InputDevice> CreateInputDevice(const ParamPackage& package) { | ||
| 465 | return CreateDevice<InputDevice>(package); | ||
| 466 | } | ||
| 467 | |||
| 468 | inline std::unique_ptr<OutputDevice> CreateOutputDevice(const ParamPackage& package) { | ||
| 469 | return CreateDevice<OutputDevice>(package); | ||
| 470 | } | ||
| 471 | |||
| 438 | } // namespace Common::Input | 472 | } // namespace Common::Input |
diff --git a/src/core/hid/emulated_console.cpp b/src/core/hid/emulated_console.cpp index fb7e5802a..b6c8cc58d 100644 --- a/src/core/hid/emulated_console.cpp +++ b/src/core/hid/emulated_console.cpp | |||
| @@ -68,7 +68,7 @@ void EmulatedConsole::ReloadInput() { | |||
| 68 | // If you load any device here add the equivalent to the UnloadInput() function | 68 | // If you load any device here add the equivalent to the UnloadInput() function |
| 69 | SetTouchParams(); | 69 | SetTouchParams(); |
| 70 | 70 | ||
| 71 | motion_devices = Common::Input::CreateDevice<Common::Input::InputDevice>(motion_params); | 71 | motion_devices = Common::Input::CreateInputDevice(motion_params); |
| 72 | if (motion_devices) { | 72 | if (motion_devices) { |
| 73 | motion_devices->SetCallback({ | 73 | motion_devices->SetCallback({ |
| 74 | .on_change = | 74 | .on_change = |
| @@ -79,7 +79,7 @@ void EmulatedConsole::ReloadInput() { | |||
| 79 | // Unique index for identifying touch device source | 79 | // Unique index for identifying touch device source |
| 80 | std::size_t index = 0; | 80 | std::size_t index = 0; |
| 81 | for (auto& touch_device : touch_devices) { | 81 | for (auto& touch_device : touch_devices) { |
| 82 | touch_device = Common::Input::CreateDevice<Common::Input::InputDevice>(touch_params[index]); | 82 | touch_device = Common::Input::CreateInputDevice(touch_params[index]); |
| 83 | if (!touch_device) { | 83 | if (!touch_device) { |
| 84 | continue; | 84 | continue; |
| 85 | } | 85 | } |
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp index ec1364452..b3188f256 100644 --- a/src/core/hid/emulated_controller.cpp +++ b/src/core/hid/emulated_controller.cpp | |||
| @@ -146,27 +146,27 @@ void EmulatedController::LoadDevices() { | |||
| 146 | 146 | ||
| 147 | std::transform(button_params.begin() + Settings::NativeButton::BUTTON_HID_BEGIN, | 147 | std::transform(button_params.begin() + Settings::NativeButton::BUTTON_HID_BEGIN, |
| 148 | button_params.begin() + Settings::NativeButton::BUTTON_NS_END, | 148 | button_params.begin() + Settings::NativeButton::BUTTON_NS_END, |
| 149 | button_devices.begin(), Common::Input::CreateDevice<Common::Input::InputDevice>); | 149 | button_devices.begin(), Common::Input::CreateInputDevice); |
| 150 | std::transform(stick_params.begin() + Settings::NativeAnalog::STICK_HID_BEGIN, | 150 | std::transform(stick_params.begin() + Settings::NativeAnalog::STICK_HID_BEGIN, |
| 151 | stick_params.begin() + Settings::NativeAnalog::STICK_HID_END, | 151 | stick_params.begin() + Settings::NativeAnalog::STICK_HID_END, |
| 152 | stick_devices.begin(), Common::Input::CreateDevice<Common::Input::InputDevice>); | 152 | stick_devices.begin(), Common::Input::CreateInputDevice); |
| 153 | std::transform(motion_params.begin() + Settings::NativeMotion::MOTION_HID_BEGIN, | 153 | std::transform(motion_params.begin() + Settings::NativeMotion::MOTION_HID_BEGIN, |
| 154 | motion_params.begin() + Settings::NativeMotion::MOTION_HID_END, | 154 | motion_params.begin() + Settings::NativeMotion::MOTION_HID_END, |
| 155 | motion_devices.begin(), Common::Input::CreateDevice<Common::Input::InputDevice>); | 155 | motion_devices.begin(), Common::Input::CreateInputDevice); |
| 156 | std::transform(trigger_params.begin(), trigger_params.end(), trigger_devices.begin(), | 156 | std::transform(trigger_params.begin(), trigger_params.end(), trigger_devices.begin(), |
| 157 | Common::Input::CreateDevice<Common::Input::InputDevice>); | 157 | Common::Input::CreateInputDevice); |
| 158 | std::transform(battery_params.begin(), battery_params.end(), battery_devices.begin(), | 158 | std::transform(battery_params.begin(), battery_params.end(), battery_devices.begin(), |
| 159 | Common::Input::CreateDevice<Common::Input::InputDevice>); | 159 | Common::Input::CreateInputDevice); |
| 160 | camera_devices = Common::Input::CreateDevice<Common::Input::InputDevice>(camera_params); | 160 | camera_devices = Common::Input::CreateInputDevice(camera_params); |
| 161 | nfc_devices = Common::Input::CreateDevice<Common::Input::InputDevice>(nfc_params); | 161 | nfc_devices = Common::Input::CreateInputDevice(nfc_params); |
| 162 | std::transform(output_params.begin(), output_params.end(), output_devices.begin(), | 162 | std::transform(output_params.begin(), output_params.end(), output_devices.begin(), |
| 163 | Common::Input::CreateDevice<Common::Input::OutputDevice>); | 163 | Common::Input::CreateOutputDevice); |
| 164 | 164 | ||
| 165 | // Initialize TAS devices | 165 | // Initialize TAS devices |
| 166 | std::transform(tas_button_params.begin(), tas_button_params.end(), tas_button_devices.begin(), | 166 | std::transform(tas_button_params.begin(), tas_button_params.end(), tas_button_devices.begin(), |
| 167 | Common::Input::CreateDevice<Common::Input::InputDevice>); | 167 | Common::Input::CreateInputDevice); |
| 168 | std::transform(tas_stick_params.begin(), tas_stick_params.end(), tas_stick_devices.begin(), | 168 | std::transform(tas_stick_params.begin(), tas_stick_params.end(), tas_stick_devices.begin(), |
| 169 | Common::Input::CreateDevice<Common::Input::InputDevice>); | 169 | Common::Input::CreateInputDevice); |
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | void EmulatedController::LoadTASParams() { | 172 | void EmulatedController::LoadTASParams() { |
diff --git a/src/core/hid/emulated_devices.cpp b/src/core/hid/emulated_devices.cpp index 658dbd318..e421828d2 100644 --- a/src/core/hid/emulated_devices.cpp +++ b/src/core/hid/emulated_devices.cpp | |||
| @@ -25,12 +25,12 @@ void EmulatedDevices::ReloadInput() { | |||
| 25 | Common::ParamPackage mouse_params; | 25 | Common::ParamPackage mouse_params; |
| 26 | mouse_params.Set("engine", "mouse"); | 26 | mouse_params.Set("engine", "mouse"); |
| 27 | mouse_params.Set("button", static_cast<int>(key_index)); | 27 | mouse_params.Set("button", static_cast<int>(key_index)); |
| 28 | mouse_device = Common::Input::CreateDevice<Common::Input::InputDevice>(mouse_params); | 28 | mouse_device = Common::Input::CreateInputDevice(mouse_params); |
| 29 | key_index++; | 29 | key_index++; |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | mouse_stick_device = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( | 32 | mouse_stick_device = |
| 33 | "engine:mouse,axis_x:0,axis_y:1"); | 33 | Common::Input::CreateInputDeviceFromString("engine:mouse,axis_x:0,axis_y:1"); |
| 34 | 34 | ||
| 35 | // First two axis are reserved for mouse position | 35 | // First two axis are reserved for mouse position |
| 36 | key_index = 2; | 36 | key_index = 2; |
| @@ -38,7 +38,7 @@ void EmulatedDevices::ReloadInput() { | |||
| 38 | Common::ParamPackage mouse_params; | 38 | Common::ParamPackage mouse_params; |
| 39 | mouse_params.Set("engine", "mouse"); | 39 | mouse_params.Set("engine", "mouse"); |
| 40 | mouse_params.Set("axis", static_cast<int>(key_index)); | 40 | mouse_params.Set("axis", static_cast<int>(key_index)); |
| 41 | mouse_device = Common::Input::CreateDevice<Common::Input::InputDevice>(mouse_params); | 41 | mouse_device = Common::Input::CreateInputDevice(mouse_params); |
| 42 | key_index++; | 42 | key_index++; |
| 43 | } | 43 | } |
| 44 | 44 | ||
| @@ -50,7 +50,7 @@ void EmulatedDevices::ReloadInput() { | |||
| 50 | keyboard_params.Set("button", static_cast<int>(key_index)); | 50 | keyboard_params.Set("button", static_cast<int>(key_index)); |
| 51 | keyboard_params.Set("port", 1); | 51 | keyboard_params.Set("port", 1); |
| 52 | keyboard_params.Set("pad", 0); | 52 | keyboard_params.Set("pad", 0); |
| 53 | keyboard_device = Common::Input::CreateDevice<Common::Input::InputDevice>(keyboard_params); | 53 | keyboard_device = Common::Input::CreateInputDevice(keyboard_params); |
| 54 | key_index++; | 54 | key_index++; |
| 55 | } | 55 | } |
| 56 | 56 | ||
| @@ -62,11 +62,11 @@ void EmulatedDevices::ReloadInput() { | |||
| 62 | keyboard_params.Set("button", static_cast<int>(key_index)); | 62 | keyboard_params.Set("button", static_cast<int>(key_index)); |
| 63 | keyboard_params.Set("port", 1); | 63 | keyboard_params.Set("port", 1); |
| 64 | keyboard_params.Set("pad", 1); | 64 | keyboard_params.Set("pad", 1); |
| 65 | keyboard_device = Common::Input::CreateDevice<Common::Input::InputDevice>(keyboard_params); | 65 | keyboard_device = Common::Input::CreateInputDevice(keyboard_params); |
| 66 | key_index++; | 66 | key_index++; |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | ring_analog_device = Common::Input::CreateDevice<Common::Input::InputDevice>(ring_params); | 69 | ring_analog_device = Common::Input::CreateInputDevice(ring_params); |
| 70 | 70 | ||
| 71 | for (std::size_t index = 0; index < mouse_button_devices.size(); ++index) { | 71 | for (std::size_t index = 0; index < mouse_button_devices.size(); ++index) { |
| 72 | if (!mouse_button_devices[index]) { | 72 | if (!mouse_button_devices[index]) { |
diff --git a/src/input_common/helpers/stick_from_buttons.cpp b/src/input_common/helpers/stick_from_buttons.cpp index 536d413a5..09aec2b04 100644 --- a/src/input_common/helpers/stick_from_buttons.cpp +++ b/src/input_common/helpers/stick_from_buttons.cpp | |||
| @@ -318,16 +318,11 @@ private: | |||
| 318 | std::unique_ptr<Common::Input::InputDevice> StickFromButton::Create( | 318 | std::unique_ptr<Common::Input::InputDevice> StickFromButton::Create( |
| 319 | const Common::ParamPackage& params) { | 319 | const Common::ParamPackage& params) { |
| 320 | const std::string null_engine = Common::ParamPackage{{"engine", "null"}}.Serialize(); | 320 | const std::string null_engine = Common::ParamPackage{{"engine", "null"}}.Serialize(); |
| 321 | auto up = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( | 321 | auto up = Common::Input::CreateInputDeviceFromString(params.Get("up", null_engine)); |
| 322 | params.Get("up", null_engine)); | 322 | auto down = Common::Input::CreateInputDeviceFromString(params.Get("down", null_engine)); |
| 323 | auto down = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( | 323 | auto left = Common::Input::CreateInputDeviceFromString(params.Get("left", null_engine)); |
| 324 | params.Get("down", null_engine)); | 324 | auto right = Common::Input::CreateInputDeviceFromString(params.Get("right", null_engine)); |
| 325 | auto left = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( | 325 | auto modifier = Common::Input::CreateInputDeviceFromString(params.Get("modifier", null_engine)); |
| 326 | params.Get("left", null_engine)); | ||
| 327 | auto right = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( | ||
| 328 | params.Get("right", null_engine)); | ||
| 329 | auto modifier = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( | ||
| 330 | params.Get("modifier", null_engine)); | ||
| 331 | auto modifier_scale = params.Get("modifier_scale", 0.5f); | 326 | auto modifier_scale = params.Get("modifier_scale", 0.5f); |
| 332 | auto modifier_angle = params.Get("modifier_angle", 5.5f); | 327 | auto modifier_angle = params.Get("modifier_angle", 5.5f); |
| 333 | return std::make_unique<Stick>(std::move(up), std::move(down), std::move(left), | 328 | return std::make_unique<Stick>(std::move(up), std::move(down), std::move(left), |
diff --git a/src/input_common/helpers/touch_from_buttons.cpp b/src/input_common/helpers/touch_from_buttons.cpp index 003a38da5..f44663ac6 100644 --- a/src/input_common/helpers/touch_from_buttons.cpp +++ b/src/input_common/helpers/touch_from_buttons.cpp | |||
| @@ -69,8 +69,7 @@ private: | |||
| 69 | std::unique_ptr<Common::Input::InputDevice> TouchFromButton::Create( | 69 | std::unique_ptr<Common::Input::InputDevice> TouchFromButton::Create( |
| 70 | const Common::ParamPackage& params) { | 70 | const Common::ParamPackage& params) { |
| 71 | const std::string null_engine = Common::ParamPackage{{"engine", "null"}}.Serialize(); | 71 | const std::string null_engine = Common::ParamPackage{{"engine", "null"}}.Serialize(); |
| 72 | auto button = Common::Input::CreateDeviceFromString<Common::Input::InputDevice>( | 72 | auto button = Common::Input::CreateInputDeviceFromString(params.Get("button", null_engine)); |
| 73 | params.Get("button", null_engine)); | ||
| 74 | const float x = params.Get("x", 0.0f) / 1280.0f; | 73 | const float x = params.Get("x", 0.0f) / 1280.0f; |
| 75 | const float y = params.Get("y", 0.0f) / 720.0f; | 74 | const float y = params.Get("y", 0.0f) / 720.0f; |
| 76 | return std::make_unique<TouchFromButtonDevice>(std::move(button), x, y); | 75 | return std::make_unique<TouchFromButtonDevice>(std::move(button), x, y); |
diff --git a/src/input_common/main.cpp b/src/input_common/main.cpp index 76df133f3..baeed2e02 100644 --- a/src/input_common/main.cpp +++ b/src/input_common/main.cpp | |||
| @@ -33,129 +33,113 @@ struct InputSubsystem::Impl { | |||
| 33 | keyboard->SetMappingCallback(mapping_callback); | 33 | keyboard->SetMappingCallback(mapping_callback); |
| 34 | keyboard_factory = std::make_shared<InputFactory>(keyboard); | 34 | keyboard_factory = std::make_shared<InputFactory>(keyboard); |
| 35 | keyboard_output_factory = std::make_shared<OutputFactory>(keyboard); | 35 | keyboard_output_factory = std::make_shared<OutputFactory>(keyboard); |
| 36 | Common::Input::RegisterFactory<Common::Input::InputDevice>(keyboard->GetEngineName(), | 36 | Common::Input::RegisterInputFactory(keyboard->GetEngineName(), keyboard_factory); |
| 37 | keyboard_factory); | 37 | Common::Input::RegisterOutputFactory(keyboard->GetEngineName(), keyboard_output_factory); |
| 38 | Common::Input::RegisterFactory<Common::Input::OutputDevice>(keyboard->GetEngineName(), | ||
| 39 | keyboard_output_factory); | ||
| 40 | 38 | ||
| 41 | mouse = std::make_shared<Mouse>("mouse"); | 39 | mouse = std::make_shared<Mouse>("mouse"); |
| 42 | mouse->SetMappingCallback(mapping_callback); | 40 | mouse->SetMappingCallback(mapping_callback); |
| 43 | mouse_factory = std::make_shared<InputFactory>(mouse); | 41 | mouse_factory = std::make_shared<InputFactory>(mouse); |
| 44 | mouse_output_factory = std::make_shared<OutputFactory>(mouse); | 42 | mouse_output_factory = std::make_shared<OutputFactory>(mouse); |
| 45 | Common::Input::RegisterFactory<Common::Input::InputDevice>(mouse->GetEngineName(), | 43 | Common::Input::RegisterInputFactory(mouse->GetEngineName(), mouse_factory); |
| 46 | mouse_factory); | 44 | Common::Input::RegisterOutputFactory(mouse->GetEngineName(), mouse_output_factory); |
| 47 | Common::Input::RegisterFactory<Common::Input::OutputDevice>(mouse->GetEngineName(), | ||
| 48 | mouse_output_factory); | ||
| 49 | 45 | ||
| 50 | touch_screen = std::make_shared<TouchScreen>("touch"); | 46 | touch_screen = std::make_shared<TouchScreen>("touch"); |
| 51 | touch_screen_factory = std::make_shared<InputFactory>(touch_screen); | 47 | touch_screen_factory = std::make_shared<InputFactory>(touch_screen); |
| 52 | Common::Input::RegisterFactory<Common::Input::InputDevice>(touch_screen->GetEngineName(), | 48 | Common::Input::RegisterInputFactory(touch_screen->GetEngineName(), touch_screen_factory); |
| 53 | touch_screen_factory); | ||
| 54 | 49 | ||
| 55 | gcadapter = std::make_shared<GCAdapter>("gcpad"); | 50 | gcadapter = std::make_shared<GCAdapter>("gcpad"); |
| 56 | gcadapter->SetMappingCallback(mapping_callback); | 51 | gcadapter->SetMappingCallback(mapping_callback); |
| 57 | gcadapter_input_factory = std::make_shared<InputFactory>(gcadapter); | 52 | gcadapter_input_factory = std::make_shared<InputFactory>(gcadapter); |
| 58 | gcadapter_output_factory = std::make_shared<OutputFactory>(gcadapter); | 53 | gcadapter_output_factory = std::make_shared<OutputFactory>(gcadapter); |
| 59 | Common::Input::RegisterFactory<Common::Input::InputDevice>(gcadapter->GetEngineName(), | 54 | Common::Input::RegisterInputFactory(gcadapter->GetEngineName(), gcadapter_input_factory); |
| 60 | gcadapter_input_factory); | 55 | Common::Input::RegisterOutputFactory(gcadapter->GetEngineName(), gcadapter_output_factory); |
| 61 | Common::Input::RegisterFactory<Common::Input::OutputDevice>(gcadapter->GetEngineName(), | ||
| 62 | gcadapter_output_factory); | ||
| 63 | 56 | ||
| 64 | udp_client = std::make_shared<CemuhookUDP::UDPClient>("cemuhookudp"); | 57 | udp_client = std::make_shared<CemuhookUDP::UDPClient>("cemuhookudp"); |
| 65 | udp_client->SetMappingCallback(mapping_callback); | 58 | udp_client->SetMappingCallback(mapping_callback); |
| 66 | udp_client_input_factory = std::make_shared<InputFactory>(udp_client); | 59 | udp_client_input_factory = std::make_shared<InputFactory>(udp_client); |
| 67 | udp_client_output_factory = std::make_shared<OutputFactory>(udp_client); | 60 | udp_client_output_factory = std::make_shared<OutputFactory>(udp_client); |
| 68 | Common::Input::RegisterFactory<Common::Input::InputDevice>(udp_client->GetEngineName(), | 61 | Common::Input::RegisterInputFactory(udp_client->GetEngineName(), udp_client_input_factory); |
| 69 | udp_client_input_factory); | 62 | Common::Input::RegisterOutputFactory(udp_client->GetEngineName(), |
| 70 | Common::Input::RegisterFactory<Common::Input::OutputDevice>(udp_client->GetEngineName(), | 63 | udp_client_output_factory); |
| 71 | udp_client_output_factory); | ||
| 72 | 64 | ||
| 73 | tas_input = std::make_shared<TasInput::Tas>("tas"); | 65 | tas_input = std::make_shared<TasInput::Tas>("tas"); |
| 74 | tas_input->SetMappingCallback(mapping_callback); | 66 | tas_input->SetMappingCallback(mapping_callback); |
| 75 | tas_input_factory = std::make_shared<InputFactory>(tas_input); | 67 | tas_input_factory = std::make_shared<InputFactory>(tas_input); |
| 76 | tas_output_factory = std::make_shared<OutputFactory>(tas_input); | 68 | tas_output_factory = std::make_shared<OutputFactory>(tas_input); |
| 77 | Common::Input::RegisterFactory<Common::Input::InputDevice>(tas_input->GetEngineName(), | 69 | Common::Input::RegisterInputFactory(tas_input->GetEngineName(), tas_input_factory); |
| 78 | tas_input_factory); | 70 | Common::Input::RegisterOutputFactory(tas_input->GetEngineName(), tas_output_factory); |
| 79 | Common::Input::RegisterFactory<Common::Input::OutputDevice>(tas_input->GetEngineName(), | ||
| 80 | tas_output_factory); | ||
| 81 | 71 | ||
| 82 | camera = std::make_shared<Camera>("camera"); | 72 | camera = std::make_shared<Camera>("camera"); |
| 83 | camera->SetMappingCallback(mapping_callback); | 73 | camera->SetMappingCallback(mapping_callback); |
| 84 | camera_input_factory = std::make_shared<InputFactory>(camera); | 74 | camera_input_factory = std::make_shared<InputFactory>(camera); |
| 85 | camera_output_factory = std::make_shared<OutputFactory>(camera); | 75 | camera_output_factory = std::make_shared<OutputFactory>(camera); |
| 86 | Common::Input::RegisterFactory<Common::Input::InputDevice>(camera->GetEngineName(), | 76 | Common::Input::RegisterInputFactory(camera->GetEngineName(), camera_input_factory); |
| 87 | camera_input_factory); | 77 | Common::Input::RegisterOutputFactory(camera->GetEngineName(), camera_output_factory); |
| 88 | Common::Input::RegisterFactory<Common::Input::OutputDevice>(camera->GetEngineName(), | ||
| 89 | camera_output_factory); | ||
| 90 | 78 | ||
| 91 | virtual_amiibo = std::make_shared<VirtualAmiibo>("virtual_amiibo"); | 79 | virtual_amiibo = std::make_shared<VirtualAmiibo>("virtual_amiibo"); |
| 92 | virtual_amiibo->SetMappingCallback(mapping_callback); | 80 | virtual_amiibo->SetMappingCallback(mapping_callback); |
| 93 | virtual_amiibo_input_factory = std::make_shared<InputFactory>(virtual_amiibo); | 81 | virtual_amiibo_input_factory = std::make_shared<InputFactory>(virtual_amiibo); |
| 94 | virtual_amiibo_output_factory = std::make_shared<OutputFactory>(virtual_amiibo); | 82 | virtual_amiibo_output_factory = std::make_shared<OutputFactory>(virtual_amiibo); |
| 95 | Common::Input::RegisterFactory<Common::Input::InputDevice>(virtual_amiibo->GetEngineName(), | 83 | Common::Input::RegisterInputFactory(virtual_amiibo->GetEngineName(), |
| 96 | virtual_amiibo_input_factory); | 84 | virtual_amiibo_input_factory); |
| 97 | Common::Input::RegisterFactory<Common::Input::OutputDevice>(virtual_amiibo->GetEngineName(), | 85 | Common::Input::RegisterOutputFactory(virtual_amiibo->GetEngineName(), |
| 98 | virtual_amiibo_output_factory); | 86 | virtual_amiibo_output_factory); |
| 99 | 87 | ||
| 100 | #ifdef HAVE_SDL2 | 88 | #ifdef HAVE_SDL2 |
| 101 | sdl = std::make_shared<SDLDriver>("sdl"); | 89 | sdl = std::make_shared<SDLDriver>("sdl"); |
| 102 | sdl->SetMappingCallback(mapping_callback); | 90 | sdl->SetMappingCallback(mapping_callback); |
| 103 | sdl_input_factory = std::make_shared<InputFactory>(sdl); | 91 | sdl_input_factory = std::make_shared<InputFactory>(sdl); |
| 104 | sdl_output_factory = std::make_shared<OutputFactory>(sdl); | 92 | sdl_output_factory = std::make_shared<OutputFactory>(sdl); |
| 105 | Common::Input::RegisterFactory<Common::Input::InputDevice>(sdl->GetEngineName(), | 93 | Common::Input::RegisterInputFactory(sdl->GetEngineName(), sdl_input_factory); |
| 106 | sdl_input_factory); | 94 | Common::Input::RegisterOutputFactory(sdl->GetEngineName(), sdl_output_factory); |
| 107 | Common::Input::RegisterFactory<Common::Input::OutputDevice>(sdl->GetEngineName(), | ||
| 108 | sdl_output_factory); | ||
| 109 | #endif | 95 | #endif |
| 110 | 96 | ||
| 111 | Common::Input::RegisterFactory<Common::Input::InputDevice>( | 97 | Common::Input::RegisterInputFactory("touch_from_button", |
| 112 | "touch_from_button", std::make_shared<TouchFromButton>()); | 98 | std::make_shared<TouchFromButton>()); |
| 113 | Common::Input::RegisterFactory<Common::Input::InputDevice>( | 99 | Common::Input::RegisterInputFactory("analog_from_button", |
| 114 | "analog_from_button", std::make_shared<StickFromButton>()); | 100 | std::make_shared<StickFromButton>()); |
| 115 | } | 101 | } |
| 116 | 102 | ||
| 117 | void Shutdown() { | 103 | void Shutdown() { |
| 118 | Common::Input::UnregisterFactory<Common::Input::InputDevice>(keyboard->GetEngineName()); | 104 | Common::Input::UnregisterInputFactory(keyboard->GetEngineName()); |
| 119 | Common::Input::UnregisterFactory<Common::Input::OutputDevice>(keyboard->GetEngineName()); | 105 | Common::Input::UnregisterOutputFactory(keyboard->GetEngineName()); |
| 120 | keyboard.reset(); | 106 | keyboard.reset(); |
| 121 | 107 | ||
| 122 | Common::Input::UnregisterFactory<Common::Input::InputDevice>(mouse->GetEngineName()); | 108 | Common::Input::UnregisterInputFactory(mouse->GetEngineName()); |
| 123 | Common::Input::UnregisterFactory<Common::Input::OutputDevice>(mouse->GetEngineName()); | 109 | Common::Input::UnregisterOutputFactory(mouse->GetEngineName()); |
| 124 | mouse.reset(); | 110 | mouse.reset(); |
| 125 | 111 | ||
| 126 | Common::Input::UnregisterFactory<Common::Input::InputDevice>(touch_screen->GetEngineName()); | 112 | Common::Input::UnregisterInputFactory(touch_screen->GetEngineName()); |
| 127 | touch_screen.reset(); | 113 | touch_screen.reset(); |
| 128 | 114 | ||
| 129 | Common::Input::UnregisterFactory<Common::Input::InputDevice>(gcadapter->GetEngineName()); | 115 | Common::Input::UnregisterInputFactory(gcadapter->GetEngineName()); |
| 130 | Common::Input::UnregisterFactory<Common::Input::OutputDevice>(gcadapter->GetEngineName()); | 116 | Common::Input::UnregisterOutputFactory(gcadapter->GetEngineName()); |
| 131 | gcadapter.reset(); | 117 | gcadapter.reset(); |
| 132 | 118 | ||
| 133 | Common::Input::UnregisterFactory<Common::Input::InputDevice>(udp_client->GetEngineName()); | 119 | Common::Input::UnregisterInputFactory(udp_client->GetEngineName()); |
| 134 | Common::Input::UnregisterFactory<Common::Input::OutputDevice>(udp_client->GetEngineName()); | 120 | Common::Input::UnregisterOutputFactory(udp_client->GetEngineName()); |
| 135 | udp_client.reset(); | 121 | udp_client.reset(); |
| 136 | 122 | ||
| 137 | Common::Input::UnregisterFactory<Common::Input::InputDevice>(tas_input->GetEngineName()); | 123 | Common::Input::UnregisterInputFactory(tas_input->GetEngineName()); |
| 138 | Common::Input::UnregisterFactory<Common::Input::OutputDevice>(tas_input->GetEngineName()); | 124 | Common::Input::UnregisterOutputFactory(tas_input->GetEngineName()); |
| 139 | tas_input.reset(); | 125 | tas_input.reset(); |
| 140 | 126 | ||
| 141 | Common::Input::UnregisterFactory<Common::Input::InputDevice>(camera->GetEngineName()); | 127 | Common::Input::UnregisterInputFactory(camera->GetEngineName()); |
| 142 | Common::Input::UnregisterFactory<Common::Input::OutputDevice>(camera->GetEngineName()); | 128 | Common::Input::UnregisterOutputFactory(camera->GetEngineName()); |
| 143 | camera.reset(); | 129 | camera.reset(); |
| 144 | 130 | ||
| 145 | Common::Input::UnregisterFactory<Common::Input::InputDevice>( | 131 | Common::Input::UnregisterInputFactory(virtual_amiibo->GetEngineName()); |
| 146 | virtual_amiibo->GetEngineName()); | 132 | Common::Input::UnregisterOutputFactory(virtual_amiibo->GetEngineName()); |
| 147 | Common::Input::UnregisterFactory<Common::Input::OutputDevice>( | ||
| 148 | virtual_amiibo->GetEngineName()); | ||
| 149 | virtual_amiibo.reset(); | 133 | virtual_amiibo.reset(); |
| 150 | 134 | ||
| 151 | #ifdef HAVE_SDL2 | 135 | #ifdef HAVE_SDL2 |
| 152 | Common::Input::UnregisterFactory<Common::Input::InputDevice>(sdl->GetEngineName()); | 136 | Common::Input::UnregisterInputFactory(sdl->GetEngineName()); |
| 153 | Common::Input::UnregisterFactory<Common::Input::OutputDevice>(sdl->GetEngineName()); | 137 | Common::Input::UnregisterOutputFactory(sdl->GetEngineName()); |
| 154 | sdl.reset(); | 138 | sdl.reset(); |
| 155 | #endif | 139 | #endif |
| 156 | 140 | ||
| 157 | Common::Input::UnregisterFactory<Common::Input::InputDevice>("touch_from_button"); | 141 | Common::Input::UnregisterInputFactory("touch_from_button"); |
| 158 | Common::Input::UnregisterFactory<Common::Input::InputDevice>("analog_from_button"); | 142 | Common::Input::UnregisterInputFactory("analog_from_button"); |
| 159 | } | 143 | } |
| 160 | 144 | ||
| 161 | [[nodiscard]] std::vector<Common::ParamPackage> GetInputDevices() const { | 145 | [[nodiscard]] std::vector<Common::ParamPackage> GetInputDevices() const { |