diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableCollider.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableCollider.cs index 186d478ef..9bacf616d 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableCollider.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableCollider.cs @@ -15,5 +15,12 @@ namespace UniGLTF.SpringBoneJobs.Blittables // capsule tail or plane normal public Vector3 tailOrNormal; public int transformIndex; + + public void DrawGizmo(BlittableTransform t) + { + Gizmos.matrix = t.localToWorldMatrix; + Gizmos.color = Color.blue; + Gizmos.DrawWireSphere(offset, radius); + } } } \ No newline at end of file diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableJointImmutable.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableJointImmutable.cs index c185dbf43..a4d0b9233 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableJointImmutable.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableJointImmutable.cs @@ -17,5 +17,12 @@ namespace UniGLTF.SpringBoneJobs.Blittables public float length; public Quaternion localRotation; public Vector3 boneAxis; + + public void DrawGizmo(BlittableTransform t, BlittableJointMutable m) + { + Gizmos.matrix = t.localToWorldMatrix; + Gizmos.color = Color.green; + Gizmos.DrawWireSphere(Vector3.zero, m.radius); + } } } \ No newline at end of file diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpan.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpan.cs index 1d00e351a..425d2a6be 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpan.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/Blittables/BlittableSpan.cs @@ -7,5 +7,7 @@ namespace UniGLTF.SpringBoneJobs.Blittables { public int startIndex; public int count; + + public int EndIndex => startIndex + count; } } \ No newline at end of file diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs index 324ea8d7e..cc4a9da2d 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneBufferCombiner.cs @@ -95,5 +95,13 @@ namespace UniGLTF.SpringBoneJobs _combinedBuffer = null; } } + + public void DrawGizmos() + { + if (_combinedBuffer is FastSpringBoneCombinedBuffer combined) + { + combined.DrawGizmos(); + } + } } } \ No newline at end of file diff --git a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs index a87f9b6fd..d6bd83c05 100644 --- a/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs +++ b/Assets/UniGLTF/Runtime/SpringBoneJobs/FastSpringBoneConbinedBuffer.cs @@ -398,5 +398,27 @@ namespace UniGLTF.SpringBoneJobs logicsIndex += length; } } + + public void DrawGizmos() + { + foreach (var collider in _colliders) + { + collider.DrawGizmo(_transforms[collider.transformIndex]); + } + + foreach (var spring in _springs) + { + for (int i = spring.logicSpan.startIndex; i < spring.logicSpan.EndIndex; ++i) + { + var joint = _logics[i]; + joint.DrawGizmo(_transforms[joint.tailTransformIndex], _joints[i]); + + Gizmos.matrix = Matrix4x4.identity; + Gizmos.DrawLine( + _transforms[joint.tailTransformIndex].position, + _transforms[joint.headTransformIndex].position); + } + } + } } } \ No newline at end of file diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs index bef873cf8..e45218ff5 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10FastSpringboneRuntimeStandalone.cs @@ -124,7 +124,7 @@ namespace UniVRM10 public void DrawGizmos() { - + m_bufferCombiner.DrawGizmos(); } } } \ No newline at end of file diff --git a/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneService.cs b/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneService.cs index b97b556d7..51a76d887 100644 --- a/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneService.cs +++ b/Assets/VRM10/Runtime/FastSpringBone/FastSpringBoneService.cs @@ -102,5 +102,13 @@ namespace UniVRM10.FastSpringBones } _fastSpringBoneScheduler.Schedule(deltaTime).Complete(); } + + public void OnDrawGizmosSelected() + { + if (enabled) + { + BufferCombiner.DrawGizmos(); + } + } } -} +} \ No newline at end of file