public static DependInfo LoadDependInfo(Stream stream)
    {
        DependInfo info = new DependInfo();

        info.LoadFromStream(stream);
        return(info);
    }
    public static void ExportToDependFile(Stream stream, string abFileName, int refCount)
    {
        DependInfo info = new DependInfo();

        info.abFileName = abFileName;
        info.refCount   = refCount;
        info.SaveToStream(stream);
    }
    public static Offset <AssetBundleFlatBuffer.DependInfo> ExportToDependFile(FlatBufferBuilder builder, string abFileName, int refCount)
    {
        DependInfo info = new DependInfo();

        info.abFileName = abFileName;
        info.refCount   = refCount;
        return(info.SavetoFlatBuffer(builder));
    }
Exemplo n.º 4
0
    static bool CollectDependencies(string assetBundleName, ref Dictionary <string, DependInfo> deps, int cur, int max)
    {
        string[] assets = AssetDatabase.GetAssetPathsFromAssetBundle(assetBundleName.ToLower());
        if (assets.Length == 0)
        {
            Debug.LogFormat("asset bundle {0} is empty", assetBundleName);
            return(false);
        }

        float pp = 1.0f / assets.Length;

        for (int i = 0; i < assets.Length; i++)
        {
            string fileName = assets[i];
            if (!fileName.EndsWith(".unity") && !fileName.StartsWith(("Assets/" + ResourceBundle.RESOURCES_DIR + "/")))
            {
                if (!deps.ContainsKey(fileName))
                {
                    var info = new DependInfo(fileName);
                    deps[fileName] = info;
                }
                continue;
            }

            string[] ds  = AssetDatabase.GetDependencies(fileName, true);
            float    ppp = pp / ds.Length;
            for (int j = 0; j < ds.Length; j++)
            {
                string dep = ds[j];
                if (EditorUtility.DisplayCancelableProgressBar(string.Format("Collect {0} {1}/{2}", assetBundleName, cur + 1, max), dep, i * pp + ppp * j))
                {
                    return(true);
                }

                if (dep.StartsWith(("Assets/" + ResourceBundle.RESOURCES_DIR + "/")))
                {
                    continue;
                }

                if (dep.EndsWith(".cs") || dep.EndsWith(".unity") || dep.EndsWith(".dll"))
                {
                    continue;
                }

                DependInfo info;
                if (!deps.TryGetValue(dep, out info))
                {
                    info      = new DependInfo(dep);
                    deps[dep] = info;
                }
                info.AddDep(assetBundleName);
            }
        }

        return(false);
    }