GetExtension

This commit is contained in:
ousttrue
2021-01-21 18:20:32 +09:00
parent e39f93436e
commit c79d3d838c
2 changed files with 26 additions and 19 deletions

View File

@@ -444,6 +444,12 @@ namespace UniVRM10
Migration.CheckMeta(vrm0["meta"], vrm1.Meta);
Migration.CheckHumanoid(vrm0["humanoid"], vrm1.Humanoid);
}
public static void Check(ListTreeNode<JsonValue> vrm0, UniGLTF.Extensions.VRMC_springBone.VRMC_springBone vrm1)
{
var a = 0;
// Migration.CheckSpringBone(vrm0["secondaryAnimation"], vrm1.sp)
}
#endregion
}
}

View File

@@ -17,22 +17,6 @@ namespace UniVRM10
}
}
UniGLTF.Extensions.VRMC_vrm.VRMC_vrm GetVRMC_vrm(UniGLTF.glTFExtension extensions)
{
if (extensions is UniGLTF.glTFExtensionImport import)
{
foreach (var kv in import.ObjectItems())
{
if (kv.Key.GetUtf8String() == UniGLTF.Extensions.VRMC_vrm.VRMC_vrm.ExtensionNameUtf8)
{
return UniGLTF.Extensions.VRMC_vrm.GltfDeserializer.Deserialize(kv.Value);
}
}
}
return default;
}
static ListTreeNode<JsonValue> GetVRM0(byte[] bytes)
{
var glb = UniGLTF.Glb.Parse(bytes);
@@ -40,6 +24,22 @@ namespace UniVRM10
return json["extensions"]["VRM"];
}
T GetExtension<T>(UniGLTF.glTFExtension extensions, UniJSON.Utf8String key, Func<ListTreeNode<JsonValue>, T> deserializer)
{
if (extensions is UniGLTF.glTFExtensionImport import)
{
foreach (var kv in import.ObjectItems())
{
if (kv.Key.GetUtf8String() == key)
{
return deserializer(kv.Value);
}
}
}
return default;
}
[Test]
public void Migrate0to1()
{
@@ -50,10 +50,11 @@ namespace UniVRM10
var glb = UniGLTF.Glb.Parse(vrm1);
var json = glb.Json.Bytes.ParseAsJson();
var gltf = UniGLTF.GltfDeserializer.Deserialize(json);
var VRMC_vrm = GetVRMC_vrm(gltf.extensions);
Assert.NotNull(VRMC_vrm);
Migration.Check(vrm0Json, VRMC_vrm);
Migration.Check(vrm0Json, GetExtension(gltf.extensions, UniGLTF.Extensions.VRMC_vrm.VRMC_vrm.ExtensionNameUtf8,
UniGLTF.Extensions.VRMC_vrm.GltfDeserializer.Deserialize));
Migration.Check(vrm0Json, GetExtension(gltf.extensions, UniGLTF.Extensions.VRMC_springBone.VRMC_springBone.ExtensionNameUtf8,
UniGLTF.Extensions.VRMC_springBone.GltfDeserializer.Deserialize));
}
}
}