private void decompressButton_Click(object sender, System.EventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); sfd.FileName = Path.GetFileName(bundleStream.Name) + ".unpacked"; sfd.Filter = "All types (*.*)|*.*"; if (sfd.ShowDialog() == DialogResult.OK) { note.Text = "Decompressing..."; decompressButton.Enabled = false; bundleFilename = sfd.FileName; FileStream fileStream = new FileStream(sfd.FileName, FileMode.Create); BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += delegate { bundle.Unpack(reader, new AssetsFileWriter(fileStream)); fileStream.Position = 0; bundle = new AssetsBundleFile(); bundle.Read(new AssetsFileReader(fileStream), false); fileStream.Close(); }; bw.RunWorkerCompleted += delegate { note.Text = "Done. Click Load to open the file."; decompressButton.Enabled = false; loadButton.Enabled = true; }; bw.RunWorkerAsync(); } }
private void DecompressBundle(string path) { //from uabe AssetsFileReader reader = new AssetsFileReader(new FileStream(path, FileMode.Open)); AssetsBundleFile bundle = new AssetsBundleFile(); bundle.Read(reader, true); reader.Position = 0; AssetsFileWriter writer = new AssetsFileWriter(new FileStream(path + ".up", FileMode.Create)); bundle.Unpack(reader, writer); //writer.BaseStream.Position = 0; //bundle = new AssetsBundleFile(); //bundle.Read(new AssetsFileReader(writer.BaseStream), false); reader.BaseStream.Close(); writer.BaseStream.Close(); }