TrianglePropertyDrawer.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using UnityEditor;
  2. using UnityEngine;
  3. namespace MPUIKIT.Editor {
  4. [CustomPropertyDrawer(typeof(Triangle))]
  5. public class TrianglePropertyDrawer : PropertyDrawer{
  6. public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
  7. EditorGUI.BeginProperty(position, label, property);
  8. {
  9. Rect LabelRect = new Rect(position.x, position.y, position.width, EditorGUIUtility.singleLineHeight);
  10. Rect RadiusVectorRect = new Rect(position.x,
  11. position.y + EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing,
  12. position.width, EditorGUIUtility.singleLineHeight);
  13. SerializedProperty uniform = property.FindPropertyRelative("m_UniformCornerRadius");
  14. SerializedProperty radius = property.FindPropertyRelative("m_CornerRadius");
  15. MPEditorUtility.CornerRadiusModeGUI(LabelRect, ref uniform, new []{"Free", "Uniform"});
  16. float floatVal = radius.vector3Value.x;
  17. Vector3 vectorValue = radius.vector3Value;
  18. EditorGUI.BeginChangeCheck();
  19. {
  20. if (uniform.boolValue) {
  21. floatVal = EditorGUI.FloatField(RadiusVectorRect, "Uniform Radius", floatVal);
  22. }
  23. else {
  24. vectorValue = EditorGUI.Vector3Field(RadiusVectorRect, string.Empty, vectorValue);
  25. }
  26. }
  27. if (EditorGUI.EndChangeCheck()) {
  28. radius.vector3Value = uniform.boolValue ? new Vector3(floatVal, floatVal, floatVal) : vectorValue;
  29. }
  30. }
  31. EditorGUI.EndProperty();
  32. }
  33. public override float GetPropertyHeight(SerializedProperty property, GUIContent label) {
  34. return EditorGUIUtility.singleLineHeight * 2 + EditorGUIUtility.standardVerticalSpacing * 2;
  35. }
  36. }
  37. }