Пример #1
0
        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.");
            }
        }
Пример #2
0
        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;
            }
        }