void InitIfNeeded()
        {
            if (!m_Initialized)
            {
                if (treeViewState == null)
                {
                    treeViewState = new TreeViewState();
                }

                bool firstInit   = m_MultiColumnHeaderState == null;
                var  headerState = DefaultMultiColumnHeaderState(multiColumnTreeViewRect.width);
                if (MultiColumnHeaderState.CanOverwriteSerializedFields(m_MultiColumnHeaderState, headerState))
                {
                    MultiColumnHeaderState.OverwriteSerializedFields(m_MultiColumnHeaderState, headerState);
                }
                m_MultiColumnHeaderState = headerState;

                var multiColumnHeader = new MyMultiColumnHeader(headerState);
                if (firstInit)
                {
                    multiColumnHeader.ResizeToFit();
                }

                var treeModel = new TreeModel <PrefabHierarchyElement>(PrefabHierarchyTreeView.GetPrefabHierachyElements());

                treeView = new PrefabHierarchyTreeView(treeViewState, multiColumnHeader, treeModel);

                m_SearchField = new SearchField();
                m_SearchField.downOrUpArrowKeyPressed += treeView.SetFocusAndEnsureSelectedItem;

                m_Initialized = true;
            }
        }
Beispiel #2
0
        public static List <PrefabDataHolder> PrefabDataFromSelection(PrefabHierarchyTreeView treeView)
        {
            List <PrefabDataHolder> prefabDataList = new List <PrefabDataHolder>();

            foreach (var item in treeView.GetSelection())
            {
                prefabDataList.Add(treeView.treeModel.Find(item).prefabDataHolder);
            }

            return(prefabDataList);
        }
        public static PrefabDataHolder[] PrefabDataFromSelection(PrefabHierarchyTreeView treeView)
        {
            var selection = treeView.GetSelection();
            var treeList  = treeView.treeModel.m_Data.ToList();

            PrefabDataHolder[] prefabDataList = new PrefabDataHolder[selection.Count];
            Parallel.For(0, selection.Count, i =>
            {
                prefabDataList[i] = treeList.Find(x => x.id == selection.ElementAt(i)).prefabDataHolder;
            });
            return(prefabDataList);
        }
Beispiel #4
0
        public static void PrefabHierachyOptions(PrefabHierarchyTreeView treeView, ref string name, ref bool replace)
        {
            Elements.MiniBoldLabel(ToolTips.hierachyOptionsLabel);

            Elements.BeginToolbarHorizontal();
            name = Elements.ToolbarTextField(name);
            Elements.EndToolbarHorizontal();

            Elements.BeginToolbarHorizontal();
            if (Elements.ToolbarButton(ToolTips.hierachyCategoryRename))
            {
                name = String.IsNullOrEmpty(name) ? "" : name;
                PrefabManager.RenamePrefabCategories(PrefabHierarchyTreeView.PrefabDataFromSelection(treeView), name);
                ReloadTreeViews();
            }
            Elements.EndToolbarHorizontal();

            Elements.BeginToolbarHorizontal();
            replace = Elements.ToolbarToggle(ToolTips.hierachyReplace, replace);
            if (Elements.ToolbarButton(ToolTips.hierachyIDRename))
            {
                if (uint.TryParse(name, out uint result))
                {
                    PrefabManager.RenamePrefabIDs(PrefabHierarchyTreeView.PrefabDataFromSelection(treeView), result, replace);
                    ReloadTreeViews();
                }
            }
            Elements.EndToolbarHorizontal();

            Elements.BeginToolbarHorizontal();
            if (Elements.ToolbarButton(ToolTips.hierachyDelete))
            {
                PrefabManager.DeletePrefabs(PrefabHierarchyTreeView.PrefabDataFromSelection(treeView));
            }
            Elements.EndToolbarHorizontal();
        }
 void DrawOptions(Rect rect)
 {
     GUILayout.BeginArea(rect);
     Functions.HierachyOptions(PrefabHierarchyTreeView.PrefabDataFromSelection(treeView).ToArray(), ref category);
     GUILayout.EndArea();
 }