using System; using UnityEngine; namespace VRM { #if UNITY_5_5_OR_NEWER [DefaultExecutionOrder(11001)] #endif public class VRMSpringBoneColliderGroup : MonoBehaviour { [Serializable] public class SphereCollider { public Vector3 Offset; [Range(0, 1.0f)] public float Radius; } [SerializeField] public SphereCollider[] Colliders = new SphereCollider[]{ new SphereCollider { Radius=0.1f } }; [SerializeField] Color m_gizmoColor = Color.magenta; private void OnDrawGizmosSelected() { Gizmos.color = m_gizmoColor; Matrix4x4 mat = transform.localToWorldMatrix; var ls = Mathf.Max( transform.lossyScale.x, transform.lossyScale.y, transform.lossyScale.z ); Gizmos.matrix = mat * Matrix4x4.Scale(new Vector3( 1.0f / transform.lossyScale.x * ls, 1.0f / transform.lossyScale.y * ls, 1.0f / transform.lossyScale.z * ls )); foreach (var y in Colliders) { Gizmos.DrawWireSphere(y.Offset, y.Radius); } } } }