diff options
Diffstat (limited to 'Assets/ThirdParty/VRM/VRM/UniGLTF/Scripts/Format/ExtensionsAndExtras/glTFExtensions.cs')
-rw-r--r-- | Assets/ThirdParty/VRM/VRM/UniGLTF/Scripts/Format/ExtensionsAndExtras/glTFExtensions.cs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Assets/ThirdParty/VRM/VRM/UniGLTF/Scripts/Format/ExtensionsAndExtras/glTFExtensions.cs b/Assets/ThirdParty/VRM/VRM/UniGLTF/Scripts/Format/ExtensionsAndExtras/glTFExtensions.cs new file mode 100644 index 00000000..20b649bc --- /dev/null +++ b/Assets/ThirdParty/VRM/VRM/UniGLTF/Scripts/Format/ExtensionsAndExtras/glTFExtensions.cs @@ -0,0 +1,54 @@ +using System; +using System.Linq; +using System.Reflection; +using UniJSON; + + +namespace UniGLTF +{ + #region Base + public class JsonSerializeMembersAttribute : Attribute { } + + public class PartialExtensionBase<T> : JsonSerializableBase + { + protected override void SerializeMembers(GLTFJsonFormatter f) + { + foreach (var method in this.GetType().GetMethods(BindingFlags.Instance | + BindingFlags.Public | BindingFlags.NonPublic)) + { + if (method.GetCustomAttributes(typeof(JsonSerializeMembersAttribute), true).Any()) + { + method.Invoke(this, new[] { f }); + } + } + } + + public int __count + { + get + { + return typeof(T).GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) + .Where(x => x.GetCustomAttributes(typeof(JsonSerializeMembersAttribute), true).Any()) + .Count(); + } + } + } + + [ItemJsonSchema(ValueType = ValueNodeType.Object)] + //[JsonSchema(MinProperties = 1)] + public partial class ExtensionsBase<T> : PartialExtensionBase<T> + { + } + + //[JsonSchema(MinProperties = 1)] + public partial class ExtraBase<T> : PartialExtensionBase<T> + { + } + #endregion + + [Serializable] + public partial class glTF_extensions : ExtensionsBase<glTF_extensions> { } + + [Serializable] + public partial class gltf_extras : ExtraBase<gltf_extras> { } +} |