示例#1
0
        private void DrawBoundsHandles(RadialSkewDeformer skew)
        {
            var direction = skew.Axis.up;

            var topHandleWorldPosition    = skew.Axis.position + direction * skew.Top;
            var bottomHandleWorldPosition = skew.Axis.position + direction * skew.Bottom;

            DeformHandles.Line(topHandleWorldPosition, bottomHandleWorldPosition, DeformHandles.LineMode.LightDotted);

            using (var check = new EditorGUI.ChangeCheckScope())
            {
                var newTopWorldPosition = DeformHandles.Slider(topHandleWorldPosition, direction);
                if (check.changed)
                {
                    Undo.RecordObject(skew, "Changed Top");
                    var newTop = DeformHandlesUtility.DistanceAlongAxis(skew.Axis, skew.Axis.position, newTopWorldPosition, Axis.Y);
                    skew.Top = newTop;
                }
            }

            using (var check = new EditorGUI.ChangeCheckScope())
            {
                var newBottomWorldPosition = DeformHandles.Slider(bottomHandleWorldPosition, direction);
                if (check.changed)
                {
                    Undo.RecordObject(skew, "Changed Bottom");
                    var newBottom = DeformHandlesUtility.DistanceAlongAxis(skew.Axis, skew.Axis.position, newBottomWorldPosition, Axis.Y);
                    skew.Bottom = newBottom;
                }
            }
        }
示例#2
0
        private void DrawAxisGuide(RadialSkewDeformer skew)
        {
            var direction = skew.Axis.up;

            var top    = skew.Axis.position + direction * HandleUtility.GetHandleSize(skew.Axis.position) * 2f;
            var bottom = skew.Axis.position - direction * HandleUtility.GetHandleSize(skew.Axis.position) * 2f;

            DeformHandles.Line(top, bottom, DeformHandles.LineMode.LightDotted);
        }
示例#3
0
        private void DrawFactorHandle(RadialSkewDeformer skew)
        {
            var direction           = skew.Axis.forward;
            var handleWorldPosition = skew.Axis.position + direction * skew.Factor;

            DeformHandles.Line(skew.Axis.position, handleWorldPosition, DeformHandles.LineMode.LightDotted);

            using (var check = new EditorGUI.ChangeCheckScope())
            {
                var newWorldPosition = DeformHandles.Slider(handleWorldPosition, direction);
                if (check.changed)
                {
                    Undo.RecordObject(skew, "Changed Factor");
                    var newFactor = DeformHandlesUtility.DistanceAlongAxis(skew.Axis, skew.Axis.position, newWorldPosition, Axis.Z);
                    skew.Factor = newFactor;
                }
            }
        }