summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerEmu/ControlGroup
diff options
context:
space:
mode:
authorTilka <tilkax@gmail.com>2020-02-10 00:05:10 +0000
committerGitHub <noreply@github.com>2020-02-10 00:05:10 +0000
commitdb65b9a766fd443eac48ced8e7693ef23b39e83e (patch)
treee428c2563bb014968679e59c447ce3eb62a7b830 /Source/Core/InputCommon/ControllerEmu/ControlGroup
parente00459f68fd53b6a4d30800ce0548e459b141e5e (diff)
parentf07457b6ccb0ef6773b08c0e494df28a29c1b3e6 (diff)
Merge pull request #8616 from jordan-woyak/threshold-cleanup
InputCommon: Eliminate some duplicated button threshold logic.
Diffstat (limited to 'Source/Core/InputCommon/ControllerEmu/ControlGroup')
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp6
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Buttons.h7
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp10
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.h2
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp12
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp6
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp6
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/MixedTriggers.cpp4
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp2
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp2
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp6
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp2
12 files changed, 29 insertions, 36 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
index 45d178ed17..df67930f9d 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
@@ -34,14 +34,14 @@ AnalogStick::AnalogStick(const char* const name_, const char* const ui_name_,
AnalogStick::ReshapeData AnalogStick::GetReshapableState(bool adjusted)
{
- const ControlState y = controls[0]->control_ref->State() - controls[1]->control_ref->State();
- const ControlState x = controls[3]->control_ref->State() - controls[2]->control_ref->State();
+ const ControlState y = controls[0]->GetState() - controls[1]->GetState();
+ const ControlState x = controls[3]->GetState() - controls[2]->GetState();
// Return raw values. (used in UI)
if (!adjusted)
return {x, y};
- const ControlState modifier = controls[4]->control_ref->State();
+ const ControlState modifier = controls[4]->GetState();
return Reshape(x, y, modifier);
}
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Buttons.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Buttons.h
index 9560a37843..b10677a615 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Buttons.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Buttons.h
@@ -23,12 +23,7 @@ public:
void GetState(C* const buttons, const C* bitmasks)
{
for (auto& control : controls)
- {
- if (control->control_ref->GetState<bool>())
- *buttons |= *bitmasks;
-
- bitmasks++;
- }
+ *buttons |= *(bitmasks++) * control->GetState<bool>();
}
};
} // namespace ControllerEmu
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp
index 93a6f4391a..bee3be80fe 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.cpp
@@ -67,8 +67,8 @@ Cursor::Cursor(std::string name, std::string ui_name)
Cursor::ReshapeData Cursor::GetReshapableState(bool adjusted)
{
- const ControlState y = controls[0]->control_ref->State() - controls[1]->control_ref->State();
- const ControlState x = controls[3]->control_ref->State() - controls[2]->control_ref->State();
+ const ControlState y = controls[0]->GetState() - controls[1]->GetState();
+ const ControlState x = controls[3]->GetState() - controls[2]->GetState();
// Return raw values. (used in UI)
if (!adjusted)
@@ -103,10 +103,10 @@ Cursor::StateData Cursor::GetState(const bool adjusted)
const double max_step = STEP_PER_SEC / 1000.0 * ms_since_update;
// Relative input:
- if (m_relative_setting.GetValue() ^ (controls[6]->control_ref->State() > BUTTON_THRESHOLD))
+ if (m_relative_setting.GetValue() ^ (controls[6]->GetState<bool>()))
{
// Recenter:
- if (controls[5]->control_ref->State() > BUTTON_THRESHOLD)
+ if (controls[5]->GetState<bool>())
{
m_state.x = 0.0;
m_state.y = 0.0;
@@ -143,7 +143,7 @@ Cursor::StateData Cursor::GetState(const bool adjusted)
m_prev_result = result;
// If auto-hide time is up or hide button is held:
- if (!m_auto_hide_timer || controls[4]->control_ref->State() > BUTTON_THRESHOLD)
+ if (!m_auto_hide_timer || controls[4]->GetState<bool>())
{
result.x = std::numeric_limits<ControlState>::quiet_NaN();
result.y = 0;
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.h
index 7c72120dba..a5a6a95cd0 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Cursor.h
@@ -47,8 +47,6 @@ private:
static constexpr int AUTO_HIDE_MS = 2500;
static constexpr double AUTO_HIDE_DEADZONE = 0.001;
- static constexpr double BUTTON_THRESHOLD = 0.5;
-
// Not adjusted by width/height/center:
StateData m_state;
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp
index 7ddbeba335..f4bc62361a 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Force.cpp
@@ -67,8 +67,8 @@ Force::Force(const std::string& name_) : ReshapableInput(name_, name_, GroupType
Force::ReshapeData Force::GetReshapableState(bool adjusted)
{
- const ControlState y = controls[0]->control_ref->State() - controls[1]->control_ref->State();
- const ControlState x = controls[3]->control_ref->State() - controls[2]->control_ref->State();
+ const ControlState y = controls[0]->GetState() - controls[1]->GetState();
+ const ControlState x = controls[3]->GetState() - controls[2]->GetState();
// Return raw values. (used in UI)
if (!adjusted)
@@ -80,7 +80,7 @@ Force::ReshapeData Force::GetReshapableState(bool adjusted)
Force::StateData Force::GetState(bool adjusted)
{
const auto state = GetReshapableState(adjusted);
- ControlState z = controls[4]->control_ref->State() - controls[5]->control_ref->State();
+ ControlState z = controls[4]->GetState() - controls[5]->GetState();
if (adjusted)
{
@@ -159,9 +159,9 @@ Shake::Shake(const std::string& name_, ControlState default_intensity_scale)
Shake::StateData Shake::GetState(bool adjusted) const
{
- const float x = controls[0]->control_ref->State();
- const float y = controls[1]->control_ref->State();
- const float z = controls[2]->control_ref->State();
+ const float x = controls[0]->GetState();
+ const float y = controls[1]->GetState();
+ const float z = controls[2]->GetState();
StateData result = {x, y, z};
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp
index 9b680af20f..0a866db220 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUAccelerometer.cpp
@@ -31,9 +31,9 @@ std::optional<IMUAccelerometer::StateData> IMUAccelerometer::GetState() const
return std::nullopt;
StateData state;
- state.x = (controls[2]->control_ref->State() - controls[3]->control_ref->State());
- state.y = (controls[5]->control_ref->State() - controls[4]->control_ref->State());
- state.z = (controls[0]->control_ref->State() - controls[1]->control_ref->State());
+ state.x = (controls[2]->GetState() - controls[3]->GetState());
+ state.y = (controls[5]->GetState() - controls[4]->GetState());
+ state.z = (controls[0]->GetState() - controls[1]->GetState());
return state;
}
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp
index 922f7a0d43..049114e1d0 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/IMUGyroscope.cpp
@@ -31,9 +31,9 @@ std::optional<IMUGyroscope::StateData> IMUGyroscope::GetState() const
return std::nullopt;
StateData state;
- state.x = (controls[1]->control_ref->State() - controls[0]->control_ref->State());
- state.y = (controls[2]->control_ref->State() - controls[3]->control_ref->State());
- state.z = (controls[4]->control_ref->State() - controls[5]->control_ref->State());
+ state.x = (controls[1]->GetState() - controls[0]->GetState());
+ state.y = (controls[2]->GetState() - controls[3]->GetState());
+ state.z = (controls[4]->GetState() - controls[5]->GetState());
return state;
}
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/MixedTriggers.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/MixedTriggers.cpp
index 4cd8df7874..50a787b41d 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/MixedTriggers.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/MixedTriggers.cpp
@@ -46,9 +46,9 @@ void MixedTriggers::GetState(u16* const digital, const u16* bitmasks, ControlSta
const int trigger_count = int(controls.size() / 2);
for (int i = 0; i != trigger_count; ++i)
{
- const ControlState button_value = ApplyDeadzone(controls[i]->control_ref->State(), deadzone);
+ const ControlState button_value = ApplyDeadzone(controls[i]->GetState(), deadzone);
ControlState analog_value =
- std::min(ApplyDeadzone(controls[trigger_count + i]->control_ref->State(), deadzone), 1.0);
+ std::min(ApplyDeadzone(controls[trigger_count + i]->GetState(), deadzone), 1.0);
// Apply threshold:
if (button_value > threshold)
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp
index a902034795..b6f9c5c55e 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ModifySettingsButton.cpp
@@ -35,7 +35,7 @@ void ModifySettingsButton::GetState()
{
for (size_t i = 0; i < controls.size(); ++i)
{
- const bool state = controls[i]->control_ref->GetState<bool>();
+ const bool state = controls[i]->GetState<bool>();
if (!associated_settings_toggle[i])
{
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp
index 0b702b6657..912f18b1a6 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Slider.cpp
@@ -32,7 +32,7 @@ Slider::Slider(const std::string& name_) : Slider(name_, name_)
Slider::StateData Slider::GetState()
{
const ControlState deadzone = m_deadzone_setting.GetValue() / 100;
- const ControlState state = controls[1]->control_ref->State() - controls[0]->control_ref->State();
+ const ControlState state = controls[1]->GetState() - controls[0]->GetState();
return {std::clamp(ApplyDeadzone(state, deadzone), -1.0, 1.0)};
}
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp
index 07c8972b54..81fa31c1a3 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Tilt.cpp
@@ -44,14 +44,14 @@ Tilt::Tilt(const std::string& name_) : ReshapableInput(name_, name_, GroupType::
Tilt::ReshapeData Tilt::GetReshapableState(bool adjusted)
{
- const ControlState y = controls[0]->control_ref->State() - controls[1]->control_ref->State();
- const ControlState x = controls[3]->control_ref->State() - controls[2]->control_ref->State();
+ const ControlState y = controls[0]->GetState() - controls[1]->GetState();
+ const ControlState x = controls[3]->GetState() - controls[2]->GetState();
// Return raw values. (used in UI)
if (!adjusted)
return {x, y};
- const ControlState modifier = controls[4]->control_ref->State();
+ const ControlState modifier = controls[4]->GetState();
return Reshape(x, y, modifier);
}
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp
index abc74915e5..bdfec69808 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/Triggers.cpp
@@ -28,7 +28,7 @@ Triggers::StateData Triggers::GetState()
StateData result(trigger_count);
for (size_t i = 0; i < trigger_count; ++i)
- result.data[i] = std::min(ApplyDeadzone(controls[i]->control_ref->State(), deadzone), 1.0);
+ result.data[i] = std::min(ApplyDeadzone(controls[i]->GetState(), deadzone), 1.0);
return result;
}