This commit is contained in:
NotAKidoS 2023-01-03 16:45:32 -06:00
parent 81affe9377
commit 845baee849
4 changed files with 45 additions and 26 deletions

View file

@ -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();
//}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}