From ddf438edf7288b221d68daba6cd515557879262d Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 18 Nov 2024 14:15:22 +0900 Subject: [PATCH] RootBonesNonNullUnique --- .../Runtime/SpringBone/Logic/SpringBoneSystem.cs | 5 +---- Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs | 13 ++++++++++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneSystem.cs b/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneSystem.cs index a30ca03f2..a44091bf1 100644 --- a/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneSystem.cs +++ b/Assets/VRM/Runtime/SpringBone/Logic/SpringBoneSystem.cs @@ -38,10 +38,7 @@ namespace VRM.SpringBone for (int i = 0; i < m_joints.Count; ++i) { - if (!m_jointIndexMap.ContainsKey(m_joints[i].Item1)) - { - m_jointIndexMap.Add(m_joints[i].Item1, i); - } + m_jointIndexMap.Add(m_joints[i].Item1, i); } } diff --git a/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs b/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs index f173cbd32..30c74ea7a 100644 --- a/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs +++ b/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using UnityEngine; namespace VRM @@ -47,6 +48,16 @@ namespace VRM } [SerializeField] public SpringBoneUpdateType m_updateType = SpringBoneUpdateType.LateUpdate; + List m_rootBonesNonNullUnique = new(); + List RootBonesNonNullUnique + { + get + { + m_rootBonesNonNullUnique.Clear(); + m_rootBonesNonNullUnique.AddRange(RootBones.Where(x => x != null).Distinct()); + return m_rootBonesNonNullUnique; + } + } SpringBone.SpringBoneSystem m_system = new(); void Awake() @@ -55,7 +66,7 @@ namespace VRM } SpringBone.SceneInfo Scene => new( - rootBones: RootBones, + rootBones: RootBonesNonNullUnique, center: m_center, colliderGroups: ColliderGroups, externalForce: ExternalForce);