diff --git a/Assets/UniGLTF/Editor/Generator/DeserializerWriter.cs b/Assets/UniGLTF/Editor/Generator/DeserializerWriter.cs index d5ce549cb..eaae7f986 100644 --- a/Assets/UniGLTF/Editor/Generator/DeserializerWriter.cs +++ b/Assets/UniGLTF/Editor/Generator/DeserializerWriter.cs @@ -16,6 +16,7 @@ namespace UniGLTF.Extensions.$0 { public static class GltfDeserializer { + public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From($0.ExtensionName); public static bool TryGet(UniGLTF.glTFExtension src, out $0 extension) { @@ -23,7 +24,7 @@ public static bool TryGet(UniGLTF.glTFExtension src, out $0 extension) { foreach(var kv in extensions.ObjectItems()) { - if(kv.Key.GetUtf8String() == $0.ExtensionNameUtf8) + if(kv.Key.GetUtf8String() == ExtensionNameUtf8) { extension = Deserialize(kv.Value); return true; diff --git a/Assets/UniGLTF/Editor/Generator/FormatWriter.cs b/Assets/UniGLTF/Editor/Generator/FormatWriter.cs index d102bd91f..9fb9be3e9 100644 --- a/Assets/UniGLTF/Editor/Generator/FormatWriter.cs +++ b/Assets/UniGLTF/Editor/Generator/FormatWriter.cs @@ -19,29 +19,6 @@ namespace GenerateUniGLTFSerialization m_prefix = prefix; } - // static string UpperCamelCase(string src) - // { - // if(string.IsNullOrEmpty(src)) - // { - // return ""; - // } - // return src.Substring(0, 1).ToUpper() + src.Substring(1); - // } - - // string ClassName(string src) - // { - // if(string.IsNullOrEmpty(src)) - // { - // // root - // return m_prefix; - // } - // else{ - // return String.Join("", src.Split("__").Select(x => UpperCamelCase(x))); - // } - // } - - const string EnumStringAttr = "[JsonSchema(EnumSerializationType = EnumSerializationType.AsString)]"; - static (string, string) PropType(JsonSchemaBase schema) { switch (schema.JsonSchemaType) @@ -55,7 +32,7 @@ namespace GenerateUniGLTFSerialization return (null, schema.ValueType); case JsonSchemaType.EnumString: - return (EnumStringAttr, schema.ValueType); + return (null, schema.ValueType); } throw new NotImplementedException(); @@ -81,7 +58,6 @@ namespace GenerateUniGLTFSerialization { var indent = " "; m_w.WriteLine($"{indent}public const string ExtensionName = \"{rootName}\";"); - m_w.WriteLine($"{indent}public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(ExtensionName);"); m_w.WriteLine(); } @@ -178,8 +154,7 @@ namespace GenerateUniGLTFSerialization w.Write($@"// This file is generated from JsonSchema. Don't modify this source code. using System; using System.Collections.Generic; -using UniGLTF; -using UniJSON; + namespace UniGLTF.Extensions.{rootName} {{ diff --git a/Assets/UniGLTF/Editor/JsonSchema/Schemas/ExtensionJsonSchema.cs b/Assets/UniGLTF/Editor/JsonSchema/Schemas/ExtensionJsonSchema.cs index 11cd401e1..7a83dfdf9 100644 --- a/Assets/UniGLTF/Editor/JsonSchema/Schemas/ExtensionJsonSchema.cs +++ b/Assets/UniGLTF/Editor/JsonSchema/Schemas/ExtensionJsonSchema.cs @@ -9,7 +9,7 @@ namespace UniGLTF.JsonSchema.Schemas { } - public override string ValueType => "glTFExtension"; + public override string ValueType => "object"; public override bool IsInline => true; @@ -25,7 +25,7 @@ namespace UniGLTF.JsonSchema.Schemas public override string GenerateSerializerCall(string callName, string argName) { - return $"{argName}.Serialize(f)"; + return $"({argName} as glTFExtension).Serialize(f)"; } } } diff --git a/Assets/VRM10/Editor/GeneratorMenu.cs b/Assets/VRM10/Editor/GeneratorMenu.cs index ba76317d3..c2e084fb0 100644 --- a/Assets/VRM10/Editor/GeneratorMenu.cs +++ b/Assets/VRM10/Editor/GeneratorMenu.cs @@ -7,18 +7,15 @@ namespace UniVRM10 /// /// JsonSchema から vrm10 のシリアライザーを生成する。 /// - /// * https://github.com/KhronosGroup/glTF - /// * https://github.com/vrm-c/vrm-specification - /// - /// を UniVRM の隣に clone しておくこと。 - /// - /// * UniVRM /// * glTF /// * vrm-specification /// + /// は SubModuleになった。 `$ git submodule update --init` しておくこと。 + /// /// public static class Menu { +#if VRM_DEVELOP [MenuItem(UniVRM10.VRMVersion.MENU + "/Generate from JsonSchema")] public static void Generate() { @@ -30,6 +27,7 @@ namespace UniVRM10 { Run(true); } +#endif static void Run(bool debug) { diff --git a/Assets/VRM10/Runtime/Format/Constraints/Deserializer.g.cs b/Assets/VRM10/Runtime/Format/Constraints/Deserializer.g.cs index ce4d738a7..04fa4b622 100644 --- a/Assets/VRM10/Runtime/Format/Constraints/Deserializer.g.cs +++ b/Assets/VRM10/Runtime/Format/Constraints/Deserializer.g.cs @@ -8,6 +8,7 @@ namespace UniGLTF.Extensions.VRMC_node_constraint { public static class GltfDeserializer { + public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(VRMC_node_constraint.ExtensionName); public static bool TryGet(UniGLTF.glTFExtension src, out VRMC_node_constraint extension) { @@ -15,7 +16,7 @@ public static bool TryGet(UniGLTF.glTFExtension src, out VRMC_node_constraint ex { foreach(var kv in extensions.ObjectItems()) { - if(kv.Key.GetUtf8String() == VRMC_node_constraint.ExtensionNameUtf8) + if(kv.Key.GetUtf8String() == ExtensionNameUtf8) { extension = Deserialize(kv.Value); return true; diff --git a/Assets/VRM10/Runtime/Format/Constraints/Format.g.cs b/Assets/VRM10/Runtime/Format/Constraints/Format.g.cs index 13a812f1c..0d3af20a9 100644 --- a/Assets/VRM10/Runtime/Format/Constraints/Format.g.cs +++ b/Assets/VRM10/Runtime/Format/Constraints/Format.g.cs @@ -1,8 +1,7 @@ // This file is generated from JsonSchema. Don't modify this source code. using System; using System.Collections.Generic; -using UniGLTF; -using UniJSON; + namespace UniGLTF.Extensions.VRMC_node_constraint { @@ -17,10 +16,10 @@ namespace UniGLTF.Extensions.VRMC_node_constraint public class PositionConstraint { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // The user-defined name of this object. public string Name; @@ -29,11 +28,9 @@ namespace UniGLTF.Extensions.VRMC_node_constraint public int? Source; // The source node will be evaluated in this space. - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ObjectSpace SourceSpace; // The destination node will be evaluated in this space. - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ObjectSpace DestinationSpace; // Axes be constrained by this constraint, in X-Y-Z order. @@ -46,10 +43,10 @@ namespace UniGLTF.Extensions.VRMC_node_constraint public class RotationConstraint { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // The user-defined name of this object. public string Name; @@ -58,11 +55,9 @@ namespace UniGLTF.Extensions.VRMC_node_constraint public int? Source; // The source node will be evaluated in this space. - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ObjectSpace SourceSpace; // The destination node will be evaluated in this space. - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ObjectSpace DestinationSpace; // Axes be constrained by this constraint, in X-Y-Z order. @@ -75,10 +70,10 @@ namespace UniGLTF.Extensions.VRMC_node_constraint public class AimConstraint { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // The user-defined name of this object. public string Name; @@ -87,11 +82,9 @@ namespace UniGLTF.Extensions.VRMC_node_constraint public int? Source; // The source node will be evaluated in this space. - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ObjectSpace SourceSpace; // The destination node will be evaluated in this space. - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ObjectSpace DestinationSpace; // An axis which faces the direction of its source. @@ -110,10 +103,10 @@ namespace UniGLTF.Extensions.VRMC_node_constraint public class Constraint { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // A constraint that links the position with a source. public PositionConstraint Position; @@ -128,13 +121,12 @@ namespace UniGLTF.Extensions.VRMC_node_constraint public class VRMC_node_constraint { public const string ExtensionName = "VRMC_node_constraint"; - public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(ExtensionName); // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // Contains position, rotation, or aim public Constraint Constraint; diff --git a/Assets/VRM10/Runtime/Format/Constraints/Serializer.g.cs b/Assets/VRM10/Runtime/Format/Constraints/Serializer.g.cs index 35356e461..02b319f02 100644 --- a/Assets/VRM10/Runtime/Format/Constraints/Serializer.g.cs +++ b/Assets/VRM10/Runtime/Format/Constraints/Serializer.g.cs @@ -35,12 +35,12 @@ public static void Serialize(JsonFormatter f, VRMC_node_constraint value) if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Constraint!=null){ @@ -58,12 +58,12 @@ public static void Serialize_Constraint(JsonFormatter f, Constraint value) if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Position!=null){ @@ -91,12 +91,12 @@ public static void __constraint_Serialize_Position(JsonFormatter f, PositionCons if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(!string.IsNullOrEmpty(value.Name)){ @@ -151,12 +151,12 @@ public static void __constraint_Serialize_Rotation(JsonFormatter f, RotationCons if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(!string.IsNullOrEmpty(value.Name)){ @@ -211,12 +211,12 @@ public static void __constraint_Serialize_Aim(JsonFormatter f, AimConstraint val if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(!string.IsNullOrEmpty(value.Name)){ diff --git a/Assets/VRM10/Runtime/Format/MaterialsMToon/Deserializer.g.cs b/Assets/VRM10/Runtime/Format/MaterialsMToon/Deserializer.g.cs index 3d6714e44..12cedff0c 100644 --- a/Assets/VRM10/Runtime/Format/MaterialsMToon/Deserializer.g.cs +++ b/Assets/VRM10/Runtime/Format/MaterialsMToon/Deserializer.g.cs @@ -8,6 +8,7 @@ namespace UniGLTF.Extensions.VRMC_materials_mtoon { public static class GltfDeserializer { + public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(VRMC_materials_mtoon.ExtensionName); public static bool TryGet(UniGLTF.glTFExtension src, out VRMC_materials_mtoon extension) { @@ -15,7 +16,7 @@ public static bool TryGet(UniGLTF.glTFExtension src, out VRMC_materials_mtoon ex { foreach(var kv in extensions.ObjectItems()) { - if(kv.Key.GetUtf8String() == VRMC_materials_mtoon.ExtensionNameUtf8) + if(kv.Key.GetUtf8String() == ExtensionNameUtf8) { extension = Deserialize(kv.Value); return true; diff --git a/Assets/VRM10/Runtime/Format/MaterialsMToon/Format.g.cs b/Assets/VRM10/Runtime/Format/MaterialsMToon/Format.g.cs index 1812ab9cb..91a660a4d 100644 --- a/Assets/VRM10/Runtime/Format/MaterialsMToon/Format.g.cs +++ b/Assets/VRM10/Runtime/Format/MaterialsMToon/Format.g.cs @@ -1,8 +1,7 @@ // This file is generated from JsonSchema. Don't modify this source code. using System; using System.Collections.Generic; -using UniGLTF; -using UniJSON; + namespace UniGLTF.Extensions.VRMC_materials_mtoon { @@ -10,10 +9,10 @@ namespace UniGLTF.Extensions.VRMC_materials_mtoon public class TextureInfo { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // The index of the texture. public int? Index; @@ -25,10 +24,10 @@ namespace UniGLTF.Extensions.VRMC_materials_mtoon public class ShadingShiftTextureInfo { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // The index of the texture. public int? Index; @@ -51,13 +50,12 @@ namespace UniGLTF.Extensions.VRMC_materials_mtoon public class VRMC_materials_mtoon { public const string ExtensionName = "VRMC_materials_mtoon"; - public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(ExtensionName); // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // Meta public string Version; @@ -96,7 +94,6 @@ namespace UniGLTF.Extensions.VRMC_materials_mtoon public float? ParametricRimLiftFactor; // Outline - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public OutlineWidthMode OutlineWidthMode; public float? OutlineWidthFactor; diff --git a/Assets/VRM10/Runtime/Format/MaterialsMToon/Serializer.g.cs b/Assets/VRM10/Runtime/Format/MaterialsMToon/Serializer.g.cs index b6e3369a2..397041fca 100644 --- a/Assets/VRM10/Runtime/Format/MaterialsMToon/Serializer.g.cs +++ b/Assets/VRM10/Runtime/Format/MaterialsMToon/Serializer.g.cs @@ -35,12 +35,12 @@ public static void Serialize(JsonFormatter f, VRMC_materials_mtoon value) if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(!string.IsNullOrEmpty(value.Version)){ @@ -185,12 +185,12 @@ public static void Serialize_ShadeMultiplyTexture(JsonFormatter f, TextureInfo v if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Index.HasValue){ @@ -213,12 +213,12 @@ public static void Serialize_ShadingShiftTexture(JsonFormatter f, ShadingShiftTe if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Index.HasValue){ @@ -246,12 +246,12 @@ public static void Serialize_MatcapTexture(JsonFormatter f, TextureInfo value) if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Index.HasValue){ @@ -286,12 +286,12 @@ public static void Serialize_RimMultiplyTexture(JsonFormatter f, TextureInfo val if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Index.HasValue){ @@ -314,12 +314,12 @@ public static void Serialize_OutlineWidthMultiplyTexture(JsonFormatter f, Textur if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Index.HasValue){ @@ -354,12 +354,12 @@ public static void Serialize_UvAnimationMaskTexture(JsonFormatter f, TextureInfo if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Index.HasValue){ diff --git a/Assets/VRM10/Runtime/Format/SpringBone/Deserializer.g.cs b/Assets/VRM10/Runtime/Format/SpringBone/Deserializer.g.cs index 1d6b3a46c..28fe96538 100644 --- a/Assets/VRM10/Runtime/Format/SpringBone/Deserializer.g.cs +++ b/Assets/VRM10/Runtime/Format/SpringBone/Deserializer.g.cs @@ -8,6 +8,7 @@ namespace UniGLTF.Extensions.VRMC_springBone { public static class GltfDeserializer { + public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(VRMC_springBone.ExtensionName); public static bool TryGet(UniGLTF.glTFExtension src, out VRMC_springBone extension) { @@ -15,7 +16,7 @@ public static bool TryGet(UniGLTF.glTFExtension src, out VRMC_springBone extensi { foreach(var kv in extensions.ObjectItems()) { - if(kv.Key.GetUtf8String() == VRMC_springBone.ExtensionNameUtf8) + if(kv.Key.GetUtf8String() == ExtensionNameUtf8) { extension = Deserialize(kv.Value); return true; diff --git a/Assets/VRM10/Runtime/Format/SpringBone/Format.g.cs b/Assets/VRM10/Runtime/Format/SpringBone/Format.g.cs index b4124a382..122860d74 100644 --- a/Assets/VRM10/Runtime/Format/SpringBone/Format.g.cs +++ b/Assets/VRM10/Runtime/Format/SpringBone/Format.g.cs @@ -1,8 +1,7 @@ // This file is generated from JsonSchema. Don't modify this source code. using System; using System.Collections.Generic; -using UniGLTF; -using UniJSON; + namespace UniGLTF.Extensions.VRMC_springBone { @@ -31,10 +30,10 @@ namespace UniGLTF.Extensions.VRMC_springBone public class ColliderShape { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; public ColliderShapeSphere Sphere; @@ -44,10 +43,10 @@ namespace UniGLTF.Extensions.VRMC_springBone public class Collider { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // The node index. public int? Node; @@ -58,10 +57,10 @@ namespace UniGLTF.Extensions.VRMC_springBone public class ColliderGroup { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; public List Colliders; } @@ -69,10 +68,10 @@ namespace UniGLTF.Extensions.VRMC_springBone public class SpringBoneJoint { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // The node index. public int? Node; @@ -96,10 +95,10 @@ namespace UniGLTF.Extensions.VRMC_springBone public class Spring { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // Name of the Spring public string Name; @@ -114,13 +113,12 @@ namespace UniGLTF.Extensions.VRMC_springBone public class VRMC_springBone { public const string ExtensionName = "VRMC_springBone"; - public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(ExtensionName); // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // An array of colliderGroups. public List ColliderGroups; diff --git a/Assets/VRM10/Runtime/Format/SpringBone/Serializer.g.cs b/Assets/VRM10/Runtime/Format/SpringBone/Serializer.g.cs index 38e423999..ef63c1cd2 100644 --- a/Assets/VRM10/Runtime/Format/SpringBone/Serializer.g.cs +++ b/Assets/VRM10/Runtime/Format/SpringBone/Serializer.g.cs @@ -35,12 +35,12 @@ public static void Serialize(JsonFormatter f, VRMC_springBone value) if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.ColliderGroups!=null&&value.ColliderGroups.Count()>=0){ @@ -75,12 +75,12 @@ public static void Serialize_ColliderGroups_ITEM(JsonFormatter f, ColliderGroup if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Colliders!=null&&value.Colliders.Count()>=0){ @@ -110,12 +110,12 @@ public static void __colliderGroups_ITEM_Serialize_Colliders_ITEM(JsonFormatter if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Node.HasValue){ @@ -138,12 +138,12 @@ public static void __colliderGroups_ITEM__colliders_ITEM_Serialize_Shape(JsonFor if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Sphere!=null){ @@ -255,12 +255,12 @@ public static void Serialize_Springs_ITEM(JsonFormatter f, Spring value) if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(!string.IsNullOrEmpty(value.Name)){ @@ -300,12 +300,12 @@ public static void __springs_ITEM_Serialize_Joints_ITEM(JsonFormatter f, SpringB if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Node.HasValue){ diff --git a/Assets/VRM10/Runtime/Format/Vrm/Deserializer.g.cs b/Assets/VRM10/Runtime/Format/Vrm/Deserializer.g.cs index fef0de1f1..20a866f87 100644 --- a/Assets/VRM10/Runtime/Format/Vrm/Deserializer.g.cs +++ b/Assets/VRM10/Runtime/Format/Vrm/Deserializer.g.cs @@ -8,6 +8,7 @@ namespace UniGLTF.Extensions.VRMC_vrm { public static class GltfDeserializer { + public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(VRMC_vrm.ExtensionName); public static bool TryGet(UniGLTF.glTFExtension src, out VRMC_vrm extension) { @@ -15,7 +16,7 @@ public static bool TryGet(UniGLTF.glTFExtension src, out VRMC_vrm extension) { foreach(var kv in extensions.ObjectItems()) { - if(kv.Key.GetUtf8String() == VRMC_vrm.ExtensionNameUtf8) + if(kv.Key.GetUtf8String() == ExtensionNameUtf8) { extension = Deserialize(kv.Value); return true; diff --git a/Assets/VRM10/Runtime/Format/Vrm/Format.g.cs b/Assets/VRM10/Runtime/Format/Vrm/Format.g.cs index 60319c844..22167bc20 100644 --- a/Assets/VRM10/Runtime/Format/Vrm/Format.g.cs +++ b/Assets/VRM10/Runtime/Format/Vrm/Format.g.cs @@ -1,8 +1,7 @@ // This file is generated from JsonSchema. Don't modify this source code. using System; using System.Collections.Generic; -using UniGLTF; -using UniJSON; + namespace UniGLTF.Extensions.VRMC_vrm { @@ -66,7 +65,6 @@ namespace UniGLTF.Extensions.VRMC_vrm public int? ThumbnailImage; // A person who can perform with this avatars - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public AvatarPermissionType AvatarPermission; // A flag that permits to use this avatar in excessively violent contents @@ -76,21 +74,18 @@ namespace UniGLTF.Extensions.VRMC_vrm public bool? AllowExcessivelySexualUsage; // An option that permits to use this avatar in commercial products - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public CommercialUsageType CommercialUsage; // A flag that permits to use this avatar in political or religious contents public bool? AllowPoliticalOrReligiousUsage; // An option that forces or abandons to display the credit of this avatar - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public CreditNotationType CreditNotation; // A flag that permits to redistribute this avatar public bool? AllowRedistribution; // An option that controls the condition to modify this avatar - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ModificationType Modification; // Describe the URL links of other license @@ -292,7 +287,6 @@ namespace UniGLTF.Extensions.VRMC_vrm public int? Node; // How the camera interprets the mesh. - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public FirstPersonType Type; } @@ -323,7 +317,6 @@ namespace UniGLTF.Extensions.VRMC_vrm // The origin of LookAt. Position offset from the head bone public float[] OffsetFromHeadBone; - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public LookAtType Type; // Horizontal inward movement. The left eye moves right. The right eye moves left. @@ -366,10 +359,10 @@ namespace UniGLTF.Extensions.VRMC_vrm public class MorphTargetBind { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // The index of the node that attached to target mesh. public int? Node; @@ -394,15 +387,14 @@ namespace UniGLTF.Extensions.VRMC_vrm public class MaterialColorBind { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // target material public int? Material; - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public MaterialColorType Type; // target color @@ -412,10 +404,10 @@ namespace UniGLTF.Extensions.VRMC_vrm public class TextureTransformBind { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // target material public int? Material; @@ -438,16 +430,15 @@ namespace UniGLTF.Extensions.VRMC_vrm public class Expression { // Dictionary object with extension-specific objects. - public glTFExtension Extensions; + public object Extensions; // Application-specific data. - public glTFExtension Extras; + public object Extras; // Use only if the preset is custom. Unique within the model public string Name; // Functions of Expression - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ExpressionPreset Preset; // Specify a morph target @@ -463,22 +454,18 @@ namespace UniGLTF.Extensions.VRMC_vrm public bool? IsBinary; // Override values of Blink expressions when this Expression is enabled - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ExpressionOverrideType OverrideBlink; // Override values of LookAt expressions when this Expression is enabled - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ExpressionOverrideType OverrideLookAt; // Override values of Mouth expressions when this Expression is enabled - [JsonSchema(EnumSerializationType = EnumSerializationType.AsString)] public ExpressionOverrideType OverrideMouth; } public class VRMC_vrm { public const string ExtensionName = "VRMC_vrm"; - public static readonly Utf8String ExtensionNameUtf8 = Utf8String.From(ExtensionName); // Specification version of the VRM public string SpecVersion; diff --git a/Assets/VRM10/Runtime/Format/Vrm/Serializer.g.cs b/Assets/VRM10/Runtime/Format/Vrm/Serializer.g.cs index c5dc200a8..610fec3c9 100644 --- a/Assets/VRM10/Runtime/Format/Vrm/Serializer.g.cs +++ b/Assets/VRM10/Runtime/Format/Vrm/Serializer.g.cs @@ -1378,12 +1378,12 @@ public static void Serialize_Expressions_ITEM(JsonFormatter f, Expression value) if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(!string.IsNullOrEmpty(value.Name)){ @@ -1453,12 +1453,12 @@ public static void __expressions_ITEM_Serialize_MorphTargetBinds_ITEM(JsonFormat if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Node.HasValue){ @@ -1498,12 +1498,12 @@ public static void __expressions_ITEM_Serialize_MaterialColorBinds_ITEM(JsonForm if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Material.HasValue){ @@ -1555,12 +1555,12 @@ public static void __expressions_ITEM_Serialize_TextureTransformBinds_ITEM(JsonF if(value.Extensions!=null){ f.Key("extensions"); - value.Extensions.Serialize(f); + (value.Extensions as glTFExtension).Serialize(f); } if(value.Extras!=null){ f.Key("extras"); - value.Extras.Serialize(f); + (value.Extras as glTFExtension).Serialize(f); } if(value.Material.HasValue){ diff --git a/Assets/VRM10/Tests/MigrationTests.cs b/Assets/VRM10/Tests/MigrationTests.cs index e60a69d51..5329888b6 100644 --- a/Assets/VRM10/Tests/MigrationTests.cs +++ b/Assets/VRM10/Tests/MigrationTests.cs @@ -54,9 +54,9 @@ namespace UniVRM10 var json = glb.Json.Bytes.ParseAsJson(); var gltf = UniGLTF.GltfDeserializer.Deserialize(json); - MigrationVrm.Check(vrm0Json, GetExtension(gltf.extensions, UniGLTF.Extensions.VRMC_vrm.VRMC_vrm.ExtensionNameUtf8, + MigrationVrm.Check(vrm0Json, GetExtension(gltf.extensions, UniGLTF.Extensions.VRMC_vrm.GltfDeserializer.ExtensionNameUtf8, UniGLTF.Extensions.VRMC_vrm.GltfDeserializer.Deserialize)); - MigrationVrm.Check(vrm0Json, GetExtension(gltf.extensions, UniGLTF.Extensions.VRMC_springBone.VRMC_springBone.ExtensionNameUtf8, + MigrationVrm.Check(vrm0Json, GetExtension(gltf.extensions, UniGLTF.Extensions.VRMC_springBone.GltfDeserializer.ExtensionNameUtf8, UniGLTF.Extensions.VRMC_springBone.GltfDeserializer.Deserialize), gltf.nodes); }