summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerEmu/ControlGroup
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2020-11-03 17:10:54 -0600
committerGitHub <noreply@github.com>2020-11-03 17:10:54 -0600
commit3cd4c56645541640f61a761dfde16464b1ef09df (patch)
treeda78e02789930be5be5addf02f4326d673ca0c09 /Source/Core/InputCommon/ControllerEmu/ControlGroup
parentd2f80a45954d1c638af44b346223d4f480ce4e82 (diff)
parent55dd3d73376746c4fc46df02d8266269a6e4537e (diff)
Merge pull request #9203 from nick-michael/virtual-notches
Logic & UI for "Virtual Notches"
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/AnalogStick.h5
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp11
-rw-r--r--Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.h2
4 files changed, 24 insertions, 0 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
index a0157eec8f..881be39471 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.cpp
@@ -65,6 +65,12 @@ OctagonAnalogStick::OctagonAnalogStick(const char* name_, const char* ui_name_,
ControlState gate_radius)
: AnalogStick(name_, ui_name_, std::make_unique<ControllerEmu::OctagonStickGate>(gate_radius))
{
+ AddVirtualNotchSetting(&m_virtual_notch_setting, 45);
+}
+
+ControlState OctagonAnalogStick::GetVirtualNotchSize() const
+{
+ return m_virtual_notch_setting.GetValue() * MathUtil::TAU / 360;
}
} // namespace ControllerEmu
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h
index cafb1dad51..d13fd60a68 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/AnalogStick.h
@@ -33,6 +33,11 @@ class OctagonAnalogStick : public AnalogStick
public:
OctagonAnalogStick(const char* name, ControlState gate_radius);
OctagonAnalogStick(const char* name, const char* ui_name, ControlState gate_radius);
+
+ ControlState GetVirtualNotchSize() const override;
+
+private:
+ SettingValue<double> m_virtual_notch_setting;
};
} // namespace ControllerEmu
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp
index 70975937c9..ee33e32f0f 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.cpp
@@ -28,6 +28,17 @@ ControlGroup::ControlGroup(std::string name_, std::string ui_name_, const GroupT
{
}
+void ControlGroup::AddVirtualNotchSetting(SettingValue<double>* value, double max_virtual_notch_deg)
+{
+ AddSetting(value,
+ {_trans("Virtual Notches"),
+ // i18n: The degrees symbol.
+ _trans("°"),
+ // i18n: Snap the thumbstick position to the nearest octagonal axis.
+ _trans("Snap the thumbstick position to the nearest octagonal axis.")},
+ 0, 0, max_virtual_notch_deg);
+}
+
void ControlGroup::AddDeadzoneSetting(SettingValue<double>* value, double maximum_deadzone)
{
AddSetting(value,
diff --git a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.h b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.h
index 46b8172d14..45c2367c10 100644
--- a/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.h
+++ b/Source/Core/InputCommon/ControllerEmu/ControlGroup/ControlGroup.h
@@ -82,6 +82,8 @@ public:
std::make_unique<NumericSetting<T>>(value, details, default_value_, min_value, max_value));
}
+ void AddVirtualNotchSetting(SettingValue<double>* value, double max_virtual_notch_deg);
+
void AddDeadzoneSetting(SettingValue<double>* value, double maximum_deadzone);
template <typename T>