From e9aa0ce652e41776d0afb5508d420406b94fa380 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 21 Feb 2022 14:14:13 +0900 Subject: [PATCH 1/2] remove m_drawGizmo, use OnDrawGizmosSelected --- Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs b/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs index 240f31671..31708319f 100644 --- a/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs +++ b/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs @@ -16,8 +16,6 @@ namespace VRM [SerializeField] public string m_comment; - [SerializeField] [Header("Gizmo")] private bool m_drawGizmo = default; - [SerializeField] private Color m_gizmoColor = Color.yellow; [SerializeField] @@ -320,10 +318,8 @@ namespace VRM } } - private void OnDrawGizmos() + private void OnDrawGizmosSelected() { - if (!m_drawGizmo) return; - foreach (var verlet in m_verlet) { verlet.DrawGizmo(m_center, m_gizmoColor); From 6b54c06b5aa4489c71d1bbc615fe76c131a451df Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 21 Feb 2022 14:24:53 +0900 Subject: [PATCH 2/2] add EditorGizmo --- .../VRM/Runtime/SpringBone/VRMSpringBone.cs | 45 +++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs b/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs index 31708319f..e505b8914 100644 --- a/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs +++ b/Assets/VRM/Runtime/SpringBone/VRMSpringBone.cs @@ -318,12 +318,51 @@ namespace VRM } } + void EditorGizmo(Transform head) + { + Vector3 childPosition; + Vector3 scale; + if (head.childCount == 0) + { + // 子ノードが無い。7cm 固定 + var delta = head.position - head.parent.position; + childPosition = head.position + delta.normalized * 0.07f * head.UniformedLossyScale(); + scale = head.lossyScale; + } + else + { + var firstChild = GetChildren(head).First(); + childPosition = firstChild.position; + scale = firstChild.lossyScale; + } + + Gizmos.DrawLine(head.position, childPosition); + Gizmos.DrawWireSphere(childPosition, m_hitRadius * scale.x); + + foreach (Transform child in head) EditorGizmo(child); + } + private void OnDrawGizmosSelected() { - foreach (var verlet in m_verlet) + if (Application.isPlaying) { - verlet.DrawGizmo(m_center, m_gizmoColor); + foreach (var verlet in m_verlet) + { + verlet.DrawGizmo(m_center, m_gizmoColor); + } + } + else + { + // Editor + Gizmos.color = m_gizmoColor; + foreach (var root in RootBones) + { + if (root != null) + { + EditorGizmo(root.transform); + } + } } } } -} \ No newline at end of file +}