Kaynağa Gözat

Add additional types for binary reader/writer

Add reading/writing Quaternion, Vector3 and Colour from stream
habeebweeb 4 yıl önce
ebeveyn
işleme
9d12b212b4

+ 8 - 12
COM3D2.MeidoPhotoStudio.Plugin/MeidoPhotoStudio/Meido/MeidoDragPointManager.cs

@@ -241,11 +241,7 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
                 {
                     for (int i = 0; i < joints - 1; i++)
                     {
-                        Quaternion localRotation = BoneTransform[bone + i].localRotation;
-                        binaryWriter.Write(localRotation.x);
-                        binaryWriter.Write(localRotation.y);
-                        binaryWriter.Write(localRotation.z);
-                        binaryWriter.Write(localRotation.w);
+                        binaryWriter.WriteQuaternion(BoneTransform[bone + i].localRotation);
                     }
                 }
                 buf = memoryStream.ToArray();
@@ -267,13 +263,13 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
                 {
                     for (int i = 0; i < joints - 1; i++)
                     {
-                        Vector4 vec4;
-                        vec4.x = binaryReader.ReadSingle() * mirror;
-                        vec4.y = binaryReader.ReadSingle() * mirror;
-                        vec4.z = binaryReader.ReadSingle();
-                        vec4.w = binaryReader.ReadSingle();
-
-                        BoneTransform[bone + i].localRotation = new Quaternion(vec4.x, vec4.y, vec4.z, vec4.w);
+                        BoneTransform[bone + i].localRotation = new Quaternion
+                        (
+                            binaryReader.ReadSingle() * mirror,
+                            binaryReader.ReadSingle() * mirror,
+                            binaryReader.ReadSingle(),
+                            binaryReader.ReadSingle()
+                        );
                     }
                 }
             }

+ 0 - 13
COM3D2.MeidoPhotoStudio.Plugin/MeidoPhotoStudio/MenuFileCache.cs

@@ -8,19 +8,6 @@ using System.Collections.Generic;
 namespace COM3D2.MeidoPhotoStudio.Plugin
 {
     using static MenuFileUtility;
-    internal static class BinaryExtensions
-    {
-        public static string ReadNullableString(this BinaryReader binaryReader)
-        {
-            return binaryReader.ReadBoolean() ? binaryReader.ReadString() : null;
-        }
-
-        public static void WriteNullableString(this BinaryWriter binaryWriter, string str)
-        {
-            binaryWriter.Write(str != null);
-            if (str != null) binaryWriter.Write(str);
-        }
-    }
 
     internal class MenuFileCache
     {

+ 63 - 0
COM3D2.MeidoPhotoStudio.Plugin/MeidoPhotoStudio/Utility.cs

@@ -146,4 +146,67 @@ namespace COM3D2.MeidoPhotoStudio.Plugin
             return hash;
         }
     }
+
+    internal static class BinaryExtensions
+    {
+        public static string ReadNullableString(this BinaryReader binaryReader)
+        {
+            return binaryReader.ReadBoolean() ? binaryReader.ReadString() : null;
+        }
+
+        public static void WriteNullableString(this BinaryWriter binaryWriter, string str)
+        {
+            binaryWriter.Write(str != null);
+            if (str != null) binaryWriter.Write(str);
+        }
+
+        public static void WriteVector3(this BinaryWriter binaryWriter, UnityEngine.Vector3 vector3)
+        {
+            binaryWriter.Write(vector3.x);
+            binaryWriter.Write(vector3.y);
+            binaryWriter.Write(vector3.z);
+        }
+
+        public static UnityEngine.Vector3 ReadVector3(this BinaryReader binaryReader)
+        {
+            return new UnityEngine.Vector3(
+                binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle()
+            );
+        }
+
+        public static void WriteQuaternion(this BinaryWriter binaryWriter, UnityEngine.Quaternion quaternion)
+        {
+            binaryWriter.Write(quaternion.x);
+            binaryWriter.Write(quaternion.y);
+            binaryWriter.Write(quaternion.z);
+            binaryWriter.Write(quaternion.w);
+        }
+
+        public static UnityEngine.Quaternion ReadQuaternion(this BinaryReader binaryReader)
+        {
+            return new UnityEngine.Quaternion
+            (
+                binaryReader.ReadSingle(), binaryReader.ReadSingle(),
+                binaryReader.ReadSingle(), binaryReader.ReadSingle()
+            );
+        }
+
+        public static void WriteColour(this BinaryWriter binaryWriter, UnityEngine.Color colour)
+        {
+            binaryWriter.Write(colour.r);
+            binaryWriter.Write(colour.g);
+            binaryWriter.Write(colour.b);
+            binaryWriter.Write(colour.a);
+        }
+
+        public static UnityEngine.Color ReadColour(this BinaryReader binaryReader)
+        {
+            return new Color(
+                binaryReader.ReadSingle(),
+                binaryReader.ReadSingle(),
+                binaryReader.ReadSingle(),
+                binaryReader.ReadSingle()
+            );
+        }
+    }
 }