// 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"));
            }
        }
Пример #2
0
        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();
 }