summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/VRM/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/ThirdParty/VRM/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs')
-rw-r--r--Assets/ThirdParty/VRM/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs61
1 files changed, 61 insertions, 0 deletions
diff --git a/Assets/ThirdParty/VRM/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs b/Assets/ThirdParty/VRM/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs
new file mode 100644
index 00000000..c6bb8bba
--- /dev/null
+++ b/Assets/ThirdParty/VRM/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs
@@ -0,0 +1,61 @@
+using System.IO;
+using System.Reflection;
+using System.Text;
+using UnityEditor;
+using UnityEngine;
+
+namespace UniGLTF
+{
+ public static class DeserializerGenerator
+ {
+ public const BindingFlags FIELD_FLAGS = BindingFlags.Instance | BindingFlags.Public;
+
+ static string OutPath
+ {
+ get
+ {
+ return Path.Combine(UnityEngine.Application.dataPath,
+ "VRM/UniGLTF/Scripts/IO/GltfDeserializer.g.cs");
+ }
+ }
+
+ /// <summary>
+ /// AOT向けにデシリアライザを生成する
+ /// </summary>
+ [MenuItem(VRM.VRMVersion.MENU + "/Generate Deserializer")]
+ static void GenerateSerializer()
+ {
+ var info = new ObjectSerialization(typeof(glTF), "gltf");
+ Debug.Log(info);
+
+ using (var s = File.Open(OutPath, FileMode.Create))
+ using (var w = new StreamWriter(s, Encoding.UTF8))
+ {
+ // header
+ w.Write(@"
+using UniJSON;
+using System;
+using System.Collections.Generic;
+using VRM;
+using UnityEngine;
+
+namespace UniGLTF {
+
+public static class GltfDeserializer
+{
+
+");
+
+ info.GenerateDeserializer(w, "Deserialize");
+
+ // footer
+ w.Write(@"
+} // GltfDeserializer
+} // UniGLTF
+");
+
+ Debug.LogFormat("write: {0}", OutPath);
+ }
+ }
+ }
+}