private static void FoldersFirstRecursive(TreeViewItem item) { if (!item.hasChildren) return; TreeViewItem[] array = item.children.ToArray(); for (int sourceIndex = 0; sourceIndex < item.children.Count; ++sourceIndex) { if (array[sourceIndex] != null) { if (array[sourceIndex] is AssetsTreeViewDataSource.NonFolderTreeItem) { for (int index = sourceIndex + 1; index < array.Length; ++index) { if (array[index] is AssetsTreeViewDataSource.FolderTreeItem) { TreeViewItem treeViewItem = array[index]; int length = index - sourceIndex; Array.Copy((Array) array, sourceIndex, (Array) array, sourceIndex + 1, length); array[sourceIndex] = treeViewItem; break; } } } AssetsTreeViewDataSource.FoldersFirstRecursive(array[sourceIndex]); } } item.children = new List<TreeViewItem>((IEnumerable<TreeViewItem>) array); }
private static void FoldersFirstRecursive(TreeViewItem item) { if (!item.hasChildren) { return; } TreeViewItem[] array = item.children.ToArray(); for (int i = 0; i < item.children.Count; i++) { if (array[i] != null) { if (array[i] is AssetsTreeViewDataSource.NonFolderTreeItem) { for (int j = i + 1; j < array.Length; j++) { if (array[j] is AssetsTreeViewDataSource.FolderTreeItem) { TreeViewItem treeViewItem = array[j]; int length = j - i; Array.Copy(array, i, array, i + 1, length); array[i] = treeViewItem; break; } } } AssetsTreeViewDataSource.FoldersFirstRecursive(array[i]); } } item.children = new List <TreeViewItem>(array); }
public override void FetchData() { this.m_RootItem = new TreeViewItem(this.m_RootInstanceID, 0, (TreeViewItem) null, AssetsTreeViewDataSource.CreateDisplayName(this.m_RootInstanceID)); if (!this.showRootNode) this.SetExpanded(this.m_RootItem, true); IHierarchyProperty hierarchyProperty = (IHierarchyProperty) new HierarchyProperty(HierarchyType.Assets); hierarchyProperty.Reset(); if (!hierarchyProperty.Find(this.m_RootInstanceID, (int[]) null)) Debug.LogError((object) ("Root Asset with id " + (object) this.m_RootInstanceID + " not found!!")); int minDepth = hierarchyProperty.depth + (!this.showRootNode ? 1 : 0); int[] array = this.expandedIDs.ToArray(); Texture2D texture = EditorGUIUtility.FindTexture(EditorResourcesUtility.emptyFolderIconName); this.m_VisibleRows = new List<TreeViewItem>(); while (hierarchyProperty.NextWithDepthCheck(array, minDepth)) { if (!this.foldersOnly || hierarchyProperty.isFolder) { int depth = hierarchyProperty.depth - minDepth; TreeViewItem treeViewItem = !hierarchyProperty.isFolder ? (TreeViewItem) new AssetsTreeViewDataSource.NonFolderTreeItem(hierarchyProperty.instanceID, depth, (TreeViewItem) null, hierarchyProperty.name) : (TreeViewItem) new AssetsTreeViewDataSource.FolderTreeItem(hierarchyProperty.instanceID, depth, (TreeViewItem) null, hierarchyProperty.name); treeViewItem.icon = !hierarchyProperty.isFolder || hierarchyProperty.hasChildren ? hierarchyProperty.icon : texture; if (hierarchyProperty.hasChildren) treeViewItem.AddChild((TreeViewItem) null); this.m_VisibleRows.Add(treeViewItem); } } TreeViewUtility.SetChildParentReferences(this.m_VisibleRows, this.m_RootItem); if (this.foldersFirst) { AssetsTreeViewDataSource.FoldersFirstRecursive(this.m_RootItem); this.m_VisibleRows.Clear(); this.GetVisibleItemsRecursive(this.m_RootItem, this.m_VisibleRows); } this.m_NeedRefreshVisibleFolders = false; this.m_TreeView.SetSelection(Selection.instanceIDs, false); }
public override void FetchData() { int depth = 0; this.m_RootItem = new TreeViewItem(this.m_RootInstanceID, depth, null, AssetsTreeViewDataSource.CreateDisplayName(this.m_RootInstanceID)); if (!base.showRootNode) { this.SetExpanded(this.m_RootItem, true); } IHierarchyProperty hierarchyProperty = new HierarchyProperty(HierarchyType.Assets); hierarchyProperty.Reset(); if (!hierarchyProperty.Find(this.m_RootInstanceID, null)) { Debug.LogError("Root Asset with id " + this.m_RootInstanceID + " not found!!"); } int num = hierarchyProperty.depth + ((!base.showRootNode) ? 1 : 0); int[] expanded = base.expandedIDs.ToArray(); Texture2D icon = EditorGUIUtility.FindTexture(EditorResourcesUtility.emptyFolderIconName); this.m_VisibleRows = new List <TreeViewItem>(); while (hierarchyProperty.NextWithDepthCheck(expanded, num)) { if (!this.foldersOnly || hierarchyProperty.isFolder) { depth = hierarchyProperty.depth - num; TreeViewItem treeViewItem; if (hierarchyProperty.isFolder) { treeViewItem = new AssetsTreeViewDataSource.FolderTreeItem(hierarchyProperty.instanceID, depth, null, hierarchyProperty.name); } else { treeViewItem = new AssetsTreeViewDataSource.NonFolderTreeItem(hierarchyProperty.instanceID, depth, null, hierarchyProperty.name); } if (hierarchyProperty.isFolder && !hierarchyProperty.hasChildren) { treeViewItem.icon = icon; } else { treeViewItem.icon = hierarchyProperty.icon; } if (hierarchyProperty.hasChildren) { treeViewItem.AddChild(null); } this.m_VisibleRows.Add(treeViewItem); } } TreeViewUtility.SetChildParentReferences(this.m_VisibleRows, this.m_RootItem); if (this.foldersFirst) { AssetsTreeViewDataSource.FoldersFirstRecursive(this.m_RootItem); this.m_VisibleRows.Clear(); base.GetVisibleItemsRecursive(this.m_RootItem, this.m_VisibleRows); } this.m_NeedRefreshVisibleFolders = false; bool revealSelectionAndFrameLastSelected = false; this.m_TreeView.SetSelection(Selection.instanceIDs, revealSelectionAndFrameLastSelected); }