Parcourir la source

Fix bug where returning to the menu crashes game

habeebweeb il y a 4 ans
Parent
commit
f993079f82

+ 2 - 2
COM3D2.MeidoPhotoStudio.Plugin/MeidoPhotoStudio/Managers/MeidoManager.cs

@@ -93,10 +93,10 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
         {
             foreach (Meido meido in ActiveMeidoList)
             {
-                meido.Unload();
                 meido.SelectMeido -= ChangeMeido;
                 meido.BodyLoad -= EndCallMeidos;
                 meido.AnimeChange -= OnAnimeChangeEvent;
+                meido.Unload();
             }
             ActiveMeidoList.Clear();
         }
@@ -105,10 +105,10 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
         {
             foreach (Meido meido in meidos)
             {
-                meido.Deactivate();
                 meido.SelectMeido -= ChangeMeido;
                 meido.BodyLoad -= EndCallMeidos;
                 meido.AnimeChange -= OnAnimeChangeEvent;
+                meido.Deactivate();
             }
             ActiveMeidoList.Clear();
         }

+ 5 - 4
COM3D2.MeidoPhotoStudio.Plugin/MeidoPhotoStudio/Meido/Meido.cs

@@ -141,13 +141,10 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
         {
             Unload();
             dragPointManager?.Destroy();
-            this.IsIK = false;
-            this.IsStop = false;
-            this.IsBone = false;
             Maid.SetPos(Vector3.zero);
             Maid.SetRot(Vector3.zero);
             Maid.SetPosOffset(Vector3.zero);
-            Maid.body0?.SetBoneHitHeightY(0f);
+            Maid.body0.SetBoneHitHeightY(0f);
 
             Maid.Visible = false;
             Maid.ActiveSlotNo = -1;
@@ -162,6 +159,7 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
 
         public void SetPose(string pose)
         {
+            if (!Maid.body0.isLoadedBody) return;
             if (pose.StartsWith(Constants.customPosePath))
             {
                 SetPoseCustom(pose);
@@ -195,10 +193,13 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
 
         public void SetPoseCustom(string path)
         {
+            if (!Maid.body0.isLoadedBody) return;
             byte[] bytes = File.ReadAllBytes(path);
             string hash = Path.GetFileName(path).GetHashCode().ToString();
             Maid.body0.CrossFade(hash, bytes, false, true, false, 0f);
             Maid.SetAutoTwistAll(true);
+            Maid.body0.MuneYureL(1f);
+            Maid.body0.MuneYureR(1f);
         }
 
         public void SetFaceBlend(string blendValue)