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); }
/// <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(); }
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); }