You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
38 lines
1.1 KiB
using UnityEngine; |
|
using UnityEditor; |
|
using System; |
|
|
|
namespace NaughtyAttributes.Editor |
|
{ |
|
[CustomPropertyDrawer(typeof(EnumFlagsAttribute))] |
|
public class EnumFlagsPropertyDrawer : PropertyDrawerBase |
|
{ |
|
protected override float GetPropertyHeight_Internal(SerializedProperty property, GUIContent label) |
|
{ |
|
Enum targetEnum = PropertyUtility.GetTargetObjectOfProperty(property) as Enum; |
|
|
|
return (targetEnum != null) |
|
? GetPropertyHeight(property) |
|
: GetPropertyHeight(property) + GetHelpBoxHeight(); |
|
} |
|
|
|
protected override void OnGUI_Internal(Rect rect, SerializedProperty property, GUIContent label) |
|
{ |
|
EditorGUI.BeginProperty(rect, label, property); |
|
|
|
Enum targetEnum = PropertyUtility.GetTargetObjectOfProperty(property) as Enum; |
|
if (targetEnum != null) |
|
{ |
|
Enum enumNew = EditorGUI.EnumFlagsField(rect, label.text, targetEnum); |
|
property.intValue = (int)Convert.ChangeType(enumNew, targetEnum.GetType()); |
|
} |
|
else |
|
{ |
|
string message = attribute.GetType().Name + " can be used only on enums"; |
|
DrawDefaultPropertyAndHelpBox(rect, property, message, MessageType.Warning); |
|
} |
|
|
|
EditorGUI.EndProperty(); |
|
} |
|
} |
|
}
|
|
|