public bool Convert(int FilterIndex, String Path) { switch (FilterIndex) { case 0: { DAE o = ToDAE(0); File.Create(Path).Close(); File.WriteAllBytes(Path, o.Write()); Directory.CreateDirectory(System.IO.Path.GetDirectoryName(Path) + "\\Tex"); foreach (var v in Data.Textures) { if (!(v is ImageTextureCtr)) { continue; } ((ImageTextureCtr)v).GetBitmap().Save(System.IO.Path.GetDirectoryName(Path) + "\\Tex\\" + v.Name + ".png"); } return(true); } case 1: { if (Data.Models.Length == 0) { return(false); } OBJ o = ToOBJ(0); o.MTLPath = System.IO.Path.GetFileNameWithoutExtension(Path) + ".mtl"; MTL m = ToMTL(0); byte[] d = o.Write(); byte[] d2 = m.Write(); File.Create(Path).Close(); File.WriteAllBytes(Path, d); File.Create(System.IO.Path.ChangeExtension(Path, "mtl")).Close(); File.WriteAllBytes(System.IO.Path.ChangeExtension(Path, "mtl"), d2); Directory.CreateDirectory(System.IO.Path.GetDirectoryName(Path) + "\\Tex"); foreach (var v in Data.Textures) { //if (v.NrLevels > 2) v.GetBitmap(2).Save(System.IO.Path.GetDirectoryName(Path) + "\\Tex\\" + v.Name + ".png"); //else if (v.NrLevels > 1) v.GetBitmap(1).Save(System.IO.Path.GetDirectoryName(Path) + "\\Tex\\" + v.Name + ".png"); //else v.GetBitmap(0).Save(System.IO.Path.GetDirectoryName(Path) + "\\Tex\\" + v.Name + ".png"); if (!(v is ImageTextureCtr)) { continue; } ((ImageTextureCtr)v).GetBitmap().Save(System.IO.Path.GetDirectoryName(Path) + "\\Tex\\" + v.Name + ".png"); } return(true); } default: return(false); } }
private void toolStripButton1_Click(object sender, EventArgs e) { saveFileDialog1.FileName = Model.Name; if (saveFileDialog1.ShowDialog() == DialogResult.OK && saveFileDialog1.FileName.Length > 0) { switch (saveFileDialog1.FilterIndex - 1) { case 0: { DAE o = Model.ToDAE(Resource); File.Create(saveFileDialog1.FileName).Close(); File.WriteAllBytes(saveFileDialog1.FileName, o.Write()); Directory.CreateDirectory(Path.GetDirectoryName(saveFileDialog1.FileName) + "\\Tex"); foreach (var v in Resource.Data.Textures) { if (!(v is ImageTextureCtr)) { continue; } ((ImageTextureCtr)v).GetBitmap().Save(Path.GetDirectoryName(saveFileDialog1.FileName) + "\\Tex\\" + v.Name + ".png"); } break; } case 1: { OBJ o = Model.ToOBJ(); o.MTLPath = Path.GetFileNameWithoutExtension(saveFileDialog1.FileName) + ".mtl"; MTL m = Model.ToMTL("Tex"); byte[] d = o.Write(); byte[] d2 = m.Write(); File.Create(saveFileDialog1.FileName).Close(); File.WriteAllBytes(saveFileDialog1.FileName, d); File.Create(Path.ChangeExtension(saveFileDialog1.FileName, "mtl")).Close(); File.WriteAllBytes(Path.ChangeExtension(saveFileDialog1.FileName, "mtl"), d2); Directory.CreateDirectory(Path.GetDirectoryName(saveFileDialog1.FileName) + "\\Tex"); foreach (var v in Resource.Data.Textures) { //if (v.NrLevels > 2) v.GetBitmap(2).Save(System.IO.Path.GetDirectoryName(Path) + "\\Tex\\" + v.Name + ".png"); //else if (v.NrLevels > 1) v.GetBitmap(1).Save(System.IO.Path.GetDirectoryName(Path) + "\\Tex\\" + v.Name + ".png"); //else v.GetBitmap(0).Save(System.IO.Path.GetDirectoryName(Path) + "\\Tex\\" + v.Name + ".png"); if (!(v is ImageTextureCtr)) { continue; } ((ImageTextureCtr)v).GetBitmap().Save(Path.GetDirectoryName(saveFileDialog1.FileName) + "\\Tex\\" + v.Name + ".png"); } break; } } } }