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; } } }
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); }
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; } } }