private static VariableValue DrawInt(Rect rect, VariableValue value, IntVariableConstraint constraint) { var integer = value.Int; if (constraint != null) { integer = EditorGUI.IntSlider(rect, GUIContent.none, integer, constraint.Minimum, constraint.Maximum); } else { integer = EditorGUI.IntField(rect, GUIContent.none, integer); } return(VariableValue.Create(integer)); }
private static void DrawNumberConstraint(Rect rect, VariableType type, ref VariableConstraint constraint) { var fromLabel = _minimumConstraintLabel; var toLabel = _maximumConstraintLabel; var fromSize = EditorStyles.label.CalcSize(fromLabel); var toSize = EditorStyles.label.CalcSize(toLabel); var spacing = 5.0f; var inputWidth = (rect.width - rect.height - fromSize.x - toSize.x - spacing * 4) * 0.5f; var checkboxRect = RectHelper.TakeWidth(ref rect, rect.height); RectHelper.TakeWidth(ref rect, spacing); var fromRect = RectHelper.TakeWidth(ref rect, fromSize.x); RectHelper.TakeWidth(ref rect, spacing); var minimumRect = RectHelper.TakeWidth(ref rect, inputWidth); RectHelper.TakeWidth(ref rect, spacing); var toRect = RectHelper.TakeWidth(ref rect, toSize.x); RectHelper.TakeWidth(ref rect, spacing); var maximumRect = RectHelper.TakeWidth(ref rect, inputWidth); var useRangeConstraint = GUI.Toggle(checkboxRect, constraint != null, _useRangeConstraintLabel); if (!useRangeConstraint) { constraint = null; } else if (type == VariableType.Int) { if (!(constraint is IntVariableConstraint intConstraint)) { intConstraint = new IntVariableConstraint { Minimum = 0, Maximum = 100 }; constraint = intConstraint; } GUI.Label(fromRect, fromLabel); intConstraint.Minimum = EditorGUI.IntField(minimumRect, intConstraint.Minimum); GUI.Label(toRect, toLabel); intConstraint.Maximum = EditorGUI.IntField(maximumRect, intConstraint.Maximum); } else if (type == VariableType.Float) { if (!(constraint is FloatVariableConstraint floatConstraint)) { floatConstraint = new FloatVariableConstraint { Minimum = 0, Maximum = 100 }; constraint = floatConstraint; } GUI.Label(fromRect, fromLabel); floatConstraint.Minimum = EditorGUI.FloatField(minimumRect, floatConstraint.Minimum); GUI.Label(toRect, toLabel); floatConstraint.Maximum = EditorGUI.FloatField(maximumRect, floatConstraint.Maximum); } }