コード例 #1
0
        private void TaskPopUp(SerializedProperty property, ComboTaskConfig taskConfig)
        {
            var registeredTasks = ComboTasksNames;
            var index           = 0;
            var guiContents     = new List <GUIContent>();

            foreach (var task in registeredTasks)
            {
                guiContents.Add(new GUIContent(task.shortName));
            }

            for (var i = 0; i < registeredTasks.Length; i++)
            {
                if (registeredTasks[i].fullName == taskConfig.classFullName)
                {
                    index = i;
                    break;
                }
            }

            var contentNames = guiContents.ToArray();

            EditorGUI.BeginChangeCheck();

            index = EditorGUILayout.Popup(new GUIContent("Task Type: "), index, contentNames);

            if (!EditorGUI.EndChangeCheck())
            {
                return;
            }

            if (index == 0)
            {
                Undo.RecordObject(ComboConfig.Instance, "Change Task Type");
                property.FindPropertyRelative("classFullName").stringValue = string.Empty;
                property.FindPropertyRelative("searchPattern").stringValue = string.Empty;
                property.FindPropertyRelative("description").stringValue   = string.Empty;
                EditorUtility.SetDirty(ComboConfig.Instance);

                return;
            }

            var registeredTask = RegisteredTasks.Instance.GetRegisteredTaskByName(registeredTasks[index].fullName);

            Undo.RecordObject(ComboConfig.Instance, "Change Task Type");
            property.FindPropertyRelative("classFullName").stringValue = registeredTasks[index].fullName;

            property.FindPropertyRelative("searchPattern").stringValue =
                registeredTask.task.SearchPattern;

            property.FindPropertyRelative("description").stringValue =
                registeredTask.task.Description;

            EditorUtility.SetDirty(ComboConfig.Instance);
        }
コード例 #2
0
        /// <summary>
        /// Inject a pre-defined task config to the ComboConfig.
        /// </summary>
        /// <param name="taskConfig"></param>
        public static void InjectTask(ComboTaskConfig taskConfig)
        {
            foreach (var ownTaskConfig in ComboConfig.Instance.tasksConfig)
            {
                if (ownTaskConfig.name == taskConfig.name && ownTaskConfig.injected)
                {
                    return;
                }
            }

            taskConfig.injected = true;
            var tasksList = new List <ComboTaskConfig>(ComboConfig.Instance.tasksConfig)
            {
                taskConfig
            };

            ComboConfig.Instance.tasksConfig = tasksList.ToArray();
        }
コード例 #3
0
        private ComboTaskConfig GetTaskConfig()
        {
            var task = new ComboTaskConfig();

            if (_property == null)
            {
                return(task);
            }

            task.name          = _property.FindPropertyRelative("name").stringValue;
            task.guid          = _property.FindPropertyRelative("guid").stringValue;
            task.injected      = _property.FindPropertyRelative("injected").boolValue;
            task.classFullName = _property.FindPropertyRelative("classFullName").stringValue;
            task.searchPattern = _property.FindPropertyRelative("searchPattern").stringValue;
            task.path          = _property.FindPropertyRelative("path").stringValue;
            task.description   = _property.FindPropertyRelative("description").stringValue;

            return(task);
        }