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
This commit is contained in:
MutantAura 2022-01-03 11:49:29 +00:00 committed by GitHub
parent 16c649934f
commit 686757105c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 160 additions and 5 deletions

View file

@ -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)
{