Пример #1
0
        public static int Draw(GUIContent label, int value, Type enumType, EnumDisplayType type, bool forceFlags, float minimumButtonWidth = EnumDisplayAttribute.DefaultMinimumWidth)
        {
            var height = GetHeight(label, enumType, type, minimumButtonWidth);
            var rect   = EditorGUILayout.GetControlRect(false, height);

            return(Draw(rect, label, value, enumType, type, forceFlags, minimumButtonWidth));
        }
Пример #2
0
 public static float GetHeight(GUIContent label, Type enumType, EnumDisplayType type, float minimumButtonWidth = EnumDisplayAttribute.DefaultMinimumWidth)
 {
     if (type == EnumDisplayType.Buttons)
     {
         var width = label.text != string.Empty ? RectHelper.CurrentFieldWidth : RectHelper.CurrentViewWidth;
         GetButtonInfo(enumType, width, minimumButtonWidth, out var info, out float buttonWidth, out int rows, out int columns);
         return(EditorGUIUtility.singleLineHeight * rows);
     }
     else
     {
         return(EditorGUIUtility.singleLineHeight);
     }
 }
Пример #3
0
        public static int Draw(Rect position, GUIContent label, int value, Type enumType, EnumDisplayType type, bool forceFlags, float minimumButtonWidth = EnumDisplayAttribute.DefaultMinimumWidth)
        {
            var useFlags = forceFlags || enumType.GetCustomAttributes(typeof(FlagsAttribute), false).Length > 0;

            switch (type)
            {
            case EnumDisplayType.Buttons:
            {
                position = EditorGUI.PrefixLabel(position, label);

                var width = label.text != string.Empty ? RectHelper.CurrentFieldWidth : RectHelper.CurrentViewWidth;
                GetButtonInfo(enumType, width, minimumButtonWidth, out var info, out var buttonWidth, out var rows, out var columns);

                if (useFlags)
                {
                    value = DrawFlagButtons(position, value, info, buttonWidth, rows, columns);
                }
                else
                {
                    value = DrawSingleButtons(position, value, info, buttonWidth, rows, columns);
                }

                break;
            }

            case EnumDisplayType.Popup:
            {
                var enumValue = (Enum)Enum.Parse(enumType, value.ToString());

                if (useFlags)
                {
                    enumValue = EditorGUI.EnumFlagsField(position, label, enumValue);
                }
                else
                {
                    enumValue = EditorGUI.EnumPopup(position, label, enumValue);
                }

                value = Convert.ToInt32(enumValue);
                break;
            }
            }

            return(value);
        }
Пример #4
0
 public static int Draw <EnumType>(Rect position, GUIContent label, int value, EnumDisplayType type, bool forceFlags, float minimumButtonWidth = EnumDisplayAttribute.DefaultMinimumWidth) where EnumType : Enum
 {
     return(Draw(position, label, value, typeof(EnumType), type, forceFlags, minimumButtonWidth));
 }
Пример #5
0
 public static float GetHeight <EnumType>(GUIContent label, EnumDisplayType type, float minimumButtonWidth = EnumDisplayAttribute.DefaultMinimumWidth) where EnumType : Enum
 {
     return(GetHeight(label, typeof(EnumType), type, minimumButtonWidth));
 }
Пример #6
0
 public static void Draw(Rect position, GUIContent label, SerializedProperty property, Type enumType, EnumDisplayType type, bool forceFlags, float minimumButtonWidth = EnumDisplayAttribute.DefaultMinimumWidth)
 {
     if (property.propertyType == SerializedPropertyType.Enum)
     {
         property.intValue = Draw(position, label, property.intValue, enumType, type, forceFlags, minimumButtonWidth);
     }
     else
     {
         Debug.LogWarningFormat(_invalidTypeWarning, property.propertyPath);
         EditorGUI.PropertyField(position, property, label);
     }
 }
Пример #7
0
        public static void Draw(GUIContent label, SerializedProperty property, Type enumType, EnumDisplayType type, bool forceFlags, float minimumButtonWidth = EnumDisplayAttribute.DefaultMinimumWidth)
        {
            var height = GetHeight(label, enumType, type, minimumButtonWidth);
            var rect   = EditorGUILayout.GetControlRect(false, height);

            Draw(rect, label, property, enumType, type, forceFlags, minimumButtonWidth);
        }