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"); } } /// /// AOT向けにデシリアライザを生成する /// [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); } } } }