Browse Source

Add setting near clip plane

Near clip plane only gets updated when there are maids loaded in
CharacterMgr but given that maids past 16 are outside of the bounds, the
near clip lane does not get updated.
habeebweeb 4 years ago
parent
commit
38617c2e93

+ 24 - 2
COM3D2.MeidoPhotoStudio.Plugin/MeidoPhotoStudio/MeidoPhotoStudio.cs

@@ -9,6 +9,7 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
     [BepInPlugin(pluginGuid, pluginName, pluginVersion)]
     [BepInPlugin(pluginGuid, pluginName, pluginVersion)]
     public class MeidoPhotoStudio : BaseUnityPlugin
     public class MeidoPhotoStudio : BaseUnityPlugin
     {
     {
+        private static CameraMain mainCamera = GameMain.Instance.MainCamera;
         private const string pluginGuid = "com.habeebweeb.com3d2.meidophotostudio";
         private const string pluginGuid = "com.habeebweeb.com3d2.meidophotostudio";
         public const string pluginName = "MeidoPhotoStudio";
         public const string pluginName = "MeidoPhotoStudio";
         public const string pluginVersion = "0.0.0";
         public const string pluginVersion = "0.0.0";
@@ -126,6 +127,7 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
         private void OnSceneLoaded(Scene scene, LoadSceneMode sceneMode)
         private void OnSceneLoaded(Scene scene, LoadSceneMode sceneMode)
         {
         {
             currentScene = (Constants.Scene)scene.buildIndex;
             currentScene = (Constants.Scene)scene.buildIndex;
+            ResetCalcNearClip();
         }
         }
 
 
         private void Initialize()
         private void Initialize()
@@ -162,8 +164,11 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
         private void Activate()
         private void Activate()
         {
         {
             if (!initialized) Initialize();
             if (!initialized) Initialize();
+
+            SetNearClipPlane();
+
             uiActive = true;
             uiActive = true;
-            isActive = true;
+            active = true;
 
 
             meidoManager.Activate();
             meidoManager.Activate();
             environmentManager.Activate();
             environmentManager.Activate();
@@ -181,8 +186,10 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
         {
         {
             if (meidoManager.Busy) return;
             if (meidoManager.Busy) return;
 
 
+            ResetCalcNearClip();
+
             uiActive = false;
             uiActive = false;
-            isActive = false;
+            active = false;
 
 
             meidoManager.Deactivate();
             meidoManager.Deactivate();
             environmentManager.Deactivate();
             environmentManager.Deactivate();
@@ -195,5 +202,20 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
             GameObject dailyPanel = GameObject.Find("UI Root")?.transform.Find("DailyPanel")?.gameObject;
             GameObject dailyPanel = GameObject.Find("UI Root")?.transform.Find("DailyPanel")?.gameObject;
             dailyPanel?.SetActive(true);
             dailyPanel?.SetActive(true);
         }
         }
+
+        private void SetNearClipPlane()
+        {
+            mainCamera.StopAllCoroutines();
+            mainCamera.m_bCalcNearClip = false;
+            mainCamera.camera.nearClipPlane = 0.01f;
+        }
+
+        private void ResetCalcNearClip()
+        {
+            if (mainCamera.m_bCalcNearClip) return;
+            mainCamera.StopAllCoroutines();
+            mainCamera.m_bCalcNearClip = true;
+            mainCamera.Start();
+        }
     }
     }
 }
 }