timeout for error catch..?

This commit is contained in:
NotAKidoS 2022-09-25 06:56:34 -05:00
parent f85070cd4e
commit 1e0f96fae9

View file

@ -16,14 +16,24 @@ public class DesktopVRSwitch : MelonMod
{ {
private static System.Object melon; private static System.Object melon;
private static bool isAttemptingSwitch = false; private static bool isAttemptingSwitch = false;
private static float timedSwitch = 0f;
public override void OnUpdate() public override void OnUpdate()
{ {
// assuming CVRInputManager.switchMode button was originally for desktop/vr switching before being left to do literally nothing in rootlogic // assuming CVRInputManager.switchMode button was originally for desktop/vr switching before being left to do literally nothing in rootlogic
if (Input.GetKeyDown(KeyCode.F6) && (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) && !isAttemptingSwitch) if (Input.GetKeyDown(KeyCode.F6) && (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) && !isAttemptingSwitch)
{ {
//start attempt
isAttemptingSwitch = true; isAttemptingSwitch = true;
melon = MelonCoroutines.Start(AttemptPlatformSwitch()); melon = MelonCoroutines.Start(AttemptPlatformSwitch());
timedSwitch = Time.time + 10f;
}
if (isAttemptingSwitch && Time.time > timedSwitch)
{
isAttemptingSwitch = false;
MelonCoroutines.Stop(melon);
MelonLogger.Msg("Timer exceeded. Something is wrong.");
} }
} }
@ -38,7 +48,7 @@ public class DesktopVRSwitch : MelonMod
//we are waiting a frame in LoadDevice after LoadDeviceByName() //we are waiting a frame in LoadDevice after LoadDeviceByName()
yield return new WaitForEndOfFrame(); yield return new WaitForEndOfFrame();
CloseMenuElements(); CloseMenuElements(toVR);
yield return new WaitForEndOfFrame(); yield return new WaitForEndOfFrame();
@ -109,12 +119,13 @@ public class DesktopVRSwitch : MelonMod
} }
// shouldn't be that important, right? // shouldn't be that important, right?
private static void CloseMenuElements() private static void CloseMenuElements(bool isVR)
{ {
if (ViewManager.Instance != null) if (ViewManager.Instance != null)
{ {
MelonLogger.Msg("Closed MainMenu Instance."); MelonLogger.Msg("Closed MainMenu Instance.");
ViewManager.Instance.UiStateToggle(false); ViewManager.Instance.UiStateToggle(false);
ViewManager.Instance.VrInputChanged(isVR);
} }
else else
{ {
@ -198,6 +209,7 @@ public class DesktopVRSwitch : MelonMod
//i think the VR offset depends on headset... cant find where in the games code it is though so could be wrong... ? //i think the VR offset depends on headset... cant find where in the games code it is though so could be wrong... ?
CohtmlHud.Instance.gameObject.transform.localPosition = isVR ? new Vector3(-0.2f, -0.391f, 1.244f) : new Vector3(0f, 0f, 1.3f); CohtmlHud.Instance.gameObject.transform.localPosition = isVR ? new Vector3(-0.2f, -0.391f, 1.244f) : new Vector3(0f, 0f, 1.3f);
CohtmlHud.Instance.gameObject.transform.localRotation = Quaternion.Euler( new Vector3(0f, 180f, 0f) );
} }
//hopefully whatever rework was hinted at doesn't immediatly break this //hopefully whatever rework was hinted at doesn't immediatly break this