mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-09-27 05:12:32 -05:00
GetExtension
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user