// Draw the property inside the given rect public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { var enumInList = attribute as SenderTechniquesInList; var list = enumInList.List; //Populate readable list var stringList = new string[list.Length]; for (var i = 0; i < list.Length; i++) { stringList[i] = SenderTechniques.GetReadableFormatFromEnum(list[i]); } // enum int values list var enumIntList = new int[list.Length]; for (var i = 0; i < list.Length; i++) { enumIntList[i] = (int)list[i]; } if (property.propertyType == SerializedPropertyType.Enum) { int index = Mathf.Max(0, Array.IndexOf(enumIntList, property.enumValueIndex)); index = EditorGUI.Popup(position, property.displayName, index, stringList); property.enumValueIndex = (int)list[index]; } else { base.OnGUI(position, property, new GUIContent("ERROR")); } }
public override void OnInspectorGUI() { serializedObject.Update(); string helpboxMessage; MessageType helpboxMessageType; bool canIRunThisTechnique = SenderTechniques.CanIRunThisTechnique((SenderTechniques.SenderTechniqueEnum)_senderTechnique.enumValueIndex); if (canIRunThisTechnique) { helpboxMessage = "Plugin is running correctly"; helpboxMessageType = MessageType.Info; } else { helpboxMessage = SenderTechniques.WhyCantIRunThisTechnique((SenderTechniques.SenderTechniqueEnum)_senderTechnique.enumValueIndex); helpboxMessageType = MessageType.Error; } EditorGUILayout.PropertyField(_senderTechnique); EditorGUILayout.HelpBox(helpboxMessage, helpboxMessageType); serializedObject.ApplyModifiedProperties(); }
public SenderTechniquesInList() { List = SenderTechniques.AvailableTechniques(); }