private void DrawRadiusHandle(CylindrifyDeformer cylindrify) { var position = Vector3.up * cylindrify.Radius; var axis = cylindrify.Axis; using (new Handles.DrawingScope(Matrix4x4.TRS(axis.position, axis.rotation, axis.lossyScale))) { var size = HandleUtility.GetHandleSize(position) * DeformEditorSettings.ScreenspaceSliderHandleCapSize; DeformHandles.Circle(Vector3.zero, Vector3.forward, Vector3.up, cylindrify.Radius); DeformHandles.Line(position + Vector3.forward * size, position + Vector3.forward * size * 5f, DeformHandles.LineMode.Light); DeformHandles.Line(position - Vector3.forward * size, position - Vector3.forward * size * 5f, DeformHandles.LineMode.Light); using (var check = new EditorGUI.ChangeCheckScope()) { var newWorldPosition = DeformHandles.Slider(position, Vector3.up); if (check.changed) { Undo.RecordObject(cylindrify, "Changed Radius"); cylindrify.Radius = cylindrify.Axis.position.y; } } } }
private void DrawFactorHandle(CylindrifyDeformer cylindrify) { if (cylindrify.Radius == 0f) { return; } var position = Vector3.up * cylindrify.Factor * cylindrify.Radius; var axis = cylindrify.Axis; using (new Handles.DrawingScope(Matrix4x4.TRS(axis.position, axis.rotation, axis.lossyScale))) { DeformHandles.Line(position, Vector3.zero, DeformHandles.LineMode.Light); DeformHandles.Line(position, Vector3.up * cylindrify.Radius, DeformHandles.LineMode.LightDotted); using (var check = new EditorGUI.ChangeCheckScope()) { var newWorldPosition = DeformHandles.Slider(position, Vector3.up); if (check.changed) { Undo.RecordObject(cylindrify, "Changed Radius"); cylindrify.Factor = newWorldPosition.y; } } } }