Exemple #1
0
        private void buttonImport_Click(object sender, System.EventArgs e)
        {
            OpenFileDialog a = new OpenFileDialog()
            {
                Filter = asset.AHDR.assetType == HipHopFile.AssetType.BSP ?
                         "All supported types|*.dae;*.obj;*.bsp|DAE Files|*.dae|OBJ Files|*.obj|BSP Files|*.bsp|All files|*.*" :
                         "All supported types|*.dae;*.obj;*.dff|DAE Files|*.dae|OBJ Files|*.obj|DFF Files|*.dff|All files|*.*"
            };

            if (a.ShowDialog() == DialogResult.OK)
            {
                archive.UnsavedChanges = true;

                string i = a.FileName;

                ModelConverterData m;

                if (Path.GetExtension(i).ToLower() == ".obj")
                {
                    m = ReadOBJFile(i);
                }
                else if (Path.GetExtension(i).ToLower() == ".dae")
                {
                    m = ConvertDataFromDAEObject(ReadDAEFile(i), false);
                }
                else
                {
                    asset.GetRenderWareModelFile().Dispose();
                    asset.Data = File.ReadAllBytes(i);
                    asset.Setup(Program.MainForm.renderer);
                    return;
                }

                RWSection[] rws;

                if (asset.AHDR.assetType == HipHopFile.AssetType.BSP)
                {
                    rws = CreateBSPFile(m, true);
                }
                else
                {
                    rws = CreateDFFFile(m, true);
                }

                asset.GetRenderWareModelFile().Dispose();
                asset.Data = ReadFileMethods.ExportRenderWareFile(rws, currentRenderWareVersion);
                asset.Setup(Program.MainForm.renderer);
            }
        }
        private void SetupForModel(AssetRenderWareModel asset)
        {
            AddRow();
            AddRow();
            AddRow();
            AddRow();

            Button buttonSetVertexColors = new Button()
            {
                Dock = DockStyle.Fill, Text = "Set Vertex Colors", AutoSize = true
            };

            buttonSetVertexColors.Click += (object sender, EventArgs e) =>
            {
                var(color, operation) = ApplyVertexColors.GetColor();

                if (color.HasValue)
                {
                    asset.SetVertexColors(color.Value, operation);
                    archive.UnsavedChanges = true;
                }
            };
            buttonSetVertexColors.Enabled = !asset.IsNativeData;
            tableLayoutPanel1.Controls.Add(buttonSetVertexColors, 0, 2);

            CheckBox ignoreMeshColors = new CheckBox()
            {
                Dock = DockStyle.Fill, Text = "Ignore Mesh Colors", AutoSize = true
            };

            ignoreMeshColors.Checked = true;
            tableLayoutPanel1.Controls.Add(ignoreMeshColors, 0, 3);
            CheckBox flipUVs = new CheckBox()
            {
                Dock = DockStyle.Fill, Text = "Flip UVs", AutoSize = true
            };

            tableLayoutPanel1.Controls.Add(flipUVs, 0, 4);

            Button buttonImport = new Button()
            {
                Dock = DockStyle.Fill, Text = "Import", AutoSize = true
            };

            buttonImport.Click += (object sender, EventArgs e) =>
            {
                OpenFileDialog openFile = new OpenFileDialog()
                {
                    Filter = GetImportFilter(), // "All supported types|*.dae;*.obj;*.bsp|DAE Files|*.dae|OBJ Files|*.obj|BSP Files|*.bsp|All files|*.*",
                };

                if (openFile.ShowDialog() == DialogResult.OK)
                {
                    if (asset.AHDR.assetType == HipHopFile.AssetType.MODL)
                    {
                        asset.Data = Path.GetExtension(openFile.FileName).ToLower().Equals(".dff") ?
                                     File.ReadAllBytes(openFile.FileName) :
                                     ReadFileMethods.ExportRenderWareFile(CreateDFFFromAssimp(openFile.FileName, flipUVs.Checked, ignoreMeshColors.Checked), modelRenderWareVersion(asset.game));
                    }

                    if (asset.AHDR.assetType == HipHopFile.AssetType.BSP)
                    {
                        asset.Data = Path.GetExtension(openFile.FileName).ToLower().Equals(".bsp") ?
                                     File.ReadAllBytes(openFile.FileName) :
                                     ReadFileMethods.ExportRenderWareFile(CreateBSPFromAssimp(openFile.FileName, flipUVs.Checked, ignoreMeshColors.Checked), modelRenderWareVersion(asset.game));
                    }

                    asset.Setup(Program.MainForm.renderer);

                    archive.UnsavedChanges = true;
                }
            };
            tableLayoutPanel1.Controls.Add(buttonImport, 0, 5);

            CheckBox exportTextures = new CheckBox()
            {
                Dock = DockStyle.Fill, Text = "Export Textures", AutoSize = true
            };

            tableLayoutPanel1.Controls.Add(exportTextures, 1, 4);

            Button buttonExport = new Button()
            {
                Dock = DockStyle.Fill, Text = "Export", AutoSize = true
            };

            buttonExport.Click += (object sender, EventArgs e) =>
            {
                (Assimp.ExportFormatDescription format, string textureExtension) = ChooseTarget.GetTarget();

                if (format != null)
                {
                    SaveFileDialog a = new SaveFileDialog()
                    {
                        Filter = format == null ? "RenderWare BSP|*.bsp" : format.Description + "|*." + format.FileExtension,
                    };

                    if (a.ShowDialog() == DialogResult.OK)
                    {
                        if (format == null)
                        {
                            File.WriteAllBytes(a.FileName, asset.Data);
                        }
                        else if (format.FileExtension.ToLower().Equals("obj") && asset.AHDR.assetType == HipHopFile.AssetType.BSP)
                        {
                            ConvertBSPtoOBJ(a.FileName, ReadFileMethods.ReadRenderWareFile(asset.Data), true);
                        }
                        else
                        {
                            ExportAssimp(Path.ChangeExtension(a.FileName, format.FileExtension), ReadFileMethods.ReadRenderWareFile(asset.Data), true, format, textureExtension, Matrix.Identity);
                        }

                        if (exportTextures.Checked)
                        {
                            string folderName = Path.GetDirectoryName(a.FileName);
                            var    bitmaps    = archive.GetTexturesAsBitmaps(asset.Textures);
                            ReadFileMethods.treatStuffAsByteArray = false;
                            foreach (string textureName in bitmaps.Keys)
                            {
                                bitmaps[textureName].Save(folderName + "/" + textureName + ".png", System.Drawing.Imaging.ImageFormat.Png);
                            }
                        }
                    }
                }
            };

            tableLayoutPanel1.Controls.Add(buttonExport, 1, 5);
        }