diff options
| author | Lioncash <mathew1800@gmail.com> | 2018-07-13 11:04:40 -0400 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2018-07-13 13:20:35 -0400 |
| commit | 97ba02df2721c2b6bb8edbb36b5eda0292686378 (patch) | |
| tree | c8c84b3c954ebd559273fe14aef7b76be9256c62 /Source/Core | |
| parent | 918d448b5bf1510b75e50f560f41fb9e2aae439c (diff) | |
ControlGroup/Tilt: Return state data by value
Makes it less error-prone to get state data from tilt controls (no need
to pass any pointers to locals), and also allows direct assignment,
letting the retrieved data be const.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp | 24 | ||||
| -rw-r--r-- | Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp | 23 | ||||
| -rw-r--r-- | Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h | 11 |
3 files changed, 29 insertions, 29 deletions
diff --git a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp index f6a465113c..b43a854ff4 100644 --- a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp @@ -177,28 +177,24 @@ void EmulateDynamicShake(AccelData* const accel, DynamicData& dynamic_data, void EmulateTilt(AccelData* const accel, ControllerEmu::Tilt* const tilt_group, const bool sideways, const bool upright) { - ControlState roll, pitch; // 180 degrees - tilt_group->GetState(&roll, &pitch); + const ControllerEmu::Tilt::StateData state = tilt_group->GetState(); + const ControlState roll = state.x * PI; + const ControlState pitch = state.y * PI; - roll *= PI; - pitch *= PI; - - unsigned int ud = 0, lr = 0, fb = 0; - - // some notes that no one will understand but me :p + // Some notes that no one will understand but me :p // left, forward, up // lr/ left == negative for all orientations // ud/ up == negative for upright longways // fb/ forward == positive for (sideways flat) - // determine which axis is which direction - ud = upright ? (sideways ? 0 : 1) : 2; - lr = sideways; - fb = upright ? 2 : (sideways ? 0 : 1); - - int sgn[3] = {-1, 1, 1}; // sign fix + // Determine which axis is which direction + const u32 ud = upright ? (sideways ? 0 : 1) : 2; + const u32 lr = sideways; + const u32 fb = upright ? 2 : (sideways ? 0 : 1); + // Sign fix + std::array<int, 3> sgn{{-1, 1, 1}}; if (sideways && !upright) sgn[fb] *= -1; if (!sideways && upright) diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp index 2785f56ba5..9221b90243 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp @@ -31,7 +31,7 @@ Tilt::Tilt(const std::string& name_) : ControlGroup(name_, GroupType::Tilt) numeric_settings.emplace_back(std::make_unique<NumericSetting>(_trans("Angle"), 0.9, 0, 180)); } -void Tilt::GetState(ControlState* const x, ControlState* const y, const bool step) +Tilt::StateData Tilt::GetState(const bool step) { // this is all a mess @@ -80,18 +80,17 @@ void Tilt::GetState(ControlState* const x, ControlState* const y, const bool ste // silly if (step) { - if (xx > m_tilt[0]) - m_tilt[0] = std::min(m_tilt[0] + 0.1, xx); - else if (xx < m_tilt[0]) - m_tilt[0] = std::max(m_tilt[0] - 0.1, xx); - - if (yy > m_tilt[1]) - m_tilt[1] = std::min(m_tilt[1] + 0.1, yy); - else if (yy < m_tilt[1]) - m_tilt[1] = std::max(m_tilt[1] - 0.1, yy); + if (xx > m_tilt.x) + m_tilt.x = std::min(m_tilt.x + 0.1, xx); + else if (xx < m_tilt.x) + m_tilt.x = std::max(m_tilt.x - 0.1, xx); + + if (yy > m_tilt.y) + m_tilt.y = std::min(m_tilt.y + 0.1, yy); + else if (yy < m_tilt.y) + m_tilt.y = std::max(m_tilt.y - 0.1, yy); } - *y = m_tilt[1] * angle; - *x = m_tilt[0] * angle; + return {m_tilt.x * angle, m_tilt.y * angle}; } } // namespace ControllerEmu diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h index 622fba3710..b03dc5a8b1 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h @@ -4,7 +4,6 @@ #pragma once -#include <array> #include <string> #include "InputCommon/ControllerEmu/ControlGroup/ControlGroup.h" #include "InputCommon/ControllerInterface/Device.h" @@ -14,11 +13,17 @@ namespace ControllerEmu class Tilt : public ControlGroup { public: + struct StateData + { + ControlState x{}; + ControlState y{}; + }; + explicit Tilt(const std::string& name); - void GetState(ControlState* x, ControlState* y, bool step = true); + StateData GetState(bool step = true); private: - std::array<ControlState, 2> m_tilt{}; + StateData m_tilt; }; } // namespace ControllerEmu |
