示例#1
0
        public void DrawBone(Vector2 position, Vector2 endPosition, bool isSelected, bool isHovered, Color color)
        {
            color.a = boneOpacity;

            Color outlineColor = Color.black;

            outlineColor.a = boneOpacity * boneOpacity;

            if (isSelected || (isHovered && IsActionActive(BindPoseAction.SelectBone)))
            {
                outlineColor = Color.yellow;
            }


            Color nodeColor = Color.black;

            if (isHovered && IsActionActive(BindPoseAction.MoveBone) ||
                isSelected && IsActionHot(BindPoseAction.MoveBone))
            {
                nodeColor = Color.yellow;
            }

            nodeColor.a = boneOpacity;

            BoneDrawingUtility.DrawBoneOutline(position, endPosition, outlineColor);
            BoneDrawingUtility.DrawBoneBody(position, endPosition, color);
            BoneDrawingUtility.DrawBoneNodeOutline(position, color);
            BoneDrawingUtility.DrawBoneNode(position, nodeColor.AlphaMultiplied(0.5f));
        }
示例#2
0
        public void DrawBone(Vector3 position, Vector3 right, Vector3 forward, float length, Color color, bool isChained, bool isSelected, bool isJointHovered, bool isTailHovered, bool isHot)
        {
            var endPosition    = position + right * length;
            var rotation       = Quaternion.LookRotation(forward, Vector3.Cross(right, forward));
            var boneBodyColor  = color;
            var boneJointColor = new Color(0f, 0f, 0f, 0.75f * color.a);
            var tailColor      = new Color(0f, 0f, 0f, 0.75f * color.a);
            var hoveredColor   = Handles.preselectionColor;
            var selectedColor  = Handles.selectedColor;
            var drawRectCap    = false;

            if (isJointHovered)
            {
                boneJointColor = hoveredColor;
            }
            if (isHot && (IsActionHot(SkeletonAction.MoveBone) || IsActionHot(SkeletonAction.MoveJoint)))
            {
                boneJointColor = selectedColor;
            }

            if (mode == SkeletonMode.EditPose || mode == SkeletonMode.CreateBone)
            {
                if (isJointHovered || isSelected)
                {
                    drawRectCap = true;
                }
            }
            else if (mode == SkeletonMode.EditJoints || mode == SkeletonMode.SplitBone)
            {
                rotation    = Quaternion.identity;
                drawRectCap = true;
            }

            if (drawRectCap)
            {
                Handles.RectangleHandleCap(0, position, rotation, BoneDrawingUtility.GetBoneRadius(position), EventType.Repaint);
            }

            BoneDrawingUtility.DrawBone(position, endPosition, forward, boneBodyColor);
            BoneDrawingUtility.DrawBoneNode(position, forward, boneJointColor);

            if (!isChained &&
                (IsCapable(SkeletonAction.ChangeLength) ||
                 IsCapable(SkeletonAction.MoveEndPosition)))
            {
                if (isTailHovered)
                {
                    tailColor = hoveredColor;
                }

                if (isHot && (IsActionHot(SkeletonAction.ChangeLength) || IsActionHot(SkeletonAction.MoveEndPosition)))
                {
                    tailColor = selectedColor;
                }

                BoneDrawingUtility.DrawBoneNode(endPosition, forward, tailColor);
            }
        }
示例#3
0
        public void DrawTip(IBone bone)
        {
            if (Event.current == null || Event.current.type != EventType.Repaint)
            {
                return;
            }

            BoneDrawingUtility.DrawBoneNodeOutline(bone.tip, Styles.tipColor, GetScale() * 0.5f);
        }
示例#4
0
        public void DrawPreviewLinkFromBone(IBone bone)
        {
            if (Event.current == null || Event.current.type != EventType.Repaint)
            {
                return;
            }

            var mousePosition = GetMouseWorldPosition();

            BoneDrawingUtility.DrawParentLink(mousePosition, bone.position, Styles.previewColor, GetScale());
        }
示例#5
0
        public void DrawLinkToParent(IBone bone, bool selected)
        {
            if (Event.current == null || Event.current.type != EventType.Repaint)
            {
                return;
            }

            var pointingTo = bone.parent.position;

            BoneDrawingUtility.DrawParentLink(bone.position, pointingTo, selected ? Styles.selectedParentLinkColor : color, GetScale());
        }
示例#6
0
        public void DrawPreviewTipFromTip(IBone bone)
        {
            if (Event.current == null || Event.current.type != EventType.Repaint)
            {
                return;
            }

            var mousePosition = GetMouseWorldPosition();
            var scale         = GetScale(bone.tip, mousePosition);

            BoneDrawingUtility.DrawBoneBody(bone.tip, mousePosition, Styles.previewColor, scale);
            BoneDrawingUtility.DrawBoneNodeOutline(bone.tip, Styles.previewColor, scale);
        }
示例#7
0
        public void DrawBone(IBone bone, bool selected)
        {
            if (Event.current == null || Event.current.type != EventType.Repaint)
            {
                return;
            }

            var scale = GetScale(bone.position, bone.tip);

            BoneDrawingUtility.DrawBoneNodeOutline(bone.position, selected ? Styles.selectedBoneColor : color, scale);
            BoneDrawingUtility.DrawBoneBody(bone.position, bone.tip, selected ? Styles.selectedBoneColor : color, scale);
            BoneDrawingUtility.DrawBoneNode(bone.position, selected ? Styles.selectedNodeColor : Styles.nodeColor, scale);
        }
示例#8
0
 public float GetBoneRadius()
 {
     return(BoneDrawingUtility.GetBoneRadius(GetScale()));
 }
示例#9
0
 public void DrawBoneOutline(Vector3 position, Vector3 right, Vector3 forward, float length, Color color, float outlineScale)
 {
     BoneDrawingUtility.DrawBoneOutline(position, position + right * length, forward, color, outlineScale);
 }
示例#10
0
 public void DrawBoneParentLink(Vector3 parentPosition, Vector3 position, Vector3 forward, Color color)
 {
     BoneDrawingUtility.DrawBone(position, parentPosition, forward, color);
 }