public static void TestTreeModelCanAddElements() { var root = new TreeElement { name = "Root", depth = -1 }; var listOfElements = new List <TreeElement>(); listOfElements.Add(root); var model = new TreeModel <TreeElement>(listOfElements); model.AddElement(new TreeElement { name = "Element" }, root, 0); model.AddElement(new TreeElement { name = "Element " + root.children.Count }, root, 0); model.AddElement(new TreeElement { name = "Element " + root.children.Count }, root, 0); model.AddElement(new TreeElement { name = "Sub Element" }, root.children[1], 0); // Assert order is correct string[] namesInCorrectOrder = { "Root", "Element 2", "Element 1", "Sub Element", "Element" }; Assert.AreEqual(namesInCorrectOrder.Length, listOfElements.Count, "Result count does not match"); for (int i = 0; i < namesInCorrectOrder.Length; ++i) { Assert.AreEqual(namesInCorrectOrder[i], listOfElements[i].name); } // Assert depths are valid TreeElementUtility.ValidateDepthValues(listOfElements); }
private void SetTreeModel() { TreeModel <TreeElementWithData <AssetPackerTreeData> > treeModel = assetPackerTreeView.treeModel; TreeElementWithData <AssetPackerTreeData> treeModelRoot = treeModel.root; treeModelRoot.children?.Clear(); for (int i = 0; i < assetPackerConfig.groupDatas.Count; ++i) { AssetPackerGroupData groupData = assetPackerConfig.groupDatas[i]; AssetPackerTreeData groupTreeData = new AssetPackerTreeData(); groupTreeData.groupData = groupData; TreeElementWithData <AssetPackerTreeData> groupElementData = new TreeElementWithData <AssetPackerTreeData>( groupTreeData, "", 0, (i + 1) * 100000); treeModel.AddElement(groupElementData, treeModelRoot, treeModelRoot.hasChildren ? treeModelRoot.children.Count : 0); for (int j = 0; j < groupData.assetFiles.Count; ++j) { AssetPackerAddressData addressData = groupData.assetFiles[j]; if (FilterAddressData(addressData)) { AssetPackerTreeData elementTreeData = new AssetPackerTreeData(); elementTreeData.groupData = groupData; elementTreeData.dataIndex = j; TreeElementWithData <AssetPackerTreeData> elementData = new TreeElementWithData <AssetPackerTreeData>( elementTreeData, "", 1, (i + 1) * 100000 + (j + 1)); treeModel.AddElement(elementData, groupElementData, groupElementData.hasChildren ? groupElementData.children.Count : 0); } } } }
private void SetTreeModel() { TreeModel <TreeElementWithData <AssetPackerTreeData> > treeModel = assetPackerTreeView.treeModel; TreeElementWithData <AssetPackerTreeData> treeModelRoot = treeModel.root; treeModelRoot.children?.Clear(); int id = 1; for (int i = 0; i < packerData.groupDatas.Count; ++i) { var groupData = packerData.groupDatas[i]; if (FilterGroupData(groupData)) { AssetPackerTreeData groupTreeData = new AssetPackerTreeData(); groupTreeData.GroupIndex = i; TreeElementWithData <AssetPackerTreeData> groupElementData = new TreeElementWithData <AssetPackerTreeData>(groupTreeData, "", 0, id); treeModel.AddElement(groupElementData, treeModelRoot, treeModelRoot.hasChildren ? treeModelRoot.children.Count : 0); id++; for (int j = 0; j < groupData.bundleDatas.Count; j++) { PackerBundleData bundleData = groupData.bundleDatas[j]; if (FilterBundleData(bundleData)) { AssetPackerTreeData bundleTreeData = new AssetPackerTreeData(); bundleTreeData.GroupIndex = i; bundleTreeData.BundleIndex = j; TreeElementWithData <AssetPackerTreeData> bundleElementData = new TreeElementWithData <AssetPackerTreeData>(bundleTreeData, "", 0, id); treeModel.AddElement(bundleElementData, groupElementData, groupElementData.hasChildren ? groupElementData.children.Count : 0); id++; for (int k = 0; k < bundleData.assetDatas.Count; k++) { PackerAssetData assetData = bundleData.assetDatas[k]; if (FilterAddressData(assetData)) { AssetPackerTreeData assetTreeData = new AssetPackerTreeData(); assetTreeData.GroupIndex = i; assetTreeData.BundleIndex = j; assetTreeData.AssetIndex = k; TreeElementWithData <AssetPackerTreeData> assetElementData = new TreeElementWithData <AssetPackerTreeData>(assetTreeData, "", 0, id); treeModel.AddElement(assetElementData, bundleElementData, bundleElementData.hasChildren ? bundleElementData.children.Count : 0); id++; } } } } } } }
/// <summary> /// 刷新数据 /// </summary> private void RefreshDependTreeView() { TreeModel <TreeElementWithData <DependTreeData> > treeModel = m_DependTreeView.treeModel; TreeElementWithData <DependTreeData> treeModelRoot = treeModel.root; treeModelRoot.children?.Clear(); Dictionary <string, int> repeatAssetDic = m_Finder.GetRepeatUsedAssets(); List <string> paths = new List <string>(); paths.AddRange(repeatAssetDic.Keys); paths.Sort(); foreach (var path in paths) { DependTreeData adData = new DependTreeData(); adData.AssetPath = path; adData.RepeatCount = repeatAssetDic[path]; adData.IsBundle = false; TreeElementWithData <DependTreeData> assetPathTreeData = new TreeElementWithData <DependTreeData>(adData, "", 0, m_DependTreeView.NextID); treeModel.AddElement(assetPathTreeData, treeModelRoot, treeModelRoot.hasChildren ? treeModelRoot.children.Count : 0); string[] usedBundles = m_Finder.GetBundleByUsedAsset(path); foreach (var bundle in usedBundles) { DependTreeData bundleData = new DependTreeData(); bundleData.AssetPath = bundle; bundleData.IsBundle = true; TreeElementWithData <DependTreeData> dependTreeData = new TreeElementWithData <DependTreeData>(bundleData, "", 1, m_DependTreeView.NextID); treeModel.AddElement(dependTreeData, assetPathTreeData, assetPathTreeData.hasChildren ? assetPathTreeData.children.Count : 0); } } }
/// <summary> /// 生成TreeView需要的数据 /// </summary> private void FilterTreeModel() { TreeModel <TreeElementWithData <AssetBundleGroupTreeData> > treeModel = m_DetailGroupTreeView.treeModel; TreeElementWithData <AssetBundleGroupTreeData> treeModelRoot = treeModel.root; treeModelRoot.children?.Clear(); if (m_TagConfig.GroupDatas == null) { return; } List <AssetAddressData> dataList = (from groupData in m_TagConfig.GroupDatas where groupData.IsMain from detailData in groupData.AssetDatas select detailData).ToList(); for (int i = 0; i < m_TagConfig.GroupDatas.Count; i++) { AssetBundleGroupData groupData = m_TagConfig.GroupDatas[i]; TreeElementWithData <AssetBundleGroupTreeData> groupElementData = new TreeElementWithData <AssetBundleGroupTreeData>( new AssetBundleGroupTreeData() { IsGroup = true, GroupData = groupData, }, "", 0, (i + 1) * 100); treeModel.AddElement(groupElementData, treeModelRoot, treeModelRoot.hasChildren ? treeModelRoot.children.Count : 0); bool isAddressRepeat = false; for (int j = 0; j < groupData.AssetDatas.Count; ++j) { AssetAddressData detailData = groupData.AssetDatas[j]; List <AssetAddressData> repeatList = (from data in dataList where data.AssetAddress == detailData.AssetAddress select data).ToList(); if (FilterAssetDetailData(detailData)) { TreeElementWithData <AssetBundleGroupTreeData> elementData = new TreeElementWithData <AssetBundleGroupTreeData>( new AssetBundleGroupTreeData() { IsGroup = false, DataIndex = j, GroupData = groupData, }, "", 1, (i + 1) * 100 + (j + 1)); if (repeatList.Count > 1) { elementData.Data.IsAddressRepeat = true; elementData.Data.RepeatAddressList = repeatList; if (!isAddressRepeat) { isAddressRepeat = true; } } treeModel.AddElement(elementData, groupElementData, groupElementData.hasChildren ? groupElementData.children.Count : 0); } } groupElementData.Data.IsAddressRepeat = isAddressRepeat; } }