forked from Clones/Controlify
better deadzone algorithm
This commit is contained in:
@ -11,8 +11,8 @@ public record AxesState(
|
|||||||
|
|
||||||
public AxesState leftJoystickDeadZone(float deadZoneX, float deadZoneY) {
|
public AxesState leftJoystickDeadZone(float deadZoneX, float deadZoneY) {
|
||||||
return new AxesState(
|
return new AxesState(
|
||||||
Math.abs(leftStickX) < deadZoneX ? 0 : leftStickX,
|
deadzone(leftStickX, deadZoneX),
|
||||||
Math.abs(leftStickY) < deadZoneY ? 0 : leftStickY,
|
deadzone(leftStickY, deadZoneY),
|
||||||
rightStickX, rightStickY, leftTrigger, rightTrigger
|
rightStickX, rightStickY, leftTrigger, rightTrigger
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -20,8 +20,8 @@ public record AxesState(
|
|||||||
public AxesState rightJoystickDeadZone(float deadZoneX, float deadZoneY) {
|
public AxesState rightJoystickDeadZone(float deadZoneX, float deadZoneY) {
|
||||||
return new AxesState(
|
return new AxesState(
|
||||||
leftStickX, leftStickY,
|
leftStickX, leftStickY,
|
||||||
Math.abs(rightStickX) < deadZoneX ? 0 : rightStickX,
|
deadzone(rightStickX, deadZoneX),
|
||||||
Math.abs(rightStickY) < deadZoneY ? 0 : rightStickY,
|
deadzone(rightStickY, deadZoneY),
|
||||||
leftTrigger, rightTrigger
|
leftTrigger, rightTrigger
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -29,7 +29,7 @@ public record AxesState(
|
|||||||
public AxesState leftTriggerDeadZone(float deadZone) {
|
public AxesState leftTriggerDeadZone(float deadZone) {
|
||||||
return new AxesState(
|
return new AxesState(
|
||||||
leftStickX, leftStickY, rightStickX, rightStickY,
|
leftStickX, leftStickY, rightStickX, rightStickY,
|
||||||
Math.abs(leftTrigger) < deadZone ? 0 : leftTrigger,
|
deadzone(leftTrigger, deadZone),
|
||||||
rightTrigger
|
rightTrigger
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -38,10 +38,14 @@ public record AxesState(
|
|||||||
return new AxesState(
|
return new AxesState(
|
||||||
leftStickX, leftStickY, rightStickX, rightStickY,
|
leftStickX, leftStickY, rightStickX, rightStickY,
|
||||||
leftTrigger,
|
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) {
|
public static AxesState fromController(Controller controller) {
|
||||||
if (controller == null || !controller.connected())
|
if (controller == null || !controller.connected())
|
||||||
return EMPTY;
|
return EMPTY;
|
||||||
|
Reference in New Issue
Block a user