summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerEmu/ControlGroup
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-07-13 11:04:40 -0400
committerLioncash <mathew1800@gmail.com>2018-07-13 13:20:35 -0400
commit97ba02df2721c2b6bb8edbb36b5eda0292686378 (patch)
treec8c84b3c954ebd559273fe14aef7b76be9256c62 /Source/Core/InputCommon/ControllerEmu/ControlGroup
parent918d448b5bf1510b75e50f560f41fb9e2aae439c (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/InputCommon/ControllerEmu/ControlGroup')
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp23
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.h11
2 files changed, 19 insertions, 15 deletions
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