Ejemplo n.º 1
0
    private void _GetAssetDependencies(Guid id, out List <U3DAssetInfo> assets)
    {
        U3DAssetInfo assetInfo = null;

        assets = new List <U3DAssetInfo>();

        if (!U3DAssetDB.GetInstance().Find(id, out assetInfo))
        {
            return;
        }

        string[] depPaths = ResourceManageToolUtility.GetDependencies(assetInfo.path);
        foreach (var p in depPaths)
        {
            if (p.Equals(assetInfo.Path))
            {
                continue;
            }

            U3DAssetInfo depAsset = null;
            Guid         depId    = ResourceManageToolUtility.PathToGuid(p);
            //在数据库中没有找到此资源则初始化
            if (!U3DAssetDB.GetInstance().Find(depId, out depAsset))
            {
                depAsset      = new U3DAssetInfo();
                depAsset.guid = depId;
                ResourceManageToolUtility.InitAssetInfo(p, ref depAsset);
                U3DAssetDB.GetInstance().AssetTable.Add(depAsset.guid, depAsset);
            }
            assets.Add(depAsset);
        }
        assets.Sort(new AssetInfoComparer(AssetFilterList));
    }
Ejemplo n.º 2
0
    private void _UpdateAssetTableStep()
    {
        string path = iter.Current as string;

        if (_IsIgnoreAsset(path))
        {
            return;
        }

        U3DAssetInfo assetInfo = new U3DAssetInfo();

        ResourceManageToolUtility.InitAssetInfo(path, ref assetInfo);
        Guid guid = assetInfo.guid;


        string[] deps = ResourceManageToolUtility.GetDependencies(path);
        foreach (var depPath in deps)
        {
            Guid depGuid = ResourceManageToolUtility.PathToGuid(depPath);
            if (depGuid.Equals(guid))
            {
                continue;
            }
            assetInfo.deps.Add(depGuid);
        }
        resultObj.assetTable.Add(guid, assetInfo);
    }
Ejemplo n.º 3
0
    public void Init()
    {
        Clear();

        string[] assetPaths = ResourceManageToolUtility.GetAllAssetPaths();
        foreach (var p in assetPaths)
        {
            if (IsPathContain(p))
            {
                U3DAssetInfo newInfo = new U3DAssetInfo();
                ResourceManageToolUtility.InitAssetInfo(p, ref newInfo);
                assetTable.Add(newInfo.guid, newInfo);
            }
        }
    }
Ejemplo n.º 4
0
    public void GetAssetDependencies(Guid resID, out List <U3DAssetInfo> assets)
    {
        assets = new List <U3DAssetInfo>();
        U3DAssetInfo assetInfo = null;

        if (U3DAssetDB.GetInstance().Find(resID, out assetInfo))
        {//若找到了查依赖的资源
            //若资源已经损坏则不再构建正向依赖
            if (assetInfo.Corrupted)
            {
                return;
            }

            if (assetInfo.deps.Count > 0)
            {//已初始化正向依赖信息
                foreach (var depId in assetInfo.deps)
                {
                    U3DAssetInfo depAsset = null;
                    if (U3DAssetDB.GetInstance().Find(depId, out depAsset))
                    {//正向依赖资源已经收集到资源数据库中
                        assets.Add(depAsset);
                    }
                    else
                    {//未收集到资源数据库中,建临时信息
                        depAsset      = new U3DAssetInfo();
                        depAsset.guid = depId;
                        ResourceManageToolUtility.InitAssetInfo(ResourceManageToolUtility.GuidToPath(depId), ref depAsset);
                        assets.Add(depAsset);
                    }
                }
                assets.Sort(new AssetInfoComparer(AssetFilterList));
            }
            else
            {//未初始化正向依赖信息
                _GetAssetDependencies(resID, out assets);
            }
        }
    }