diff options
Diffstat (limited to 'src/input_common/analog_from_button.cpp')
| -rwxr-xr-x | src/input_common/analog_from_button.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/input_common/analog_from_button.cpp b/src/input_common/analog_from_button.cpp index d748c1c04..40b516f85 100755 --- a/src/input_common/analog_from_button.cpp +++ b/src/input_common/analog_from_button.cpp | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | #include <cmath> | 6 | #include <cmath> |
| 7 | #include <thread> | 7 | #include <thread> |
| 8 | #include "common/math_util.h" | 8 | #include "common/math_util.h" |
| 9 | #include "core/settings.h" | ||
| 9 | #include "input_common/analog_from_button.h" | 10 | #include "input_common/analog_from_button.h" |
| 10 | 11 | ||
| 11 | namespace InputCommon { | 12 | namespace InputCommon { |
| @@ -112,7 +113,26 @@ public: | |||
| 112 | } | 113 | } |
| 113 | 114 | ||
| 114 | std::tuple<float, float> GetStatus() const override { | 115 | std::tuple<float, float> GetStatus() const override { |
| 115 | return std::make_tuple(std::cos(angle) * amplitude, std::sin(angle) * amplitude); | 116 | if (Settings::values.emulate_analog_keyboard) { |
| 117 | return std::make_tuple(std::cos(angle) * amplitude, std::sin(angle) * amplitude); | ||
| 118 | } | ||
| 119 | constexpr float SQRT_HALF = 0.707106781f; | ||
| 120 | int x = 0, y = 0; | ||
| 121 | if (right->GetStatus()) { | ||
| 122 | ++x; | ||
| 123 | } | ||
| 124 | if (left->GetStatus()) { | ||
| 125 | --x; | ||
| 126 | } | ||
| 127 | if (up->GetStatus()) { | ||
| 128 | ++y; | ||
| 129 | } | ||
| 130 | if (down->GetStatus()) { | ||
| 131 | --y; | ||
| 132 | } | ||
| 133 | const float coef = modifier->GetStatus() ? modifier_scale : 1.0f; | ||
| 134 | return std::make_tuple(static_cast<float>(x) * coef * (y == 0 ? 1.0f : SQRT_HALF), | ||
| 135 | static_cast<float>(y) * coef * (x == 0 ? 1.0f : SQRT_HALF)); | ||
| 116 | } | 136 | } |
| 117 | 137 | ||
| 118 | bool GetAnalogDirectionStatus(Input::AnalogDirection direction) const override { | 138 | bool GetAnalogDirectionStatus(Input::AnalogDirection direction) const override { |