summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerEmu/ControlGroup
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2022-05-19 22:19:17 -0500
committerJordan Woyak <jordan.woyak@gmail.com>2022-06-26 22:33:44 -0500
commit643f82539c9bc43a8573fabee3a236bfeb67cd47 (patch)
treea72b6215c4f32f551325d20c80b0515822dbd9b1 /Source/Core/InputCommon/ControllerEmu/ControlGroup
parente18053d3075dd010a3a9db80d1b29b99cf7b69da (diff)
ControllerEmu: Expose gate size setting for octagon analog sticks.
Diffstat (limited to 'Source/Core/InputCommon/ControllerEmu/ControlGroup')
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp16
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h2
2 files changed, 17 insertions, 1 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
index aaabfa5b17..e4d74aa524 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
@@ -65,9 +65,18 @@ OctagonAnalogStick::OctagonAnalogStick(const char* name_, ControlState gate_radi
OctagonAnalogStick::OctagonAnalogStick(const char* name_, const char* ui_name_,
ControlState gate_radius)
- : AnalogStick(name_, ui_name_, std::make_unique<ControllerEmu::OctagonStickGate>(gate_radius))
+ : AnalogStick(name_, ui_name_, std::make_unique<ControllerEmu::OctagonStickGate>(1.0))
{
AddVirtualNotchSetting(&m_virtual_notch_setting, 45);
+
+ AddSetting(
+ &m_gate_size_setting,
+ {_trans("Gate Size"),
+ // i18n: The percent symbol.
+ _trans("%"),
+ // i18n: Refers to plastic shell of game controller (stick gate) that limits stick movements.
+ _trans("Adjusts target radius of simulated stick gate.")},
+ gate_radius * 100, 0.01, 100);
}
ControlState OctagonAnalogStick::GetVirtualNotchSize() const
@@ -75,4 +84,9 @@ ControlState OctagonAnalogStick::GetVirtualNotchSize() const
return m_virtual_notch_setting.GetValue() * MathUtil::TAU / 360;
}
+ControlState OctagonAnalogStick::GetGateRadiusAtAngle(double ang) const
+{
+ return AnalogStick::GetGateRadiusAtAngle(ang) * m_gate_size_setting.GetValue() / 100;
+}
+
} // namespace ControllerEmu
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h
index d5363cecef..47e3ad5743 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h
@@ -36,9 +36,11 @@ public:
OctagonAnalogStick(const char* name, const char* ui_name, ControlState gate_radius);
ControlState GetVirtualNotchSize() const override;
+ ControlState GetGateRadiusAtAngle(double ang) const override;
private:
SettingValue<double> m_virtual_notch_setting;
+ SettingValue<double> m_gate_size_setting;
};
} // namespace ControllerEmu