diff --git a/MenuScalePatch/HarmonyPatches.cs b/MenuScalePatch/HarmonyPatches.cs index 68aaa18..445a258 100644 --- a/MenuScalePatch/HarmonyPatches.cs +++ b/MenuScalePatch/HarmonyPatches.cs @@ -62,6 +62,7 @@ internal class HarmonyPatches [HarmonyPatch(typeof(CVR_MenuManager), "UpdateMenuPosition")] private static bool Prefix_CVR_MenuManager_UpdateMenuPosition() { + if (QuickMenuHelper.Instance == null) return true; return !QuickMenuHelper.Instance.MenuIsOpen; } @@ -69,6 +70,7 @@ internal class HarmonyPatches [HarmonyPatch(typeof(ViewManager), "UpdateMenuPosition")] private static bool Prefix_ViewManager_UpdateMenuPosition(ref float ___cachedScreenAspectRatio) { + if (MainMenuHelper.Instance == null) return true; //this is called once a second, so ill fix their dumb aspect ratio shit float ratio = (float)Screen.width / (float)Screen.height; float clamp = Mathf.Clamp(ratio, 0f, 1.8f); diff --git a/MenuScalePatch/Helpers/MainMenuHelper.cs b/MenuScalePatch/Helpers/MainMenuHelper.cs index d1d2ef4..a46eaad 100644 --- a/MenuScalePatch/Helpers/MainMenuHelper.cs +++ b/MenuScalePatch/Helpers/MainMenuHelper.cs @@ -30,14 +30,16 @@ public class MainMenuHelper : MonoBehaviour void LateUpdate() { - if (MenuIsOpen) + if (!MenuIsOpen) return; + + if (MSP_MenuInfo.PlayerAnchorMenus || NeedsPositionUpdate) { - if (MSP_MenuInfo.UseIndependentHeadTurn) - MSP_MenuInfo.HandleIndependentLookInput(); - if (MSP_MenuInfo.PlayerAnchorMenus) - UpdateMenuPosition(); - if (NeedsPositionUpdate) - UpdateMenuPosition(); + UpdateMenuPosition(); + } + + if (MSP_MenuInfo.UseIndependentHeadTurn) + { + MSP_MenuInfo.HandleIndependentLookInput(); } } @@ -64,13 +66,13 @@ public class MainMenuHelper : MonoBehaviour } else { - worldAnchor.eulerAngles = MSP_MenuInfo.CameraTransform.eulerAngles; + worldAnchor.rotation = MSP_MenuInfo.CameraTransform.rotation; } worldAnchor.position = MSP_MenuInfo.CameraTransform.position + MSP_MenuInfo.CameraTransform.forward * 2f * MSP_MenuInfo.ScaleFactor; } else { - worldAnchor.eulerAngles = MSP_MenuInfo.CameraTransform.eulerAngles; + worldAnchor.rotation = MSP_MenuInfo.CameraTransform.rotation; worldAnchor.position = MSP_MenuInfo.CameraTransform.position; } if (updateMenuPos) UpdateMenuPosition(); @@ -93,8 +95,8 @@ public class MainMenuHelper : MonoBehaviour if (MSP_MenuInfo.CameraTransform == null || MSP_MenuInfo.DisableMMHelper) return; Transform activeAnchor = MSP_MenuInfo.independentHeadTurn ? worldAnchor : MSP_MenuInfo.CameraTransform; transform.localScale = new Vector3(1.6f * MSP_MenuInfo.ScaleFactor, 0.9f * MSP_MenuInfo.ScaleFactor, 1f); - transform.eulerAngles = activeAnchor.eulerAngles; transform.position = activeAnchor.position + activeAnchor.forward * 1f * MSP_MenuInfo.ScaleFactor * MSP_MenuInfo.AspectRatio; + transform.rotation = activeAnchor.rotation; } //VR Main Menu @@ -103,6 +105,6 @@ public class MainMenuHelper : MonoBehaviour if (worldAnchor == null || MSP_MenuInfo.DisableMMHelper_VR) return; transform.localScale = new Vector3(1.6f * MSP_MenuInfo.ScaleFactor * 1.8f, 0.9f * MSP_MenuInfo.ScaleFactor * 1.8f, 1f); transform.position = worldAnchor.position; - transform.eulerAngles = worldAnchor.eulerAngles; + transform.rotation = worldAnchor.rotation; } } diff --git a/MenuScalePatch/Helpers/QuickMenuHelper.cs b/MenuScalePatch/Helpers/QuickMenuHelper.cs index 7a893e4..cb9514c 100644 --- a/MenuScalePatch/Helpers/QuickMenuHelper.cs +++ b/MenuScalePatch/Helpers/QuickMenuHelper.cs @@ -28,14 +28,16 @@ public class QuickMenuHelper : MonoBehaviour void LateUpdate() { - if (MenuIsOpen) + if (!MenuIsOpen) return; + + if (MSP_MenuInfo.PlayerAnchorMenus || NeedsPositionUpdate || MetaPort.Instance.isUsingVr) { - if (MSP_MenuInfo.UseIndependentHeadTurn) - MSP_MenuInfo.HandleIndependentLookInput(); - if (MSP_MenuInfo.PlayerAnchorMenus || MetaPort.Instance.isUsingVr) - UpdateMenuPosition(); - if (NeedsPositionUpdate) - UpdateMenuPosition(); + UpdateMenuPosition(); + } + + if (MSP_MenuInfo.UseIndependentHeadTurn) + { + MSP_MenuInfo.HandleIndependentLookInput(); } } @@ -51,7 +53,8 @@ public class QuickMenuHelper : MonoBehaviour public void UpdateWorldAnchors(bool updateMenuPos = false) { if (worldAnchor == null || MSP_MenuInfo.CameraTransform == null) return; - worldAnchor.eulerAngles = MSP_MenuInfo.CameraTransform.eulerAngles; + + worldAnchor.rotation = MSP_MenuInfo.CameraTransform.rotation; worldAnchor.position = MSP_MenuInfo.CameraTransform.position; if (updateMenuPos) UpdateMenuPosition(); } @@ -74,7 +77,7 @@ public class QuickMenuHelper : MonoBehaviour Transform activeAnchor = MSP_MenuInfo.independentHeadTurn ? worldAnchor : MSP_MenuInfo.CameraTransform; transform.localScale = new Vector3(1f * MSP_MenuInfo.ScaleFactor, 1f * MSP_MenuInfo.ScaleFactor, 1f); - transform.eulerAngles = activeAnchor.eulerAngles; + transform.rotation = activeAnchor.rotation; transform.position = activeAnchor.position + activeAnchor.transform.forward * 1f * MSP_MenuInfo.ScaleFactor; } @@ -86,8 +89,8 @@ public class QuickMenuHelper : MonoBehaviour if (MSP_MenuInfo.WorldAnchorQM) { transform.localScale = new Vector3(1f * MSP_MenuInfo.ScaleFactor, 1f * MSP_MenuInfo.ScaleFactor, 1f); - transform.eulerAngles = worldAnchor.eulerAngles; transform.position = worldAnchor.position + worldAnchor.transform.forward * 1f * MSP_MenuInfo.ScaleFactor; + transform.rotation = worldAnchor.rotation; return; } transform.localScale = new Vector3(1f * MSP_MenuInfo.ScaleFactor, 1f * MSP_MenuInfo.ScaleFactor, 1f); diff --git a/MenuScalePatch/MSP_Menus.cs b/MenuScalePatch/MSP_Menus.cs index 5268e30..769570a 100644 --- a/MenuScalePatch/MSP_Menus.cs +++ b/MenuScalePatch/MSP_Menus.cs @@ -1,6 +1,5 @@ using ABI_RC.Core; using ABI_RC.Core.InteractionSystem; -using ABI_RC.Core.Player; using ABI_RC.Core.Savior; using ABI_RC.Systems.MovementSystem; using System.Reflection; @@ -31,7 +30,7 @@ public class MSP_MenuInfo internal static readonly FieldInfo _desktopMouseModeMM = typeof(CVR_MenuManager).GetField("_desktopMouseMode", BindingFlags.NonPublic | BindingFlags.Instance); internal static readonly FieldInfo ms_followAngleY = typeof(MovementSystem).GetField("_followAngleY", BindingFlags.NonPublic | BindingFlags.Instance); - internal static bool independentHeadTurn = false; + internal static bool isIndependentHeadTurn = false; internal static void ToggleDesktopInputMethod(bool flag) { @@ -42,7 +41,6 @@ public class MSP_MenuInfo RootLogic.Instance.ToggleMouse(flag); CVRInputManager.Instance.inputEnabled = !flag; - PlayerSetup.Instance._movementSystem.disableCameraControl = flag; CVR_MenuManager.Instance.desktopControllerRay.enabled = !flag; } @@ -50,20 +48,22 @@ public class MSP_MenuInfo { //angle of independent look axis bool isPressed = CVRInputManager.Instance.independentHeadTurn || CVRInputManager.Instance.independentHeadToggle; - if (isPressed && !independentHeadTurn) + if (isPressed && !isIndependentHeadTurn) { - independentHeadTurn = true; + isIndependentHeadTurn = true; MSP_MenuInfo.ToggleDesktopInputMethod(false); QuickMenuHelper.Instance.UpdateWorldAnchors(); MainMenuHelper.Instance.UpdateWorldAnchors(); } - else if (!isPressed && independentHeadTurn) + else if (!isPressed && isIndependentHeadTurn) { float angle = (float)ms_followAngleY.GetValue(MovementSystem.Instance); if (angle == 0f) { - independentHeadTurn = false; + isIndependentHeadTurn = false; MSP_MenuInfo.ToggleDesktopInputMethod(true); + QuickMenuHelper.Instance.NeedsPositionUpdate = true; + MainMenuHelper.Instance.NeedsPositionUpdate = true; } } } diff --git a/MenuScalePatch/Properties/AssemblyInfo.cs b/MenuScalePatch/Properties/AssemblyInfo.cs index 2c4d733..bd53329 100644 --- a/MenuScalePatch/Properties/AssemblyInfo.cs +++ b/MenuScalePatch/Properties/AssemblyInfo.cs @@ -25,6 +25,6 @@ using System.Reflection; namespace NAK.Melons.MenuScalePatch.Properties; internal static class AssemblyInfoParams { - public const string Version = "4.2.3"; + public const string Version = "4.2.5"; public const string Author = "NotAKidoS"; } \ No newline at end of file diff --git a/MenuScalePatch/format.json b/MenuScalePatch/format.json index ef90bf1..25e723d 100644 --- a/MenuScalePatch/format.json +++ b/MenuScalePatch/format.json @@ -1,7 +1,7 @@ { "_id": 95, "name": "MenuScalePatch", - "modversion": "4.2.2", + "modversion": "4.2.5", "gameversion": "2022r170", "loaderversion": "0.5.7", "modtype": "Mod", @@ -16,8 +16,8 @@ "requirements": [ "None" ], - "downloadlink": "https://github.com/NotAKidOnSteam/MenuScalePatch/releases/download/v4.2.2/MenuScalePatch.dll", + "downloadlink": "https://github.com/NotAKidOnSteam/MenuScalePatch/releases/download/v4.2.4/MenuScalePatch.dll", "sourcelink": "https://github.com/NotAKidOnSteam/MenuScalePatch/", - "changelog": "- Fixed hitching & potential crash when opening menu after a long time of it being closed. Don't disable CohtmlView, only enable it.", + "changelog": "- Tweaked independent head turn implementation. Menu will now recenter after head has returned to target angle.", "embedcolor": "804221" } \ No newline at end of file