From 6b54c06b5aa4489c71d1bbc615fe76c131a451df Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 21 Feb 2022 14:24:53 +0900 Subject: [PATCH] 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 +}