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)); }
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); } }
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); }
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)); }
public static float GetHeight <EnumType>(GUIContent label, EnumDisplayType type, float minimumButtonWidth = EnumDisplayAttribute.DefaultMinimumWidth) where EnumType : Enum { return(GetHeight(label, typeof(EnumType), type, minimumButtonWidth)); }
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); } }
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); }