From 4c30b9e14dfbebe6a0c1131e3a5a19410b2dcdcd Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 13 Jul 2018 10:35:35 -0400 Subject: ControlGroup/Force: Return state data by value Ensures that an array of sufficient size is always used and doesn't put the responsibility on the caller. It also allows for direct assignment. --- Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp | 11 ++++++++--- Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.h | 6 ++++-- 2 files changed, 12 insertions(+), 5 deletions(-) (limited to 'Source/Core/InputCommon/ControllerEmu/ControlGroup') diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp index 0c27e30298..c2178ea370 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp @@ -29,18 +29,23 @@ Force::Force(const std::string& name_) : ControlGroup(name_, GroupType::Force) numeric_settings.emplace_back(std::make_unique(_trans("Dead Zone"), 0, 0, 50)); } -void Force::GetState(ControlState* axis) +Force::StateData Force::GetState() { + StateData state_data; const ControlState deadzone = numeric_settings[0]->GetValue(); for (u32 i = 0; i < 6; i += 2) { - ControlState tmpf = 0; const ControlState state = controls[i + 1]->control_ref->State() - controls[i]->control_ref->State(); + + ControlState tmpf = 0; if (fabs(state) > deadzone) tmpf = ((state - (deadzone * sign(state))) / (1 - deadzone)); - *axis++ = tmpf; + + state_data[i / 2] = tmpf; } + + return state_data; } } // namespace ControllerEmu diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.h index 1630a948b4..03dc07ecbd 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.h +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.h @@ -14,11 +14,13 @@ namespace ControllerEmu class Force : public ControlGroup { public: + using StateData = std::array; + explicit Force(const std::string& name); - void GetState(ControlState* axis); + StateData GetState(); private: - std::array m_swing{}; + StateData m_swing{}; }; } // namespace ControllerEmu -- cgit v1.2.3