From 730a085850d573b90518132174ebdc9006c431d5 Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidOnSteam@users.noreply.github.com> Date: Tue, 20 Jun 2023 18:35:05 -0500 Subject: [PATCH] [DesktopVRSwitch] Add TryCatch to patches to appease Kafe. --- DesktopVRSwitch/HarmonyPatches.cs | 80 ++++++++++++++++++++++++------- 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/DesktopVRSwitch/HarmonyPatches.cs b/DesktopVRSwitch/HarmonyPatches.cs index b1b840f..350b930 100644 --- a/DesktopVRSwitch/HarmonyPatches.cs +++ b/DesktopVRSwitch/HarmonyPatches.cs @@ -18,7 +18,15 @@ class CheckVRPatches [HarmonyPatch(typeof(CheckVR), nameof(CheckVR.Start))] static void Postfix_CheckVR_Start(ref CheckVR __instance) { - __instance.gameObject.AddComponent(); + try + { + __instance.gameObject.AddComponent(); + } + catch (Exception e) + { + DesktopVRSwitch.Logger.Error($"Error during the patched method {nameof(Postfix_CheckVR_Start)}"); + DesktopVRSwitch.Logger.Error(e); + } } } @@ -28,18 +36,34 @@ class IKSystemPatches [HarmonyPatch(typeof(TrackingPoint), nameof(TrackingPoint.Initialize))] static void Postfix_TrackingPoint_Initialize(ref TrackingPoint __instance) { - __instance.referenceTransform.localScale = Vector3.one; + try + { + __instance.referenceTransform.localScale = Vector3.one; + } + catch (Exception e) + { + DesktopVRSwitch.Logger.Error($"Error during the patched method {nameof(Postfix_TrackingPoint_Initialize)}"); + DesktopVRSwitch.Logger.Error(e); + } } [HarmonyPostfix] //lazy fix so device indecies can change properly [HarmonyPatch(typeof(SteamVRTrackingModule), nameof(SteamVRTrackingModule.ModuleDestroy))] static void Postfix_SteamVRTrackingModule_ModuleDestroy(ref SteamVRTrackingModule __instance) { - for (int i = 0; i < __instance.TrackingPoints.Count; i++) + try { - UnityEngine.Object.Destroy(__instance.TrackingPoints[i].referenceGameObject); + for (int i = 0; i < __instance.TrackingPoints.Count; i++) + { + UnityEngine.Object.Destroy(__instance.TrackingPoints[i].referenceGameObject); + } + __instance.TrackingPoints.Clear(); + } + catch (Exception e) + { + DesktopVRSwitch.Logger.Error($"Error during the patched method {nameof(Postfix_SteamVRTrackingModule_ModuleDestroy)}"); + DesktopVRSwitch.Logger.Error(e); } - __instance.TrackingPoints.Clear(); } } @@ -50,7 +74,15 @@ class CVRWorldPatches [HarmonyPatch(typeof(CVRWorld), nameof(CVRWorld.CopyRefCamValues))] static void Postfix_CVRWorld_HandleCamValues() { - ReferenceCameraPatch.OnWorldLoad(); + try + { + ReferenceCameraPatch.OnWorldLoad(); + } + catch (Exception e) + { + DesktopVRSwitch.Logger.Error($"Error during the patched method {nameof(Postfix_CVRWorld_HandleCamValues)}"); + DesktopVRSwitch.Logger.Error(e); + } } } @@ -60,7 +92,15 @@ class CameraFacingObjectPatches [HarmonyPatch(typeof(CameraFacingObject), nameof(CameraFacingObject.Start))] static void Postfix_CameraFacingObject_Start(ref CameraFacingObject __instance) { - __instance.gameObject.AddComponent(); + try + { + __instance.gameObject.AddComponent(); + } + catch (Exception e) + { + DesktopVRSwitch.Logger.Error($"Error during the patched method {nameof(Postfix_CameraFacingObject_Start)}"); + DesktopVRSwitch.Logger.Error(e); + } } } @@ -70,16 +110,24 @@ class CVRPickupObjectPatches [HarmonyPatch(typeof(CVRPickupObject), nameof(CVRPickupObject.Start))] static void Prefix_CVRPickupObject_Start(ref CVRPickupObject __instance) { - if (__instance.gripType == CVRPickupObject.GripType.Free) - return; - - Transform vrOrigin = __instance.gripOrigin; - Transform desktopOrigin = __instance.gripOrigin.Find("[Desktop]"); - if (vrOrigin != null && desktopOrigin != null) + try { - var tracker = __instance.gameObject.AddComponent(); - tracker._pickupObject = __instance; - tracker._storedGripOrigin = (!MetaPort.Instance.isUsingVr ? vrOrigin : desktopOrigin); + if (__instance.gripType == CVRPickupObject.GripType.Free) + return; + + Transform vrOrigin = __instance.gripOrigin; + Transform desktopOrigin = __instance.gripOrigin.Find("[Desktop]"); + if (vrOrigin != null && desktopOrigin != null) + { + var tracker = __instance.gameObject.AddComponent(); + tracker._pickupObject = __instance; + tracker._storedGripOrigin = (!MetaPort.Instance.isUsingVr ? vrOrigin : desktopOrigin); + } + } + catch (Exception e) + { + DesktopVRSwitch.Logger.Error($"Error during the patched method {nameof(Prefix_CVRPickupObject_Start)}"); + DesktopVRSwitch.Logger.Error(e); } } }