1
0
forked from Clones/Controlify

better deadzone algorithm

This commit is contained in:
isXander
2023-02-02 21:34:10 +00:00
parent da864b96be
commit 57fcd0c0dc

View File

@ -11,8 +11,8 @@ public record AxesState(
public AxesState leftJoystickDeadZone(float deadZoneX, float deadZoneY) {
return new AxesState(
Math.abs(leftStickX) < deadZoneX ? 0 : leftStickX,
Math.abs(leftStickY) < deadZoneY ? 0 : leftStickY,
deadzone(leftStickX, deadZoneX),
deadzone(leftStickY, deadZoneY),
rightStickX, rightStickY, leftTrigger, rightTrigger
);
}
@ -20,8 +20,8 @@ public record AxesState(
public AxesState rightJoystickDeadZone(float deadZoneX, float deadZoneY) {
return new AxesState(
leftStickX, leftStickY,
Math.abs(rightStickX) < deadZoneX ? 0 : rightStickX,
Math.abs(rightStickY) < deadZoneY ? 0 : rightStickY,
deadzone(rightStickX, deadZoneX),
deadzone(rightStickY, deadZoneY),
leftTrigger, rightTrigger
);
}
@ -29,7 +29,7 @@ public record AxesState(
public AxesState leftTriggerDeadZone(float deadZone) {
return new AxesState(
leftStickX, leftStickY, rightStickX, rightStickY,
Math.abs(leftTrigger) < deadZone ? 0 : leftTrigger,
deadzone(leftTrigger, deadZone),
rightTrigger
);
}
@ -38,10 +38,14 @@ public record AxesState(
return new AxesState(
leftStickX, leftStickY, rightStickX, rightStickY,
leftTrigger,
Math.abs(rightTrigger) < deadZone ? 0 : rightTrigger
deadzone(rightTrigger, deadZone)
);
}
private float deadzone(float value, float deadzone) {
return (value - Math.copySign(Math.min(deadzone, Math.abs(value)), value)) / (1 - deadzone);
}
public static AxesState fromController(Controller controller) {
if (controller == null || !controller.connected())
return EMPTY;