Пример #1
0
        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);
                    }
                }
            }
        }
Пример #2
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++;
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #3
0
        /// <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);
                }
            }
        }
Пример #4
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;
            }
        }