//通过选择资源列表生成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;

            foreach (var childGuid in selectedAssetGuid)
            {
                root.AddChild(CreateTree(childGuid, ref elementCount, depth));
            }
            updatedAssetSet.Clear();
            return(root);
        }
예제 #2
0
        //绘制列表中的每项内容
        void CellGUI(Rect cellRect, AssetViewItem item, MyColumns column, ref RowGUIArgs args)
        {
            CenterRectUsingSingleLineHeight(ref cellRect);
            switch (column)
            {
            case MyColumns.Name:
            {
                var iconRect = cellRect;
                iconRect.x    += GetContentIndent(item);
                iconRect.width = kIconWidth;
                if (iconRect.x < cellRect.xMax)
                {
                    var icon = GetIcon(item.data.path);
                    if (icon != null)
                    {
                        GUI.DrawTexture(iconRect, icon, ScaleMode.ScaleToFit);
                    }
                }
                args.rowRect = cellRect;
                base.RowGUI(args);
            }
            break;

            case MyColumns.Path:
            {
                GUI.Label(cellRect, item.data.path);
            }
            break;

            case MyColumns.State:
            {
                GUI.Label(cellRect, ReferenceFinderData.GetInfoByState(item.data.state), stateGUIStyle);
            }
            break;

            case MyColumns.Type:
            {
                GUI.Label(cellRect, item.data.type);
            }
            break;

            default:
                break;
            }
        }
        //通过每个节点的数据生成子节点
        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 = isDepend ? referenceData.dependencies : referenceData.references;

            foreach (var childGuid in childGuids)
            {
                root.AddChild(CreateTree(childGuid, ref elementCount, _depth + 1));
            }
            return(root);
        }