Example #1
0
 public void ReadBundleFile(SmartStream stream, string bundlePath)
 {
     using (BundleFile bundle = BundleFile.Read(stream, bundlePath))
     {
         AddBundleFile(bundle);
     }
 }
 internal void ReadAssetBundle(Stream stream, string filePath, Action <string> requestDependencyCallback)
 {
     using (BundleFile bundle = new BundleFile(this, filePath, requestDependencyCallback))
     {
         bundle.Read(stream);
     }
 }
Example #3
0
 public void ReadAssetBundle(Stream stream, string filePath)
 {
     using (BundleFile bundle = new BundleFile(this, filePath, OnRequestDependency))
     {
         bundle.Read(stream);
         AddBundleFile(bundle);
     }
 }
 public void ReadAssetBundle(Stream stream, string filePath)
 {
     using (BundleFile bundle = new BundleFile())
     {
         bundle.Read(stream);
         ProcessSerializedFileData(bundle.FileData, filePath);
     }
 }
        private static void ExtractFilesFromBundleFile(string extactFile, string outPath, Dictionary <ulong, string> fileNames, bool verbose = false)
        {
            using (var input = File.OpenRead(extactFile))
                using (var temporaryFile = File.Create(Path.GetTempFileName(), 4 * 1024, FileOptions.DeleteOnClose))
                {
                    WriteLine("Reading bundle", verbose);
                    BundleFile file = new BundleFile();
                    file.Read(input, temporaryFile);

                    WriteLine(string.Format("Found {0} files in bundle", file.Entries.Count), verbose);
                    int i = 1;
                    foreach (var entry in file.Entries)
                    {
                        string entryExtension;
                        string entryName;
                        if (!fileNames.TryGetValue(entry.ExtensionHash, out entryExtension))
                        {
                            entryExtension = entry.ExtensionHash.ToString("x");
                            Debug.WriteLine(string.Format("Missing extension '{0}'", entryExtension));
                        }

                        if (!fileNames.TryGetValue(entry.NameHash, out entryName))
                        {
                            entryName = entry.NameHash.ToString("x");
                            Debug.WriteLine(string.Format("Missing name '{0}'", entryName));
                        }

                        string entryFileName = entryName + "." + entryExtension;
                        string outFilePath   = Path.Combine(outPath, entryFileName);

                        var directoryName = Path.GetDirectoryName(Path.Combine(outPath, entryFileName));
                        if (!Directory.Exists(directoryName))
                        {
                            Directory.CreateDirectory(directoryName);
                        }

                        foreach (var data in entry.ReadData(temporaryFile))
                        {
                            entryFileName = entryName + ToLanguageName(data.LanguageId) + "." + entryExtension;
                            outFilePath   = Path.Combine(outPath, entryFileName);
                            WriteLine(string.Format("Extracting file {0}/{1} '{2}'", i, file.Entries.Count, entryFileName), verbose);

                            File.WriteAllBytes(outFilePath, data.Data);
                        }

                        i++;
                    }
                }
        }