aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Input
diff options
context:
space:
mode:
authorMutantAura <44103205+MutantAura@users.noreply.github.com>2022-01-03 11:49:29 +0000
committerGitHub <noreply@github.com>2022-01-03 12:49:29 +0100
commit686757105c83a1485117ff5f5d30b2fad4df39b1 (patch)
tree0605169608fa384f5d79caa7a924d1771c60d870 /Ryujinx.Input
parent16c649934fde134d7e8fc9539cf562dd129fbaac (diff)
Implement analog stick range modifier (#2783)
* adjust position vector + GUI * remove brackets * Update configuration * Update ConfigurationFileFormat.cs * rebase + review changes * spacing * revert deletion * fix profile loading * spacing * comment spacing
Diffstat (limited to 'Ryujinx.Input')
-rw-r--r--Ryujinx.Input/HLE/NpadController.cs8
1 files changed, 4 insertions, 4 deletions
diff --git a/Ryujinx.Input/HLE/NpadController.cs b/Ryujinx.Input/HLE/NpadController.cs
index 79c18ecf..2af114d2 100644
--- a/Ryujinx.Input/HLE/NpadController.cs
+++ b/Ryujinx.Input/HLE/NpadController.cs
@@ -381,8 +381,8 @@ namespace Ryujinx.Input.HLE
(float leftAxisX, float leftAxisY) = State.GetStick(StickInputId.Left);
(float rightAxisX, float rightAxisY) = State.GetStick(StickInputId.Right);
- state.LStick = ClampToCircle(ApplyDeadzone(leftAxisX, leftAxisY, controllerConfig.DeadzoneLeft));
- state.RStick = ClampToCircle(ApplyDeadzone(rightAxisX, rightAxisY, controllerConfig.DeadzoneRight));
+ state.LStick = ClampToCircle(ApplyDeadzone(leftAxisX, leftAxisY, controllerConfig.DeadzoneLeft), controllerConfig.RangeLeft);
+ state.RStick = ClampToCircle(ApplyDeadzone(rightAxisX, rightAxisY, controllerConfig.DeadzoneRight), controllerConfig.RangeRight);
}
return state;
@@ -412,9 +412,9 @@ namespace Ryujinx.Input.HLE
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
- private static JoystickPosition ClampToCircle(JoystickPosition position)
+ private static JoystickPosition ClampToCircle(JoystickPosition position, float range)
{
- Vector2 point = new Vector2(position.Dx, position.Dy);
+ Vector2 point = new Vector2(position.Dx, position.Dy) * range;
if (point.Length() > short.MaxValue)
{