From 361fafb3dc7566918a54dc82238eb00519159c56 Mon Sep 17 00:00:00 2001 From: SerpentSpirale Date: Mon, 6 Sep 2021 19:32:55 +0200 Subject: [PATCH] Fix swapped axis detection --- .../customcontrols/gamepad/Gamepad.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java index 2ff39b990..ffdf117dd 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/gamepad/Gamepad.java @@ -57,7 +57,7 @@ public class Gamepad { private boolean lastGrabbingState = true; private final boolean mModifierDigitalTriggers; - private boolean mModifierSwappedAxis = false; //Triggers and right stick axis are swapped. + private boolean mModifierSwappedAxis = true; //Triggers and right stick axis are swapped. private final Handler inputHandler = new Handler(Looper.getMainLooper()); private final Runnable switchStateRunnable; @@ -65,10 +65,14 @@ public class Gamepad { public Gamepad(BaseMainActivity gameActivity, InputDevice inputDevice){ //Toast.makeText(gameActivity.getApplicationContext(),"GAMEPAD CREATED", Toast.LENGTH_LONG).show(); for(InputDevice.MotionRange range : inputDevice.getMotionRanges()){ - if(range.getAxis() == MotionEvent.AXIS_RX || range.getAxis() == MotionEvent.AXIS_RY){ - mModifierSwappedAxis = true; + if(range.getAxis() == MotionEvent.AXIS_RTRIGGER + || range.getAxis() == MotionEvent.AXIS_LTRIGGER + || range.getAxis() == MotionEvent.AXIS_GAS + || range.getAxis() == MotionEvent.AXIS_BRAKE){ + mModifierSwappedAxis = false; break; } + } leftJoystick = new GamepadJoystick(MotionEvent.AXIS_X, MotionEvent.AXIS_Y, inputDevice); @@ -193,8 +197,14 @@ public class Gamepad { private void updateAnalogTriggers(MotionEvent event){ if(!mModifierDigitalTriggers){ - getCurrentMap().TRIGGER_LEFT.update((event.getAxisValue(mModifierSwappedAxis ? MotionEvent.AXIS_Z : MotionEvent.AXIS_LTRIGGER) > 0.5) || (event.getAxisValue(MotionEvent.AXIS_BRAKE) > 0.5)); - getCurrentMap().TRIGGER_RIGHT.update((event.getAxisValue(mModifierSwappedAxis ? MotionEvent.AXIS_RZ : MotionEvent.AXIS_RTRIGGER) > 0.5) || (event.getAxisValue(MotionEvent.AXIS_GAS) > 0.5)); + getCurrentMap().TRIGGER_LEFT.update( + (event.getAxisValue(MotionEvent.AXIS_LTRIGGER) > 0.5) + || (event.getAxisValue(MotionEvent.AXIS_BRAKE) > 0.5) + || (mModifierSwappedAxis &&(event.getAxisValue(MotionEvent.AXIS_Z) > 0.5)) ); + getCurrentMap().TRIGGER_RIGHT.update( + (event.getAxisValue( MotionEvent.AXIS_RTRIGGER) > 0.5) + || (event.getAxisValue(MotionEvent.AXIS_GAS) > 0.5) + || (mModifierSwappedAxis && event.getAxisValue(MotionEvent.AXIS_RZ) > 0.5) ); } }