void Search(PreviewItem searchFromThis, string search, List <PreviewItem> result) { if (string.IsNullOrEmpty(search)) { throw new ArgumentException("Invalid search: cannot be null or empty", "search"); } const int kItemDepth = 0; // tree is flattened when searching Stack <PreviewItem> stack = new Stack <PreviewItem>(); foreach (var element in searchFromThis.children) { stack.Push((PreviewItem)element); } while (stack.Count > 0) { PreviewItem current = stack.Pop(); // Matches search? if (current.name.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0) { result.Add(new PreviewItem(current.id, kItemDepth, current.layer)); } if (current.children != null && current.children.Count > 0) { foreach (var element in current.children) { stack.Push((PreviewItem)element); } } } result.Sort((x, y) => EditorUtility.NaturalCompare(x.displayName, y.displayName)); // sort by displayName by default, can be overriden for multicolumn solutions }
protected override TreeViewItem BuildRoot() { var root = new PreviewItem(id, -1, psd); GenerateRowsRecursive(root, 0); return(root); }
void GenerateRowsRecursive(PreviewItem parent, int depth) { if (parent.layer.Childs == null || parent.layer.Childs.Length == 0) { return; } else { foreach (var layer in parent.layer.Childs) { var item = new PreviewItem(++id, depth, layer); parent.AddChild(item); GenerateRowsRecursive(item, depth + 1); } } }
private void RetriveArtLayer(PreviewItem data, UnityAction <PreviewItem> onRetrive) { if (data.layerType != LayerType.Group && data.layerType != LayerType.Overflow) { onRetrive(data); } else { if (data.children != null) { foreach (var item in data.children) { RetriveArtLayer((PreviewItem)item, onRetrive); } } } }
void AddChildrenRecursive(PreviewItem parent, int depth, IList <PreviewItem> newRows) { foreach (PreviewItem child in parent.children) { var item = new PreviewItem(child.id, depth, child.layer); newRows.Add(child); if (child.hasChildren) { if (IsExpanded(child.id)) { AddChildrenRecursive(child, depth + 1, newRows); } else { item.children = CreateChildListForCollapsedParent(); } } } }