summaryrefslogtreecommitdiff
path: root/src/core/hid/emulated_controller.cpp
diff options
context:
space:
mode:
authorGravatar Narr the Reg2022-12-28 15:21:12 -0600
committerGravatar Narr the Reg2023-01-19 18:05:22 -0600
commit459fb2b21337bae60194a2a99ce68c87aaed522d (patch)
treea7522832fa60f283e076df34c85380c5d4bc49d3 /src/core/hid/emulated_controller.cpp
parentyuzu: Add ring controller test button (diff)
downloadyuzu-459fb2b21337bae60194a2a99ce68c87aaed522d.tar.gz
yuzu-459fb2b21337bae60194a2a99ce68c87aaed522d.tar.xz
yuzu-459fb2b21337bae60194a2a99ce68c87aaed522d.zip
input_common: Implement joycon ir camera
Diffstat (limited to 'src/core/hid/emulated_controller.cpp')
-rw-r--r--src/core/hid/emulated_controller.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp
index 915ffa490..faf9e7c4e 100644
--- a/src/core/hid/emulated_controller.cpp
+++ b/src/core/hid/emulated_controller.cpp
@@ -145,7 +145,9 @@ void EmulatedController::LoadDevices() {
145 battery_params[LeftIndex].Set("battery", true); 145 battery_params[LeftIndex].Set("battery", true);
146 battery_params[RightIndex].Set("battery", true); 146 battery_params[RightIndex].Set("battery", true);
147 147
148 camera_params = Common::ParamPackage{"engine:camera,camera:1"}; 148 camera_params[0] = right_joycon;
149 camera_params[0].Set("camera", true);
150 camera_params[1] = Common::ParamPackage{"engine:camera,camera:1"};
149 ring_params[1] = Common::ParamPackage{"engine:joycon,axis_x:100,axis_y:101"}; 151 ring_params[1] = Common::ParamPackage{"engine:joycon,axis_x:100,axis_y:101"};
150 nfc_params[0] = Common::ParamPackage{"engine:virtual_amiibo,nfc:1"}; 152 nfc_params[0] = Common::ParamPackage{"engine:virtual_amiibo,nfc:1"};
151 nfc_params[1] = right_joycon; 153 nfc_params[1] = right_joycon;
@@ -153,7 +155,7 @@ void EmulatedController::LoadDevices() {
153 155
154 output_params[LeftIndex] = left_joycon; 156 output_params[LeftIndex] = left_joycon;
155 output_params[RightIndex] = right_joycon; 157 output_params[RightIndex] = right_joycon;
156 output_params[2] = camera_params; 158 output_params[2] = camera_params[1];
157 output_params[3] = nfc_params[0]; 159 output_params[3] = nfc_params[0];
158 output_params[LeftIndex].Set("output", true); 160 output_params[LeftIndex].Set("output", true);
159 output_params[RightIndex].Set("output", true); 161 output_params[RightIndex].Set("output", true);
@@ -171,7 +173,7 @@ void EmulatedController::LoadDevices() {
171 std::ranges::transform(battery_params, battery_devices.begin(), 173 std::ranges::transform(battery_params, battery_devices.begin(),
172 Common::Input::CreateInputDevice); 174 Common::Input::CreateInputDevice);
173 std::ranges::transform(color_params, color_devices.begin(), Common::Input::CreateInputDevice); 175 std::ranges::transform(color_params, color_devices.begin(), Common::Input::CreateInputDevice);
174 camera_devices = Common::Input::CreateInputDevice(camera_params); 176 std::ranges::transform(camera_params, camera_devices.begin(), Common::Input::CreateInputDevice);
175 std::ranges::transform(ring_params, ring_analog_devices.begin(), 177 std::ranges::transform(ring_params, ring_analog_devices.begin(),
176 Common::Input::CreateInputDevice); 178 Common::Input::CreateInputDevice);
177 std::ranges::transform(nfc_params, nfc_devices.begin(), Common::Input::CreateInputDevice); 179 std::ranges::transform(nfc_params, nfc_devices.begin(), Common::Input::CreateInputDevice);
@@ -362,12 +364,15 @@ void EmulatedController::ReloadInput() {
362 motion_devices[index]->ForceUpdate(); 364 motion_devices[index]->ForceUpdate();
363 } 365 }
364 366
365 if (camera_devices) { 367 for (std::size_t index = 0; index < camera_devices.size(); ++index) {
366 camera_devices->SetCallback({ 368 if (!camera_devices[index]) {
369 continue;
370 }
371 camera_devices[index]->SetCallback({
367 .on_change = 372 .on_change =
368 [this](const Common::Input::CallbackStatus& callback) { SetCamera(callback); }, 373 [this](const Common::Input::CallbackStatus& callback) { SetCamera(callback); },
369 }); 374 });
370 camera_devices->ForceUpdate(); 375 camera_devices[index]->ForceUpdate();
371 } 376 }
372 377
373 for (std::size_t index = 0; index < ring_analog_devices.size(); ++index) { 378 for (std::size_t index = 0; index < ring_analog_devices.size(); ++index) {
@@ -477,7 +482,9 @@ void EmulatedController::UnloadInput() {
477 for (auto& stick : virtual_stick_devices) { 482 for (auto& stick : virtual_stick_devices) {
478 stick.reset(); 483 stick.reset();
479 } 484 }
480 camera_devices.reset(); 485 for (auto& camera : camera_devices) {
486 camera.reset();
487 }
481 for (auto& ring : ring_analog_devices) { 488 for (auto& ring : ring_analog_devices) {
482 ring.reset(); 489 ring.reset();
483 } 490 }