Exemple #1
0
        public static void DrawBone(Transform transform, Bone b, float boneScale, Color color, float skeletonRenderScale = 1f)
        {
            var   pos    = new Vector3(b.WorldX * skeletonRenderScale, b.WorldY * skeletonRenderScale, 0);
            float length = b.Data.Length;

            if (length > 0)
            {
                Quaternion  rot   = Quaternion.Euler(0, 0, b.WorldRotationX);
                Vector3     scale = Vector3.one * length * b.WorldScaleX;
                const float my    = 1.5f;
                scale.y *= (SpineEditorUtilities.Preferences.handleScale + 1f) * 0.5f;
                scale.y  = Mathf.Clamp(scale.x, -my, my);
                SpineHandles.GetBoneMaterial(color).SetPass(0);
                Graphics.DrawMeshNow(SpineHandles.BoneMesh, transform.localToWorldMatrix * Matrix4x4.TRS(pos, rot, scale));
            }
            else
            {
                var wp = transform.TransformPoint(pos);
                DrawBoneCircle(wp, color, transform.forward, boneScale * skeletonRenderScale);
            }
        }