diff --git a/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs b/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs index 4a06dc63f..4e86a5153 100644 --- a/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs +++ b/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs @@ -149,7 +149,7 @@ namespace UniVRM10 return false; } - var (spring, i) = found.Value; + var (spring, i, _) = found.Value; m_showJoints = EditorGUILayout.Foldout(m_showJoints, $"Springs[{i}]({spring.Name})"); int? jointIndex = default; // joints @@ -198,22 +198,20 @@ namespace UniVRM10 { return; } + + // joint(m_target) から、所属する spring を検索する。 var found = m_root.SpringBone.FindJoint(m_target); if (!found.HasValue) { return; } + // 所属 spring と joint(m_target) の index を得る + var (spring, i, j) = found.Value; - var (spring, i) = found.Value; - if (spring.Joints.Count > 0 && spring.Joints[0] != null) - { - var label = $"Springs[{i}]"; - if (!string.IsNullOrEmpty(spring.Name)) - { - label = spring.Name; - } - Handles.Label(spring.Joints[0].transform.position, label); - } + var label = string.IsNullOrEmpty(spring.Name) + ? $"[{i}][{j}]{m_target.name}" + : $"[{i}]{spring.Name}[{j}]{m_target.name}"; + Handles.Label(spring.Joints[j].transform.position, label); } } } diff --git a/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10InstanceSpringBone.cs b/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10InstanceSpringBone.cs index edc9b5397..f47a972c3 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10InstanceSpringBone.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10InstanceSpringBone.cs @@ -77,13 +77,14 @@ namespace UniVRM10 [SerializeField] public List Springs = new List(); - public (Spring, int)? FindJoint(VRM10SpringBoneJoint joint) + public (Spring spring, int springIndex, int jointIndex)? FindJoint(VRM10SpringBoneJoint joint) { for (int i = 0; i < Springs.Count; ++i) { - if (Springs[i].Joints.Contains(joint)) + var j = Springs[i].Joints.IndexOf(joint); + if (j >= 0) { - return (Springs[i], i); + return new(Springs[i], i, j); } } return default;