From f609ff5bce7d9e7204ae867c019f20d53956288b Mon Sep 17 00:00:00 2001 From: Irastris Date: Wed, 27 May 2026 14:36:20 -0400 Subject: [PATCH] Add option for inverting mouse Y --- include/dusk/settings.h | 1 + src/dusk/mouse.cpp | 18 ++++++++++-------- src/dusk/settings.cpp | 2 ++ src/dusk/ui/settings.cpp | 3 +++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/include/dusk/settings.h b/include/dusk/settings.h index c23cb6a024..456ad7553c 100644 --- a/include/dusk/settings.h +++ b/include/dusk/settings.h @@ -200,6 +200,7 @@ struct UserSettings { ConfigVar enableMouseAim; ConfigVar mouseAimSensitivity; ConfigVar mouseCameraSensitivity; + ConfigVar invertMouseY; ConfigVar freeCamera; ConfigVar invertCameraXAxis; ConfigVar invertCameraYAxis; diff --git a/src/dusk/mouse.cpp b/src/dusk/mouse.cpp index 22d33df799..2f4b8e4e29 100644 --- a/src/dusk/mouse.cpp +++ b/src/dusk/mouse.cpp @@ -100,21 +100,23 @@ bool syncCaptureState(SDL_Window* window, bool should_capture) { void accumulateDeltas(float mx_rel, float my_rel, bool camera_active, bool aim_active) { const auto& game = getSettings().game; - if (camera_active) { - s_camera_yaw_rad = -mx_rel * kMousePixelToRad * game.mouseCameraSensitivity.getValue(); - s_camera_pitch_rad = -my_rel * kMousePixelToRad * game.mouseCameraSensitivity.getValue(); - s_camera_yaw_rad = game.enableMirrorMode.getValue() ? -s_camera_yaw_rad : s_camera_yaw_rad; - } else { - s_camera_yaw_rad = s_camera_pitch_rad = 0.0f; - } - if (aim_active) { s_aim_yaw_rad = -mx_rel * kMousePixelToRad * game.mouseAimSensitivity.getValue(); s_aim_pitch_rad = my_rel * kMousePixelToRad * game.mouseAimSensitivity.getValue(); s_aim_yaw_rad = game.enableMirrorMode.getValue() ? -s_aim_yaw_rad : s_aim_yaw_rad; + s_aim_pitch_rad = game.invertMouseY.getValue() ? -s_aim_pitch_rad : s_aim_pitch_rad; } else { s_aim_yaw_rad = s_aim_pitch_rad = 0.0f; } + + if (camera_active) { + s_camera_yaw_rad = -mx_rel * kMousePixelToRad * game.mouseCameraSensitivity.getValue(); + s_camera_pitch_rad = -my_rel * kMousePixelToRad * game.mouseCameraSensitivity.getValue(); + s_camera_yaw_rad = game.enableMirrorMode.getValue() ? -s_camera_yaw_rad : s_camera_yaw_rad; + s_camera_pitch_rad = game.invertMouseY.getValue() ? -s_camera_pitch_rad : s_camera_pitch_rad; + } else { + s_camera_yaw_rad = s_camera_pitch_rad = 0.0f; + } } } // namespace diff --git a/src/dusk/settings.cpp b/src/dusk/settings.cpp index 043b3c43c8..3d1e3a70b6 100644 --- a/src/dusk/settings.cpp +++ b/src/dusk/settings.cpp @@ -88,6 +88,7 @@ UserSettings g_userSettings = { .enableMouseAim {"game.enableMouseAim", false}, .mouseAimSensitivity {"game.mouseAimSensitivity", 1.0f}, .mouseCameraSensitivity {"game.mouseCameraSensitivity", 1.0f}, + .invertMouseY {"game.invertMouseY", false}, .freeCamera {"game.freeCamera", false}, .invertCameraXAxis {"game.invertCameraXAxis", false}, .invertCameraYAxis {"game.invertCameraYAxis", false}, @@ -288,6 +289,7 @@ void registerSettings() { Register(g_userSettings.game.enableMouseAim); Register(g_userSettings.game.mouseAimSensitivity); Register(g_userSettings.game.mouseCameraSensitivity); + Register(g_userSettings.game.invertMouseY); Register(g_userSettings.game.freeCamera); Register(g_userSettings.game.debugFlyCam); Register(g_userSettings.game.debugFlyCamLockEvents); diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index ee8ba530a6..3eafeaac7a 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -1002,6 +1002,9 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { config_percent_select(leftPane, rightPane, getSettings().game.mouseCameraSensitivity, "Mouse Camera Sensitivity", "Controls mouse camera sensitivity.", 25, 400, 5, [] { return !getSettings().game.enableMouseCamera; }); + addOption("Invert Mouse Y", getSettings().game.invertMouseY, + "Invert vertical mouse control for both aiming and camera.", + [] { return !getSettings().game.enableMouseAim || !getSettings().game.enableMouseCamera; }); leftPane.add_section("Tools"); addOption("Turbo Key", getSettings().game.enableTurboKeybind,