1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // Cristian Pop - https://boxophobic.com/
- using UnityEngine;
- using UnityEditor;
- namespace Boxophobic.StyledGUI
- {
- [CustomPropertyDrawer(typeof(StyledRangeOptions))]
- public class StyledRangeOptionsAttributeDrawer : PropertyDrawer
- {
- StyledRangeOptions a;
- public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
- {
- a = (StyledRangeOptions)attribute;
- GUIStyle styleMid = new GUIStyle();
- styleMid.alignment = TextAnchor.MiddleCenter;
- styleMid.normal.textColor = Color.gray;
- styleMid.fontSize = 7;
- if (a.displayLabel.Length > 0)
- {
- EditorGUI.PropertyField(position, property, label, true);
- GUILayout.Space(5);
- }
- GUILayout.BeginHorizontal();
- GUILayout.Space(8);
- property.floatValue = GUILayout.HorizontalSlider(property.floatValue, a.min, a.max);
- property.floatValue = Mathf.Clamp(property.floatValue, a.min, a.max);
- property.floatValue = Mathf.Round(property.floatValue * 1000f) / 1000f;
- GUILayout.Space(8);
- GUILayout.EndHorizontal();
- #if UNITY_2019_3_OR_NEWER
- GUILayout.Space(15);
- #endif
- GUILayout.BeginHorizontal();
- int maxWidth = 20;
- #if UNITY_2019_3_OR_NEWER
- maxWidth = 28;
- #endif
- for (int i = 0; i < a.options.Length - 1; i++)
- {
- GUILayout.Label(a.options[i], styleMid, GUILayout.Width(maxWidth));
- GUILayout.Label("", styleMid);
- }
- GUILayout.Label(a.options[a.options.Length - 1], styleMid, GUILayout.Width(maxWidth));
- GUILayout.EndHorizontal();
- }
- public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
- {
- a = (StyledRangeOptions)attribute;
- if (a.displayLabel.Length > 0)
- {
- return 18;
- }
- else
- {
- return -2;
- }
- }
- }
- }
|