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); } }
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++; } } }