diff options
| author | rlnilsen <47765059+rlnilsen@users.noreply.github.com> | 2019-09-06 17:09:30 +0200 |
|---|---|---|
| committer | rlnilsen <47765059+rlnilsen@users.noreply.github.com> | 2019-10-26 02:19:53 +0200 |
| commit | 4cb3baba5cf360a02dff9d6af1a839a570c40999 (patch) | |
| tree | 9870bc45e830f6954f8402603394e64abbb93fdf /Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp | |
| parent | f54faedd7624d156f1b05e620ecf5aae9acbb8d5 (diff) | |
Add support for motion controllers via the CemuHook controller input protocol.
This is done by:
1) Implementing said protocol in a new controller input class CemuHookUDPServer.
2) Adding functionality in the WiimoteEmu class for pushing that motion input to the emulated Wiimote and MotionPlus.
3) Suitably modifying the UI for configuring an Emulated Wii Remote.
Diffstat (limited to 'Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp')
| -rw-r--r-- | Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp new file mode 100644 index 0000000000..e994ceba5d --- /dev/null +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp @@ -0,0 +1,44 @@ +// Copyright 2019 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.h" + +#include "Common/Common.h" +#include "Common/MathUtil.h" + +#include "Core/HW/WiimoteEmu/WiimoteEmu.h" + +#include "InputCommon/ControlReference/ControlReference.h" +#include "InputCommon/ControllerEmu/Control/Control.h" +#include "InputCommon/ControllerEmu/Control/Input.h" +#include "InputCommon/ControllerEmu/ControllerEmu.h" +#include "InputCommon/ControllerEmu/Setting/NumericSetting.h" + +namespace ControllerEmu +{ +IMUAccelerometer::IMUAccelerometer(std::string name, std::string ui_name) + : ControlGroup(std::move(name), std::move(ui_name), GroupType::IMUAccelerometer) +{ + controls.emplace_back(std::make_unique<Input>(Translate, _trans("Left"))); + controls.emplace_back(std::make_unique<Input>(Translate, _trans("Right"))); + controls.emplace_back(std::make_unique<Input>(Translate, _trans("Forward"))); + controls.emplace_back(std::make_unique<Input>(Translate, _trans("Backward"))); + controls.emplace_back(std::make_unique<Input>(Translate, _trans("Up"))); + controls.emplace_back(std::make_unique<Input>(Translate, _trans("Down"))); +} + +std::optional<IMUAccelerometer::StateData> IMUAccelerometer::GetState() const +{ + StateData state; + state.x = (controls[0]->control_ref->State() - controls[1]->control_ref->State()); + state.y = (controls[3]->control_ref->State() - controls[2]->control_ref->State()); + state.z = (controls[4]->control_ref->State() - controls[5]->control_ref->State()); + + if (controls[0]->control_ref->BoundCount() != 0) + return state; + else + return std::nullopt; +} + +} // namespace ControllerEmu |
