コード例 #1
0
        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();
            }
        }
コード例 #2
0
ファイル: HKSave.cs プロジェクト: xueliuxing28/HKWorldEdit
    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();
    }