private static VariableValue DrawFloat(Rect rect, VariableValue value, FloatVariableConstraint constraint) { var number = value.Float; if (constraint != null) { number = EditorGUI.Slider(rect, GUIContent.none, number, constraint.Minimum, constraint.Maximum); } else { number = EditorGUI.FloatField(rect, GUIContent.none, number); } return(VariableValue.Create(number)); }
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); } }