diff --git a/Assets/UniGLTF/UniGLTF/Editor/Serialization/ArraySerialization.cs b/Assets/UniGLTF/UniGLTF/Editor/Serialization/ArraySerialization.cs
index 548351987..d4c80718a 100644
--- a/Assets/UniGLTF/UniGLTF/Editor/Serialization/ArraySerialization.cs
+++ b/Assets/UniGLTF/UniGLTF/Editor/Serialization/ArraySerialization.cs
@@ -3,7 +3,7 @@ using System.IO;
namespace UniGLTF
{
- public class ArraySerialization : SerializationBase
+ public class ArraySerialization : CollectionSerializationBase
{
IValueSerialization m_inner;
@@ -12,6 +12,7 @@ namespace UniGLTF
ValueType = t;
m_inner = inner;
}
+
public override void GenerateDeserializer(StreamWriter writer, string callName)
{
var itemCallName = callName + "_ITEM";
diff --git a/Assets/UniGLTF/UniGLTF/Editor/Serialization/CollectionSerializationBase.cs b/Assets/UniGLTF/UniGLTF/Editor/Serialization/CollectionSerializationBase.cs
new file mode 100644
index 000000000..1a9bb39a1
--- /dev/null
+++ b/Assets/UniGLTF/UniGLTF/Editor/Serialization/CollectionSerializationBase.cs
@@ -0,0 +1,33 @@
+using System;
+using System.IO;
+
+namespace UniGLTF
+{
+ public abstract class CollectionSerializationBase : IValueSerialization
+ {
+ public Type ValueType
+ {
+ get;
+ protected set;
+ }
+
+ public bool IsInline
+ {
+ get { return false; }
+ }
+
+ public abstract void GenerateDeserializer(StreamWriter writer, string callName);
+
+ public string GenerateDeserializerCall(string callName, string argName)
+ {
+ return $"{callName}({argName})";
+ }
+
+ public abstract void GenerateSerializer(StreamWriter writer, string callName);
+
+ public string GenerateSerializerCall(string callName, string argName)
+ {
+ return $"{callName}(f, {argName})";
+ }
+ }
+}
diff --git a/Assets/UniGLTF/UniGLTF/Editor/Serialization/CollectionSerializationBase.cs.meta b/Assets/UniGLTF/UniGLTF/Editor/Serialization/CollectionSerializationBase.cs.meta
new file mode 100644
index 000000000..95c784b1d
--- /dev/null
+++ b/Assets/UniGLTF/UniGLTF/Editor/Serialization/CollectionSerializationBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 52a81be56b0149144aa0836e59d9bc3b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/UniGLTF/UniGLTF/Editor/Serialization/EnumSerialization.cs b/Assets/UniGLTF/UniGLTF/Editor/Serialization/EnumSerialization.cs
index 8ac3c6c82..4378689c1 100644
--- a/Assets/UniGLTF/UniGLTF/Editor/Serialization/EnumSerialization.cs
+++ b/Assets/UniGLTF/UniGLTF/Editor/Serialization/EnumSerialization.cs
@@ -3,7 +3,7 @@ using System.IO;
namespace UniGLTF
{
- public class EnumIntSerialization : IValueSerialization
+ public class EnumSerialization : IValueSerialization
{
Type m_type;
EnumSerializationType m_serializationType;
@@ -24,7 +24,7 @@ namespace UniGLTF
}
- public EnumIntSerialization(Type t, EnumSerializationType serializationType)
+ public EnumSerialization(Type t, EnumSerializationType serializationType)
{
m_type = t;
m_serializationType = serializationType;
diff --git a/Assets/UniGLTF/UniGLTF/Editor/Serialization/FieldSerializationInfo.cs b/Assets/UniGLTF/UniGLTF/Editor/Serialization/FieldSerializationInfo.cs
index 107620924..7e5665d49 100644
--- a/Assets/UniGLTF/UniGLTF/Editor/Serialization/FieldSerializationInfo.cs
+++ b/Assets/UniGLTF/UniGLTF/Editor/Serialization/FieldSerializationInfo.cs
@@ -127,7 +127,7 @@ namespace UniGLTF
}
else if (t.IsEnum)
{
- return new EnumIntSerialization(t, attr.EnumSerializationType);
+ return new EnumSerialization(t, attr.EnumSerializationType);
}
else if (t == typeof(glTFExtension))
{
@@ -164,5 +164,20 @@ namespace UniGLTF
return sb.ToString();
}
+
+ ///
+ /// Runtimeのシリアライズ判定関数を作る
+ ///
+ ///
+ ///
+ public string CreateSerializationCondition(Type t, string arg)
+ {
+ if (t.IsClass)
+ {
+ return $"{arg}!=null";
+ }
+
+ return "true";
+ }
}
}
diff --git a/Assets/UniGLTF/UniGLTF/Editor/Serialization/ListSerialization.cs b/Assets/UniGLTF/UniGLTF/Editor/Serialization/ListSerialization.cs
index 703cb90c5..a929349dd 100644
--- a/Assets/UniGLTF/UniGLTF/Editor/Serialization/ListSerialization.cs
+++ b/Assets/UniGLTF/UniGLTF/Editor/Serialization/ListSerialization.cs
@@ -3,7 +3,7 @@ using System.IO;
namespace UniGLTF
{
- public class ListSerialization : SerializationBase
+ public class ListSerialization : CollectionSerializationBase
{
IValueSerialization m_inner;
diff --git a/Assets/UniGLTF/UniGLTF/Editor/Serialization/ObjectSerialization.cs b/Assets/UniGLTF/UniGLTF/Editor/Serialization/ObjectSerialization.cs
index ec4b49333..fc2c99b37 100644
--- a/Assets/UniGLTF/UniGLTF/Editor/Serialization/ObjectSerialization.cs
+++ b/Assets/UniGLTF/UniGLTF/Editor/Serialization/ObjectSerialization.cs
@@ -5,35 +5,7 @@ using System.Text;
namespace UniGLTF
{
- public abstract class SerializationBase : IValueSerialization
- {
- public Type ValueType
- {
- get;
- protected set;
- }
-
- public bool IsInline
- {
- get { return false; }
- }
-
- public abstract void GenerateDeserializer(StreamWriter writer, string callName);
-
- public string GenerateDeserializerCall(string callName, string argName)
- {
- return $"{callName}({argName})";
- }
-
- public abstract void GenerateSerializer(StreamWriter writer, string callName);
-
- public string GenerateSerializerCall(string callName, string argName)
- {
- return $"{callName}(f, {argName})";
- }
- }
-
- public class ObjectSerialization : SerializationBase
+ public class ObjectSerialization : CollectionSerializationBase
{
string m_path;
FieldSerializationInfo[] m_fsi;
@@ -111,6 +83,16 @@ public static $0 $2(ListTreeNode parsed)
}
}
+ ///
+ /// シリアライザーのコード生成
+ ///
+ /// ObjectのFieldのみ値によって、出力するか否かの判定が必用。
+ ///
+ /// 例: 空文字列は出力しない
+ ///
+ ///
+ ///
+ ///
public override void GenerateSerializer(StreamWriter writer, string callName)
{
writer.Write($@"
@@ -123,9 +105,13 @@ public static void {callName}(JsonFormatter f, {ValueType.Name} value)
foreach (var f in m_fsi)
{
- writer.Write($" f.Key(\"{f.Name}\");\n");
- writer.Write($" {f.Serialization.GenerateSerializerCall(f.FunctionName, $"value.{f.Name}")};\n");
- writer.Write("\n");
+ var valueName = $"value.{f.Name}";
+ writer.Write($@"
+ if({f.CreateSerializationCondition(f.Serialization.ValueType, valueName)}){{
+ f.Key(""{f.Name}"");
+ {f.Serialization.GenerateSerializerCall(f.FunctionName, valueName)};
+ }}
+");
}
writer.Write(@"
diff --git a/Assets/UniGLTF/UniGLTF/Editor/Serialization/StringKeyDictionarySerialization.cs b/Assets/UniGLTF/UniGLTF/Editor/Serialization/StringKeyDictionarySerialization.cs
index 62b997167..5c1787d3e 100644
--- a/Assets/UniGLTF/UniGLTF/Editor/Serialization/StringKeyDictionarySerialization.cs
+++ b/Assets/UniGLTF/UniGLTF/Editor/Serialization/StringKeyDictionarySerialization.cs
@@ -3,7 +3,7 @@ using System.IO;
namespace UniGLTF
{
- public class StringKeyDictionarySerialization : SerializationBase
+ public class StringKeyDictionarySerialization : CollectionSerializationBase
{
IValueSerialization m_inner;
@@ -12,6 +12,7 @@ namespace UniGLTF
ValueType = t;
m_inner = inner;
}
+
public override void GenerateDeserializer(StreamWriter writer, string callName)
{
var itemCallName = callName + "_ITEM";
diff --git a/Assets/UniGLTF/UniGLTF/Editor/Tests/UniGLTFTests.cs b/Assets/UniGLTF/UniGLTF/Editor/Tests/UniGLTFTests.cs
index 8170d62af..12b8fef8c 100644
--- a/Assets/UniGLTF/UniGLTF/Editor/Tests/UniGLTFTests.cs
+++ b/Assets/UniGLTF/UniGLTF/Editor/Tests/UniGLTFTests.cs
@@ -19,13 +19,13 @@ namespace UniGLTF
public static string ToJson(this glTFMesh self)
{
var f = new JsonFormatter();
- GltfSerializer.Serialize_gltf_meshes_LIST(f, self);
+ GltfSerializer.Serialize_gltf_meshes_ITEM(f, self);
return f.ToString();
}
public static string ToJson(this glTFPrimitives self)
{
var f = new JsonFormatter();
- GltfSerializer.Serialize_gltf_meshes__primitives_LIST(f, self);
+ GltfSerializer.Serialize_gltf_meshes__primitives_ITEM(f, self);
return f.ToString();
}
public static string ToJson(this glTFAttributes self)
@@ -43,19 +43,19 @@ namespace UniGLTF
public static string ToJson(this glTFMaterial self)
{
var f = new JsonFormatter();
- GltfSerializer.Serialize_gltf_materials_LIST(f, self);
+ GltfSerializer.Serialize_gltf_materials_ITEM(f, self);
return f.ToString();
}
public static string ToJson(this glTFNode self)
{
var f = new JsonFormatter();
- GltfSerializer.Serialize_gltf_nodes_LIST(f, self);
+ GltfSerializer.Serialize_gltf_nodes_ITEM(f, self);
return f.ToString();
}
public static string ToJson(this glTFSkin self)
{
var f = new JsonFormatter();
- GltfSerializer.Serialize_gltf_skins_LIST(f, self);
+ GltfSerializer.Serialize_gltf_skins_ITEM(f, self);
return f.ToString();
}
}
diff --git a/Assets/UniGLTF/UniGLTF/Scripts/IO/GltfSerializer.g.cs b/Assets/UniGLTF/UniGLTF/Scripts/IO/GltfSerializer.g.cs
index 99f59bc6d..1cb06a43a 100644
--- a/Assets/UniGLTF/UniGLTF/Scripts/IO/GltfSerializer.g.cs
+++ b/Assets/UniGLTF/UniGLTF/Scripts/IO/GltfSerializer.g.cs
@@ -12,63 +12,101 @@ public static void Serialize(JsonFormatter f, glTF value)
{
f.BeginMap();
- f.Key("asset");
- Serialize_gltf_asset(f, value.asset);
- f.Key("buffers");
- Serialize_gltf_buffers(f, value.buffers);
+ if(value.asset!=null){
+ f.Key("asset");
+ Serialize_gltf_asset(f, value.asset);
+ }
- f.Key("bufferViews");
- Serialize_gltf_bufferViews(f, value.bufferViews);
+ if(value.buffers!=null){
+ f.Key("buffers");
+ Serialize_gltf_buffers(f, value.buffers);
+ }
- f.Key("accessors");
- Serialize_gltf_accessors(f, value.accessors);
+ if(value.bufferViews!=null){
+ f.Key("bufferViews");
+ Serialize_gltf_bufferViews(f, value.bufferViews);
+ }
- f.Key("textures");
- Serialize_gltf_textures(f, value.textures);
+ if(value.accessors!=null){
+ f.Key("accessors");
+ Serialize_gltf_accessors(f, value.accessors);
+ }
- f.Key("samplers");
- Serialize_gltf_samplers(f, value.samplers);
+ if(value.textures!=null){
+ f.Key("textures");
+ Serialize_gltf_textures(f, value.textures);
+ }
- f.Key("images");
- Serialize_gltf_images(f, value.images);
+ if(value.samplers!=null){
+ f.Key("samplers");
+ Serialize_gltf_samplers(f, value.samplers);
+ }
- f.Key("materials");
- Serialize_gltf_materials(f, value.materials);
+ if(value.images!=null){
+ f.Key("images");
+ Serialize_gltf_images(f, value.images);
+ }
- f.Key("meshes");
- Serialize_gltf_meshes(f, value.meshes);
+ if(value.materials!=null){
+ f.Key("materials");
+ Serialize_gltf_materials(f, value.materials);
+ }
- f.Key("nodes");
- Serialize_gltf_nodes(f, value.nodes);
+ if(value.meshes!=null){
+ f.Key("meshes");
+ Serialize_gltf_meshes(f, value.meshes);
+ }
- f.Key("skins");
- Serialize_gltf_skins(f, value.skins);
+ if(value.nodes!=null){
+ f.Key("nodes");
+ Serialize_gltf_nodes(f, value.nodes);
+ }
- f.Key("scene");
- f.Value(value.scene);
+ if(value.skins!=null){
+ f.Key("skins");
+ Serialize_gltf_skins(f, value.skins);
+ }
- f.Key("scenes");
- Serialize_gltf_scenes(f, value.scenes);
+ if(true){
+ f.Key("scene");
+ f.Value(value.scene);
+ }
- f.Key("animations");
- Serialize_gltf_animations(f, value.animations);
+ if(value.scenes!=null){
+ f.Key("scenes");
+ Serialize_gltf_scenes(f, value.scenes);
+ }
- f.Key("cameras");
- Serialize_gltf_cameras(f, value.cameras);
+ if(value.animations!=null){
+ f.Key("animations");
+ Serialize_gltf_animations(f, value.animations);
+ }
- f.Key("extensionsUsed");
- Serialize_gltf_extensionsUsed(f, value.extensionsUsed);
+ if(value.cameras!=null){
+ f.Key("cameras");
+ Serialize_gltf_cameras(f, value.cameras);
+ }
- f.Key("extensionsRequired");
- Serialize_gltf_extensionsRequired(f, value.extensionsRequired);
+ if(value.extensionsUsed!=null){
+ f.Key("extensionsUsed");
+ Serialize_gltf_extensionsUsed(f, value.extensionsUsed);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(value.extensionsRequired!=null){
+ f.Key("extensionsRequired");
+ Serialize_gltf_extensionsRequired(f, value.extensionsRequired);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -77,24 +115,36 @@ public static void Serialize_gltf_asset(JsonFormatter f, glTFAssets value)
{
f.BeginMap();
- f.Key("generator");
- f.Value(value.generator);
- f.Key("version");
- f.Value(value.version);
+ if(value.generator!=null){
+ f.Key("generator");
+ f.Value(value.generator);
+ }
- f.Key("copyright");
- f.Value(value.copyright);
+ if(value.version!=null){
+ f.Key("version");
+ f.Value(value.version);
+ }
- f.Key("minVersion");
- f.Value(value.minVersion);
+ if(value.copyright!=null){
+ f.Key("copyright");
+ f.Value(value.copyright);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(value.minVersion!=null){
+ f.Key("minVersion");
+ f.Value(value.minVersion);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -105,31 +155,41 @@ public static void Serialize_gltf_buffers(JsonFormatter f, List valu
foreach(var item in value)
{
- Serialize_gltf_buffers_LIST(f, item);
+ Serialize_gltf_buffers_ITEM(f, item);
}
f.EndList();
}
-public static void Serialize_gltf_buffers_LIST(JsonFormatter f, glTFBuffer value)
+public static void Serialize_gltf_buffers_ITEM(JsonFormatter f, glTFBuffer value)
{
f.BeginMap();
- f.Key("uri");
- f.Value(value.uri);
- f.Key("byteLength");
- f.Value(value.byteLength);
+ if(value.uri!=null){
+ f.Key("uri");
+ f.Value(value.uri);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("byteLength");
+ f.Value(value.byteLength);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
- f.Key("name");
- f.Value(value.name);
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
+ if(value.name!=null){
+ f.Key("name");
+ f.Value(value.name);
+ }
f.EndMap();
}
@@ -140,40 +200,56 @@ public static void Serialize_gltf_bufferViews(JsonFormatter f, List
foreach(var item in value)
{
- Serialize_gltf_accessors_LIST(f, item);
+ Serialize_gltf_accessors_ITEM(f, item);
}
f.EndList();
}
-public static void Serialize_gltf_accessors_LIST(JsonFormatter f, glTFAccessor value)
+public static void Serialize_gltf_accessors_ITEM(JsonFormatter f, glTFAccessor value)
{
f.BeginMap();
- f.Key("bufferView");
- f.Value(value.bufferView);
- f.Key("byteOffset");
- f.Value(value.byteOffset);
+ if(true){
+ f.Key("bufferView");
+ f.Value(value.bufferView);
+ }
- f.Key("type");
- f.Value(value.type);
+ if(true){
+ f.Key("byteOffset");
+ f.Value(value.byteOffset);
+ }
- f.Key("componentType");
- f.Value((int)value.componentType);
+ if(value.type!=null){
+ f.Key("type");
+ f.Value(value.type);
+ }
- f.Key("count");
- f.Value(value.count);
+ if(true){
+ f.Key("componentType");
+ f.Value((int)value.componentType);
+ }
- f.Key("max");
- Serialize_gltf_accessors__max(f, value.max);
+ if(true){
+ f.Key("count");
+ f.Value(value.count);
+ }
- f.Key("min");
- Serialize_gltf_accessors__min(f, value.min);
+ if(value.max!=null){
+ f.Key("max");
+ Serialize_gltf_accessors__max(f, value.max);
+ }
- f.Key("normalized");
- f.Value(value.normalized);
+ if(value.min!=null){
+ f.Key("min");
+ Serialize_gltf_accessors__min(f, value.min);
+ }
- f.Key("sparse");
- Serialize_gltf_accessors__sparse(f, value.sparse);
+ if(true){
+ f.Key("normalized");
+ f.Value(value.normalized);
+ }
- f.Key("name");
- f.Value(value.name);
+ if(value.sparse!=null){
+ f.Key("sparse");
+ Serialize_gltf_accessors__sparse(f, value.sparse);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(value.name!=null){
+ f.Key("name");
+ f.Value(value.name);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -262,21 +362,31 @@ public static void Serialize_gltf_accessors__sparse(JsonFormatter f, glTFSparse
{
f.BeginMap();
- f.Key("count");
- f.Value(value.count);
- f.Key("indices");
- Serialize_gltf_accessors__sparse_indices(f, value.indices);
+ if(true){
+ f.Key("count");
+ f.Value(value.count);
+ }
- f.Key("values");
- Serialize_gltf_accessors__sparse_values(f, value.values);
+ if(value.indices!=null){
+ f.Key("indices");
+ Serialize_gltf_accessors__sparse_indices(f, value.indices);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(value.values!=null){
+ f.Key("values");
+ Serialize_gltf_accessors__sparse_values(f, value.values);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -285,21 +395,31 @@ public static void Serialize_gltf_accessors__sparse_indices(JsonFormatter f, glT
{
f.BeginMap();
- f.Key("bufferView");
- f.Value(value.bufferView);
- f.Key("byteOffset");
- f.Value(value.byteOffset);
+ if(true){
+ f.Key("bufferView");
+ f.Value(value.bufferView);
+ }
- f.Key("componentType");
- f.Value((int)value.componentType);
+ if(true){
+ f.Key("byteOffset");
+ f.Value(value.byteOffset);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("componentType");
+ f.Value((int)value.componentType);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -308,18 +428,26 @@ public static void Serialize_gltf_accessors__sparse_values(JsonFormatter f, glTF
{
f.BeginMap();
- f.Key("bufferView");
- f.Value(value.bufferView);
- f.Key("byteOffset");
- f.Value(value.byteOffset);
+ if(true){
+ f.Key("bufferView");
+ f.Value(value.bufferView);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("byteOffset");
+ f.Value(value.byteOffset);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -330,31 +458,41 @@ public static void Serialize_gltf_textures(JsonFormatter f, List va
foreach(var item in value)
{
- Serialize_gltf_textures_LIST(f, item);
+ Serialize_gltf_textures_ITEM(f, item);
}
f.EndList();
}
-public static void Serialize_gltf_textures_LIST(JsonFormatter f, glTFTexture value)
+public static void Serialize_gltf_textures_ITEM(JsonFormatter f, glTFTexture value)
{
f.BeginMap();
- f.Key("sampler");
- f.Value(value.sampler);
- f.Key("source");
- f.Value(value.source);
+ if(true){
+ f.Key("sampler");
+ f.Value(value.sampler);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("source");
+ f.Value(value.source);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
- f.Key("name");
- f.Value(value.name);
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
+ if(value.name!=null){
+ f.Key("name");
+ f.Value(value.name);
+ }
f.EndMap();
}
@@ -365,37 +503,51 @@ public static void Serialize_gltf_samplers(JsonFormatter f, List value)
foreach(var item in value)
{
- Serialize_gltf_images_LIST(f, item);
+ Serialize_gltf_images_ITEM(f, item);
}
f.EndList();
}
-public static void Serialize_gltf_images_LIST(JsonFormatter f, glTFImage value)
+public static void Serialize_gltf_images_ITEM(JsonFormatter f, glTFImage value)
{
f.BeginMap();
- f.Key("name");
- f.Value(value.name);
- f.Key("uri");
- f.Value(value.uri);
+ if(value.name!=null){
+ f.Key("name");
+ f.Value(value.name);
+ }
- f.Key("bufferView");
- f.Value(value.bufferView);
+ if(value.uri!=null){
+ f.Key("uri");
+ f.Value(value.uri);
+ }
- f.Key("mimeType");
- f.Value(value.mimeType);
+ if(true){
+ f.Key("bufferView");
+ f.Value(value.bufferView);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(value.mimeType!=null){
+ f.Key("mimeType");
+ f.Value(value.mimeType);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -444,49 +608,71 @@ public static void Serialize_gltf_materials(JsonFormatter f, List
foreach(var item in value)
{
- Serialize_gltf_materials_LIST(f, item);
+ Serialize_gltf_materials_ITEM(f, item);
}
f.EndList();
}
-public static void Serialize_gltf_materials_LIST(JsonFormatter f, glTFMaterial value)
+public static void Serialize_gltf_materials_ITEM(JsonFormatter f, glTFMaterial value)
{
f.BeginMap();
- f.Key("name");
- f.Value(value.name);
- f.Key("pbrMetallicRoughness");
- Serialize_gltf_materials__pbrMetallicRoughness(f, value.pbrMetallicRoughness);
+ if(value.name!=null){
+ f.Key("name");
+ f.Value(value.name);
+ }
- f.Key("normalTexture");
- Serialize_gltf_materials__normalTexture(f, value.normalTexture);
+ if(value.pbrMetallicRoughness!=null){
+ f.Key("pbrMetallicRoughness");
+ Serialize_gltf_materials__pbrMetallicRoughness(f, value.pbrMetallicRoughness);
+ }
- f.Key("occlusionTexture");
- Serialize_gltf_materials__occlusionTexture(f, value.occlusionTexture);
+ if(value.normalTexture!=null){
+ f.Key("normalTexture");
+ Serialize_gltf_materials__normalTexture(f, value.normalTexture);
+ }
- f.Key("emissiveTexture");
- Serialize_gltf_materials__emissiveTexture(f, value.emissiveTexture);
+ if(value.occlusionTexture!=null){
+ f.Key("occlusionTexture");
+ Serialize_gltf_materials__occlusionTexture(f, value.occlusionTexture);
+ }
- f.Key("emissiveFactor");
- Serialize_gltf_materials__emissiveFactor(f, value.emissiveFactor);
+ if(value.emissiveTexture!=null){
+ f.Key("emissiveTexture");
+ Serialize_gltf_materials__emissiveTexture(f, value.emissiveTexture);
+ }
- f.Key("alphaMode");
- f.Value(value.alphaMode);
+ if(value.emissiveFactor!=null){
+ f.Key("emissiveFactor");
+ Serialize_gltf_materials__emissiveFactor(f, value.emissiveFactor);
+ }
- f.Key("alphaCutoff");
- f.Value(value.alphaCutoff);
+ if(value.alphaMode!=null){
+ f.Key("alphaMode");
+ f.Value(value.alphaMode);
+ }
- f.Key("doubleSided");
- f.Value(value.doubleSided);
+ if(true){
+ f.Key("alphaCutoff");
+ f.Value(value.alphaCutoff);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("doubleSided");
+ f.Value(value.doubleSided);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -495,27 +681,41 @@ public static void Serialize_gltf_materials__pbrMetallicRoughness(JsonFormatter
{
f.BeginMap();
- f.Key("baseColorTexture");
- Serialize_gltf_materials__pbrMetallicRoughness_baseColorTexture(f, value.baseColorTexture);
- f.Key("baseColorFactor");
- Serialize_gltf_materials__pbrMetallicRoughness_baseColorFactor(f, value.baseColorFactor);
+ if(value.baseColorTexture!=null){
+ f.Key("baseColorTexture");
+ Serialize_gltf_materials__pbrMetallicRoughness_baseColorTexture(f, value.baseColorTexture);
+ }
- f.Key("metallicRoughnessTexture");
- Serialize_gltf_materials__pbrMetallicRoughness_metallicRoughnessTexture(f, value.metallicRoughnessTexture);
+ if(value.baseColorFactor!=null){
+ f.Key("baseColorFactor");
+ Serialize_gltf_materials__pbrMetallicRoughness_baseColorFactor(f, value.baseColorFactor);
+ }
- f.Key("metallicFactor");
- f.Value(value.metallicFactor);
+ if(value.metallicRoughnessTexture!=null){
+ f.Key("metallicRoughnessTexture");
+ Serialize_gltf_materials__pbrMetallicRoughness_metallicRoughnessTexture(f, value.metallicRoughnessTexture);
+ }
- f.Key("roughnessFactor");
- f.Value(value.roughnessFactor);
+ if(true){
+ f.Key("metallicFactor");
+ f.Value(value.metallicFactor);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("roughnessFactor");
+ f.Value(value.roughnessFactor);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -524,18 +724,26 @@ public static void Serialize_gltf_materials__pbrMetallicRoughness_baseColorTextu
{
f.BeginMap();
- f.Key("index");
- f.Value(value.index);
- f.Key("texCoord");
- f.Value(value.texCoord);
+ if(true){
+ f.Key("index");
+ f.Value(value.index);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("texCoord");
+ f.Value(value.texCoord);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -556,18 +764,26 @@ public static void Serialize_gltf_materials__pbrMetallicRoughness_metallicRoughn
{
f.BeginMap();
- f.Key("index");
- f.Value(value.index);
- f.Key("texCoord");
- f.Value(value.texCoord);
+ if(true){
+ f.Key("index");
+ f.Value(value.index);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("texCoord");
+ f.Value(value.texCoord);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -576,21 +792,31 @@ public static void Serialize_gltf_materials__normalTexture(JsonFormatter f, glTF
{
f.BeginMap();
- f.Key("scale");
- f.Value(value.scale);
- f.Key("index");
- f.Value(value.index);
+ if(true){
+ f.Key("scale");
+ f.Value(value.scale);
+ }
- f.Key("texCoord");
- f.Value(value.texCoord);
+ if(true){
+ f.Key("index");
+ f.Value(value.index);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("texCoord");
+ f.Value(value.texCoord);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -599,21 +825,31 @@ public static void Serialize_gltf_materials__occlusionTexture(JsonFormatter f, g
{
f.BeginMap();
- f.Key("strength");
- f.Value(value.strength);
- f.Key("index");
- f.Value(value.index);
+ if(true){
+ f.Key("strength");
+ f.Value(value.strength);
+ }
- f.Key("texCoord");
- f.Value(value.texCoord);
+ if(true){
+ f.Key("index");
+ f.Value(value.index);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("texCoord");
+ f.Value(value.texCoord);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -622,18 +858,26 @@ public static void Serialize_gltf_materials__emissiveTexture(JsonFormatter f, gl
{
f.BeginMap();
- f.Key("index");
- f.Value(value.index);
- f.Key("texCoord");
- f.Value(value.texCoord);
+ if(true){
+ f.Key("index");
+ f.Value(value.index);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("texCoord");
+ f.Value(value.texCoord);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -656,31 +900,41 @@ public static void Serialize_gltf_meshes(JsonFormatter f, List value)
foreach(var item in value)
{
- Serialize_gltf_meshes_LIST(f, item);
+ Serialize_gltf_meshes_ITEM(f, item);
}
f.EndList();
}
-public static void Serialize_gltf_meshes_LIST(JsonFormatter f, glTFMesh value)
+public static void Serialize_gltf_meshes_ITEM(JsonFormatter f, glTFMesh value)
{
f.BeginMap();
- f.Key("name");
- f.Value(value.name);
- f.Key("primitives");
- Serialize_gltf_meshes__primitives(f, value.primitives);
+ if(value.name!=null){
+ f.Key("name");
+ f.Value(value.name);
+ }
- f.Key("weights");
- Serialize_gltf_meshes__weights(f, value.weights);
+ if(value.primitives!=null){
+ f.Key("primitives");
+ Serialize_gltf_meshes__primitives(f, value.primitives);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.weights!=null){
+ f.Key("weights");
+ Serialize_gltf_meshes__weights(f, value.weights);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -691,37 +945,51 @@ public static void Serialize_gltf_meshes__primitives(JsonFormatter f, List value)
foreach(var item in value)
{
- Serialize_gltf_nodes_LIST(f, item);
+ Serialize_gltf_nodes_ITEM(f, item);
}
f.EndList();
}
-public static void Serialize_gltf_nodes_LIST(JsonFormatter f, glTFNode value)
+public static void Serialize_gltf_nodes_ITEM(JsonFormatter f, glTFNode value)
{
f.BeginMap();
- f.Key("name");
- f.Value(value.name);
- f.Key("children");
- Serialize_gltf_nodes__children(f, value.children);
+ if(value.name!=null){
+ f.Key("name");
+ f.Value(value.name);
+ }
- f.Key("matrix");
- Serialize_gltf_nodes__matrix(f, value.matrix);
+ if(value.children!=null){
+ f.Key("children");
+ Serialize_gltf_nodes__children(f, value.children);
+ }
- f.Key("translation");
- Serialize_gltf_nodes__translation(f, value.translation);
+ if(value.matrix!=null){
+ f.Key("matrix");
+ Serialize_gltf_nodes__matrix(f, value.matrix);
+ }
- f.Key("rotation");
- Serialize_gltf_nodes__rotation(f, value.rotation);
+ if(value.translation!=null){
+ f.Key("translation");
+ Serialize_gltf_nodes__translation(f, value.translation);
+ }
- f.Key("scale");
- Serialize_gltf_nodes__scale(f, value.scale);
+ if(value.rotation!=null){
+ f.Key("rotation");
+ Serialize_gltf_nodes__rotation(f, value.rotation);
+ }
- f.Key("mesh");
- f.Value(value.mesh);
+ if(value.scale!=null){
+ f.Key("scale");
+ Serialize_gltf_nodes__scale(f, value.scale);
+ }
- f.Key("skin");
- f.Value(value.skin);
+ if(true){
+ f.Key("mesh");
+ f.Value(value.mesh);
+ }
- f.Key("weights");
- Serialize_gltf_nodes__weights(f, value.weights);
+ if(true){
+ f.Key("skin");
+ f.Value(value.skin);
+ }
- f.Key("camera");
- f.Value(value.camera);
+ if(value.weights!=null){
+ f.Key("weights");
+ Serialize_gltf_nodes__weights(f, value.weights);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("camera");
+ f.Value(value.camera);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -933,34 +1247,46 @@ public static void Serialize_gltf_skins(JsonFormatter f, List value)
foreach(var item in value)
{
- Serialize_gltf_skins_LIST(f, item);
+ Serialize_gltf_skins_ITEM(f, item);
}
f.EndList();
}
-public static void Serialize_gltf_skins_LIST(JsonFormatter f, glTFSkin value)
+public static void Serialize_gltf_skins_ITEM(JsonFormatter f, glTFSkin value)
{
f.BeginMap();
- f.Key("inverseBindMatrices");
- f.Value(value.inverseBindMatrices);
- f.Key("joints");
- Serialize_gltf_skins__joints(f, value.joints);
+ if(true){
+ f.Key("inverseBindMatrices");
+ f.Value(value.inverseBindMatrices);
+ }
- f.Key("skeleton");
- f.Value(value.skeleton);
+ if(value.joints!=null){
+ f.Key("joints");
+ Serialize_gltf_skins__joints(f, value.joints);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("skeleton");
+ f.Value(value.skeleton);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
- f.Key("name");
- f.Value(value.name);
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
+ if(value.name!=null){
+ f.Key("name");
+ f.Value(value.name);
+ }
f.EndMap();
}
@@ -983,28 +1309,36 @@ public static void Serialize_gltf_scenes(JsonFormatter f, List value)
foreach(var item in value)
{
- Serialize_gltf_scenes_LIST(f, item);
+ Serialize_gltf_scenes_ITEM(f, item);
}
f.EndList();
}
-public static void Serialize_gltf_scenes_LIST(JsonFormatter f, gltfScene value)
+public static void Serialize_gltf_scenes_ITEM(JsonFormatter f, gltfScene value)
{
f.BeginMap();
- f.Key("nodes");
- Serialize_gltf_scenes__nodes(f, value.nodes);
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(value.nodes!=null){
+ f.Key("nodes");
+ Serialize_gltf_scenes__nodes(f, value.nodes);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
- f.Key("name");
- f.Value(value.name);
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
+ if(value.name!=null){
+ f.Key("name");
+ f.Value(value.name);
+ }
f.EndMap();
}
@@ -1027,31 +1361,41 @@ public static void Serialize_gltf_animations(JsonFormatter f, List valu
foreach(var item in value)
{
- Serialize_gltf_cameras_LIST(f, item);
+ Serialize_gltf_cameras_ITEM(f, item);
}
f.EndList();
}
-public static void Serialize_gltf_cameras_LIST(JsonFormatter f, glTFCamera value)
+public static void Serialize_gltf_cameras_ITEM(JsonFormatter f, glTFCamera value)
{
f.BeginMap();
- f.Key("orthographic");
- Serialize_gltf_cameras__orthographic(f, value.orthographic);
- f.Key("perspective");
- Serialize_gltf_cameras__perspective(f, value.perspective);
+ if(value.orthographic!=null){
+ f.Key("orthographic");
+ Serialize_gltf_cameras__orthographic(f, value.orthographic);
+ }
- f.Key("type");
- f.Value(value.type.ToString().ToLower());
+ if(value.perspective!=null){
+ f.Key("perspective");
+ Serialize_gltf_cameras__perspective(f, value.perspective);
+ }
- f.Key("name");
- f.Value(value.name);
+ if(true){
+ f.Key("type");
+ f.Value(value.type.ToString().ToLower());
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(value.name!=null){
+ f.Key("name");
+ f.Value(value.name);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -1185,24 +1567,36 @@ public static void Serialize_gltf_cameras__orthographic(JsonFormatter f, glTFOrt
{
f.BeginMap();
- f.Key("xmag");
- f.Value(value.xmag);
- f.Key("ymag");
- f.Value(value.ymag);
+ if(true){
+ f.Key("xmag");
+ f.Value(value.xmag);
+ }
- f.Key("zfar");
- f.Value(value.zfar);
+ if(true){
+ f.Key("ymag");
+ f.Value(value.ymag);
+ }
- f.Key("znear");
- f.Value(value.znear);
+ if(true){
+ f.Key("zfar");
+ f.Value(value.zfar);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("znear");
+ f.Value(value.znear);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
@@ -1211,24 +1605,36 @@ public static void Serialize_gltf_cameras__perspective(JsonFormatter f, glTFPers
{
f.BeginMap();
- f.Key("aspectRatio");
- f.Value(value.aspectRatio);
- f.Key("yfov");
- f.Value(value.yfov);
+ if(true){
+ f.Key("aspectRatio");
+ f.Value(value.aspectRatio);
+ }
- f.Key("zfar");
- f.Value(value.zfar);
+ if(true){
+ f.Key("yfov");
+ f.Value(value.yfov);
+ }
- f.Key("znear");
- f.Value(value.znear);
+ if(true){
+ f.Key("zfar");
+ f.Value(value.zfar);
+ }
- f.Key("extensions");
- value.extras.Serialize(f);
+ if(true){
+ f.Key("znear");
+ f.Value(value.znear);
+ }
- f.Key("extras");
- value.extras.Serialize(f);
+ if(value.extensions!=null){
+ f.Key("extensions");
+ value.extras.Serialize(f);
+ }
+ if(value.extras!=null){
+ f.Key("extras");
+ value.extras.Serialize(f);
+ }
f.EndMap();
}
diff --git a/Assets/VRM/UniVRM/Editor/Tests/UniVRMSerializeTests.cs b/Assets/VRM/UniVRM/Editor/Tests/UniVRMSerializeTests.cs
index 9b5a2dc45..dbb0770d4 100644
--- a/Assets/VRM/UniVRM/Editor/Tests/UniVRMSerializeTests.cs
+++ b/Assets/VRM/UniVRM/Editor/Tests/UniVRMSerializeTests.cs
@@ -18,13 +18,13 @@ namespace VRM
public static string ToJson(this glTFMesh self)
{
var f = new JsonFormatter();
- GltfSerializer.Serialize_gltf_meshes_LIST(f, self);
+ GltfSerializer.Serialize_gltf_meshes_ITEM(f, self);
return f.ToString();
}
public static string ToJson(this glTFPrimitives self)
{
var f = new JsonFormatter();
- GltfSerializer.Serialize_gltf_meshes__primitives_LIST(f, self);
+ GltfSerializer.Serialize_gltf_meshes__primitives_ITEM(f, self);
return f.ToString();
}
public static string ToJson(this glTFAttributes self)
@@ -42,19 +42,19 @@ namespace VRM
public static string ToJson(this glTFMaterial self)
{
var f = new JsonFormatter();
- GltfSerializer.Serialize_gltf_materials_LIST(f, self);
+ GltfSerializer.Serialize_gltf_materials_ITEM(f, self);
return f.ToString();
}
public static string ToJson(this glTFNode self)
{
var f = new JsonFormatter();
- GltfSerializer.Serialize_gltf_nodes_LIST(f, self);
+ GltfSerializer.Serialize_gltf_nodes_ITEM(f, self);
return f.ToString();
}
public static string ToJson(this glTFSkin self)
{
var f = new JsonFormatter();
- GltfSerializer.Serialize_gltf_skins_LIST(f, self);
+ GltfSerializer.Serialize_gltf_skins_ITEM(f, self);
return f.ToString();
}