diff --git a/Source/Core/InputCommon/ControllerInterface/CoreDevice.cpp b/Source/Core/InputCommon/ControllerInterface/CoreDevice.cpp index cfced12e80..377ea4444f 100644 --- a/Source/Core/InputCommon/ControllerInterface/CoreDevice.cpp +++ b/Source/Core/InputCommon/ControllerInterface/CoreDevice.cpp @@ -130,39 +130,43 @@ bool Device::Control::IsHidden() const return false; } -ControlState Device::FullAnalogSurface::GetState() const +class FullAnalogSurface final : public Device::Input { - return (1 + std::max(0.0, m_high.GetState()) - std::max(0.0, m_low.GetState())) / 2; -} +public: + FullAnalogSurface(Input* low, Input* high) : m_low(*low), m_high(*high) {} -std::string Device::FullAnalogSurface::GetName() const -{ - // E.g. "Full Axis X+" - return "Full " + m_high.GetName(); -} + ControlState GetState() const override + { + return (1 + std::max(0.0, m_high.GetState()) - std::max(0.0, m_low.GetState())) / 2; + } -bool Device::FullAnalogSurface::IsDetectable() const -{ - return m_low.IsDetectable() && m_high.IsDetectable(); -} + std::string GetName() const override + { + // E.g. "Full Axis X+" + return "Full " + m_high.GetName(); + } -bool Device::FullAnalogSurface::IsHidden() const -{ - return m_low.IsHidden() && m_high.IsHidden(); -} + bool IsDetectable() const override { return m_low.IsDetectable() && m_high.IsDetectable(); } -bool Device::FullAnalogSurface::IsMatchingName(std::string_view name) const -{ - if (Control::IsMatchingName(name)) - return true; + bool IsHidden() const override { return m_low.IsHidden() && m_high.IsHidden(); } - // Old naming scheme was "Axis X-+" which is too visually similar to "Axis X+". - // This has caused countless problems for users with mysterious misconfigurations. - // We match this old name to support old configurations. - const auto old_name = m_low.GetName() + *m_high.GetName().rbegin(); + bool IsMatchingName(std::string_view name) const override + { + if (Control::IsMatchingName(name)) + return true; - return old_name == name; -} + // Old naming scheme was "Axis X-+" which is too visually similar to "Axis X+". + // This has caused countless problems for users with mysterious misconfigurations. + // We match this old name to support old configurations. + const auto old_name = m_low.GetName() + *m_high.GetName().rbegin(); + + return old_name == name; + } + +private: + Input& m_low; + Input& m_high; +}; void Device::AddFullAnalogSurfaceInputs(Input* low, Input* high) { diff --git a/Source/Core/InputCommon/ControllerInterface/CoreDevice.h b/Source/Core/InputCommon/ControllerInterface/CoreDevice.h index b34e6a9d15..cd8256396e 100644 --- a/Source/Core/InputCommon/ControllerInterface/CoreDevice.h +++ b/Source/Core/InputCommon/ControllerInterface/CoreDevice.h @@ -163,21 +163,6 @@ protected: void AddInput(Input* const i); void AddOutput(Output* const o); - class FullAnalogSurface final : public Input - { - public: - FullAnalogSurface(Input* low, Input* high) : m_low(*low), m_high(*high) {} - ControlState GetState() const override; - std::string GetName() const override; - bool IsDetectable() const override; - bool IsHidden() const override; - bool IsMatchingName(std::string_view name) const override; - - private: - Input& m_low; - Input& m_high; - }; - // Pass Inputs for center-neutral (- and +) directions of some axis. // This function adds those Inputs and also a FullAnalogSurface Input for each direction. // This is only needed when it's not known if the particular axis is neutral in the center