From 3ec6e8c7adf6eb2045fddfb91a4b9b623e1b228b Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Wed, 12 Nov 2025 16:27:26 -0500 Subject: Add lock vertical movement toggle Signed-off-by: Andrew Opalach --- Plugin.cs | 45 +++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/Plugin.cs b/Plugin.cs index 2d80ce2..c2efc62 100755 --- a/Plugin.cs +++ b/Plugin.cs @@ -101,6 +101,7 @@ namespace MHWNewCamera private uint lastPadDown = 0; private uint? prevPadDown = null; + private bool unlockInputToggled = false; private bool buttonWasDown(Button button) { return (lastPadDown & (uint)button) == (uint)button; @@ -137,7 +138,7 @@ namespace MHWNewCamera private bool unlockMovementHeld = false; private bool unlockMovementToggled = false; private bool unlockMovementPause = false; - private bool unlockInputToggled = false; + private bool lockVerticalToggled = false; private bool offsetPerspective = false; private bool enableOffsetPerspective = false; @@ -722,14 +723,7 @@ namespace MHWNewCamera } cameraWrapState = 0; setTentBasePos(new Vector3(0.0f, -19850.0f, 270.0f), new Vector3(0.0f, -19830.0f, 0.0f)); - if (vCameraViewportIndex != pCameraViewportIndex) - { - setFadeObjects(vCameraViewportIndex, true); - } - else - { - setFadeObjects(pCameraViewportIndex, fadeObjects); - } + setFadeObjects(vCameraViewportIndex, (vCameraViewportIndex == pCameraViewportIndex) ? fadeObjects : true); setCharacterFade(fadeObjects); swapMinimapFollowsCamera.Disable(); } @@ -738,7 +732,8 @@ namespace MHWNewCamera { float deltaTime = camera.DeltaTime; - double adjustedSpeed = cameraSpeed * deltaTime; + bool lockVerticalAndModify = buttonWasDown(Button.R2) || lockVerticalToggled; + double adjustedSpeed = cameraSpeed * deltaTime * (lockVerticalAndModify ? cameraSpeedModifier : 1.0f); double buttonOffset = adjustedSpeed / 2.0; if (buttonWasDown(Button.L2) && buttonWasDown(Button.R2)) // Left stick zoom. @@ -760,12 +755,9 @@ namespace MHWNewCamera Quaternion forward = getForward(cameraPosition, cameraTarget); - if (buttonWasDown(Button.R2)) + if (lockVerticalAndModify) { forward.Y = 0.0f; - Lx *= cameraSpeedModifier; - Ly *= cameraSpeedModifier; - buttonOffset *= cameraSpeedModifier; } Quaternion right = forward; @@ -896,6 +888,7 @@ namespace MHWNewCamera private void checkCurrentVisibleCamera() { + int prevIndex = vCameraViewportIndex; vCameraViewportIndex = getVisibleCamera(); if (vCameraViewportIndex >= 0) { @@ -903,6 +896,11 @@ namespace MHWNewCamera // Free camera target change. if (freeCamera && camera != vCamera) { + if (prevIndex != vCameraViewportIndex) + { + setFadeObjects(prevIndex, (prevIndex == pCameraViewportIndex) ? fadeObjects : true); + setFadeObjects(vCameraViewportIndex, false); + } Player? player = Player.MainPlayer; if (player != null) { @@ -1173,7 +1171,7 @@ namespace MHWNewCamera PadTrg = MemoryUtil.Read(controllerAddr() + 0x1A0); PadRel = MemoryUtil.Read(controllerAddr() + 0x1A4); PadChg = MemoryUtil.Read(controllerAddr() + 0x1A8); - prevPadDown = prevPadDown == null ? PadDown : lastPadDown; + prevPadDown = (prevPadDown == null) ? PadDown : lastPadDown; lastPadDown = PadDown; readInputsPostHook = true; } @@ -1206,7 +1204,7 @@ namespace MHWNewCamera if (!readInputsPostHook) { PadDown = MemoryUtil.Read(controllerAddr() + 0x198); - prevPadDown = prevPadDown == null ? PadDown : lastPadDown; + prevPadDown = (prevPadDown == null) ? PadDown : lastPadDown; lastPadDown = PadDown; } @@ -1276,6 +1274,11 @@ namespace MHWNewCamera } } + if (buttonWasDown(Button.R2) && buttonWasPressed(Button.L1)) + { + lockVerticalToggled = !lockVerticalToggled; + } + if (buttonWasDown(Button.L2) && buttonWasPressed(Button.R1)) { unlockInputToggled = !unlockInputToggled; @@ -1527,7 +1530,7 @@ namespace MHWNewCamera preset.Right = cameraRight; preset.Up = cameraYOffset; preset.Roll = cameraRoll; - preset.FadeObjects = pCamera != null ? getFadeObjects(pCameraViewportIndex) : true; + preset.FadeObjects = (pCamera != null) ? getFadeObjects(pCameraViewportIndex) : true; if (config.Presets.ContainsKey(name)) { config.Presets[name] = preset; @@ -1672,6 +1675,12 @@ namespace MHWNewCamera ImGui.Text("LT+LB"); ImGui.EndTooltip(); } + ImGui.Checkbox("Lock Vertical Movement", ref lockVerticalToggled); + if (ImGui.BeginItemTooltip()) + { + ImGui.Text("RT+LB. Will also lock Speed Modifier on."); + ImGui.EndTooltip(); + } ImGui.Checkbox("Unlock Input", ref unlockInputToggled); if (ImGui.BeginItemTooltip()) { @@ -1695,7 +1704,7 @@ namespace MHWNewCamera } if (ImGui.BeginItemTooltip()) { - ImGui.Text("RT+RB. This will still show the scoutfly marker on menus."); + ImGui.Text("RT+RB. The scoutfly marker on menus will still be visible."); ImGui.EndTooltip(); } ImGui.PopID(); -- cgit v1.2.3-101-g0448