123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- using UnityEditor;
- using UnityEngine;
- namespace MPUIKIT.Editor {
- [CustomPropertyDrawer(typeof(Circle))]
- public class CirclePropertyDrawer : PropertyDrawer{
- public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
- EditorGUI.BeginProperty(position, label, property);
- {
- Rect radiusRect = new Rect(position.x, position.y, position.width, EditorGUIUtility.singleLineHeight);
- Rect toolBarRect = new Rect(position.x + EditorGUIUtility.labelWidth,
- position.y + EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing,
- position.width - EditorGUIUtility.labelWidth, EditorGUIUtility.singleLineHeight);
-
- SerializedProperty spFitCircleRadius = property.FindPropertyRelative("m_FitRadius");
- bool FitCirlce = spFitCircleRadius.boolValue;
- EditorGUI.BeginDisabledGroup(FitCirlce);
- {
- EditorGUI.PropertyField(radiusRect, property.FindPropertyRelative("m_Radius"),
- new GUIContent("Radius"));
- }
- EditorGUI.EndDisabledGroup();
-
-
- EditorGUI.BeginChangeCheck();
- EditorGUI.showMixedValue = spFitCircleRadius.hasMultipleDifferentValues;
- {
- EditorGUILayout.BeginHorizontal();
- {
- GUILayout.Space(EditorGUIUtility.labelWidth);
-
- FitCirlce = GUI.Toolbar(toolBarRect, FitCirlce ? 1 : 0, new[] {"Free", "Fit"}) == 1;
- }
- EditorGUILayout.EndHorizontal();
- }
- EditorGUI.showMixedValue = false;
- if (EditorGUI.EndChangeCheck()) {
- spFitCircleRadius.boolValue = FitCirlce;
- }
-
- }
- EditorGUI.EndProperty();
- }
- public override float GetPropertyHeight(SerializedProperty property, GUIContent label) {
- return EditorGUIUtility.singleLineHeight * 2 + EditorGUIUtility.standardVerticalSpacing * 2;
- }
- }
- }
|