diff options
| author | Lioncash <mathew1800@gmail.com> | 2018-07-13 12:06:49 -0400 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2018-07-13 13:20:35 -0400 |
| commit | cfe75490918f50dc068542f0acec124111bb4805 (patch) | |
| tree | 1229d61e75603fd53d76a34acad6590a859e7004 /Source/Core/InputCommon/ControllerEmu/ControlGroup | |
| parent | 97ba02df2721c2b6bb8edbb36b5eda0292686378 (diff) | |
ControlGroup/Triggers: Return state data by value
Makes it less error-prone to get state data from analog sticks (no need
to pass any 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/Triggers.cpp | 9 | ||||
| -rw-r--r-- | Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.h | 12 |
2 files changed, 17 insertions, 4 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp index daf7ef98d7..f950e5b24c 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp @@ -21,12 +21,15 @@ Triggers::Triggers(const std::string& name_) : ControlGroup(name_, GroupType::Tr numeric_settings.emplace_back(std::make_unique<NumericSetting>(_trans("Dead Zone"), 0, 0, 50)); } -void Triggers::GetState(ControlState* analog) +Triggers::StateData Triggers::GetState() { const size_t trigger_count = controls.size(); const ControlState deadzone = numeric_settings[0]->GetValue(); - for (size_t i = 0; i < trigger_count; ++i, ++analog) - *analog = std::max(controls[i]->control_ref->State() - deadzone, 0.0) / (1 - deadzone); + StateData result(trigger_count); + for (size_t i = 0; i < trigger_count; ++i) + result.data[i] = std::max(controls[i]->control_ref->State() - deadzone, 0.0) / (1 - deadzone); + + return result; } } // namespace ControllerEmu diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.h index 591edd6fee..561eb4f7ef 100644 --- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.h +++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.h @@ -5,6 +5,8 @@ #pragma once #include <string> +#include <vector> + #include "InputCommon/ControllerEmu/ControlGroup/ControlGroup.h" #include "InputCommon/ControllerInterface/Device.h" @@ -13,8 +15,16 @@ namespace ControllerEmu class Triggers : public ControlGroup { public: + struct StateData + { + StateData() = default; + explicit StateData(std::size_t trigger_count) : data(trigger_count) {} + + std::vector<ControlState> data; + }; + explicit Triggers(const std::string& name); - void GetState(ControlState* analog); + StateData GetState(); }; } // namespace ControllerEmu |
