コード例 #1
0
        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);
        }
コード例 #2
0
        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();
                }
            }
        }