From a7b82fc8973957175ddfa4f86a0200757e684d6f Mon Sep 17 00:00:00 2001 From: ManlyMarco <39247311+ManlyMarco@users.noreply.github.com> Date: Thu, 16 Mar 2023 02:41:57 +0100 Subject: [PATCH] [RealPOV][KK/KKS] Fix crashing after leaving H scene with POV enabled --- src/RealPOV.Core.Koikatu/RealPOV.cs | 22 +++++++++++++--------- src/RealPOV.Core/RealPOVCore.cs | 13 +++++++++---- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/RealPOV.Core.Koikatu/RealPOV.cs b/src/RealPOV.Core.Koikatu/RealPOV.cs index 9de995d..bb882ac 100644 --- a/src/RealPOV.Core.Koikatu/RealPOV.cs +++ b/src/RealPOV.Core.Koikatu/RealPOV.cs @@ -18,7 +18,7 @@ namespace RealPOV.Koikatu [BepInDependency(KKAPI.KoikatuAPI.GUID)] public class RealPOV : RealPOVCore { - public const string Version = "1.3.1." + BuildNumber.Version; + public const string Version = "1.3.2." + BuildNumber.Version; private ConfigEntry HideHead { get; set; } @@ -107,7 +107,7 @@ Queue CreateQueue() { return new Queue(FindObjectsOfType()); } - + ChaControl GetCurrentChara() { for(int i = 0; i < charaQueue.Count; i++) @@ -149,7 +149,7 @@ ChaControl GetCurrentChara() GameCamera = Camera.main; var cc = (MonoBehaviour)GameCamera.GetComponent() ?? GameCamera.GetComponent(); if(cc) cc.enabled = false; - + // Fix depth of field being completely out of focus var depthOfField = GameCamera.GetComponent(); dofOrigSize = depthOfField.focalSize; @@ -190,16 +190,20 @@ protected override void DisablePov() currentChara = null; currentCharaId = -1; - var cc = (MonoBehaviour)GameCamera.GetComponent() ?? GameCamera.GetComponent(); - if(cc) cc.enabled = true; + if(GameCamera != null) + { + var cc = (MonoBehaviour)GameCamera.GetComponent() ?? GameCamera.GetComponent(); + if(cc) cc.enabled = true; - var depthOfField = GameCamera.GetComponent(); - depthOfField.focalSize = dofOrigSize; - depthOfField.aperture = dofOrigAperature; + var depthOfField = GameCamera.GetComponent(); + depthOfField.focalSize = dofOrigSize; + depthOfField.aperture = dofOrigAperature; + } base.DisablePov(); - GameCamera.gameObject.layer = backupLayer; + if(GameCamera != null) + GameCamera.gameObject.layer = backupLayer; } [HarmonyPrefix, HarmonyPatch(typeof(NeckLookControllerVer2), nameof(NeckLookControllerVer2.LateUpdate))] diff --git a/src/RealPOV.Core/RealPOVCore.cs b/src/RealPOV.Core/RealPOVCore.cs index e69a576..7608619 100644 --- a/src/RealPOV.Core/RealPOVCore.cs +++ b/src/RealPOV.Core/RealPOVCore.cs @@ -132,10 +132,15 @@ protected virtual void DisablePov() { currentCharaGo = null; POVEnabled = false; - GameCamera.fieldOfView = backupFOV; - GameCamera.nearClipPlane = backupNearClip; - if(GameCursor.IsInstance()) - GameCursor.Instance.SetCursorLock(false); + + if(GameCamera != null) + { + GameCamera.fieldOfView = backupFOV; + GameCamera.nearClipPlane = backupNearClip; + + if(GameCursor.IsInstance()) + GameCursor.Instance.SetCursorLock(false); + } } } }