Example #1
0
        public override void OnGUI(Rect rect, SerializedProperty property, GUIContent content)
        {
            var enumAllow = attribute as EnumAllowCategoriesAttribute;
            var enumMask  = attribute as EnumMaskAttribute;

            var type = (enumMask == null || enumMask.Value == null) ? fieldInfo.FieldType : enumMask.Value;

            string[] names = Editors.GetEnumNames(type, property);
            if (names != null)
            {
                if (enumAllow != null)
                {
                    var contents = new GUIContent[names.Length];
                    for (int i = 0; i < names.Length; i++)
                    {
                        contents[i] = new GUIContent(names[i], names[i]);
                    }
                    property.enumValueIndex = EditorGUI.Popup(rect, content, property.enumValueIndex, contents, EditorStyles.popup);
                }
                else if (enumMask != null)
                {
                    property.intValue = EditorGUI.MaskField(rect, content, property.intValue, names);
                }
            }
        }