From 271e02036c4b5e6f702b7c2cfbfbbad325528d7b Mon Sep 17 00:00:00 2001 From: Irastris Date: Tue, 26 May 2026 19:01:40 -0400 Subject: [PATCH] Untie mouse camera and free camera options Either being enabled now allows the underlying freecam logic to run --- include/d/d_camera.h | 1 + src/d/d_camera.cpp | 8 ++++++-- src/dusk/mouse.cpp | 12 ++++-------- src/dusk/ui/settings.cpp | 15 ++++++--------- 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/include/d/d_camera.h b/include/d/d_camera.h index b694933461..abe97c0f0c 100644 --- a/include/d/d_camera.h +++ b/include/d/d_camera.h @@ -1037,6 +1037,7 @@ public: bool test1Camera(s32); bool test2Camera(s32); #if TARGET_PC + static bool canUseFreeCam(); bool freeCamera(); bool executeDebugFlyCam(); void deactivateDebugFlyCam(); diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp index b09b1a4650..3ac2187474 100644 --- a/src/d/d_camera.cpp +++ b/src/d/d_camera.cpp @@ -7640,12 +7640,16 @@ void dCamera_c::deactivateDebugFlyCam() { mDebugFlyCam.initialized = false; } +bool dCamera_c::canUseFreeCam() { + return dusk::getSettings().game.freeCamera || dusk::getSettings().game.enableMouseCamera; +} + bool dCamera_c::freeCamera() { - if (dusk::getSettings().game.freeCamera && mGear == 1) { + if (canUseFreeCam() && mGear == 1) { mGear = 0; } - if (!dusk::getSettings().game.freeCamera || mCamStyle == 70) + if (!canUseFreeCam() || mCamStyle == 70) { mCamParam.mManualMode = 0; return false; diff --git a/src/dusk/mouse.cpp b/src/dusk/mouse.cpp index 24200ef7f2..f475cc9934 100644 --- a/src/dusk/mouse.cpp +++ b/src/dusk/mouse.cpp @@ -36,9 +36,8 @@ bool queryMouseAimContext() { } bool wantMouseCapture() { - return (static_cast(getSettings().game.enableMouseCamera) && - static_cast(getSettings().game.freeCamera)) || - static_cast(getSettings().game.enableMouseAim); + const auto game = getSettings().game; + return game.enableMouseCamera.getValue() || game.enableMouseAim.getValue(); } bool isWindowFocused(SDL_Window* window) { @@ -128,9 +127,7 @@ void read() { } const bool aim_active = capture_active && queryMouseAimContext(); - const bool camera_active = capture_active && - static_cast(getSettings().game.enableMouseCamera) && - static_cast(getSettings().game.freeCamera); + const bool camera_active = capture_active && getSettings().game.enableMouseCamera; float mx_rel = 0.0f; float my_rel = 0.0f; @@ -147,8 +144,7 @@ void getCameraDeltas(float& out_yaw, float& out_pitch) { out_yaw = 0.0f; out_pitch = 0.0f; - if (!static_cast(getSettings().game.enableMouseCamera) || - !static_cast(getSettings().game.freeCamera)) + if (!getSettings().game.enableMouseCamera) { return; } diff --git a/src/dusk/ui/settings.cpp b/src/dusk/ui/settings.cpp index daf63fd0b5..5189f5344c 100644 --- a/src/dusk/ui/settings.cpp +++ b/src/dusk/ui/settings.cpp @@ -941,13 +941,12 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { leftPane.add_section("Camera"); addOption("Free Camera", getSettings().game.freeCamera, - "Enables free camera control, letting you control the camera fully with the C-Stick." - "

Must be enabled in order to use Mouse Camera."); + "Enables free camera control, letting you control the camera fully with the C-Stick."); addOption("Invert Free Camera X Axis", getSettings().game.invertCameraXAxis, - "Invert horizontal free camera movement.

Applies to joystick input only.", + "Invert horizontal free camera movement.

Applies to the control stick only.", [] { return !getSettings().game.freeCamera; }); addOption("Invert Free Camera Y Axis", getSettings().game.invertCameraYAxis, - "Invert vertical free camera movement.

Applies to joystick input only.", + "Invert vertical free camera movement.

Applies to the control stick only.", [] { return !getSettings().game.freeCamera; }); config_percent_select(leftPane, rightPane, getSettings().game.freeCameraSensitivity, "Free Camera Sensitivity", @@ -992,9 +991,7 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { leftPane.add_section("Mouse"); addOption("Mouse Camera", getSettings().game.enableMouseCamera, - "Enables mouse input to rotate the third-person camera.

" - "Requires the Free Camera option to be enabled.", - [] { return !getSettings().game.freeCamera; }); + "Enables mouse input for controlling the third-person camera."); addOption("Mouse Aim", getSettings().game.enableMouseAim, "Enables mouse input while in look mode, aiming a hawk, and aiming " "supported items.

Supported items include the Slingshot, Gale Boomerang, " @@ -1002,12 +999,12 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) { config_percent_select(leftPane, rightPane, getSettings().game.mouseCameraSensitivityX, "Mouse Camera X Sensitivity", "Controls horizontal mouse camera sensitivity.", 25, 400, 5, [] { - return !getSettings().game.enableMouseCamera || !getSettings().game.freeCamera; + return !getSettings().game.enableMouseCamera; }); config_percent_select(leftPane, rightPane, getSettings().game.mouseCameraSensitivityY, "Mouse Camera Y Sensitivity", "Controls vertical mouse camera sensitivity.", 25, 400, 5, [] { - return !getSettings().game.enableMouseCamera || !getSettings().game.freeCamera; + return !getSettings().game.enableMouseCamera; }); config_percent_select(leftPane, rightPane, getSettings().game.mouseAimSensitivityX, "Mouse Aim X Sensitivity", "Controls horizontal mouse aim sensitivity.", 25, 400, 5,