diff --git a/MenuScalePatch/HarmonyPatches.cs b/MenuScalePatch/HarmonyPatches.cs index 189e34a..d6e1a3d 100644 --- a/MenuScalePatch/HarmonyPatches.cs +++ b/MenuScalePatch/HarmonyPatches.cs @@ -84,7 +84,7 @@ internal class HarmonyPatches { if (QuickMenuHelper.Instance == null) return; QuickMenuHelper.Instance.UpdateWorldAnchors(); - QuickMenuHelper.Instance.ToggleDesktopInputMethod(show); + MSP_MenuInfo.ToggleDesktopInputMethod(show); QuickMenuHelper.Instance.enabled = show; } @@ -103,7 +103,7 @@ internal class HarmonyPatches { if (MainMenuHelper.Instance == null) return; MainMenuHelper.Instance.UpdateWorldAnchors(); - MainMenuHelper.Instance.ToggleDesktopInputMethod(show); + MSP_MenuInfo.ToggleDesktopInputMethod(show); MainMenuHelper.Instance.enabled = show; } @@ -114,4 +114,13 @@ internal class HarmonyPatches { MSP_MenuInfo.CameraTransform = PlayerSetup.Instance.GetActiveCamera().transform; } + + //only fixes Desktop QM interaction while using independent head input... + //[HarmonyPrefix] + //[HarmonyPatch(typeof(ControllerRay), "LateUpdate")] + //private static void UpdateMenuPositionForInput() + //{ + // MainMenuHelper.Instance.UpdateMenuPosition(); + // QuickMenuHelper.Instance.UpdateMenuPosition(); + //} } \ No newline at end of file diff --git a/MenuScalePatch/Helpers/MainMenuHelper.cs b/MenuScalePatch/Helpers/MainMenuHelper.cs index c5411d1..1c90ee9 100644 --- a/MenuScalePatch/Helpers/MainMenuHelper.cs +++ b/MenuScalePatch/Helpers/MainMenuHelper.cs @@ -44,21 +44,18 @@ public class MainMenuHelper : MonoBehaviour UpdateMenuPosition(); } - void OnDisable() + void OnEnable() { independentHeadTurn = false; returnIndependentHeadTurn = false; prevIndependentHeadTurn = false; } - public void ToggleDesktopInputMethod(bool flag) + void OnDisable() { - if (MetaPort.Instance.isUsingVr) return; - PlayerSetup.Instance._movementSystem.disableCameraControl = flag; - CVRInputManager.Instance.inputEnabled = !flag; - RootLogic.Instance.ToggleMouse(flag); - CVR_MenuManager.Instance.desktopControllerRay.enabled = !flag; - Traverse.Create(CVR_MenuManager.Instance).Field("_desktopMouseMode").SetValue(flag); + independentHeadTurn = false; + returnIndependentHeadTurn = false; + prevIndependentHeadTurn = false; } public void CreateWorldAnchors() @@ -103,6 +100,7 @@ public class MainMenuHelper : MonoBehaviour return; } + float angle = (float)ms_followAngleY.GetValue(MovementSystem.Instance); bool independentHeadTurnChanged = CVRInputManager.Instance.independentHeadTurn != prevIndependentHeadTurn; if (independentHeadTurnChanged) { @@ -110,10 +108,10 @@ public class MainMenuHelper : MonoBehaviour //if pressing but not already enabled if (prevIndependentHeadTurn) { - if (!independentHeadTurn) + if (!independentHeadTurn && angle == 0f) { UpdateWorldAnchors(); - ToggleDesktopInputMethod(!prevIndependentHeadTurn); + MSP_MenuInfo.ToggleDesktopInputMethod(!prevIndependentHeadTurn); independentHeadTurn = true; } returnIndependentHeadTurn = false; @@ -126,12 +124,11 @@ public class MainMenuHelper : MonoBehaviour if (returnIndependentHeadTurn) { - float angle = (float)ms_followAngleY.GetValue(MovementSystem.Instance); if (angle == 0f) { independentHeadTurn = false; returnIndependentHeadTurn = false; - ToggleDesktopInputMethod(!prevIndependentHeadTurn); + MSP_MenuInfo.ToggleDesktopInputMethod(!prevIndependentHeadTurn); } } diff --git a/MenuScalePatch/Helpers/QuickMenuHelper.cs b/MenuScalePatch/Helpers/QuickMenuHelper.cs index b99c5a5..a0f467a 100644 --- a/MenuScalePatch/Helpers/QuickMenuHelper.cs +++ b/MenuScalePatch/Helpers/QuickMenuHelper.cs @@ -43,21 +43,18 @@ public class QuickMenuHelper : MonoBehaviour UpdateMenuPosition(); } - void OnDisable() + void OnEnable() { independentHeadTurn = false; returnIndependentHeadTurn = false; prevIndependentHeadTurn = false; } - public void ToggleDesktopInputMethod(bool flag) + void OnDisable() { - if (MetaPort.Instance.isUsingVr) return; - PlayerSetup.Instance._movementSystem.disableCameraControl = flag; - CVRInputManager.Instance.inputEnabled = !flag; - RootLogic.Instance.ToggleMouse(flag); - CVR_MenuManager.Instance.desktopControllerRay.enabled = !flag; - Traverse.Create(CVR_MenuManager.Instance).Field("_desktopMouseMode").SetValue(flag); + independentHeadTurn = false; + returnIndependentHeadTurn = false; + prevIndependentHeadTurn = false; } public void CreateWorldAnchors() @@ -85,6 +82,7 @@ public class QuickMenuHelper : MonoBehaviour return; } + float angle = (float)ms_followAngleY.GetValue(MovementSystem.Instance); bool independentHeadTurnChanged = CVRInputManager.Instance.independentHeadTurn != prevIndependentHeadTurn; if (independentHeadTurnChanged) { @@ -92,10 +90,10 @@ public class QuickMenuHelper : MonoBehaviour //if pressing but not already enabled if (prevIndependentHeadTurn) { - if (!independentHeadTurn) + if (!independentHeadTurn && angle == 0f) { UpdateWorldAnchors(); - ToggleDesktopInputMethod(!prevIndependentHeadTurn); + MSP_MenuInfo.ToggleDesktopInputMethod(!prevIndependentHeadTurn); independentHeadTurn = true; } returnIndependentHeadTurn = false; @@ -108,12 +106,11 @@ public class QuickMenuHelper : MonoBehaviour if (returnIndependentHeadTurn) { - float angle = (float)ms_followAngleY.GetValue(MovementSystem.Instance); if (angle == 0f) { independentHeadTurn = false; returnIndependentHeadTurn = false; - ToggleDesktopInputMethod(!prevIndependentHeadTurn); + MSP_MenuInfo.ToggleDesktopInputMethod(!prevIndependentHeadTurn); } } diff --git a/MenuScalePatch/MSP_Menus.cs b/MenuScalePatch/MSP_Menus.cs index d690295..3961816 100644 --- a/MenuScalePatch/MSP_Menus.cs +++ b/MenuScalePatch/MSP_Menus.cs @@ -4,7 +4,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; +using ABI_RC.Core.InteractionSystem; +using ABI_RC.Core.Player; using ABI_RC.Core.Savior; +using ABI_RC.Core; +using ABI_RC.Systems.MovementSystem; +using HarmonyLib; namespace NAK.Melons.MenuScalePatch.Helpers; @@ -23,4 +28,15 @@ public class MSP_MenuInfo public static bool DisableQMHelper_VR; public static bool DisableMMHelper; public static bool DisableMMHelper_VR; + + public static void ToggleDesktopInputMethod(bool flag) + { + if (MetaPort.Instance.isUsingVr) return; + MelonLoader.MelonLogger.Msg("Toggled Desktop Input"); + PlayerSetup.Instance._movementSystem.disableCameraControl = flag; + CVRInputManager.Instance.inputEnabled = !flag; + RootLogic.Instance.ToggleMouse(flag); + CVR_MenuManager.Instance.desktopControllerRay.enabled = !flag; + Traverse.Create(CVR_MenuManager.Instance).Field("_desktopMouseMode").SetValue(flag); + } } \ No newline at end of file