Browse Source

Serialize alternate breast rotation

First commit that bumps scene version yay!

Should have been there to begin with but it was an oversight.

Closes #38
habeebweeb 3 years ago
parent
commit
ba880a5beb

+ 1 - 1
src/MeidoPhotoStudio.Plugin/MeidoPhotoStudio.cs

@@ -20,7 +20,7 @@ namespace MeidoPhotoStudio.Plugin
         public const string pluginName = "MeidoPhotoStudio";
         public const string pluginVersion = "1.0.0";
         public const string pluginSubVersion = "beta.3";
-        public const short sceneVersion = 1;
+        public const short sceneVersion = 2;
         public const int kankyoMagic = -765;
         public static readonly string pluginString = $"{pluginName} {pluginVersion}";
         public static bool EditMode => currentScene == Constants.Scene.Edit;

+ 23 - 2
src/MeidoPhotoStudio.Plugin/Serialization/Serializers/MeidoSerializer.cs

@@ -10,7 +10,7 @@ namespace MeidoPhotoStudio.Plugin
     {
         private const short version = 1;
         private const short headVersion = 1;
-        private const short bodyVersion = 1;
+        private const short bodyVersion = 2;
         private const short clothingVersion = 1;
 
         private static SimpleSerializer<PoseInfo> PoseInfoSerializer => Serialization.GetSimple<PoseInfo>();
@@ -104,6 +104,13 @@ namespace MeidoPhotoStudio.Plugin
             writer.Write(poseBuffer);
 
             PoseInfoSerializer.Serialize(meido.CachedPose, writer);
+
+            // v2 start
+            // sub mune rotation
+            var body = meido.Body;
+            writer.WriteQuaternion(body.GetBone("Mune_L_sub").localRotation);
+            writer.WriteQuaternion(body.GetBone("Mune_R_sub").localRotation);
+            // v2 end
         }
 
         private static void SerializeClothing(Meido meido, BinaryWriter writer)
@@ -194,7 +201,7 @@ namespace MeidoPhotoStudio.Plugin
 
         private static void DeserializeBody(Meido meido, BinaryReader reader, SceneMetadata metadata)
         {
-            _ = reader.ReadVersion();
+            var version = reader.ReadVersion();
 
             var muneSetting = new KeyValuePair<bool, bool>(true, true);
             if (metadata.MMConverted) meido.IKManager.Deserialize(reader);
@@ -210,6 +217,20 @@ namespace MeidoPhotoStudio.Plugin
             
             meido.SetMune(!muneSetting.Key, true);
             meido.SetMune(!muneSetting.Value);
+
+            if (version >= 2)
+            {
+                var muneLSubRotation = reader.ReadQuaternion();
+                var muneSubRRotation = reader.ReadQuaternion();
+
+                var body = meido.Body;
+
+                if (muneSetting.Key)
+                    body.GetBone("Mune_L_sub").localRotation = muneLSubRotation;
+
+                if (muneSetting.Value)
+                    body.GetBone("Mune_R_sub").localRotation = muneSubRRotation;
+            }
         }
 
         private static void DeserializeClothing(Meido meido, BinaryReader reader, SceneMetadata metadata)