diff options
Diffstat (limited to 'Assets/ThirdParty/VRM/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs')
-rw-r--r-- | Assets/ThirdParty/VRM/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs | 61 |
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); + } + } + } +} |