private void exportAsObjToolStripMenuItem_Click(object sender, EventArgs e) { byte[] data = BF2FileSystem.GetFileFromNode(tv2.SelectedNode); string path = BF2FileSystem.GetPathFromNode(tv2.SelectedNode); string name = Path.GetFileNameWithoutExtension(path) + ".obj"; string ext = Path.GetExtension(path); SaveFileDialog dlg = new SaveFileDialog(); dlg.FileName = name; dlg.Filter = "*.obj|*.obj"; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { switch (ext) { case ".staticmesh": ExporterObj.Export(new BF2StaticMesh(data), dlg.FileName, toolStripComboBox1.SelectedIndex); break; case ".bundledmesh": ExporterObj.Export(new BF2BundledMesh(data), dlg.FileName, toolStripComboBox1.SelectedIndex); break; case ".skinnedmesh": ExporterObj.Export(new BF2SkinnedMesh(data), dlg.FileName, toolStripComboBox1.SelectedIndex); break; case ".collisionmesh": ExporterObj.Export(new BF2CollisionMesh(data), dlg.FileName); break; } Log.WriteLine(dlg.FileName + " exported."); } }
private void exportALLAsObjToolStripMenuItem_Click(object sender, EventArgs e) { exportALLAsObjToolStripMenuItem.Enabled = false; FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string basePath = fbd.SelectedPath + "\\"; pb1.Maximum = BF2FileSystem.clientFS.Count; int count = 0; foreach (BF2FileSystem.BF2FSEntry entry in BF2FileSystem.clientFS) { pb1.Value = count++; try { string ending = Path.GetExtension(entry.inFSPath).ToLower(); switch (ending) { case ".staticmesh": case ".bundledmesh": case ".skinnedmesh": case ".collisionmesh": break; default: continue; } string path = basePath + Path.GetDirectoryName(entry.inFSPath); byte[] data = BF2FileSystem.GetFileFromEntry(entry); if (data == null) { continue; } switch (ending) { case ".staticmesh": CheckAndMakeDir(path); path += "\\" + Path.GetFileNameWithoutExtension(entry.inFSPath); Log.WriteLine("Exporting \"" + path + ".staticmesh\"..."); BF2StaticMesh stm = new BF2StaticMesh(data); for (int i = 0; i < stm.geomat.Count; i++) { ExporterObj.Export(stm, path + ".lod" + i + ".obj", i); } break; case ".bundledmesh": CheckAndMakeDir(path); path += "\\" + Path.GetFileNameWithoutExtension(entry.inFSPath); Log.WriteLine("Exporting \"" + path + ".bundledmesh\"..."); BF2BundledMesh bm = new BF2BundledMesh(data); for (int i = 0; i < bm.geomat.Count; i++) { ExporterObj.Export(bm, path + ".lod" + i + ".obj", i); } break; case ".skinnedmesh": CheckAndMakeDir(path); path += "\\" + Path.GetFileNameWithoutExtension(entry.inFSPath); Log.WriteLine("Exporting \"" + path + ".skinnedmesh\"..."); BF2SkinnedMesh skm = new BF2SkinnedMesh(data); for (int i = 0; i < skm.geomat.Count; i++) { ExporterObj.Export(skm, path + ".lod" + i + ".obj", i); } break; case ".collisionmesh": CheckAndMakeDir(path); path += "\\" + Path.GetFileNameWithoutExtension(entry.inFSPath); Log.WriteLine("Exporting \"" + path + ".bundledmesh\"..."); ExporterObj.Export(new BF2CollisionMesh(data), path + ".obj"); break; } } catch (Exception ex) { Log.WriteLine("ERROR: " + ex.Message); } Application.DoEvents(); } pb1.Value = 0; exportALLAsObjToolStripMenuItem.Enabled = true; } }