From 3ebd7432273f991dddcf79c3f0fd215142a1e955 Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidOnSteam@users.noreply.github.com> Date: Fri, 3 Mar 2023 18:44:49 -0600 Subject: [PATCH] tweak head turn return to respect X angles Head turn would be janky if Y angle reached 0 before X axis reached target angle. --- MenuScalePatch/Helpers/MainMenuHelper.cs | 2 +- MenuScalePatch/Helpers/QuickMenuHelper.cs | 2 +- MenuScalePatch/MSP_Menus.cs | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/MenuScalePatch/Helpers/MainMenuHelper.cs b/MenuScalePatch/Helpers/MainMenuHelper.cs index a46eaad..53887dc 100644 --- a/MenuScalePatch/Helpers/MainMenuHelper.cs +++ b/MenuScalePatch/Helpers/MainMenuHelper.cs @@ -93,7 +93,7 @@ public class MainMenuHelper : MonoBehaviour public void HandleDesktopPosition() { if (MSP_MenuInfo.CameraTransform == null || MSP_MenuInfo.DisableMMHelper) return; - Transform activeAnchor = MSP_MenuInfo.independentHeadTurn ? worldAnchor : MSP_MenuInfo.CameraTransform; + Transform activeAnchor = MSP_MenuInfo.isIndependentHeadTurn ? worldAnchor : MSP_MenuInfo.CameraTransform; transform.localScale = new Vector3(1.6f * MSP_MenuInfo.ScaleFactor, 0.9f * MSP_MenuInfo.ScaleFactor, 1f); transform.position = activeAnchor.position + activeAnchor.forward * 1f * MSP_MenuInfo.ScaleFactor * MSP_MenuInfo.AspectRatio; transform.rotation = activeAnchor.rotation; diff --git a/MenuScalePatch/Helpers/QuickMenuHelper.cs b/MenuScalePatch/Helpers/QuickMenuHelper.cs index cb9514c..8de8e81 100644 --- a/MenuScalePatch/Helpers/QuickMenuHelper.cs +++ b/MenuScalePatch/Helpers/QuickMenuHelper.cs @@ -75,7 +75,7 @@ public class QuickMenuHelper : MonoBehaviour { if (MSP_MenuInfo.CameraTransform == null || MSP_MenuInfo.DisableQMHelper) return; - Transform activeAnchor = MSP_MenuInfo.independentHeadTurn ? worldAnchor : MSP_MenuInfo.CameraTransform; + Transform activeAnchor = MSP_MenuInfo.isIndependentHeadTurn ? worldAnchor : MSP_MenuInfo.CameraTransform; transform.localScale = new Vector3(1f * MSP_MenuInfo.ScaleFactor, 1f * MSP_MenuInfo.ScaleFactor, 1f); transform.rotation = activeAnchor.rotation; transform.position = activeAnchor.position + activeAnchor.transform.forward * 1f * MSP_MenuInfo.ScaleFactor; diff --git a/MenuScalePatch/MSP_Menus.cs b/MenuScalePatch/MSP_Menus.cs index 769570a..23a86c1 100644 --- a/MenuScalePatch/MSP_Menus.cs +++ b/MenuScalePatch/MSP_Menus.cs @@ -28,7 +28,9 @@ public class MSP_MenuInfo //reflection internal static readonly FieldInfo _desktopMouseModeQM = typeof(ViewManager).GetField("_desktopMouseMode", BindingFlags.NonPublic | BindingFlags.Instance); internal static readonly FieldInfo _desktopMouseModeMM = typeof(CVR_MenuManager).GetField("_desktopMouseMode", BindingFlags.NonPublic | BindingFlags.Instance); + internal static readonly FieldInfo ms_followAngleX = typeof(MovementSystem).GetField("_followAngleX", BindingFlags.NonPublic | BindingFlags.Instance); internal static readonly FieldInfo ms_followAngleY = typeof(MovementSystem).GetField("_followAngleY", BindingFlags.NonPublic | BindingFlags.Instance); + internal static readonly FieldInfo ms_manualAngleX = typeof(MovementSystem).GetField("_manualAngleX", BindingFlags.NonPublic | BindingFlags.Instance); internal static bool isIndependentHeadTurn = false; @@ -57,8 +59,10 @@ public class MSP_MenuInfo } else if (!isPressed && isIndependentHeadTurn) { - float angle = (float)ms_followAngleY.GetValue(MovementSystem.Instance); - if (angle == 0f) + float angleX = (float)ms_followAngleX.GetValue(MovementSystem.Instance); + float angleY = (float)ms_followAngleY.GetValue(MovementSystem.Instance); + float manualAngleX = (float)ms_manualAngleX.GetValue(MovementSystem.Instance); + if (angleY == 0f && angleX == manualAngleX) { isIndependentHeadTurn = false; MSP_MenuInfo.ToggleDesktopInputMethod(true);