72 lines
2.1 KiB
C#
72 lines
2.1 KiB
C#
// 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.display.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.display.Length > 0)
|
|
{
|
|
return 18;
|
|
}
|
|
else
|
|
{
|
|
return -2;
|
|
}
|
|
}
|
|
}
|
|
}
|