Exemple #1
0
    //通过每个节点的数据生成子节点
    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);
    }
    //绘制列表中的每项内容
    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;
        }
    }
Exemple #4
0
    //通过选择资源列表生成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);
    }