using UnityEngine; using UnityEditor; namespace Jovian.Utilities.Editor { public class NumberRangePropertyDrawer : PropertyDrawer { private const float PADDING = 1f; public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { EditorGUI.BeginProperty(position, label, property); position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label); float width = position.width * 0.5f - PADDING; Rect minRect = new Rect(position.x, position.y, width, position.height); Rect maxRect = new Rect(minRect.xMax + PADDING * 2f, position.y, width, position.height); int indentLevel = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; EditorGUI.PropertyField(minRect, property.FindPropertyRelative("min"), GUIContent.none); EditorGUI.PropertyField(maxRect, property.FindPropertyRelative("max"), GUIContent.none); EditorGUI.indentLevel = indentLevel; EditorGUI.EndProperty(); } } [CustomPropertyDrawer(typeof(FloatRange))] public class FloatRangePropertyDrawer : NumberRangePropertyDrawer { } [CustomPropertyDrawer(typeof(IntRange))] public class IntRangePropertyDrawer : NumberRangePropertyDrawer { } }