mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-05-09 12:11:35 -05:00
VRMSerializerGenerator
This commit is contained in:
parent
fe2df8b11e
commit
07729d8f9c
|
|
@ -81,7 +81,6 @@ namespace UniGLTF
|
|||
{"gltf/meshes[]/primitives[]/attributes/JOINTS_0", "if(value.JOINTS_0!=-1)"},
|
||||
{"gltf/meshes[]/primitives[]/attributes/WEIGHTS_0", "if(value.WEIGHTS_0!=-1)"},
|
||||
|
||||
{"gltf/meshes[]/primitives[]/extras", "if(value.extras!=null && value.extras.targetNames!=null && value.extras.targetNames.Count>0)"},
|
||||
{"gltf/meshes[]/weights", "if(value.weights!=null && value.weights.Length>0)" },
|
||||
{"gltf/materials", "if(value.materials!=null && value.materials.Count>0)" },
|
||||
{"gltf/materials[]/alphaCutoff", "if(value.alphaMode == \"MASK\")" },
|
||||
|
|
@ -154,14 +153,16 @@ namespace UniGLTF {
|
|||
}
|
||||
m_used.Add(t);
|
||||
|
||||
//
|
||||
// primitive
|
||||
//
|
||||
try
|
||||
{
|
||||
var mi = typeof(IFormatter).GetMethod("Value", new Type[] { t });
|
||||
var mi = typeof(JsonFormatter).GetMethod("Value", new Type[] { t });
|
||||
if (mi != null)
|
||||
{
|
||||
m_w.Write(@"
|
||||
public static void GenSerialize(this IFormatter f, $0 value)
|
||||
public static void GenSerialize(this JsonFormatter f, $0 value)
|
||||
{
|
||||
f.Value(value);
|
||||
}
|
||||
|
|
@ -177,8 +178,11 @@ namespace UniGLTF {
|
|||
|
||||
if (t.IsEnum)
|
||||
{
|
||||
//
|
||||
// enum
|
||||
//
|
||||
m_w.Write(@"
|
||||
public static void GenSerialize(this IFormatter f, $0 value)
|
||||
public static void GenSerialize(this JsonFormatter f, $0 value)
|
||||
{
|
||||
f.Value((int)value);
|
||||
}
|
||||
|
|
@ -189,7 +193,7 @@ namespace UniGLTF {
|
|||
var et = t.GetElementType();
|
||||
m_w.Write(@"
|
||||
/// $1
|
||||
public static void GenSerialize(this IFormatter f, $0[] value)
|
||||
public static void GenSerialize(this JsonFormatter f, $0[] value)
|
||||
{
|
||||
f.BeginList(value.Length);
|
||||
foreach (var x in value)
|
||||
|
|
@ -208,10 +212,13 @@ namespace UniGLTF {
|
|||
{
|
||||
if (t.GetGenericTypeDefinition() == typeof(List<>))
|
||||
{
|
||||
//
|
||||
// array
|
||||
//
|
||||
var et = t.GetGenericArguments()[0];
|
||||
m_w.Write(@"
|
||||
/// $1
|
||||
public static void GenSerialize(this IFormatter f, List<$0> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<$0> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -228,10 +235,13 @@ namespace UniGLTF {
|
|||
else if (t.GetGenericTypeDefinition() == typeof(Dictionary<,>)
|
||||
&& t.GetGenericArguments()[0] == typeof(string))
|
||||
{
|
||||
//
|
||||
// object
|
||||
//
|
||||
var et = t.GetGenericArguments()[1];
|
||||
m_w.Write(@"
|
||||
/// $1
|
||||
public static void GenSerialize(this IFormatter f, Dictionary<string, $0> value)
|
||||
public static void GenSerialize(this JsonFormatter f, Dictionary<string, $0> value)
|
||||
{
|
||||
f.BeginMap(value.Count);
|
||||
foreach (var kv in value)
|
||||
|
|
@ -252,13 +262,20 @@ namespace UniGLTF {
|
|||
Debug.LogWarningFormat("unknown type: {0}", t);
|
||||
}
|
||||
}
|
||||
else if (t == typeof(glTFExtension))
|
||||
{
|
||||
// skip
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// reflection
|
||||
//
|
||||
Debug.LogFormat("{0}({1})", path, t.Name);
|
||||
|
||||
m_w.Write(@"
|
||||
/// $1
|
||||
public static void GenSerialize(this IFormatter f, $0 value)
|
||||
public static void GenSerialize(this JsonFormatter f, $0 value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
"
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ namespace UniGLTF
|
|||
|
||||
f.EndMap();
|
||||
|
||||
info.extensions.Serialized.Add(ExtensionName, f.GetStore().ToString());
|
||||
info.extensions.Serialized.Add(ExtensionName, f.GetStore().Bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using UniJSON;
|
||||
|
||||
namespace UniGLTF
|
||||
|
|
@ -8,16 +10,19 @@ namespace UniGLTF
|
|||
/// </summary>
|
||||
public class glTFExtension
|
||||
{
|
||||
// NO BOM
|
||||
static Encoding Utf8 = new UTF8Encoding(false);
|
||||
|
||||
#region for Export
|
||||
public readonly Dictionary<string, string> Serialized;
|
||||
public readonly Dictionary<string, ArraySegment<byte>> Serialized;
|
||||
public glTFExtension()
|
||||
{
|
||||
Serialized = new Dictionary<string, string>();
|
||||
Serialized = new Dictionary<string, ArraySegment<byte>>();
|
||||
}
|
||||
public static glTFExtension Create(string key, string serialized)
|
||||
{
|
||||
var e = new glTFExtension();
|
||||
e.Serialized.Add(key, serialized);
|
||||
e.Serialized.Add(key, new ArraySegment<byte>(Utf8.GetBytes(serialized)));
|
||||
return e;
|
||||
}
|
||||
#endregion
|
||||
|
|
@ -41,4 +46,19 @@ namespace UniGLTF
|
|||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
public static class GltfExtensionFormatterExtensions
|
||||
{
|
||||
public static void GenSerialize(this JsonFormatter f, glTFExtension v)
|
||||
{
|
||||
//CommaCheck();
|
||||
f.BeginMap();
|
||||
foreach (var kv in v.Serialized)
|
||||
{
|
||||
f.Key(kv.Key);
|
||||
f.Raw(kv.Value);
|
||||
}
|
||||
f.EndMap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ namespace UniGLTF
|
|||
f.Value(n);
|
||||
}
|
||||
f.EndList();
|
||||
var targetNamesJson = f.GetStore().ToString();
|
||||
var targetNamesJson = f.GetStore().Bytes;
|
||||
|
||||
if (gltfMesh.extras == null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -381,6 +381,7 @@ namespace UniGLTF
|
|||
{
|
||||
var f = new JsonFormatter();
|
||||
f.GenSerialize(this);
|
||||
|
||||
var json = f.ToString().ParseAsJson().ToString(" ");
|
||||
|
||||
RemoveUnusedExtensions(json);
|
||||
|
|
|
|||
|
|
@ -10,13 +10,9 @@ namespace UniGLTF {
|
|||
static public class IFormatterExtensionsGltf
|
||||
{
|
||||
|
||||
public static void GenSerialize(this IFormatter f, glTF_VRM_extensions value)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// gltf
|
||||
public static void GenSerialize(this IFormatter f, glTF value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTF value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -105,11 +101,21 @@ namespace UniGLTF {
|
|||
f.Key("extensionsRequired"); f.GenSerialize(value.extensionsRequired);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/asset
|
||||
public static void GenSerialize(this IFormatter f, glTFAssets value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFAssets value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -133,16 +139,26 @@ namespace UniGLTF {
|
|||
f.Key("minVersion"); f.GenSerialize(value.minVersion);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this IFormatter f, String value)
|
||||
public static void GenSerialize(this JsonFormatter f, String value)
|
||||
{
|
||||
f.Value(value);
|
||||
}
|
||||
|
||||
/// gltf/buffers
|
||||
public static void GenSerialize(this IFormatter f, List<glTFBuffer> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFBuffer> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -153,7 +169,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/buffers[]
|
||||
public static void GenSerialize(this IFormatter f, glTFBuffer value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFBuffer value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -167,6 +183,16 @@ namespace UniGLTF {
|
|||
f.Key("byteLength"); f.GenSerialize(value.byteLength);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
if(value.name!=null)
|
||||
{
|
||||
f.Key("name"); f.GenSerialize(value.name);
|
||||
|
|
@ -175,13 +201,13 @@ namespace UniGLTF {
|
|||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this IFormatter f, Int32 value)
|
||||
public static void GenSerialize(this JsonFormatter f, Int32 value)
|
||||
{
|
||||
f.Value(value);
|
||||
}
|
||||
|
||||
/// gltf/bufferViews
|
||||
public static void GenSerialize(this IFormatter f, List<glTFBufferView> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFBufferView> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -192,7 +218,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/bufferViews[]
|
||||
public static void GenSerialize(this IFormatter f, glTFBufferView value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFBufferView value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -216,6 +242,16 @@ namespace UniGLTF {
|
|||
f.Key("target"); f.GenSerialize(value.target);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
if(value.name!=null)
|
||||
{
|
||||
f.Key("name"); f.GenSerialize(value.name);
|
||||
|
|
@ -224,13 +260,13 @@ namespace UniGLTF {
|
|||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this IFormatter f, glBufferTarget value)
|
||||
public static void GenSerialize(this JsonFormatter f, glBufferTarget value)
|
||||
{
|
||||
f.Value((int)value);
|
||||
}
|
||||
|
||||
/// gltf/accessors
|
||||
public static void GenSerialize(this IFormatter f, List<glTFAccessor> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFAccessor> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -241,7 +277,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/accessors[]
|
||||
public static void GenSerialize(this IFormatter f, glTFAccessor value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFAccessor value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -295,16 +331,26 @@ namespace UniGLTF {
|
|||
f.Key("name"); f.GenSerialize(value.name);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this IFormatter f, glComponentType value)
|
||||
public static void GenSerialize(this JsonFormatter f, glComponentType value)
|
||||
{
|
||||
f.Value((int)value);
|
||||
}
|
||||
|
||||
/// gltf/accessors[]/max
|
||||
public static void GenSerialize(this IFormatter f, Single[] value)
|
||||
public static void GenSerialize(this JsonFormatter f, Single[] value)
|
||||
{
|
||||
f.BeginList(value.Length);
|
||||
foreach (var x in value)
|
||||
|
|
@ -314,18 +360,18 @@ namespace UniGLTF {
|
|||
f.EndList();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this IFormatter f, Single value)
|
||||
public static void GenSerialize(this JsonFormatter f, Single value)
|
||||
{
|
||||
f.Value(value);
|
||||
}
|
||||
|
||||
public static void GenSerialize(this IFormatter f, Boolean value)
|
||||
public static void GenSerialize(this JsonFormatter f, Boolean value)
|
||||
{
|
||||
f.Value(value);
|
||||
}
|
||||
|
||||
/// gltf/accessors[]/sparse
|
||||
public static void GenSerialize(this IFormatter f, glTFSparse value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFSparse value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -344,11 +390,21 @@ namespace UniGLTF {
|
|||
f.Key("values"); f.GenSerialize(value.values);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/accessors[]/sparse/indices
|
||||
public static void GenSerialize(this IFormatter f, glTFSparseIndices value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFSparseIndices value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -367,11 +423,21 @@ namespace UniGLTF {
|
|||
f.Key("componentType"); f.GenSerialize(value.componentType);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/accessors[]/sparse/values
|
||||
public static void GenSerialize(this IFormatter f, glTFSparseValues value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFSparseValues value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -385,11 +451,21 @@ namespace UniGLTF {
|
|||
f.Key("byteOffset"); f.GenSerialize(value.byteOffset);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/textures
|
||||
public static void GenSerialize(this IFormatter f, List<glTFTexture> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFTexture> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -400,7 +476,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/textures[]
|
||||
public static void GenSerialize(this IFormatter f, glTFTexture value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFTexture value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -414,6 +490,16 @@ namespace UniGLTF {
|
|||
f.Key("source"); f.GenSerialize(value.source);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
if(value.name!=null)
|
||||
{
|
||||
f.Key("name"); f.GenSerialize(value.name);
|
||||
|
|
@ -423,7 +509,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/samplers
|
||||
public static void GenSerialize(this IFormatter f, List<glTFTextureSampler> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFTextureSampler> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -434,7 +520,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/samplers[]
|
||||
public static void GenSerialize(this IFormatter f, glTFTextureSampler value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFTextureSampler value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -458,6 +544,16 @@ namespace UniGLTF {
|
|||
f.Key("wrapT"); f.GenSerialize(value.wrapT);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
if(value.name!=null)
|
||||
{
|
||||
f.Key("name"); f.GenSerialize(value.name);
|
||||
|
|
@ -466,18 +562,18 @@ namespace UniGLTF {
|
|||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this IFormatter f, glFilter value)
|
||||
public static void GenSerialize(this JsonFormatter f, glFilter value)
|
||||
{
|
||||
f.Value((int)value);
|
||||
}
|
||||
|
||||
public static void GenSerialize(this IFormatter f, glWrap value)
|
||||
public static void GenSerialize(this JsonFormatter f, glWrap value)
|
||||
{
|
||||
f.Value((int)value);
|
||||
}
|
||||
|
||||
/// gltf/images
|
||||
public static void GenSerialize(this IFormatter f, List<glTFImage> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFImage> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -488,7 +584,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/images[]
|
||||
public static void GenSerialize(this IFormatter f, glTFImage value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFImage value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -512,11 +608,21 @@ namespace UniGLTF {
|
|||
f.Key("mimeType"); f.GenSerialize(value.mimeType);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/materials
|
||||
public static void GenSerialize(this IFormatter f, List<glTFMaterial> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFMaterial> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -527,7 +633,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/materials[]
|
||||
public static void GenSerialize(this IFormatter f, glTFMaterial value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFMaterial value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -576,11 +682,21 @@ namespace UniGLTF {
|
|||
f.Key("doubleSided"); f.GenSerialize(value.doubleSided);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/materials[]/pbrMetallicRoughness
|
||||
public static void GenSerialize(this IFormatter f, glTFPbrMetallicRoughness value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFPbrMetallicRoughness value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -609,11 +725,21 @@ namespace UniGLTF {
|
|||
f.Key("roughnessFactor"); f.GenSerialize(value.roughnessFactor);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/materials[]/pbrMetallicRoughness/baseColorTexture
|
||||
public static void GenSerialize(this IFormatter f, glTFMaterialBaseColorTextureInfo value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFMaterialBaseColorTextureInfo value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -627,11 +753,21 @@ namespace UniGLTF {
|
|||
f.Key("texCoord"); f.GenSerialize(value.texCoord);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/materials[]/pbrMetallicRoughness/metallicRoughnessTexture
|
||||
public static void GenSerialize(this IFormatter f, glTFMaterialMetallicRoughnessTextureInfo value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFMaterialMetallicRoughnessTextureInfo value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -645,11 +781,21 @@ namespace UniGLTF {
|
|||
f.Key("texCoord"); f.GenSerialize(value.texCoord);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/materials[]/normalTexture
|
||||
public static void GenSerialize(this IFormatter f, glTFMaterialNormalTextureInfo value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFMaterialNormalTextureInfo value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -668,11 +814,21 @@ namespace UniGLTF {
|
|||
f.Key("texCoord"); f.GenSerialize(value.texCoord);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/materials[]/occlusionTexture
|
||||
public static void GenSerialize(this IFormatter f, glTFMaterialOcclusionTextureInfo value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFMaterialOcclusionTextureInfo value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -691,11 +847,21 @@ namespace UniGLTF {
|
|||
f.Key("texCoord"); f.GenSerialize(value.texCoord);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/materials[]/emissiveTexture
|
||||
public static void GenSerialize(this IFormatter f, glTFMaterialEmissiveTextureInfo value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFMaterialEmissiveTextureInfo value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -709,11 +875,21 @@ namespace UniGLTF {
|
|||
f.Key("texCoord"); f.GenSerialize(value.texCoord);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/meshes
|
||||
public static void GenSerialize(this IFormatter f, List<glTFMesh> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFMesh> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -724,7 +900,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/meshes[]
|
||||
public static void GenSerialize(this IFormatter f, glTFMesh value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFMesh value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -743,11 +919,21 @@ namespace UniGLTF {
|
|||
f.Key("weights"); f.GenSerialize(value.weights);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/meshes[]/primitives
|
||||
public static void GenSerialize(this IFormatter f, List<glTFPrimitives> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFPrimitives> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -758,7 +944,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/meshes[]/primitives[]
|
||||
public static void GenSerialize(this IFormatter f, glTFPrimitives value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFPrimitives value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -787,11 +973,21 @@ namespace UniGLTF {
|
|||
f.Key("targets"); f.GenSerialize(value.targets);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/meshes[]/primitives[]/attributes
|
||||
public static void GenSerialize(this IFormatter f, glTFAttributes value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFAttributes value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -839,7 +1035,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/meshes[]/primitives[]/targets
|
||||
public static void GenSerialize(this IFormatter f, List<gltfMorphTarget> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<gltfMorphTarget> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -850,7 +1046,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/meshes[]/primitives[]/targets[]
|
||||
public static void GenSerialize(this IFormatter f, gltfMorphTarget value)
|
||||
public static void GenSerialize(this JsonFormatter f, gltfMorphTarget value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -873,7 +1069,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/nodes
|
||||
public static void GenSerialize(this IFormatter f, List<glTFNode> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFNode> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -884,7 +1080,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/nodes[]
|
||||
public static void GenSerialize(this IFormatter f, glTFNode value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFNode value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -938,11 +1134,21 @@ namespace UniGLTF {
|
|||
f.Key("camera"); f.GenSerialize(value.camera);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/nodes[]/children
|
||||
public static void GenSerialize(this IFormatter f, Int32[] value)
|
||||
public static void GenSerialize(this JsonFormatter f, Int32[] value)
|
||||
{
|
||||
f.BeginList(value.Length);
|
||||
foreach (var x in value)
|
||||
|
|
@ -953,7 +1159,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/skins
|
||||
public static void GenSerialize(this IFormatter f, List<glTFSkin> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFSkin> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -964,7 +1170,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/skins[]
|
||||
public static void GenSerialize(this IFormatter f, glTFSkin value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFSkin value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -983,6 +1189,16 @@ namespace UniGLTF {
|
|||
f.Key("skeleton"); f.GenSerialize(value.skeleton);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
if(value.name!=null)
|
||||
{
|
||||
f.Key("name"); f.GenSerialize(value.name);
|
||||
|
|
@ -992,7 +1208,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/scenes
|
||||
public static void GenSerialize(this IFormatter f, List<gltfScene> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<gltfScene> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -1003,7 +1219,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/scenes[]
|
||||
public static void GenSerialize(this IFormatter f, gltfScene value)
|
||||
public static void GenSerialize(this JsonFormatter f, gltfScene value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -1012,6 +1228,16 @@ namespace UniGLTF {
|
|||
f.Key("nodes"); f.GenSerialize(value.nodes);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
if(value.name!=null)
|
||||
{
|
||||
f.Key("name"); f.GenSerialize(value.name);
|
||||
|
|
@ -1021,7 +1247,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/animations
|
||||
public static void GenSerialize(this IFormatter f, List<glTFAnimation> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFAnimation> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -1032,7 +1258,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/animations[]
|
||||
public static void GenSerialize(this IFormatter f, glTFAnimation value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFAnimation value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -1051,11 +1277,21 @@ namespace UniGLTF {
|
|||
f.Key("samplers"); f.GenSerialize(value.samplers);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/animations[]/channels
|
||||
public static void GenSerialize(this IFormatter f, List<glTFAnimationChannel> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFAnimationChannel> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -1066,7 +1302,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/animations[]/channels[]
|
||||
public static void GenSerialize(this IFormatter f, glTFAnimationChannel value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFAnimationChannel value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -1080,11 +1316,21 @@ namespace UniGLTF {
|
|||
f.Key("target"); f.GenSerialize(value.target);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/animations[]/channels[]/target
|
||||
public static void GenSerialize(this IFormatter f, glTFAnimationTarget value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFAnimationTarget value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -1098,11 +1344,21 @@ namespace UniGLTF {
|
|||
f.Key("path"); f.GenSerialize(value.path);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/animations[]/samplers
|
||||
public static void GenSerialize(this IFormatter f, List<glTFAnimationSampler> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFAnimationSampler> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -1113,7 +1369,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/animations[]/samplers[]
|
||||
public static void GenSerialize(this IFormatter f, glTFAnimationSampler value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFAnimationSampler value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -1132,11 +1388,21 @@ namespace UniGLTF {
|
|||
f.Key("output"); f.GenSerialize(value.output);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/cameras
|
||||
public static void GenSerialize(this IFormatter f, List<glTFCamera> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTFCamera> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
@ -1147,7 +1413,7 @@ namespace UniGLTF {
|
|||
}
|
||||
|
||||
/// gltf/cameras[]
|
||||
public static void GenSerialize(this IFormatter f, glTFCamera value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFCamera value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -1171,11 +1437,21 @@ namespace UniGLTF {
|
|||
f.Key("name"); f.GenSerialize(value.name);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/cameras[]/orthographic
|
||||
public static void GenSerialize(this IFormatter f, glTFOrthographic value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFOrthographic value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -1199,11 +1475,21 @@ namespace UniGLTF {
|
|||
f.Key("znear"); f.GenSerialize(value.znear);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// gltf/cameras[]/perspective
|
||||
public static void GenSerialize(this IFormatter f, glTFPerspective value)
|
||||
public static void GenSerialize(this JsonFormatter f, glTFPerspective value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
|
@ -1227,16 +1513,26 @@ namespace UniGLTF {
|
|||
f.Key("znear"); f.GenSerialize(value.znear);
|
||||
}
|
||||
|
||||
if(value.extensions!=null)
|
||||
{
|
||||
f.Key("extensions"); f.GenSerialize(value.extensions);
|
||||
}
|
||||
|
||||
if(value.extras!=null)
|
||||
{
|
||||
f.Key("extras"); f.GenSerialize(value.extras);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this IFormatter f, ProjectionType value)
|
||||
public static void GenSerialize(this JsonFormatter f, ProjectionType value)
|
||||
{
|
||||
f.Value((int)value);
|
||||
}
|
||||
|
||||
/// gltf/extensionsUsed
|
||||
public static void GenSerialize(this IFormatter f, List<String> value)
|
||||
public static void GenSerialize(this JsonFormatter f, List<String> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
|
|
|
|||
|
|
@ -266,6 +266,12 @@ namespace UniJSON
|
|||
m_w.Write('"');
|
||||
}
|
||||
|
||||
public void Raw(ArraySegment<Byte> x)
|
||||
{
|
||||
CommaCheck();
|
||||
m_w.Write(x);
|
||||
}
|
||||
|
||||
// ISO-8601: YYYY-MM-DD“T”hh:mm:ss“Z”
|
||||
public void Value(DateTimeOffset x)
|
||||
{
|
||||
|
|
|
|||
296
Assets/VRM/UniVRM/Editor/VRMSerializerGenerator.cs
Normal file
296
Assets/VRM/UniVRM/Editor/VRMSerializerGenerator.cs
Normal file
|
|
@ -0,0 +1,296 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using UniGLTF;
|
||||
using UniJSON;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace VRM
|
||||
{
|
||||
public static class VRMSerializerGenerator
|
||||
{
|
||||
const BindingFlags FIELD_FLAGS = BindingFlags.Instance | BindingFlags.Public;
|
||||
|
||||
static string OutPath
|
||||
{
|
||||
get
|
||||
{
|
||||
return Path.Combine(UnityEngine.Application.dataPath,
|
||||
"VRM/UniVRM/Scripts/Format/VRMFormatterExtensionsGltf.g.cs");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// AOT向けにシリアライザを生成する
|
||||
/// </summary>
|
||||
[MenuItem(VRM.VRMVersion.MENU + "/VRM: Generate Serializer")]
|
||||
static void GenerateSerializer()
|
||||
{
|
||||
var path = OutPath;
|
||||
|
||||
using (var g = new Generator(path))
|
||||
{
|
||||
var rootType = typeof(glTF_VRM_extensions);
|
||||
g.Generate(rootType, "vrm");
|
||||
}
|
||||
}
|
||||
|
||||
class Generator : IDisposable
|
||||
{
|
||||
String m_path;
|
||||
Stream m_s;
|
||||
StreamWriter m_w;
|
||||
|
||||
static Dictionary<string, string> s_snippets = new Dictionary<string, string>
|
||||
{
|
||||
{"vrm/humanoid/humanBones[]/axisLength", "if(value.axisLength>0)"},
|
||||
{"vrm/humanoid/humanBones[]/center", "if(value.center!=Vector3.zero)"},
|
||||
{"vrm/humanoid/humanBones[]/max", "if(value.max!=Vector3.zero)"},
|
||||
{"vrm/humanoid/humanBones[]/min", "if(value.min!=Vector3.zero)"},
|
||||
};
|
||||
|
||||
public Generator(string path)
|
||||
{
|
||||
m_path = path;
|
||||
m_s = File.Open(path, FileMode.Create);
|
||||
m_w = new StreamWriter(m_s, Encoding.UTF8);
|
||||
|
||||
// begin
|
||||
m_w.Write(@"
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UniJSON;
|
||||
using UnityEngine;
|
||||
using VRM;
|
||||
|
||||
namespace VRM {
|
||||
|
||||
static public class IFormatterExtensionsGltf
|
||||
{
|
||||
|
||||
");
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// end
|
||||
m_w.Write(@"
|
||||
} // class
|
||||
} // namespace
|
||||
");
|
||||
|
||||
m_w.Dispose();
|
||||
m_s.Dispose();
|
||||
UnityPath.FromFullpath(m_path).ImportAsset();
|
||||
}
|
||||
|
||||
HashSet<Type> m_used = new HashSet<Type>
|
||||
{
|
||||
typeof(object),
|
||||
};
|
||||
|
||||
public void Generate(Type t, string path, int level = 0)
|
||||
{
|
||||
if (m_used.Contains(t))
|
||||
{
|
||||
// 処理済み
|
||||
return;
|
||||
}
|
||||
m_used.Add(t);
|
||||
|
||||
//
|
||||
// primitive
|
||||
//
|
||||
try
|
||||
{
|
||||
var mi = typeof(JsonFormatter).GetMethod("Value", new Type[] { t });
|
||||
if (mi != null)
|
||||
{
|
||||
m_w.Write(@"
|
||||
public static void GenSerialize(this JsonFormatter f, $0 value)
|
||||
{
|
||||
f.Value(value);
|
||||
}
|
||||
".Replace("$0", t.Name));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (AmbiguousMatchException)
|
||||
{
|
||||
// skip
|
||||
}
|
||||
|
||||
if (t.IsEnum)
|
||||
{
|
||||
//
|
||||
// enum
|
||||
//
|
||||
m_w.Write(@"
|
||||
public static void GenSerialize(this JsonFormatter f, $0 value)
|
||||
{
|
||||
f.Value((int)value);
|
||||
}
|
||||
".Replace("$0", t.Name));
|
||||
}
|
||||
else if (t.IsArray)
|
||||
{
|
||||
var et = t.GetElementType();
|
||||
m_w.Write(@"
|
||||
/// $1
|
||||
public static void GenSerialize(this JsonFormatter f, $0[] value)
|
||||
{
|
||||
f.BeginList(value.Length);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
"
|
||||
.Replace("$0", et.Name)
|
||||
.Replace("$1", path)
|
||||
);
|
||||
Generate(et, path + "[]", level + 1);
|
||||
}
|
||||
else if (t.IsGenericType)
|
||||
{
|
||||
if (t.GetGenericTypeDefinition() == typeof(List<>))
|
||||
{
|
||||
//
|
||||
// array
|
||||
//
|
||||
var et = t.GetGenericArguments()[0];
|
||||
m_w.Write(@"
|
||||
/// $1
|
||||
public static void GenSerialize(this JsonFormatter f, List<$0> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
"
|
||||
.Replace("$0", et.Name)
|
||||
.Replace("$1", path));
|
||||
Generate(et, path + "[]", level + 1);
|
||||
}
|
||||
else if (t.GetGenericTypeDefinition() == typeof(Dictionary<,>)
|
||||
&& t.GetGenericArguments()[0] == typeof(string))
|
||||
{
|
||||
//
|
||||
// object
|
||||
//
|
||||
var et = t.GetGenericArguments()[1];
|
||||
m_w.Write(@"
|
||||
/// $1
|
||||
public static void GenSerialize(this JsonFormatter f, Dictionary<string, $0> value)
|
||||
{
|
||||
f.BeginMap(value.Count);
|
||||
foreach (var kv in value)
|
||||
{
|
||||
f.Key(kv.Key);
|
||||
f.GenSerialize(kv.Value);
|
||||
}
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
"
|
||||
.Replace("$0", et.Name)
|
||||
.Replace("$1", path));
|
||||
Generate(et, path + "{}", level + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarningFormat("unknown type: {0}", t);
|
||||
}
|
||||
}
|
||||
else if (t == typeof(glTFExtension))
|
||||
{
|
||||
// skip
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// reflection
|
||||
//
|
||||
Debug.LogFormat("{0}({1})", path, t.Name);
|
||||
|
||||
m_w.Write(@"
|
||||
/// $1
|
||||
public static void GenSerialize(this JsonFormatter f, $0 value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
"
|
||||
.Replace("$0", t.Name)
|
||||
.Replace("$1", path)
|
||||
);
|
||||
|
||||
foreach (var fi in t.GetFields(FIELD_FLAGS))
|
||||
{
|
||||
if (fi.FieldType == typeof(object))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (fi.IsLiteral && !fi.IsInitOnly)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (fi.FieldType == typeof(string) || fi.FieldType.IsEnum || fi.FieldType.IsArray || fi.FieldType.IsGenericType)
|
||||
{
|
||||
|
||||
}
|
||||
else if (fi.FieldType == typeof(glTF_KHR_materials_unlit))
|
||||
{
|
||||
|
||||
}
|
||||
else if (fi.FieldType.IsClass && fi.FieldType.GetFields(FIELD_FLAGS).Length == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var snipet = fi.FieldType.IsClass ? "if(value." + fi.Name + "!=null)" : "";
|
||||
var value = default(string);
|
||||
if (s_snippets.TryGetValue(path + "/" + fi.Name, out value))
|
||||
{
|
||||
snipet = value;
|
||||
}
|
||||
|
||||
if (value == "")
|
||||
{
|
||||
// found, but empty
|
||||
}
|
||||
else
|
||||
{
|
||||
m_w.Write(@"
|
||||
$1
|
||||
{
|
||||
f.Key(""$0""); f.GenSerialize(value.$0);
|
||||
}
|
||||
"
|
||||
.Replace("$0", fi.Name)
|
||||
.Replace("$1", snipet)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
m_w.Write(@"
|
||||
f.EndMap();
|
||||
}
|
||||
");
|
||||
|
||||
foreach (var fi in t.GetFields(FIELD_FLAGS))
|
||||
{
|
||||
Generate(fi.FieldType, path + "/" + fi.Name, level + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/VRM/UniVRM/Editor/VRMSerializerGenerator.cs.meta
Normal file
11
Assets/VRM/UniVRM/Editor/VRMSerializerGenerator.cs.meta
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ea35ccbf1dc9c654d9b27a2fc54b3f5a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -207,8 +207,12 @@ namespace VRM
|
|||
// Serialize VRM
|
||||
var f = new JsonFormatter();
|
||||
f.GenSerialize(VRM);
|
||||
var json = f.ToString();
|
||||
glTF.extensions = glTFExtension.Create("VRM", json);
|
||||
if (glTF.extensions == null)
|
||||
{
|
||||
glTF.extensions = new glTFExtension();
|
||||
}
|
||||
var bytes = f.GetStoreBytes();
|
||||
glTF.extensions.Serialized.Add("VRM", bytes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
797
Assets/VRM/UniVRM/Scripts/Format/VRMFormatterExtensionsGltf.g.cs
Normal file
797
Assets/VRM/UniVRM/Scripts/Format/VRMFormatterExtensionsGltf.g.cs
Normal file
|
|
@ -0,0 +1,797 @@
|
|||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UniJSON;
|
||||
using UnityEngine;
|
||||
using VRM;
|
||||
|
||||
namespace VRM {
|
||||
|
||||
static public class IFormatterExtensionsGltf
|
||||
{
|
||||
|
||||
|
||||
/// vrm
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_extensions value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.exporterVersion!=null)
|
||||
{
|
||||
f.Key("exporterVersion"); f.GenSerialize(value.exporterVersion);
|
||||
}
|
||||
|
||||
if(value.specVersion!=null)
|
||||
{
|
||||
f.Key("specVersion"); f.GenSerialize(value.specVersion);
|
||||
}
|
||||
|
||||
if(value.meta!=null)
|
||||
{
|
||||
f.Key("meta"); f.GenSerialize(value.meta);
|
||||
}
|
||||
|
||||
if(value.humanoid!=null)
|
||||
{
|
||||
f.Key("humanoid"); f.GenSerialize(value.humanoid);
|
||||
}
|
||||
|
||||
if(value.firstPerson!=null)
|
||||
{
|
||||
f.Key("firstPerson"); f.GenSerialize(value.firstPerson);
|
||||
}
|
||||
|
||||
if(value.blendShapeMaster!=null)
|
||||
{
|
||||
f.Key("blendShapeMaster"); f.GenSerialize(value.blendShapeMaster);
|
||||
}
|
||||
|
||||
if(value.secondaryAnimation!=null)
|
||||
{
|
||||
f.Key("secondaryAnimation"); f.GenSerialize(value.secondaryAnimation);
|
||||
}
|
||||
|
||||
if(value.materialProperties!=null)
|
||||
{
|
||||
f.Key("materialProperties"); f.GenSerialize(value.materialProperties);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this JsonFormatter f, String value)
|
||||
{
|
||||
f.Value(value);
|
||||
}
|
||||
|
||||
/// vrm/meta
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_Meta value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.title!=null)
|
||||
{
|
||||
f.Key("title"); f.GenSerialize(value.title);
|
||||
}
|
||||
|
||||
if(value.version!=null)
|
||||
{
|
||||
f.Key("version"); f.GenSerialize(value.version);
|
||||
}
|
||||
|
||||
if(value.author!=null)
|
||||
{
|
||||
f.Key("author"); f.GenSerialize(value.author);
|
||||
}
|
||||
|
||||
if(value.contactInformation!=null)
|
||||
{
|
||||
f.Key("contactInformation"); f.GenSerialize(value.contactInformation);
|
||||
}
|
||||
|
||||
if(value.reference!=null)
|
||||
{
|
||||
f.Key("reference"); f.GenSerialize(value.reference);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("texture"); f.GenSerialize(value.texture);
|
||||
}
|
||||
|
||||
if(value.allowedUserName!=null)
|
||||
{
|
||||
f.Key("allowedUserName"); f.GenSerialize(value.allowedUserName);
|
||||
}
|
||||
|
||||
if(value.violentUssageName!=null)
|
||||
{
|
||||
f.Key("violentUssageName"); f.GenSerialize(value.violentUssageName);
|
||||
}
|
||||
|
||||
if(value.sexualUssageName!=null)
|
||||
{
|
||||
f.Key("sexualUssageName"); f.GenSerialize(value.sexualUssageName);
|
||||
}
|
||||
|
||||
if(value.commercialUssageName!=null)
|
||||
{
|
||||
f.Key("commercialUssageName"); f.GenSerialize(value.commercialUssageName);
|
||||
}
|
||||
|
||||
if(value.otherPermissionUrl!=null)
|
||||
{
|
||||
f.Key("otherPermissionUrl"); f.GenSerialize(value.otherPermissionUrl);
|
||||
}
|
||||
|
||||
if(value.licenseName!=null)
|
||||
{
|
||||
f.Key("licenseName"); f.GenSerialize(value.licenseName);
|
||||
}
|
||||
|
||||
if(value.otherLicenseUrl!=null)
|
||||
{
|
||||
f.Key("otherLicenseUrl"); f.GenSerialize(value.otherLicenseUrl);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this JsonFormatter f, Int32 value)
|
||||
{
|
||||
f.Value(value);
|
||||
}
|
||||
|
||||
/// vrm/humanoid
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_Humanoid value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.humanBones!=null)
|
||||
{
|
||||
f.Key("humanBones"); f.GenSerialize(value.humanBones);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("armStretch"); f.GenSerialize(value.armStretch);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("legStretch"); f.GenSerialize(value.legStretch);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("upperArmTwist"); f.GenSerialize(value.upperArmTwist);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("lowerArmTwist"); f.GenSerialize(value.lowerArmTwist);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("upperLegTwist"); f.GenSerialize(value.upperLegTwist);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("lowerLegTwist"); f.GenSerialize(value.lowerLegTwist);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("feetSpacing"); f.GenSerialize(value.feetSpacing);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("hasTranslationDoF"); f.GenSerialize(value.hasTranslationDoF);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/humanoid/humanBones
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTF_VRM_HumanoidBone> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/humanoid/humanBones[]
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_HumanoidBone value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.bone!=null)
|
||||
{
|
||||
f.Key("bone"); f.GenSerialize(value.bone);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("node"); f.GenSerialize(value.node);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("useDefaultValues"); f.GenSerialize(value.useDefaultValues);
|
||||
}
|
||||
|
||||
if(value.min!=Vector3.zero)
|
||||
{
|
||||
f.Key("min"); f.GenSerialize(value.min);
|
||||
}
|
||||
|
||||
if(value.max!=Vector3.zero)
|
||||
{
|
||||
f.Key("max"); f.GenSerialize(value.max);
|
||||
}
|
||||
|
||||
if(value.center!=Vector3.zero)
|
||||
{
|
||||
f.Key("center"); f.GenSerialize(value.center);
|
||||
}
|
||||
|
||||
if(value.axisLength>0)
|
||||
{
|
||||
f.Key("axisLength"); f.GenSerialize(value.axisLength);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this JsonFormatter f, Boolean value)
|
||||
{
|
||||
f.Value(value);
|
||||
}
|
||||
|
||||
/// vrm/humanoid/humanBones[]/min
|
||||
public static void GenSerialize(this JsonFormatter f, Vector3 value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
||||
{
|
||||
f.Key("x"); f.GenSerialize(value.x);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("y"); f.GenSerialize(value.y);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("z"); f.GenSerialize(value.z);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
public static void GenSerialize(this JsonFormatter f, Single value)
|
||||
{
|
||||
f.Value(value);
|
||||
}
|
||||
|
||||
/// vrm/firstPerson
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_Firstperson value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
||||
{
|
||||
f.Key("firstPersonBone"); f.GenSerialize(value.firstPersonBone);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("firstPersonBoneOffset"); f.GenSerialize(value.firstPersonBoneOffset);
|
||||
}
|
||||
|
||||
if(value.meshAnnotations!=null)
|
||||
{
|
||||
f.Key("meshAnnotations"); f.GenSerialize(value.meshAnnotations);
|
||||
}
|
||||
|
||||
if(value.lookAtTypeName!=null)
|
||||
{
|
||||
f.Key("lookAtTypeName"); f.GenSerialize(value.lookAtTypeName);
|
||||
}
|
||||
|
||||
if(value.lookAtHorizontalInner!=null)
|
||||
{
|
||||
f.Key("lookAtHorizontalInner"); f.GenSerialize(value.lookAtHorizontalInner);
|
||||
}
|
||||
|
||||
if(value.lookAtHorizontalOuter!=null)
|
||||
{
|
||||
f.Key("lookAtHorizontalOuter"); f.GenSerialize(value.lookAtHorizontalOuter);
|
||||
}
|
||||
|
||||
if(value.lookAtVerticalDown!=null)
|
||||
{
|
||||
f.Key("lookAtVerticalDown"); f.GenSerialize(value.lookAtVerticalDown);
|
||||
}
|
||||
|
||||
if(value.lookAtVerticalUp!=null)
|
||||
{
|
||||
f.Key("lookAtVerticalUp"); f.GenSerialize(value.lookAtVerticalUp);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/firstPerson/meshAnnotations
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTF_VRM_MeshAnnotation> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/firstPerson/meshAnnotations[]
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_MeshAnnotation value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
||||
{
|
||||
f.Key("mesh"); f.GenSerialize(value.mesh);
|
||||
}
|
||||
|
||||
if(value.firstPersonFlag!=null)
|
||||
{
|
||||
f.Key("firstPersonFlag"); f.GenSerialize(value.firstPersonFlag);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/firstPerson/lookAtHorizontalInner
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_DegreeMap value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.curve!=null)
|
||||
{
|
||||
f.Key("curve"); f.GenSerialize(value.curve);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("xRange"); f.GenSerialize(value.xRange);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("yRange"); f.GenSerialize(value.yRange);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/firstPerson/lookAtHorizontalInner/curve
|
||||
public static void GenSerialize(this JsonFormatter f, Single[] value)
|
||||
{
|
||||
f.BeginList(value.Length);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/blendShapeMaster
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_BlendShapeMaster value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.blendShapeGroups!=null)
|
||||
{
|
||||
f.Key("blendShapeGroups"); f.GenSerialize(value.blendShapeGroups);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/blendShapeMaster/blendShapeGroups
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTF_VRM_BlendShapeGroup> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/blendShapeMaster/blendShapeGroups[]
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_BlendShapeGroup value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.name!=null)
|
||||
{
|
||||
f.Key("name"); f.GenSerialize(value.name);
|
||||
}
|
||||
|
||||
if(value.presetName!=null)
|
||||
{
|
||||
f.Key("presetName"); f.GenSerialize(value.presetName);
|
||||
}
|
||||
|
||||
if(value.binds!=null)
|
||||
{
|
||||
f.Key("binds"); f.GenSerialize(value.binds);
|
||||
}
|
||||
|
||||
if(value.materialValues!=null)
|
||||
{
|
||||
f.Key("materialValues"); f.GenSerialize(value.materialValues);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("isBinary"); f.GenSerialize(value.isBinary);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/blendShapeMaster/blendShapeGroups[]/binds
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTF_VRM_BlendShapeBind> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/blendShapeMaster/blendShapeGroups[]/binds[]
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_BlendShapeBind value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
||||
{
|
||||
f.Key("mesh"); f.GenSerialize(value.mesh);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("index"); f.GenSerialize(value.index);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("weight"); f.GenSerialize(value.weight);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/blendShapeMaster/blendShapeGroups[]/materialValues
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTF_VRM_MaterialValueBind> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/blendShapeMaster/blendShapeGroups[]/materialValues[]
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_MaterialValueBind value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.materialName!=null)
|
||||
{
|
||||
f.Key("materialName"); f.GenSerialize(value.materialName);
|
||||
}
|
||||
|
||||
if(value.propertyName!=null)
|
||||
{
|
||||
f.Key("propertyName"); f.GenSerialize(value.propertyName);
|
||||
}
|
||||
|
||||
if(value.targetValue!=null)
|
||||
{
|
||||
f.Key("targetValue"); f.GenSerialize(value.targetValue);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/secondaryAnimation
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_SecondaryAnimation value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.boneGroups!=null)
|
||||
{
|
||||
f.Key("boneGroups"); f.GenSerialize(value.boneGroups);
|
||||
}
|
||||
|
||||
if(value.colliderGroups!=null)
|
||||
{
|
||||
f.Key("colliderGroups"); f.GenSerialize(value.colliderGroups);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/secondaryAnimation/boneGroups
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTF_VRM_SecondaryAnimationGroup> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/secondaryAnimation/boneGroups[]
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_SecondaryAnimationGroup value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.comment!=null)
|
||||
{
|
||||
f.Key("comment"); f.GenSerialize(value.comment);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("stiffiness"); f.GenSerialize(value.stiffiness);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("gravityPower"); f.GenSerialize(value.gravityPower);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("gravityDir"); f.GenSerialize(value.gravityDir);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("dragForce"); f.GenSerialize(value.dragForce);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("center"); f.GenSerialize(value.center);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("hitRadius"); f.GenSerialize(value.hitRadius);
|
||||
}
|
||||
|
||||
if(value.bones!=null)
|
||||
{
|
||||
f.Key("bones"); f.GenSerialize(value.bones);
|
||||
}
|
||||
|
||||
if(value.colliderGroups!=null)
|
||||
{
|
||||
f.Key("colliderGroups"); f.GenSerialize(value.colliderGroups);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/secondaryAnimation/boneGroups[]/bones
|
||||
public static void GenSerialize(this JsonFormatter f, Int32[] value)
|
||||
{
|
||||
f.BeginList(value.Length);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/secondaryAnimation/colliderGroups
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTF_VRM_SecondaryAnimationColliderGroup> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/secondaryAnimation/colliderGroups[]
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_SecondaryAnimationColliderGroup value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
||||
{
|
||||
f.Key("node"); f.GenSerialize(value.node);
|
||||
}
|
||||
|
||||
if(value.colliders!=null)
|
||||
{
|
||||
f.Key("colliders"); f.GenSerialize(value.colliders);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/secondaryAnimation/colliderGroups[]/colliders
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTF_VRM_SecondaryAnimationCollider> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/secondaryAnimation/colliderGroups[]/colliders[]
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_SecondaryAnimationCollider value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
|
||||
{
|
||||
f.Key("offset"); f.GenSerialize(value.offset);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("radius"); f.GenSerialize(value.radius);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/materialProperties
|
||||
public static void GenSerialize(this JsonFormatter f, List<glTF_VRM_Material> value)
|
||||
{
|
||||
f.BeginList(value.Count);
|
||||
foreach (var x in value)
|
||||
{
|
||||
f.GenSerialize(x);
|
||||
}
|
||||
f.EndList();
|
||||
}
|
||||
|
||||
/// vrm/materialProperties[]
|
||||
public static void GenSerialize(this JsonFormatter f, glTF_VRM_Material value)
|
||||
{
|
||||
f.BeginMap(0); // dummy
|
||||
|
||||
if(value.name!=null)
|
||||
{
|
||||
f.Key("name"); f.GenSerialize(value.name);
|
||||
}
|
||||
|
||||
if(value.shader!=null)
|
||||
{
|
||||
f.Key("shader"); f.GenSerialize(value.shader);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
f.Key("renderQueue"); f.GenSerialize(value.renderQueue);
|
||||
}
|
||||
|
||||
if(value.floatProperties!=null)
|
||||
{
|
||||
f.Key("floatProperties"); f.GenSerialize(value.floatProperties);
|
||||
}
|
||||
|
||||
if(value.vectorProperties!=null)
|
||||
{
|
||||
f.Key("vectorProperties"); f.GenSerialize(value.vectorProperties);
|
||||
}
|
||||
|
||||
if(value.textureProperties!=null)
|
||||
{
|
||||
f.Key("textureProperties"); f.GenSerialize(value.textureProperties);
|
||||
}
|
||||
|
||||
if(value.keywordMap!=null)
|
||||
{
|
||||
f.Key("keywordMap"); f.GenSerialize(value.keywordMap);
|
||||
}
|
||||
|
||||
if(value.tagMap!=null)
|
||||
{
|
||||
f.Key("tagMap"); f.GenSerialize(value.tagMap);
|
||||
}
|
||||
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
/// vrm/materialProperties[]/floatProperties
|
||||
public static void GenSerialize(this JsonFormatter f, Dictionary<string, Single> value)
|
||||
{
|
||||
f.BeginMap(value.Count);
|
||||
foreach (var kv in value)
|
||||
{
|
||||
f.Key(kv.Key);
|
||||
f.GenSerialize(kv.Value);
|
||||
}
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
|
||||
/// vrm/materialProperties[]/vectorProperties
|
||||
public static void GenSerialize(this JsonFormatter f, Dictionary<string, Single[]> value)
|
||||
{
|
||||
f.BeginMap(value.Count);
|
||||
foreach (var kv in value)
|
||||
{
|
||||
f.Key(kv.Key);
|
||||
f.GenSerialize(kv.Value);
|
||||
}
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
|
||||
/// vrm/materialProperties[]/textureProperties
|
||||
public static void GenSerialize(this JsonFormatter f, Dictionary<string, Int32> value)
|
||||
{
|
||||
f.BeginMap(value.Count);
|
||||
foreach (var kv in value)
|
||||
{
|
||||
f.Key(kv.Key);
|
||||
f.GenSerialize(kv.Value);
|
||||
}
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
|
||||
/// vrm/materialProperties[]/keywordMap
|
||||
public static void GenSerialize(this JsonFormatter f, Dictionary<string, Boolean> value)
|
||||
{
|
||||
f.BeginMap(value.Count);
|
||||
foreach (var kv in value)
|
||||
{
|
||||
f.Key(kv.Key);
|
||||
f.GenSerialize(kv.Value);
|
||||
}
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
|
||||
/// vrm/materialProperties[]/tagMap
|
||||
public static void GenSerialize(this JsonFormatter f, Dictionary<string, String> value)
|
||||
{
|
||||
f.BeginMap(value.Count);
|
||||
foreach (var kv in value)
|
||||
{
|
||||
f.Key(kv.Key);
|
||||
f.GenSerialize(kv.Value);
|
||||
}
|
||||
f.EndMap();
|
||||
}
|
||||
|
||||
|
||||
} // class
|
||||
} // namespace
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 280f4d5430b0b04449ef06d6f1b4db36
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Loading…
Reference in New Issue
Block a user