public void DrawPreview(object fieldValue) { if (!showPreview) { return; } var area = ActionHelpers.GetControlPreviewRect(100f); var previewColor = Color.white; previewColor.a = 0.5f; Handles.color = previewColor; start.x = area.x + area.width * 0.5f; start.y = area.y + area.height * 0.5f; var max = 40f; var angleStep = snapAngle.Value; if (angleStep < 1) { angleStep = 1; } for (float angle = 0; angle < 360; angle += angleStep) { var radians = Mathf.Deg2Rad * angle; end.x = start.x + Mathf.Cos(radians) * max; end.y = start.y + Mathf.Sin(radians) * max; Handles.DrawLine(start, end); } ActionHelpers.DrawAxisXY(area); Handles.color = Color.white; }
public void DrawPreview(object fieldValue) { if (!showPreview) { return; } var area = ActionHelpers.GetControlPreviewRect(100f); var axisCenter = ActionHelpers.DrawAxisXY(area); Handles.color = previewColor; // init min/max sizes for drawing var max = 40f; var min = 0f; if (maxLength.Value > 0) { min = max * (minLength.Value / maxLength.Value); } // setup x/y scales to fit in area var scaleX = 1f; var scaleY = yScale.Value; if (Mathf.Abs(scaleY) > 1f) { scaleX = 1f / scaleY; scaleY = 1f; } switch (shape) { case Option.Circle: ActionHelpers.DrawOval(axisCenter, max * scaleX, max * scaleY); ActionHelpers.DrawOval(axisCenter, min * scaleX, min * scaleY); break; case Option.Rectangle: ActionHelpers.DrawRect(axisCenter, max * scaleX, max * scaleY); ActionHelpers.DrawRect(axisCenter, min * scaleX, min * scaleY); break; case Option.InArc: var fromAngle = floatParam1.Value; var toAngle = floatParam2.Value; ActionHelpers.DrawArc(axisCenter, fromAngle, toAngle, max * scaleX, max * scaleY); ActionHelpers.DrawArc(axisCenter, fromAngle, toAngle, min * scaleX, min * scaleY); ActionHelpers.DrawSpoke(axisCenter, fromAngle, min, max, scaleX, scaleY); ActionHelpers.DrawSpoke(axisCenter, toAngle, min, max, scaleX, scaleY); break; case Option.AtAngles: var angleStep = floatParam1.Value; if (angleStep < 1) { angleStep = 1; } // make sure we draw at least a dot (should be a better way?!) if (max - min < 1.4f) { min = max - 1.4f; } for (float angle = 0; angle < 360; angle += angleStep) { ActionHelpers.DrawSpoke(axisCenter, angle, min, max, scaleX, scaleY); } break; default: throw new ArgumentOutOfRangeException(); } Handles.color = Color.white; }