private void AddCategories(CommandInfo info) { string[] categories = info.Category.Split('/'); string path = ""; for (int i = 0; i < categories.Length; i++) { path += categories[i]; if (!CategoriesByName.ContainsKey(path)) { CommandCategory cat = new CommandCategory(); cat.CategoryName = categories[i]; if (i > 0) { cat.ParentCategoryName = path.Replace("/" + categories[i], ""); } else { BaseCategories.Add(path); } CategoriesByName.Add(path, cat); } else if (categories.Length > 1 && i < categories.Length - 1) { CommandCategory main = CategoriesByName[path]; main.AddSubCategory(path + "/" + categories[i + 1]); } path += "/"; } CategoriesByName[info.Category].AddCommandName(info.CommandName); }
private void AddAllFoundCommand() { if (!IsLoading) { lock (infoToAdd) { if (infoToAdd.Count > 0) { foreach (var info in infoToAdd) { AddCommand(info.CommandName, info); } } infoToAdd.Clear(); OnCommandLoadingDone?.Invoke(); BaseCategories.Sort(); CommandCategory history = new CommandCategory(); history.CategoryName = CommandHistory; if (!BaseCategories.Contains(history.CategoryName)) { BaseCategories.Insert(0, history.CategoryName); } if (!CategoriesByName.ContainsKey(history.CategoryName)) { CategoriesByName.Add(history.CategoryName, history); } EditorApplication.update -= AddAllFoundCommand; } } else { lock (infoToAdd) { foreach (var info in infoToAdd) { AddCommand(info.CommandName, info); } infoToAdd.Clear(); } } }