From 11405063d8d3dea095b5ae4b08f2ff49fe9a7037 Mon Sep 17 00:00:00 2001 From: tsgcpp <19503967+tsgcpp@users.noreply.github.com> Date: Fri, 5 Jan 2024 23:23:51 +0900 Subject: [PATCH] fix: Register colliderGroups even if there are no colliders --- Assets/VRM10/Runtime/IO/Vrm10Importer.cs | 26 +++++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/Assets/VRM10/Runtime/IO/Vrm10Importer.cs b/Assets/VRM10/Runtime/IO/Vrm10Importer.cs index 747fbdd4a..214ddd9c2 100644 --- a/Assets/VRM10/Runtime/IO/Vrm10Importer.cs +++ b/Assets/VRM10/Runtime/IO/Vrm10Importer.cs @@ -539,7 +539,11 @@ namespace UniVRM10 throw new Vrm10Exception("unknown shape"); } } + } + // colliderGroup + if (gltfVrmSpringBone.ColliderGroups != null) + { var secondary = Root.transform.Find("secondary"); if (secondary == null) { @@ -547,21 +551,23 @@ namespace UniVRM10 secondary.SetParent(Root.transform, false); } - // colliderGroup - if (gltfVrmSpringBone.ColliderGroups != null) + foreach (var g in gltfVrmSpringBone.ColliderGroups) { - foreach (var g in gltfVrmSpringBone.ColliderGroups) - { - var colliderGroup = secondary.gameObject.AddComponent(); - controller.SpringBone.ColliderGroups.Add(colliderGroup); + var colliderGroup = secondary.gameObject.AddComponent(); + controller.SpringBone.ColliderGroups.Add(colliderGroup); - if (g != null && g.Colliders != null) + if (g != null && g.Colliders != null) + { + foreach (var c in g.Colliders) { - foreach (var c in g.Colliders) + if (c < 0 || c >= colliders.Count) { - var collider = colliders[c]; - colliderGroup.Colliders.Add(collider); + // 不正なindexの場合は無視する + continue; } + + var collider = colliders[c]; + colliderGroup.Colliders.Add(collider); } } }