From 85e98a98bfaa031a985702212ddca9dc55fb57ed Mon Sep 17 00:00:00 2001 From: Mathias-Boulay Date: Tue, 19 Nov 2024 18:51:42 +0100 Subject: [PATCH] Refactor(gyro): pre-compute the factor one quick setting change --- .../net/kdt/pojavlaunch/MainActivity.java | 1 + .../customcontrols/mouse/GyroControl.java | 19 ++++++++++--------- .../prefs/QuickSettingSideDialog.java | 8 +++++++- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java index a284bcbc6..41fa5b9c8 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -222,6 +222,7 @@ public class MainActivity extends BaseActivity implements ControlButtonMenuListe @Override public void onGyroStateChanged() { + mGyroControl.updateOrientation(); if (PREF_ENABLE_GYRO) { mGyroControl.enable(); } else { diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/GyroControl.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/GyroControl.java index 55851824b..4ead091c1 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/GyroControl.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/customcontrols/mouse/GyroControl.java @@ -87,11 +87,6 @@ public class GyroControl implements SensorEventListener, GrabListener { SensorManager.getRotationMatrixFromVector(mCurrentRotation, sensorEvent.values); - float xLocalFactor = xFactor; - float yLocalFactor = yFactor; - if(LauncherPreferences.PREF_GYRO_INVERT_X) xLocalFactor *= -1; - if(LauncherPreferences.PREF_GYRO_INVERT_Y) yLocalFactor *= -1; - if(mFirstPass){ // Setup initial position mFirstPass = false; return; @@ -106,20 +101,20 @@ public class GyroControl implements SensorEventListener, GrabListener { float absY = Math.abs(mStoredY); if(absX + absY > MULTI_AXIS_LOW_PASS_THRESHOLD) { - CallbackBridge.mouseX -= ((mSwapXY ? mStoredY : mStoredX) * xLocalFactor); - CallbackBridge.mouseY += ((mSwapXY ? mStoredX : mStoredY) * yLocalFactor); + CallbackBridge.mouseX -= ((mSwapXY ? mStoredY : mStoredX) * xFactor); + CallbackBridge.mouseY += ((mSwapXY ? mStoredX : mStoredY) * yFactor); mStoredX = 0; mStoredY = 0; updatePosition = true; } else { if(Math.abs(mStoredX) > SINGLE_AXIS_LOW_PASS_THRESHOLD){ - CallbackBridge.mouseX -= ((mSwapXY ? mStoredY : mStoredX) * xLocalFactor); + CallbackBridge.mouseX -= ((mSwapXY ? mStoredY : mStoredX) * xFactor); mStoredX = 0; updatePosition = true; } if(Math.abs(mStoredY) > SINGLE_AXIS_LOW_PASS_THRESHOLD) { - CallbackBridge.mouseY += ((mSwapXY ? mStoredX : mStoredY) * yLocalFactor); + CallbackBridge.mouseY += ((mSwapXY ? mStoredX : mStoredY) * yFactor); mStoredY = 0; updatePosition = true; } @@ -156,6 +151,9 @@ public class GyroControl implements SensorEventListener, GrabListener { yFactor = -1; break; } + + if(LauncherPreferences.PREF_GYRO_INVERT_X) xFactor *= -1; + if(LauncherPreferences.PREF_GYRO_INVERT_Y) yFactor *= -1; } @Override @@ -244,6 +242,9 @@ public class GyroControl implements SensorEventListener, GrabListener { } break; } + + if(LauncherPreferences.PREF_GYRO_INVERT_X) xFactor *= -1; + if(LauncherPreferences.PREF_GYRO_INVERT_Y) yFactor *= -1; } } } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/QuickSettingSideDialog.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/QuickSettingSideDialog.java index a24903d59..22e5af838 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/QuickSettingSideDialog.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/QuickSettingSideDialog.java @@ -103,11 +103,13 @@ public abstract class QuickSettingSideDialog extends com.kdt.SideDialogView { PREF_GYRO_INVERT_X = isChecked; + onGyroStateChanged(); LauncherPreferences.DEFAULT_PREF.edit().putBoolean("gyroInvertX", isChecked).apply(); }); mGyroYSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> { PREF_GYRO_INVERT_Y = isChecked; + onGyroStateChanged(); LauncherPreferences.DEFAULT_PREF.edit().putBoolean("gyroInvertY", isChecked).apply(); }); @@ -217,7 +219,11 @@ public abstract class QuickSettingSideDialog extends com.kdt.SideDialogView