From 8a959fc88a4a079992df722d5c2c4e7e4b7d7d9a Mon Sep 17 00:00:00 2001 From: ousttrue Date: Fri, 20 Nov 2020 14:55:34 +0900 Subject: [PATCH] VRMDeserializerGenerator --- .../Serialization/DeserializerGenerator.cs | 2 +- .../UniGLTF/Scripts/IO/GltfDeserializer.g.cs | 1837 ++--------------- Assets/VRM/UniVRM/Editor/UniVRM.Editor.asmdef | 3 +- .../UniVRM/Editor/VRMDeserializerGenerator.cs | 61 + .../Editor/VRMDeserializerGenerator.cs.meta | 11 + .../Scripts/Format/VRMDeserializer.g.cs | 1099 ++++++++++ .../Scripts/Format/VRMDeserializer.g.cs.meta | 11 + .../Scripts/Format/VRMImporterContext.cs | 27 +- 8 files changed, 1400 insertions(+), 1651 deletions(-) create mode 100644 Assets/VRM/UniVRM/Editor/VRMDeserializerGenerator.cs create mode 100644 Assets/VRM/UniVRM/Editor/VRMDeserializerGenerator.cs.meta create mode 100644 Assets/VRM/UniVRM/Scripts/Format/VRMDeserializer.g.cs create mode 100644 Assets/VRM/UniVRM/Scripts/Format/VRMDeserializer.g.cs.meta diff --git a/Assets/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs b/Assets/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs index c6bb8bbae..297300115 100644 --- a/Assets/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs +++ b/Assets/VRM/UniGLTF/Editor/Serialization/DeserializerGenerator.cs @@ -22,7 +22,7 @@ namespace UniGLTF /// /// AOT向けにデシリアライザを生成する /// - [MenuItem(VRM.VRMVersion.MENU + "/Generate Deserializer")] + [MenuItem(VRM.VRMVersion.MENU + "/GLTF: Generate Deserializer")] static void GenerateSerializer() { var info = new ObjectSerialization(typeof(glTF), "gltf"); diff --git a/Assets/VRM/UniGLTF/Scripts/IO/GltfDeserializer.g.cs b/Assets/VRM/UniGLTF/Scripts/IO/GltfDeserializer.g.cs index ca1a758f7..d74b3a69e 100644 --- a/Assets/VRM/UniGLTF/Scripts/IO/GltfDeserializer.g.cs +++ b/Assets/VRM/UniGLTF/Scripts/IO/GltfDeserializer.g.cs @@ -146,6 +146,16 @@ public static glTFAssets Deserialize_gltf_asset(ListTreeNode parsed) continue; } + if(key=="extensions"){ + value.extensions = kv.Value; + continue; + } + + if(key=="extras"){ + value.extras = kv.Value; + continue; + } + } return value; } @@ -177,6 +187,16 @@ public static glTFBuffer Deserialize_gltf_buffers_LIST(ListTreeNode p continue; } + if(key=="extensions"){ + value.extensions = kv.Value; + continue; + } + + if(key=="extras"){ + value.extras = kv.Value; + continue; + } + if(key=="name"){ value.name = kv.Value.GetString(); continue; @@ -228,6 +248,16 @@ public static glTFBufferView Deserialize_gltf_bufferViews_LIST(ListTreeNode continue; } + if(key=="extensions"){ + value.extensions = kv.Value; + continue; + } + + if(key=="extras"){ + value.extras = kv.Value; + continue; + } + if(key=="name"){ value.name = kv.Value.GetString(); continue; @@ -479,6 +559,16 @@ public static glTFTextureSampler Deserialize_gltf_samplers_LIST(ListTreeNode par continue; } + if(key=="extensions"){ + value.extensions = kv.Value; + continue; + } + + if(key=="extras"){ + value.extras = kv.Value; + continue; + } + } return value; } @@ -596,6 +696,11 @@ public static glTFMaterial Deserialize_gltf_materials_LIST(ListTreeNode parsed) -// { -// var value = new glTFTextureInfo_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// if(key=="KHR_texture_transform"){ -// value.KHR_texture_transform = Deserialize_gltf_materials__pbrMetallicRoughness_baseColorTexture_extensions_KHR_texture_transform(kv.Value); -// continue; -// } - -// } -// return value; -// } - -public static glTF_KHR_texture_transform Deserialize_gltf_materials__pbrMetallicRoughness_baseColorTexture_extensions_KHR_texture_transform(ListTreeNode parsed) -{ - var value = new glTF_KHR_texture_transform(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="offset"){ - value.offset = Deserialize_gltf_materials__pbrMetallicRoughness_baseColorTexture_extensions_KHR_texture_transform_offset(kv.Value); - continue; - } - - if(key=="rotation"){ - value.rotation = kv.Value.GetSingle(); - continue; - } - - if(key=="scale"){ - value.scale = Deserialize_gltf_materials__pbrMetallicRoughness_baseColorTexture_extensions_KHR_texture_transform_scale(kv.Value); - continue; - } - - if(key=="texCoord"){ - value.texCoord = kv.Value.GetInt32(); + if(key=="extras"){ + value.extras = kv.Value; continue; } @@ -713,28 +784,6 @@ public static glTF_KHR_texture_transform Deserialize_gltf_materials__pbrMetallic return value; } -public static Single[] Deserialize_gltf_materials__pbrMetallicRoughness_baseColorTexture_extensions_KHR_texture_transform_offset(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - -public static Single[] Deserialize_gltf_materials__pbrMetallicRoughness_baseColorTexture_extensions_KHR_texture_transform_scale(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - public static Single[] Deserialize_gltf_materials__pbrMetallicRoughness_baseColorFactor(ListTreeNode parsed) { var value = new Single[parsed.GetArrayCount()]; @@ -769,52 +818,8 @@ public static glTFMaterialMetallicRoughnessTextureInfo Deserialize_gltf_material continue; } - } - return value; -} - -// public static glTFTextureInfo_extensions Deserialize_gltf_materials__pbrMetallicRoughness_metallicRoughnessTexture_extensions(ListTreeNode parsed) -// { -// var value = new glTFTextureInfo_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// if(key=="KHR_texture_transform"){ -// value.KHR_texture_transform = Deserialize_gltf_materials__pbrMetallicRoughness_metallicRoughnessTexture_extensions_KHR_texture_transform(kv.Value); -// continue; -// } - -// } -// return value; -// } - -public static glTF_KHR_texture_transform Deserialize_gltf_materials__pbrMetallicRoughness_metallicRoughnessTexture_extensions_KHR_texture_transform(ListTreeNode parsed) -{ - var value = new glTF_KHR_texture_transform(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="offset"){ - value.offset = Deserialize_gltf_materials__pbrMetallicRoughness_metallicRoughnessTexture_extensions_KHR_texture_transform_offset(kv.Value); - continue; - } - - if(key=="rotation"){ - value.rotation = kv.Value.GetSingle(); - continue; - } - - if(key=="scale"){ - value.scale = Deserialize_gltf_materials__pbrMetallicRoughness_metallicRoughnessTexture_extensions_KHR_texture_transform_scale(kv.Value); - continue; - } - - if(key=="texCoord"){ - value.texCoord = kv.Value.GetInt32(); + if(key=="extras"){ + value.extras = kv.Value; continue; } @@ -822,28 +827,6 @@ public static glTF_KHR_texture_transform Deserialize_gltf_materials__pbrMetallic return value; } -public static Single[] Deserialize_gltf_materials__pbrMetallicRoughness_metallicRoughnessTexture_extensions_KHR_texture_transform_offset(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - -public static Single[] Deserialize_gltf_materials__pbrMetallicRoughness_metallicRoughnessTexture_extensions_KHR_texture_transform_scale(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - public static glTFMaterialNormalTextureInfo Deserialize_gltf_materials__normalTexture(ListTreeNode parsed) { var value = new glTFMaterialNormalTextureInfo(); @@ -872,52 +855,8 @@ public static glTFMaterialNormalTextureInfo Deserialize_gltf_materials__normalTe continue; } - } - return value; -} - -// public static glTFTextureInfo_extensions Deserialize_gltf_materials__normalTexture_extensions(ListTreeNode parsed) -// { -// var value = new glTFTextureInfo_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// if(key=="KHR_texture_transform"){ -// value.KHR_texture_transform = Deserialize_gltf_materials__normalTexture_extensions_KHR_texture_transform(kv.Value); -// continue; -// } - -// } -// return value; -// } - -public static glTF_KHR_texture_transform Deserialize_gltf_materials__normalTexture_extensions_KHR_texture_transform(ListTreeNode parsed) -{ - var value = new glTF_KHR_texture_transform(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="offset"){ - value.offset = Deserialize_gltf_materials__normalTexture_extensions_KHR_texture_transform_offset(kv.Value); - continue; - } - - if(key=="rotation"){ - value.rotation = kv.Value.GetSingle(); - continue; - } - - if(key=="scale"){ - value.scale = Deserialize_gltf_materials__normalTexture_extensions_KHR_texture_transform_scale(kv.Value); - continue; - } - - if(key=="texCoord"){ - value.texCoord = kv.Value.GetInt32(); + if(key=="extras"){ + value.extras = kv.Value; continue; } @@ -925,28 +864,6 @@ public static glTF_KHR_texture_transform Deserialize_gltf_materials__normalTextu return value; } -public static Single[] Deserialize_gltf_materials__normalTexture_extensions_KHR_texture_transform_offset(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - -public static Single[] Deserialize_gltf_materials__normalTexture_extensions_KHR_texture_transform_scale(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - public static glTFMaterialOcclusionTextureInfo Deserialize_gltf_materials__occlusionTexture(ListTreeNode parsed) { var value = new glTFMaterialOcclusionTextureInfo(); @@ -975,52 +892,8 @@ public static glTFMaterialOcclusionTextureInfo Deserialize_gltf_materials__occlu continue; } - } - return value; -} - -// public static glTFTextureInfo_extensions Deserialize_gltf_materials__occlusionTexture_extensions(ListTreeNode parsed) -// { -// var value = new glTFTextureInfo_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// if(key=="KHR_texture_transform"){ -// value.KHR_texture_transform = Deserialize_gltf_materials__occlusionTexture_extensions_KHR_texture_transform(kv.Value); -// continue; -// } - -// } -// return value; -// } - -public static glTF_KHR_texture_transform Deserialize_gltf_materials__occlusionTexture_extensions_KHR_texture_transform(ListTreeNode parsed) -{ - var value = new glTF_KHR_texture_transform(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="offset"){ - value.offset = Deserialize_gltf_materials__occlusionTexture_extensions_KHR_texture_transform_offset(kv.Value); - continue; - } - - if(key=="rotation"){ - value.rotation = kv.Value.GetSingle(); - continue; - } - - if(key=="scale"){ - value.scale = Deserialize_gltf_materials__occlusionTexture_extensions_KHR_texture_transform_scale(kv.Value); - continue; - } - - if(key=="texCoord"){ - value.texCoord = kv.Value.GetInt32(); + if(key=="extras"){ + value.extras = kv.Value; continue; } @@ -1028,28 +901,6 @@ public static glTF_KHR_texture_transform Deserialize_gltf_materials__occlusionTe return value; } -public static Single[] Deserialize_gltf_materials__occlusionTexture_extensions_KHR_texture_transform_offset(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - -public static Single[] Deserialize_gltf_materials__occlusionTexture_extensions_KHR_texture_transform_scale(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - public static glTFMaterialEmissiveTextureInfo Deserialize_gltf_materials__emissiveTexture(ListTreeNode parsed) { var value = new glTFMaterialEmissiveTextureInfo(); @@ -1073,52 +924,8 @@ public static glTFMaterialEmissiveTextureInfo Deserialize_gltf_materials__emissi continue; } - } - return value; -} - -// public static glTFTextureInfo_extensions Deserialize_gltf_materials__emissiveTexture_extensions(ListTreeNode parsed) -// { -// var value = new glTFTextureInfo_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// if(key=="KHR_texture_transform"){ -// value.KHR_texture_transform = Deserialize_gltf_materials__emissiveTexture_extensions_KHR_texture_transform(kv.Value); -// continue; -// } - -// } -// return value; -// } - -public static glTF_KHR_texture_transform Deserialize_gltf_materials__emissiveTexture_extensions_KHR_texture_transform(ListTreeNode parsed) -{ - var value = new glTF_KHR_texture_transform(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="offset"){ - value.offset = Deserialize_gltf_materials__emissiveTexture_extensions_KHR_texture_transform_offset(kv.Value); - continue; - } - - if(key=="rotation"){ - value.rotation = kv.Value.GetSingle(); - continue; - } - - if(key=="scale"){ - value.scale = Deserialize_gltf_materials__emissiveTexture_extensions_KHR_texture_transform_scale(kv.Value); - continue; - } - - if(key=="texCoord"){ - value.texCoord = kv.Value.GetInt32(); + if(key=="extras"){ + value.extras = kv.Value; continue; } @@ -1126,28 +933,6 @@ public static glTF_KHR_texture_transform Deserialize_gltf_materials__emissiveTex return value; } -public static Single[] Deserialize_gltf_materials__emissiveTexture_extensions_KHR_texture_transform_offset(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - -public static Single[] Deserialize_gltf_materials__emissiveTexture_extensions_KHR_texture_transform_scale(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - public static Single[] Deserialize_gltf_materials__emissiveFactor(ListTreeNode parsed) { var value = new Single[parsed.GetArrayCount()]; @@ -1159,35 +944,6 @@ public static Single[] Deserialize_gltf_materials__emissiveFactor(ListTreeNode parsed) -// { -// var value = new glTFMaterial_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// if(key=="KHR_materials_unlit"){ -// value.KHR_materials_unlit = Deserialize_gltf_materials__extensions_KHR_materials_unlit(kv.Value); -// continue; -// } - -// } -// return value; -// } - -public static glTF_KHR_materials_unlit Deserialize_gltf_materials__extensions_KHR_materials_unlit(ListTreeNode parsed) -{ - var value = new glTF_KHR_materials_unlit(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - } - return value; -} - public static List Deserialize_gltf_meshes(ListTreeNode parsed) { var value = new List(); @@ -1225,6 +981,11 @@ public static glTFMesh Deserialize_gltf_meshes_LIST(ListTreeNode pars continue; } + if(key=="extensions"){ + value.extensions = kv.Value; + continue; + } + } return value; } @@ -1313,6 +1074,11 @@ public static glTFAttributes Deserialize_gltf_meshes__primitives__attributes(Lis continue; } + if(key=="TEXCOORD_1"){ + value.TEXCOORD_1 = kv.Value.GetInt32(); + continue; + } + if(key=="COLOR_0"){ value.COLOR_0 = kv.Value.GetInt32(); continue; @@ -1368,44 +1134,6 @@ public static gltfMorphTarget Deserialize_gltf_meshes__primitives__targets_LIST( return value; } -// public static glTFPrimitives_extras Deserialize_gltf_meshes__primitives__extras(ListTreeNode parsed) -// { -// var value = new glTFPrimitives_extras(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// if(key=="targetNames"){ -// value.targetNames = Deserialize_gltf_meshes__primitives__extras_targetNames(kv.Value); -// continue; -// } - -// } -// return value; -// } - -public static List Deserialize_gltf_meshes__primitives__extras_targetNames(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(x.GetString()); - } - return value; -} -// public static glTFPrimitives_extensions Deserialize_gltf_meshes__primitives__extensions(ListTreeNode parsed) -// { -// var value = new glTFPrimitives_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// } -// return value; -// } - public static Single[] Deserialize_gltf_meshes__weights(ListTreeNode parsed) { var value = new Single[parsed.GetArrayCount()]; @@ -1417,32 +1145,6 @@ public static Single[] Deserialize_gltf_meshes__weights(ListTreeNode return value; } -// public static glTFMesh_extras Deserialize_gltf_meshes__extras(ListTreeNode parsed) -// { -// var value = new glTFMesh_extras(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// if(key=="targetNames"){ -// value.targetNames = Deserialize_gltf_meshes__extras_targetNames(kv.Value); -// continue; -// } - -// } -// return value; -// } - -public static List Deserialize_gltf_meshes__extras_targetNames(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(x.GetString()); - } - return value; -} public static List Deserialize_gltf_nodes(ListTreeNode parsed) { var value = new List(); @@ -1590,30 +1292,6 @@ public static Single[] Deserialize_gltf_nodes__weights(ListTreeNode p return value; } -// public static glTFNode_extensions Deserialize_gltf_nodes__extensions(ListTreeNode parsed) -// { -// var value = new glTFNode_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// } -// return value; -// } - -// public static glTFNode_extra Deserialize_gltf_nodes__extras(ListTreeNode parsed) -// { -// var value = new glTFNode_extra(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// } -// return value; -// } - public static List Deserialize_gltf_skins(ListTreeNode parsed) { var value = new List(); @@ -1646,6 +1324,16 @@ public static glTFSkin Deserialize_gltf_skins_LIST(ListTreeNode parse continue; } + if(key=="extensions"){ + value.extensions = kv.Value; + continue; + } + + if(key=="extras"){ + value.extras = kv.Value; + continue; + } + if(key=="name"){ value.name = kv.Value.GetString(); continue; @@ -1688,6 +1376,16 @@ public static gltfScene Deserialize_gltf_scenes_LIST(ListTreeNode par continue; } + if(key=="extensions"){ + value.extensions = kv.Value; + continue; + } + + if(key=="extras"){ + value.extras = kv.Value; + continue; + } + if(key=="name"){ value.name = kv.Value.GetString(); continue; @@ -1740,6 +1438,16 @@ public static glTFAnimation Deserialize_gltf_animations_LIST(ListTreeNode parsed) -// { -// var value = new glTFOrthographic_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// } -// return value; -// } - -// public static glTFOrthographic_extras Deserialize_gltf_cameras__orthographic_extras(ListTreeNode parsed) -// { -// var value = new glTFOrthographic_extras(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// } -// return value; -// } - public static glTFPerspective Deserialize_gltf_cameras__perspective(ListTreeNode parsed) { var value = new glTFPerspective(); @@ -1992,54 +1706,6 @@ public static glTFPerspective Deserialize_gltf_cameras__perspective(ListTreeNode return value; } -// public static glTFPerspective_extensions Deserialize_gltf_cameras__perspective_extensions(ListTreeNode parsed) -// { -// var value = new glTFPerspective_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// } -// return value; -// } - -// public static glTFPerspective_extras Deserialize_gltf_cameras__perspective_extras(ListTreeNode parsed) -// { -// var value = new glTFPerspective_extras(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// } -// return value; -// } - -// public static glTFCamera_extensions Deserialize_gltf_cameras__extensions(ListTreeNode parsed) -// { -// var value = new glTFCamera_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// } -// return value; -// } - -// public static glTFCamera_extras Deserialize_gltf_cameras__extras(ListTreeNode parsed) -// { -// var value = new glTFCamera_extras(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// } -// return value; -// } - public static List Deserialize_gltf_extensionsUsed(ListTreeNode parsed) { var value = new List(); @@ -2058,1118 +1724,5 @@ public static List Deserialize_gltf_extensionsRequired(ListTreeNo } return value; } -// public static glTF_extensions Deserialize_gltf_extensions(ListTreeNode parsed) -// { -// var value = new glTF_extensions(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// if(key=="VRM"){ -// value.VRM = Deserialize_gltf_extensions_VRM(kv.Value); -// continue; -// } - -// } -// return value; -// } - -public static glTF_VRM_extensions Deserialize_gltf_extensions_VRM(ListTreeNode parsed) -{ - var value = new glTF_VRM_extensions(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="exporterVersion"){ - value.exporterVersion = kv.Value.GetString(); - continue; - } - - if(key=="specVersion"){ - value.specVersion = kv.Value.GetString(); - continue; - } - - if(key=="meta"){ - value.meta = Deserialize_gltf_extensions_VRM_meta(kv.Value); - continue; - } - - if(key=="humanoid"){ - value.humanoid = Deserialize_gltf_extensions_VRM_humanoid(kv.Value); - continue; - } - - if(key=="firstPerson"){ - value.firstPerson = Deserialize_gltf_extensions_VRM_firstPerson(kv.Value); - continue; - } - - if(key=="blendShapeMaster"){ - value.blendShapeMaster = Deserialize_gltf_extensions_VRM_blendShapeMaster(kv.Value); - continue; - } - - if(key=="secondaryAnimation"){ - value.secondaryAnimation = Deserialize_gltf_extensions_VRM_secondaryAnimation(kv.Value); - continue; - } - - if(key=="materialProperties"){ - value.materialProperties = Deserialize_gltf_extensions_VRM_materialProperties(kv.Value); - continue; - } - - } - return value; -} - -public static glTF_VRM_Meta Deserialize_gltf_extensions_VRM_meta(ListTreeNode parsed) -{ - var value = new glTF_VRM_Meta(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="title"){ - value.title = kv.Value.GetString(); - continue; - } - - if(key=="version"){ - value.version = kv.Value.GetString(); - continue; - } - - if(key=="author"){ - value.author = kv.Value.GetString(); - continue; - } - - if(key=="contactInformation"){ - value.contactInformation = kv.Value.GetString(); - continue; - } - - if(key=="reference"){ - value.reference = kv.Value.GetString(); - continue; - } - - if(key=="texture"){ - value.texture = kv.Value.GetInt32(); - continue; - } - - if(key=="allowedUserName"){ - value.allowedUserName = kv.Value.GetString(); - continue; - } - - if(key=="violentUssageName"){ - value.violentUssageName = kv.Value.GetString(); - continue; - } - - if(key=="sexualUssageName"){ - value.sexualUssageName = kv.Value.GetString(); - continue; - } - - if(key=="commercialUssageName"){ - value.commercialUssageName = kv.Value.GetString(); - continue; - } - - if(key=="otherPermissionUrl"){ - value.otherPermissionUrl = kv.Value.GetString(); - continue; - } - - if(key=="licenseName"){ - value.licenseName = kv.Value.GetString(); - continue; - } - - if(key=="otherLicenseUrl"){ - value.otherLicenseUrl = kv.Value.GetString(); - continue; - } - - } - return value; -} - -public static glTF_VRM_Humanoid Deserialize_gltf_extensions_VRM_humanoid(ListTreeNode parsed) -{ - var value = new glTF_VRM_Humanoid(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="humanBones"){ - value.humanBones = Deserialize_gltf_extensions_VRM_humanoid_humanBones(kv.Value); - continue; - } - - if(key=="armStretch"){ - value.armStretch = kv.Value.GetSingle(); - continue; - } - - if(key=="legStretch"){ - value.legStretch = kv.Value.GetSingle(); - continue; - } - - if(key=="upperArmTwist"){ - value.upperArmTwist = kv.Value.GetSingle(); - continue; - } - - if(key=="lowerArmTwist"){ - value.lowerArmTwist = kv.Value.GetSingle(); - continue; - } - - if(key=="upperLegTwist"){ - value.upperLegTwist = kv.Value.GetSingle(); - continue; - } - - if(key=="lowerLegTwist"){ - value.lowerLegTwist = kv.Value.GetSingle(); - continue; - } - - if(key=="feetSpacing"){ - value.feetSpacing = kv.Value.GetSingle(); - continue; - } - - if(key=="hasTranslationDoF"){ - value.hasTranslationDoF = kv.Value.GetBoolean(); - continue; - } - - } - return value; -} - -public static List Deserialize_gltf_extensions_VRM_humanoid_humanBones(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(Deserialize_gltf_extensions_VRM_humanoid_humanBones_LIST(x)); - } - return value; -} -public static glTF_VRM_HumanoidBone Deserialize_gltf_extensions_VRM_humanoid_humanBones_LIST(ListTreeNode parsed) -{ - var value = new glTF_VRM_HumanoidBone(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="bone"){ - value.bone = kv.Value.GetString(); - continue; - } - - if(key=="node"){ - value.node = kv.Value.GetInt32(); - continue; - } - - if(key=="useDefaultValues"){ - value.useDefaultValues = kv.Value.GetBoolean(); - continue; - } - - if(key=="min"){ - value.min = Deserialize_gltf_extensions_VRM_humanoid_humanBones__min(kv.Value); - continue; - } - - if(key=="max"){ - value.max = Deserialize_gltf_extensions_VRM_humanoid_humanBones__max(kv.Value); - continue; - } - - if(key=="center"){ - value.center = Deserialize_gltf_extensions_VRM_humanoid_humanBones__center(kv.Value); - continue; - } - - if(key=="axisLength"){ - value.axisLength = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static Vector3 Deserialize_gltf_extensions_VRM_humanoid_humanBones__min(ListTreeNode parsed) -{ - var value = new Vector3(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="x"){ - value.x = kv.Value.GetSingle(); - continue; - } - - if(key=="y"){ - value.y = kv.Value.GetSingle(); - continue; - } - - if(key=="z"){ - value.z = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static Vector3 Deserialize_gltf_extensions_VRM_humanoid_humanBones__max(ListTreeNode parsed) -{ - var value = new Vector3(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="x"){ - value.x = kv.Value.GetSingle(); - continue; - } - - if(key=="y"){ - value.y = kv.Value.GetSingle(); - continue; - } - - if(key=="z"){ - value.z = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static Vector3 Deserialize_gltf_extensions_VRM_humanoid_humanBones__center(ListTreeNode parsed) -{ - var value = new Vector3(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="x"){ - value.x = kv.Value.GetSingle(); - continue; - } - - if(key=="y"){ - value.y = kv.Value.GetSingle(); - continue; - } - - if(key=="z"){ - value.z = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static glTF_VRM_Firstperson Deserialize_gltf_extensions_VRM_firstPerson(ListTreeNode parsed) -{ - var value = new glTF_VRM_Firstperson(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="firstPersonBone"){ - value.firstPersonBone = kv.Value.GetInt32(); - continue; - } - - if(key=="firstPersonBoneOffset"){ - value.firstPersonBoneOffset = Deserialize_gltf_extensions_VRM_firstPerson_firstPersonBoneOffset(kv.Value); - continue; - } - - if(key=="meshAnnotations"){ - value.meshAnnotations = Deserialize_gltf_extensions_VRM_firstPerson_meshAnnotations(kv.Value); - continue; - } - - if(key=="lookAtTypeName"){ - value.lookAtTypeName = kv.Value.GetString(); - continue; - } - - if(key=="lookAtHorizontalInner"){ - value.lookAtHorizontalInner = Deserialize_gltf_extensions_VRM_firstPerson_lookAtHorizontalInner(kv.Value); - continue; - } - - if(key=="lookAtHorizontalOuter"){ - value.lookAtHorizontalOuter = Deserialize_gltf_extensions_VRM_firstPerson_lookAtHorizontalOuter(kv.Value); - continue; - } - - if(key=="lookAtVerticalDown"){ - value.lookAtVerticalDown = Deserialize_gltf_extensions_VRM_firstPerson_lookAtVerticalDown(kv.Value); - continue; - } - - if(key=="lookAtVerticalUp"){ - value.lookAtVerticalUp = Deserialize_gltf_extensions_VRM_firstPerson_lookAtVerticalUp(kv.Value); - continue; - } - - } - return value; -} - -public static Vector3 Deserialize_gltf_extensions_VRM_firstPerson_firstPersonBoneOffset(ListTreeNode parsed) -{ - var value = new Vector3(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="x"){ - value.x = kv.Value.GetSingle(); - continue; - } - - if(key=="y"){ - value.y = kv.Value.GetSingle(); - continue; - } - - if(key=="z"){ - value.z = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static List Deserialize_gltf_extensions_VRM_firstPerson_meshAnnotations(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(Deserialize_gltf_extensions_VRM_firstPerson_meshAnnotations_LIST(x)); - } - return value; -} -public static glTF_VRM_MeshAnnotation Deserialize_gltf_extensions_VRM_firstPerson_meshAnnotations_LIST(ListTreeNode parsed) -{ - var value = new glTF_VRM_MeshAnnotation(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="mesh"){ - value.mesh = kv.Value.GetInt32(); - continue; - } - - if(key=="firstPersonFlag"){ - value.firstPersonFlag = kv.Value.GetString(); - continue; - } - - } - return value; -} - -public static glTF_VRM_DegreeMap Deserialize_gltf_extensions_VRM_firstPerson_lookAtHorizontalInner(ListTreeNode parsed) -{ - var value = new glTF_VRM_DegreeMap(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="curve"){ - value.curve = Deserialize_gltf_extensions_VRM_firstPerson_lookAtHorizontalInner_curve(kv.Value); - continue; - } - - if(key=="xRange"){ - value.xRange = kv.Value.GetSingle(); - continue; - } - - if(key=="yRange"){ - value.yRange = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static Single[] Deserialize_gltf_extensions_VRM_firstPerson_lookAtHorizontalInner_curve(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - -public static glTF_VRM_DegreeMap Deserialize_gltf_extensions_VRM_firstPerson_lookAtHorizontalOuter(ListTreeNode parsed) -{ - var value = new glTF_VRM_DegreeMap(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="curve"){ - value.curve = Deserialize_gltf_extensions_VRM_firstPerson_lookAtHorizontalOuter_curve(kv.Value); - continue; - } - - if(key=="xRange"){ - value.xRange = kv.Value.GetSingle(); - continue; - } - - if(key=="yRange"){ - value.yRange = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static Single[] Deserialize_gltf_extensions_VRM_firstPerson_lookAtHorizontalOuter_curve(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - -public static glTF_VRM_DegreeMap Deserialize_gltf_extensions_VRM_firstPerson_lookAtVerticalDown(ListTreeNode parsed) -{ - var value = new glTF_VRM_DegreeMap(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="curve"){ - value.curve = Deserialize_gltf_extensions_VRM_firstPerson_lookAtVerticalDown_curve(kv.Value); - continue; - } - - if(key=="xRange"){ - value.xRange = kv.Value.GetSingle(); - continue; - } - - if(key=="yRange"){ - value.yRange = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static Single[] Deserialize_gltf_extensions_VRM_firstPerson_lookAtVerticalDown_curve(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - -public static glTF_VRM_DegreeMap Deserialize_gltf_extensions_VRM_firstPerson_lookAtVerticalUp(ListTreeNode parsed) -{ - var value = new glTF_VRM_DegreeMap(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="curve"){ - value.curve = Deserialize_gltf_extensions_VRM_firstPerson_lookAtVerticalUp_curve(kv.Value); - continue; - } - - if(key=="xRange"){ - value.xRange = kv.Value.GetSingle(); - continue; - } - - if(key=="yRange"){ - value.yRange = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static Single[] Deserialize_gltf_extensions_VRM_firstPerson_lookAtVerticalUp_curve(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - -public static glTF_VRM_BlendShapeMaster Deserialize_gltf_extensions_VRM_blendShapeMaster(ListTreeNode parsed) -{ - var value = new glTF_VRM_BlendShapeMaster(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="blendShapeGroups"){ - value.blendShapeGroups = Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups(kv.Value); - continue; - } - - } - return value; -} - -public static List Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups_LIST(x)); - } - return value; -} -public static glTF_VRM_BlendShapeGroup Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups_LIST(ListTreeNode parsed) -{ - var value = new glTF_VRM_BlendShapeGroup(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="name"){ - value.name = kv.Value.GetString(); - continue; - } - - if(key=="presetName"){ - value.presetName = kv.Value.GetString(); - continue; - } - - if(key=="binds"){ - value.binds = Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups__binds(kv.Value); - continue; - } - - if(key=="materialValues"){ - value.materialValues = Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups__materialValues(kv.Value); - continue; - } - - if(key=="isBinary"){ - value.isBinary = kv.Value.GetBoolean(); - continue; - } - - } - return value; -} - -public static List Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups__binds(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups__binds_LIST(x)); - } - return value; -} -public static glTF_VRM_BlendShapeBind Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups__binds_LIST(ListTreeNode parsed) -{ - var value = new glTF_VRM_BlendShapeBind(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="mesh"){ - value.mesh = kv.Value.GetInt32(); - continue; - } - - if(key=="index"){ - value.index = kv.Value.GetInt32(); - continue; - } - - if(key=="weight"){ - value.weight = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static List Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups__materialValues(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups__materialValues_LIST(x)); - } - return value; -} -public static glTF_VRM_MaterialValueBind Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups__materialValues_LIST(ListTreeNode parsed) -{ - var value = new glTF_VRM_MaterialValueBind(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="materialName"){ - value.materialName = kv.Value.GetString(); - continue; - } - - if(key=="propertyName"){ - value.propertyName = kv.Value.GetString(); - continue; - } - - if(key=="targetValue"){ - value.targetValue = Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups__materialValues__targetValue(kv.Value); - continue; - } - - } - return value; -} - -public static Single[] Deserialize_gltf_extensions_VRM_blendShapeMaster_blendShapeGroups__materialValues__targetValue(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - -public static glTF_VRM_SecondaryAnimation Deserialize_gltf_extensions_VRM_secondaryAnimation(ListTreeNode parsed) -{ - var value = new glTF_VRM_SecondaryAnimation(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="boneGroups"){ - value.boneGroups = Deserialize_gltf_extensions_VRM_secondaryAnimation_boneGroups(kv.Value); - continue; - } - - if(key=="colliderGroups"){ - value.colliderGroups = Deserialize_gltf_extensions_VRM_secondaryAnimation_colliderGroups(kv.Value); - continue; - } - - } - return value; -} - -public static List Deserialize_gltf_extensions_VRM_secondaryAnimation_boneGroups(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(Deserialize_gltf_extensions_VRM_secondaryAnimation_boneGroups_LIST(x)); - } - return value; -} -public static glTF_VRM_SecondaryAnimationGroup Deserialize_gltf_extensions_VRM_secondaryAnimation_boneGroups_LIST(ListTreeNode parsed) -{ - var value = new glTF_VRM_SecondaryAnimationGroup(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="comment"){ - value.comment = kv.Value.GetString(); - continue; - } - - if(key=="stiffiness"){ - value.stiffiness = kv.Value.GetSingle(); - continue; - } - - if(key=="gravityPower"){ - value.gravityPower = kv.Value.GetSingle(); - continue; - } - - if(key=="gravityDir"){ - value.gravityDir = Deserialize_gltf_extensions_VRM_secondaryAnimation_boneGroups__gravityDir(kv.Value); - continue; - } - - if(key=="dragForce"){ - value.dragForce = kv.Value.GetSingle(); - continue; - } - - if(key=="center"){ - value.center = kv.Value.GetInt32(); - continue; - } - - if(key=="hitRadius"){ - value.hitRadius = kv.Value.GetSingle(); - continue; - } - - if(key=="bones"){ - value.bones = Deserialize_gltf_extensions_VRM_secondaryAnimation_boneGroups__bones(kv.Value); - continue; - } - - if(key=="colliderGroups"){ - value.colliderGroups = Deserialize_gltf_extensions_VRM_secondaryAnimation_boneGroups__colliderGroups(kv.Value); - continue; - } - - } - return value; -} - -public static Vector3 Deserialize_gltf_extensions_VRM_secondaryAnimation_boneGroups__gravityDir(ListTreeNode parsed) -{ - var value = new Vector3(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="x"){ - value.x = kv.Value.GetSingle(); - continue; - } - - if(key=="y"){ - value.y = kv.Value.GetSingle(); - continue; - } - - if(key=="z"){ - value.z = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static Int32[] Deserialize_gltf_extensions_VRM_secondaryAnimation_boneGroups__bones(ListTreeNode parsed) -{ - var value = new Int32[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetInt32(); - } - return value; -} - -public static Int32[] Deserialize_gltf_extensions_VRM_secondaryAnimation_boneGroups__colliderGroups(ListTreeNode parsed) -{ - var value = new Int32[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetInt32(); - } - return value; -} - -public static List Deserialize_gltf_extensions_VRM_secondaryAnimation_colliderGroups(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(Deserialize_gltf_extensions_VRM_secondaryAnimation_colliderGroups_LIST(x)); - } - return value; -} -public static glTF_VRM_SecondaryAnimationColliderGroup Deserialize_gltf_extensions_VRM_secondaryAnimation_colliderGroups_LIST(ListTreeNode parsed) -{ - var value = new glTF_VRM_SecondaryAnimationColliderGroup(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="node"){ - value.node = kv.Value.GetInt32(); - continue; - } - - if(key=="colliders"){ - value.colliders = Deserialize_gltf_extensions_VRM_secondaryAnimation_colliderGroups__colliders(kv.Value); - continue; - } - - } - return value; -} - -public static List Deserialize_gltf_extensions_VRM_secondaryAnimation_colliderGroups__colliders(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(Deserialize_gltf_extensions_VRM_secondaryAnimation_colliderGroups__colliders_LIST(x)); - } - return value; -} -public static glTF_VRM_SecondaryAnimationCollider Deserialize_gltf_extensions_VRM_secondaryAnimation_colliderGroups__colliders_LIST(ListTreeNode parsed) -{ - var value = new glTF_VRM_SecondaryAnimationCollider(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="offset"){ - value.offset = Deserialize_gltf_extensions_VRM_secondaryAnimation_colliderGroups__colliders__offset(kv.Value); - continue; - } - - if(key=="radius"){ - value.radius = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static Vector3 Deserialize_gltf_extensions_VRM_secondaryAnimation_colliderGroups__colliders__offset(ListTreeNode parsed) -{ - var value = new Vector3(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="x"){ - value.x = kv.Value.GetSingle(); - continue; - } - - if(key=="y"){ - value.y = kv.Value.GetSingle(); - continue; - } - - if(key=="z"){ - value.z = kv.Value.GetSingle(); - continue; - } - - } - return value; -} - -public static List Deserialize_gltf_extensions_VRM_materialProperties(ListTreeNode parsed) -{ - var value = new List(); - foreach(var x in parsed.ArrayItems()) - { - value.Add(Deserialize_gltf_extensions_VRM_materialProperties_LIST(x)); - } - return value; -} -public static glTF_VRM_Material Deserialize_gltf_extensions_VRM_materialProperties_LIST(ListTreeNode parsed) -{ - var value = new glTF_VRM_Material(); - - foreach(var kv in parsed.ObjectItems()) - { - var key = kv.Key.GetString(); - - if(key=="name"){ - value.name = kv.Value.GetString(); - continue; - } - - if(key=="shader"){ - value.shader = kv.Value.GetString(); - continue; - } - - if(key=="renderQueue"){ - value.renderQueue = kv.Value.GetInt32(); - continue; - } - - if(key=="floatProperties"){ - value.floatProperties = Deserialize_gltf_extensions_VRM_materialProperties__floatProperties(kv.Value); - continue; - } - - if(key=="vectorProperties"){ - value.vectorProperties = Deserialize_gltf_extensions_VRM_materialProperties__vectorProperties(kv.Value); - continue; - } - - if(key=="textureProperties"){ - value.textureProperties = Deserialize_gltf_extensions_VRM_materialProperties__textureProperties(kv.Value); - continue; - } - - if(key=="keywordMap"){ - value.keywordMap = Deserialize_gltf_extensions_VRM_materialProperties__keywordMap(kv.Value); - continue; - } - - if(key=="tagMap"){ - value.tagMap = Deserialize_gltf_extensions_VRM_materialProperties__tagMap(kv.Value); - continue; - } - - } - return value; -} - - -public static Dictionary Deserialize_gltf_extensions_VRM_materialProperties__floatProperties(ListTreeNode parsed) -{ - var value = new Dictionary(); - foreach(var kv in parsed.ObjectItems()) - { - value.Add(kv.Key.GetString(), kv.Value.GetSingle()); - } - return value; -} - - -public static Dictionary Deserialize_gltf_extensions_VRM_materialProperties__vectorProperties(ListTreeNode parsed) -{ - var value = new Dictionary(); - foreach(var kv in parsed.ObjectItems()) - { - value.Add(kv.Key.GetString(), Deserialize_gltf_extensions_VRM_materialProperties__vectorProperties_DICT(kv.Value)); - } - return value; -} - -public static Single[] Deserialize_gltf_extensions_VRM_materialProperties__vectorProperties_DICT(ListTreeNode parsed) -{ - var value = new Single[parsed.GetArrayCount()]; - int i=0; - foreach(var x in parsed.ArrayItems()) - { - value[i++] = x.GetSingle(); - } - return value; -} - - -public static Dictionary Deserialize_gltf_extensions_VRM_materialProperties__textureProperties(ListTreeNode parsed) -{ - var value = new Dictionary(); - foreach(var kv in parsed.ObjectItems()) - { - value.Add(kv.Key.GetString(), kv.Value.GetInt32()); - } - return value; -} - - -public static Dictionary Deserialize_gltf_extensions_VRM_materialProperties__keywordMap(ListTreeNode parsed) -{ - var value = new Dictionary(); - foreach(var kv in parsed.ObjectItems()) - { - value.Add(kv.Key.GetString(), kv.Value.GetBoolean()); - } - return value; -} - - -public static Dictionary Deserialize_gltf_extensions_VRM_materialProperties__tagMap(ListTreeNode parsed) -{ - var value = new Dictionary(); - foreach(var kv in parsed.ObjectItems()) - { - value.Add(kv.Key.GetString(), kv.Value.GetString()); - } - return value; -} - -// public static gltf_extras Deserialize_gltf_extras(ListTreeNode parsed) -// { -// var value = new gltf_extras(); - -// foreach(var kv in parsed.ObjectItems()) -// { -// var key = kv.Key.GetString(); - -// } -// return value; -// } - } // GltfDeserializer } // UniGLTF diff --git a/Assets/VRM/UniVRM/Editor/UniVRM.Editor.asmdef b/Assets/VRM/UniVRM/Editor/UniVRM.Editor.asmdef index 41389d70d..b8315d3ba 100644 --- a/Assets/VRM/UniVRM/Editor/UniVRM.Editor.asmdef +++ b/Assets/VRM/UniVRM/Editor/UniVRM.Editor.asmdef @@ -6,7 +6,8 @@ "UniHumanoid", "MeshUtility", "MeshUtility.Editor", - "UniUnlit" + "UniUnlit", + "UniGLTF.Editor" ], "optionalUnityReferences": [], "includePlatforms": [ diff --git a/Assets/VRM/UniVRM/Editor/VRMDeserializerGenerator.cs b/Assets/VRM/UniVRM/Editor/VRMDeserializerGenerator.cs new file mode 100644 index 000000000..cf7e62dd7 --- /dev/null +++ b/Assets/VRM/UniVRM/Editor/VRMDeserializerGenerator.cs @@ -0,0 +1,61 @@ +using System.IO; +using System.Reflection; +using System.Text; +using UnityEditor; +using UnityEngine; + +namespace VRM +{ + public static class DeserializerGenerator + { + public const BindingFlags FIELD_FLAGS = BindingFlags.Instance | BindingFlags.Public; + + static string OutPath + { + get + { + return Path.Combine(UnityEngine.Application.dataPath, + "VRM/UniVRM/Scripts/Format/VRMDeserializer.g.cs"); + } + } + + /// + /// AOT向けにデシリアライザを生成する + /// + [MenuItem(VRM.VRMVersion.MENU + "/VRM: Generate Deserializer")] + static void GenerateSerializer() + { + var info = new UniGLTF.ObjectSerialization(typeof(glTF_VRM_extensions), "vrm"); + Debug.Log(info); + + using (var s = File.Open(OutPath, FileMode.Create)) + using (var w = new StreamWriter(s, Encoding.UTF8)) + { + // header + w.Write(@" +using UniJSON; +using System; +using System.Collections.Generic; +using VRM; +using UnityEngine; + +namespace VRM { + +public static class VrmDeserializer +{ + +"); + + info.GenerateDeserializer(w, "Deserialize"); + + // footer + w.Write(@" +} // VrmfDeserializer +} // VRM +"); + + Debug.LogFormat("write: {0}", OutPath); + } + } + } +} diff --git a/Assets/VRM/UniVRM/Editor/VRMDeserializerGenerator.cs.meta b/Assets/VRM/UniVRM/Editor/VRMDeserializerGenerator.cs.meta new file mode 100644 index 000000000..a04be1f2d --- /dev/null +++ b/Assets/VRM/UniVRM/Editor/VRMDeserializerGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fccecb79adf40a948b2c218b4e7703b3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM/UniVRM/Scripts/Format/VRMDeserializer.g.cs b/Assets/VRM/UniVRM/Scripts/Format/VRMDeserializer.g.cs new file mode 100644 index 000000000..3566ff447 --- /dev/null +++ b/Assets/VRM/UniVRM/Scripts/Format/VRMDeserializer.g.cs @@ -0,0 +1,1099 @@ + +using UniJSON; +using System; +using System.Collections.Generic; +using VRM; +using UnityEngine; + +namespace VRM { + +public static class VrmDeserializer +{ + + +public static glTF_VRM_extensions Deserialize(ListTreeNode parsed) +{ + var value = new glTF_VRM_extensions(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="exporterVersion"){ + value.exporterVersion = kv.Value.GetString(); + continue; + } + + if(key=="specVersion"){ + value.specVersion = kv.Value.GetString(); + continue; + } + + if(key=="meta"){ + value.meta = Deserialize_vrm_meta(kv.Value); + continue; + } + + if(key=="humanoid"){ + value.humanoid = Deserialize_vrm_humanoid(kv.Value); + continue; + } + + if(key=="firstPerson"){ + value.firstPerson = Deserialize_vrm_firstPerson(kv.Value); + continue; + } + + if(key=="blendShapeMaster"){ + value.blendShapeMaster = Deserialize_vrm_blendShapeMaster(kv.Value); + continue; + } + + if(key=="secondaryAnimation"){ + value.secondaryAnimation = Deserialize_vrm_secondaryAnimation(kv.Value); + continue; + } + + if(key=="materialProperties"){ + value.materialProperties = Deserialize_vrm_materialProperties(kv.Value); + continue; + } + + } + return value; +} + +public static glTF_VRM_Meta Deserialize_vrm_meta(ListTreeNode parsed) +{ + var value = new glTF_VRM_Meta(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="title"){ + value.title = kv.Value.GetString(); + continue; + } + + if(key=="version"){ + value.version = kv.Value.GetString(); + continue; + } + + if(key=="author"){ + value.author = kv.Value.GetString(); + continue; + } + + if(key=="contactInformation"){ + value.contactInformation = kv.Value.GetString(); + continue; + } + + if(key=="reference"){ + value.reference = kv.Value.GetString(); + continue; + } + + if(key=="texture"){ + value.texture = kv.Value.GetInt32(); + continue; + } + + if(key=="allowedUserName"){ + value.allowedUserName = kv.Value.GetString(); + continue; + } + + if(key=="violentUssageName"){ + value.violentUssageName = kv.Value.GetString(); + continue; + } + + if(key=="sexualUssageName"){ + value.sexualUssageName = kv.Value.GetString(); + continue; + } + + if(key=="commercialUssageName"){ + value.commercialUssageName = kv.Value.GetString(); + continue; + } + + if(key=="otherPermissionUrl"){ + value.otherPermissionUrl = kv.Value.GetString(); + continue; + } + + if(key=="licenseName"){ + value.licenseName = kv.Value.GetString(); + continue; + } + + if(key=="otherLicenseUrl"){ + value.otherLicenseUrl = kv.Value.GetString(); + continue; + } + + } + return value; +} + +public static glTF_VRM_Humanoid Deserialize_vrm_humanoid(ListTreeNode parsed) +{ + var value = new glTF_VRM_Humanoid(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="humanBones"){ + value.humanBones = Deserialize_vrm_humanoid_humanBones(kv.Value); + continue; + } + + if(key=="armStretch"){ + value.armStretch = kv.Value.GetSingle(); + continue; + } + + if(key=="legStretch"){ + value.legStretch = kv.Value.GetSingle(); + continue; + } + + if(key=="upperArmTwist"){ + value.upperArmTwist = kv.Value.GetSingle(); + continue; + } + + if(key=="lowerArmTwist"){ + value.lowerArmTwist = kv.Value.GetSingle(); + continue; + } + + if(key=="upperLegTwist"){ + value.upperLegTwist = kv.Value.GetSingle(); + continue; + } + + if(key=="lowerLegTwist"){ + value.lowerLegTwist = kv.Value.GetSingle(); + continue; + } + + if(key=="feetSpacing"){ + value.feetSpacing = kv.Value.GetSingle(); + continue; + } + + if(key=="hasTranslationDoF"){ + value.hasTranslationDoF = kv.Value.GetBoolean(); + continue; + } + + } + return value; +} + +public static List Deserialize_vrm_humanoid_humanBones(ListTreeNode parsed) +{ + var value = new List(); + foreach(var x in parsed.ArrayItems()) + { + value.Add(Deserialize_vrm_humanoid_humanBones_LIST(x)); + } + return value; +} +public static glTF_VRM_HumanoidBone Deserialize_vrm_humanoid_humanBones_LIST(ListTreeNode parsed) +{ + var value = new glTF_VRM_HumanoidBone(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="bone"){ + value.bone = kv.Value.GetString(); + continue; + } + + if(key=="node"){ + value.node = kv.Value.GetInt32(); + continue; + } + + if(key=="useDefaultValues"){ + value.useDefaultValues = kv.Value.GetBoolean(); + continue; + } + + if(key=="min"){ + value.min = Deserialize_vrm_humanoid_humanBones__min(kv.Value); + continue; + } + + if(key=="max"){ + value.max = Deserialize_vrm_humanoid_humanBones__max(kv.Value); + continue; + } + + if(key=="center"){ + value.center = Deserialize_vrm_humanoid_humanBones__center(kv.Value); + continue; + } + + if(key=="axisLength"){ + value.axisLength = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static Vector3 Deserialize_vrm_humanoid_humanBones__min(ListTreeNode parsed) +{ + var value = new Vector3(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="x"){ + value.x = kv.Value.GetSingle(); + continue; + } + + if(key=="y"){ + value.y = kv.Value.GetSingle(); + continue; + } + + if(key=="z"){ + value.z = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static Vector3 Deserialize_vrm_humanoid_humanBones__max(ListTreeNode parsed) +{ + var value = new Vector3(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="x"){ + value.x = kv.Value.GetSingle(); + continue; + } + + if(key=="y"){ + value.y = kv.Value.GetSingle(); + continue; + } + + if(key=="z"){ + value.z = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static Vector3 Deserialize_vrm_humanoid_humanBones__center(ListTreeNode parsed) +{ + var value = new Vector3(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="x"){ + value.x = kv.Value.GetSingle(); + continue; + } + + if(key=="y"){ + value.y = kv.Value.GetSingle(); + continue; + } + + if(key=="z"){ + value.z = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static glTF_VRM_Firstperson Deserialize_vrm_firstPerson(ListTreeNode parsed) +{ + var value = new glTF_VRM_Firstperson(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="firstPersonBone"){ + value.firstPersonBone = kv.Value.GetInt32(); + continue; + } + + if(key=="firstPersonBoneOffset"){ + value.firstPersonBoneOffset = Deserialize_vrm_firstPerson_firstPersonBoneOffset(kv.Value); + continue; + } + + if(key=="meshAnnotations"){ + value.meshAnnotations = Deserialize_vrm_firstPerson_meshAnnotations(kv.Value); + continue; + } + + if(key=="lookAtTypeName"){ + value.lookAtTypeName = kv.Value.GetString(); + continue; + } + + if(key=="lookAtHorizontalInner"){ + value.lookAtHorizontalInner = Deserialize_vrm_firstPerson_lookAtHorizontalInner(kv.Value); + continue; + } + + if(key=="lookAtHorizontalOuter"){ + value.lookAtHorizontalOuter = Deserialize_vrm_firstPerson_lookAtHorizontalOuter(kv.Value); + continue; + } + + if(key=="lookAtVerticalDown"){ + value.lookAtVerticalDown = Deserialize_vrm_firstPerson_lookAtVerticalDown(kv.Value); + continue; + } + + if(key=="lookAtVerticalUp"){ + value.lookAtVerticalUp = Deserialize_vrm_firstPerson_lookAtVerticalUp(kv.Value); + continue; + } + + } + return value; +} + +public static Vector3 Deserialize_vrm_firstPerson_firstPersonBoneOffset(ListTreeNode parsed) +{ + var value = new Vector3(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="x"){ + value.x = kv.Value.GetSingle(); + continue; + } + + if(key=="y"){ + value.y = kv.Value.GetSingle(); + continue; + } + + if(key=="z"){ + value.z = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static List Deserialize_vrm_firstPerson_meshAnnotations(ListTreeNode parsed) +{ + var value = new List(); + foreach(var x in parsed.ArrayItems()) + { + value.Add(Deserialize_vrm_firstPerson_meshAnnotations_LIST(x)); + } + return value; +} +public static glTF_VRM_MeshAnnotation Deserialize_vrm_firstPerson_meshAnnotations_LIST(ListTreeNode parsed) +{ + var value = new glTF_VRM_MeshAnnotation(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="mesh"){ + value.mesh = kv.Value.GetInt32(); + continue; + } + + if(key=="firstPersonFlag"){ + value.firstPersonFlag = kv.Value.GetString(); + continue; + } + + } + return value; +} + +public static glTF_VRM_DegreeMap Deserialize_vrm_firstPerson_lookAtHorizontalInner(ListTreeNode parsed) +{ + var value = new glTF_VRM_DegreeMap(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="curve"){ + value.curve = Deserialize_vrm_firstPerson_lookAtHorizontalInner_curve(kv.Value); + continue; + } + + if(key=="xRange"){ + value.xRange = kv.Value.GetSingle(); + continue; + } + + if(key=="yRange"){ + value.yRange = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static Single[] Deserialize_vrm_firstPerson_lookAtHorizontalInner_curve(ListTreeNode parsed) +{ + var value = new Single[parsed.GetArrayCount()]; + int i=0; + foreach(var x in parsed.ArrayItems()) + { + value[i++] = x.GetSingle(); + } + return value; +} + +public static glTF_VRM_DegreeMap Deserialize_vrm_firstPerson_lookAtHorizontalOuter(ListTreeNode parsed) +{ + var value = new glTF_VRM_DegreeMap(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="curve"){ + value.curve = Deserialize_vrm_firstPerson_lookAtHorizontalOuter_curve(kv.Value); + continue; + } + + if(key=="xRange"){ + value.xRange = kv.Value.GetSingle(); + continue; + } + + if(key=="yRange"){ + value.yRange = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static Single[] Deserialize_vrm_firstPerson_lookAtHorizontalOuter_curve(ListTreeNode parsed) +{ + var value = new Single[parsed.GetArrayCount()]; + int i=0; + foreach(var x in parsed.ArrayItems()) + { + value[i++] = x.GetSingle(); + } + return value; +} + +public static glTF_VRM_DegreeMap Deserialize_vrm_firstPerson_lookAtVerticalDown(ListTreeNode parsed) +{ + var value = new glTF_VRM_DegreeMap(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="curve"){ + value.curve = Deserialize_vrm_firstPerson_lookAtVerticalDown_curve(kv.Value); + continue; + } + + if(key=="xRange"){ + value.xRange = kv.Value.GetSingle(); + continue; + } + + if(key=="yRange"){ + value.yRange = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static Single[] Deserialize_vrm_firstPerson_lookAtVerticalDown_curve(ListTreeNode parsed) +{ + var value = new Single[parsed.GetArrayCount()]; + int i=0; + foreach(var x in parsed.ArrayItems()) + { + value[i++] = x.GetSingle(); + } + return value; +} + +public static glTF_VRM_DegreeMap Deserialize_vrm_firstPerson_lookAtVerticalUp(ListTreeNode parsed) +{ + var value = new glTF_VRM_DegreeMap(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="curve"){ + value.curve = Deserialize_vrm_firstPerson_lookAtVerticalUp_curve(kv.Value); + continue; + } + + if(key=="xRange"){ + value.xRange = kv.Value.GetSingle(); + continue; + } + + if(key=="yRange"){ + value.yRange = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static Single[] Deserialize_vrm_firstPerson_lookAtVerticalUp_curve(ListTreeNode parsed) +{ + var value = new Single[parsed.GetArrayCount()]; + int i=0; + foreach(var x in parsed.ArrayItems()) + { + value[i++] = x.GetSingle(); + } + return value; +} + +public static glTF_VRM_BlendShapeMaster Deserialize_vrm_blendShapeMaster(ListTreeNode parsed) +{ + var value = new glTF_VRM_BlendShapeMaster(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="blendShapeGroups"){ + value.blendShapeGroups = Deserialize_vrm_blendShapeMaster_blendShapeGroups(kv.Value); + continue; + } + + } + return value; +} + +public static List Deserialize_vrm_blendShapeMaster_blendShapeGroups(ListTreeNode parsed) +{ + var value = new List(); + foreach(var x in parsed.ArrayItems()) + { + value.Add(Deserialize_vrm_blendShapeMaster_blendShapeGroups_LIST(x)); + } + return value; +} +public static glTF_VRM_BlendShapeGroup Deserialize_vrm_blendShapeMaster_blendShapeGroups_LIST(ListTreeNode parsed) +{ + var value = new glTF_VRM_BlendShapeGroup(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="name"){ + value.name = kv.Value.GetString(); + continue; + } + + if(key=="presetName"){ + value.presetName = kv.Value.GetString(); + continue; + } + + if(key=="binds"){ + value.binds = Deserialize_vrm_blendShapeMaster_blendShapeGroups__binds(kv.Value); + continue; + } + + if(key=="materialValues"){ + value.materialValues = Deserialize_vrm_blendShapeMaster_blendShapeGroups__materialValues(kv.Value); + continue; + } + + if(key=="isBinary"){ + value.isBinary = kv.Value.GetBoolean(); + continue; + } + + } + return value; +} + +public static List Deserialize_vrm_blendShapeMaster_blendShapeGroups__binds(ListTreeNode parsed) +{ + var value = new List(); + foreach(var x in parsed.ArrayItems()) + { + value.Add(Deserialize_vrm_blendShapeMaster_blendShapeGroups__binds_LIST(x)); + } + return value; +} +public static glTF_VRM_BlendShapeBind Deserialize_vrm_blendShapeMaster_blendShapeGroups__binds_LIST(ListTreeNode parsed) +{ + var value = new glTF_VRM_BlendShapeBind(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="mesh"){ + value.mesh = kv.Value.GetInt32(); + continue; + } + + if(key=="index"){ + value.index = kv.Value.GetInt32(); + continue; + } + + if(key=="weight"){ + value.weight = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static List Deserialize_vrm_blendShapeMaster_blendShapeGroups__materialValues(ListTreeNode parsed) +{ + var value = new List(); + foreach(var x in parsed.ArrayItems()) + { + value.Add(Deserialize_vrm_blendShapeMaster_blendShapeGroups__materialValues_LIST(x)); + } + return value; +} +public static glTF_VRM_MaterialValueBind Deserialize_vrm_blendShapeMaster_blendShapeGroups__materialValues_LIST(ListTreeNode parsed) +{ + var value = new glTF_VRM_MaterialValueBind(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="materialName"){ + value.materialName = kv.Value.GetString(); + continue; + } + + if(key=="propertyName"){ + value.propertyName = kv.Value.GetString(); + continue; + } + + if(key=="targetValue"){ + value.targetValue = Deserialize_vrm_blendShapeMaster_blendShapeGroups__materialValues__targetValue(kv.Value); + continue; + } + + } + return value; +} + +public static Single[] Deserialize_vrm_blendShapeMaster_blendShapeGroups__materialValues__targetValue(ListTreeNode parsed) +{ + var value = new Single[parsed.GetArrayCount()]; + int i=0; + foreach(var x in parsed.ArrayItems()) + { + value[i++] = x.GetSingle(); + } + return value; +} + +public static glTF_VRM_SecondaryAnimation Deserialize_vrm_secondaryAnimation(ListTreeNode parsed) +{ + var value = new glTF_VRM_SecondaryAnimation(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="boneGroups"){ + value.boneGroups = Deserialize_vrm_secondaryAnimation_boneGroups(kv.Value); + continue; + } + + if(key=="colliderGroups"){ + value.colliderGroups = Deserialize_vrm_secondaryAnimation_colliderGroups(kv.Value); + continue; + } + + } + return value; +} + +public static List Deserialize_vrm_secondaryAnimation_boneGroups(ListTreeNode parsed) +{ + var value = new List(); + foreach(var x in parsed.ArrayItems()) + { + value.Add(Deserialize_vrm_secondaryAnimation_boneGroups_LIST(x)); + } + return value; +} +public static glTF_VRM_SecondaryAnimationGroup Deserialize_vrm_secondaryAnimation_boneGroups_LIST(ListTreeNode parsed) +{ + var value = new glTF_VRM_SecondaryAnimationGroup(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="comment"){ + value.comment = kv.Value.GetString(); + continue; + } + + if(key=="stiffiness"){ + value.stiffiness = kv.Value.GetSingle(); + continue; + } + + if(key=="gravityPower"){ + value.gravityPower = kv.Value.GetSingle(); + continue; + } + + if(key=="gravityDir"){ + value.gravityDir = Deserialize_vrm_secondaryAnimation_boneGroups__gravityDir(kv.Value); + continue; + } + + if(key=="dragForce"){ + value.dragForce = kv.Value.GetSingle(); + continue; + } + + if(key=="center"){ + value.center = kv.Value.GetInt32(); + continue; + } + + if(key=="hitRadius"){ + value.hitRadius = kv.Value.GetSingle(); + continue; + } + + if(key=="bones"){ + value.bones = Deserialize_vrm_secondaryAnimation_boneGroups__bones(kv.Value); + continue; + } + + if(key=="colliderGroups"){ + value.colliderGroups = Deserialize_vrm_secondaryAnimation_boneGroups__colliderGroups(kv.Value); + continue; + } + + } + return value; +} + +public static Vector3 Deserialize_vrm_secondaryAnimation_boneGroups__gravityDir(ListTreeNode parsed) +{ + var value = new Vector3(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="x"){ + value.x = kv.Value.GetSingle(); + continue; + } + + if(key=="y"){ + value.y = kv.Value.GetSingle(); + continue; + } + + if(key=="z"){ + value.z = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static Int32[] Deserialize_vrm_secondaryAnimation_boneGroups__bones(ListTreeNode parsed) +{ + var value = new Int32[parsed.GetArrayCount()]; + int i=0; + foreach(var x in parsed.ArrayItems()) + { + value[i++] = x.GetInt32(); + } + return value; +} + +public static Int32[] Deserialize_vrm_secondaryAnimation_boneGroups__colliderGroups(ListTreeNode parsed) +{ + var value = new Int32[parsed.GetArrayCount()]; + int i=0; + foreach(var x in parsed.ArrayItems()) + { + value[i++] = x.GetInt32(); + } + return value; +} + +public static List Deserialize_vrm_secondaryAnimation_colliderGroups(ListTreeNode parsed) +{ + var value = new List(); + foreach(var x in parsed.ArrayItems()) + { + value.Add(Deserialize_vrm_secondaryAnimation_colliderGroups_LIST(x)); + } + return value; +} +public static glTF_VRM_SecondaryAnimationColliderGroup Deserialize_vrm_secondaryAnimation_colliderGroups_LIST(ListTreeNode parsed) +{ + var value = new glTF_VRM_SecondaryAnimationColliderGroup(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="node"){ + value.node = kv.Value.GetInt32(); + continue; + } + + if(key=="colliders"){ + value.colliders = Deserialize_vrm_secondaryAnimation_colliderGroups__colliders(kv.Value); + continue; + } + + } + return value; +} + +public static List Deserialize_vrm_secondaryAnimation_colliderGroups__colliders(ListTreeNode parsed) +{ + var value = new List(); + foreach(var x in parsed.ArrayItems()) + { + value.Add(Deserialize_vrm_secondaryAnimation_colliderGroups__colliders_LIST(x)); + } + return value; +} +public static glTF_VRM_SecondaryAnimationCollider Deserialize_vrm_secondaryAnimation_colliderGroups__colliders_LIST(ListTreeNode parsed) +{ + var value = new glTF_VRM_SecondaryAnimationCollider(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="offset"){ + value.offset = Deserialize_vrm_secondaryAnimation_colliderGroups__colliders__offset(kv.Value); + continue; + } + + if(key=="radius"){ + value.radius = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static Vector3 Deserialize_vrm_secondaryAnimation_colliderGroups__colliders__offset(ListTreeNode parsed) +{ + var value = new Vector3(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="x"){ + value.x = kv.Value.GetSingle(); + continue; + } + + if(key=="y"){ + value.y = kv.Value.GetSingle(); + continue; + } + + if(key=="z"){ + value.z = kv.Value.GetSingle(); + continue; + } + + } + return value; +} + +public static List Deserialize_vrm_materialProperties(ListTreeNode parsed) +{ + var value = new List(); + foreach(var x in parsed.ArrayItems()) + { + value.Add(Deserialize_vrm_materialProperties_LIST(x)); + } + return value; +} +public static glTF_VRM_Material Deserialize_vrm_materialProperties_LIST(ListTreeNode parsed) +{ + var value = new glTF_VRM_Material(); + + foreach(var kv in parsed.ObjectItems()) + { + var key = kv.Key.GetString(); + + if(key=="name"){ + value.name = kv.Value.GetString(); + continue; + } + + if(key=="shader"){ + value.shader = kv.Value.GetString(); + continue; + } + + if(key=="renderQueue"){ + value.renderQueue = kv.Value.GetInt32(); + continue; + } + + if(key=="floatProperties"){ + value.floatProperties = Deserialize_vrm_materialProperties__floatProperties(kv.Value); + continue; + } + + if(key=="vectorProperties"){ + value.vectorProperties = Deserialize_vrm_materialProperties__vectorProperties(kv.Value); + continue; + } + + if(key=="textureProperties"){ + value.textureProperties = Deserialize_vrm_materialProperties__textureProperties(kv.Value); + continue; + } + + if(key=="keywordMap"){ + value.keywordMap = Deserialize_vrm_materialProperties__keywordMap(kv.Value); + continue; + } + + if(key=="tagMap"){ + value.tagMap = Deserialize_vrm_materialProperties__tagMap(kv.Value); + continue; + } + + } + return value; +} + + +public static Dictionary Deserialize_vrm_materialProperties__floatProperties(ListTreeNode parsed) +{ + var value = new Dictionary(); + foreach(var kv in parsed.ObjectItems()) + { + value.Add(kv.Key.GetString(), kv.Value.GetSingle()); + } + return value; +} + + +public static Dictionary Deserialize_vrm_materialProperties__vectorProperties(ListTreeNode parsed) +{ + var value = new Dictionary(); + foreach(var kv in parsed.ObjectItems()) + { + value.Add(kv.Key.GetString(), Deserialize_vrm_materialProperties__vectorProperties_DICT(kv.Value)); + } + return value; +} + +public static Single[] Deserialize_vrm_materialProperties__vectorProperties_DICT(ListTreeNode parsed) +{ + var value = new Single[parsed.GetArrayCount()]; + int i=0; + foreach(var x in parsed.ArrayItems()) + { + value[i++] = x.GetSingle(); + } + return value; +} + + +public static Dictionary Deserialize_vrm_materialProperties__textureProperties(ListTreeNode parsed) +{ + var value = new Dictionary(); + foreach(var kv in parsed.ObjectItems()) + { + value.Add(kv.Key.GetString(), kv.Value.GetInt32()); + } + return value; +} + + +public static Dictionary Deserialize_vrm_materialProperties__keywordMap(ListTreeNode parsed) +{ + var value = new Dictionary(); + foreach(var kv in parsed.ObjectItems()) + { + value.Add(kv.Key.GetString(), kv.Value.GetBoolean()); + } + return value; +} + + +public static Dictionary Deserialize_vrm_materialProperties__tagMap(ListTreeNode parsed) +{ + var value = new Dictionary(); + foreach(var kv in parsed.ObjectItems()) + { + value.Add(kv.Key.GetString(), kv.Value.GetString()); + } + return value; +} + +} // VrmfDeserializer +} // VRM diff --git a/Assets/VRM/UniVRM/Scripts/Format/VRMDeserializer.g.cs.meta b/Assets/VRM/UniVRM/Scripts/Format/VRMDeserializer.g.cs.meta new file mode 100644 index 000000000..13b3fa2ca --- /dev/null +++ b/Assets/VRM/UniVRM/Scripts/Format/VRMDeserializer.g.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d3f5617d4d8fd74494cab1e56d6b001 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM/UniVRM/Scripts/Format/VRMImporterContext.cs b/Assets/VRM/UniVRM/Scripts/Format/VRMImporterContext.cs index 26cd589af..0a273e0f1 100644 --- a/Assets/VRM/UniVRM/Scripts/Format/VRMImporterContext.cs +++ b/Assets/VRM/UniVRM/Scripts/Format/VRMImporterContext.cs @@ -5,6 +5,7 @@ using UniGLTF; using UnityEngine; using System.IO; using System.Collections; +using UniJSON; namespace VRM { @@ -13,13 +14,7 @@ namespace VRM const string HUMANOID_KEY = "humanoid"; const string MATERIAL_KEY = "materialProperties"; - public VRM.glTF_VRM_extensions VRM - { - get - { - throw new NotImplementedException(); - } - } + public VRM.glTF_VRM_extensions VRM { get; private set; } public VRMImporterContext() { @@ -42,7 +37,25 @@ namespace VRM public override void ParseJson(string json, IStorage storage) { + // parse GLTF part(core + unlit, textureTransform, targetNames) base.ParseJson(json, storage); + + // parse VRM part + if (GLTF.extensions != null && GLTF.extensions is ListTreeNode vrmJson) + { + if (vrmJson.Value.ValueType == ValueNodeType.Object) + { + foreach (var kv in vrmJson.ObjectItems()) + { + if (kv.Key.GetString() == "VRM") + { + VRM = VrmDeserializer.Deserialize(kv.Value); + break; + } + } + } + } + SetMaterialImporter(new VRMMaterialImporter(this, glTF_VRM_Material.Parse(Json))); }