//通过每个节点的数据生成子节点 private AssetViewItem CreateTree(string guid, ref int elementCount, int _depth, Stack <string> stack) { if (stack.Contains(guid)) { return(null); } stack.Push(guid); if (needUpdateState && !updatedAssetSet.Contains(guid)) { data.UpdateAssetState(guid); updatedAssetSet.Add(guid); } ++elementCount; var referenceData = data.assetDict[guid]; var root = new AssetViewItem { id = elementCount, displayName = referenceData.name, data = referenceData, depth = _depth }; var childGuids = isDepend ? referenceData.dependencies : referenceData.references; foreach (var childGuid in childGuids) { var child = CreateTree(childGuid, ref elementCount, _depth + 1, stack); if (child != null) { root.AddChild(child); } } stack.Pop(); return(root); }
//通过选择资源列表生成TreeView的根节点 private AssetViewItem SelectedAssetToRootItem(List <string> selectedAssets) { updatedAssetSet.Clear(); int elementCount = 0; var root = new AssetViewItem { id = elementCount, depth = -1, displayName = "Root", data = null }; int depth = 0; foreach (var guid in selectedAssets) { root.AddChild(CreateTree(guid, ref elementCount, depth)); } updatedAssetSet.Clear(); return(root); }
//通过选择资源列表生成TreeView的根节点 private AssetViewItem SelectedAssetGuidToRootItem(List <string> selectedAssetGuid) { updatedAssetSet.Clear(); int elementCount = 0; var root = new AssetViewItem { id = elementCount, depth = -1, displayName = "Root", data = null }; int depth = 0; var stack = new Stack <string>(); foreach (var childGuid in selectedAssetGuid) { var child = CreateTree(childGuid, ref elementCount, depth, stack); if (child != null) { root.AddChild(child); } } updatedAssetSet.Clear(); return(root); }
//通过每个节点的数据生成子节点 private AssetViewItem CreateTree(string guid, ref int elementCount, int _depth) { if (needUpdateState && !updatedAssetSet.Contains(guid)) { data.UpdateAssetState(guid); updatedAssetSet.Add(guid); } ++elementCount; var referenceData = data.assetDict[guid]; var root = new AssetViewItem { id = elementCount, displayName = referenceData.name, data = referenceData, depth = _depth }; var childGuids = isDependency ? referenceData.dependencies : referenceData.references; foreach (var childGuid in childGuids) { root.AddChild(CreateTree(childGuid, ref elementCount, _depth + 1)); } return(root); }