public void Export(object sender, EventArgs args) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Supported Formats|*.bfmdl;*.fbx;*.dae; *.obj;*.csv;|" + "Bfres Model|*.bfmdl|" + "FBX |*.fbx|" + "DAE |*.dae|" + "OBJ |*.obj|" + "CSV |*.csv|" + "All files(*.*)|*.*"; sfd.DefaultExt = ".bfobj"; sfd.FileName = Text; if (sfd.ShowDialog() == DialogResult.OK) { string ext = System.IO.Path.GetExtension(sfd.FileName); ext = ext.ToLower(); switch (ext) { case ".bfmdl": if (GetResFileU() != null) { } else { Model.Export(sfd.FileName, GetResFile()); } break; case ".csv": CsvModel csv = new CsvModel(); foreach (FSHP shape in shapes) { STGenericObject obj = new STGenericObject(); obj.ObjectName = shape.Text; obj.vertices = shape.vertices; obj.faces = shape.lodMeshes[shape.DisplayLODIndex].faces; csv.objects.Add(obj); int CurVtx = 0; foreach (Vertex v in shape.vertices) { if (v.boneIds[0] != 0) { obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[0])); } if (v.boneIds[1] != 0) { obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[1])); } if (v.boneIds[2] != 0) { obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[2])); } if (v.boneIds[3] != 0) { obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[3])); } CurVtx++; } } System.IO.File.WriteAllBytes(sfd.FileName, csv.Save()); break; default: List <STGenericTexture> Surfaces = new List <STGenericTexture>(); foreach (FSHP fshp in shapes) { foreach (var bntx in PluginRuntime.bntxContainers) { foreach (var tex in fshp.GetMaterial().TextureMaps) { if (bntx.Textures.ContainsKey(tex.Name)) { Surfaces.Add(bntx.Textures[tex.Name]); } } } foreach (var ftex in PluginRuntime.ftexContainers) { foreach (var tex in fshp.GetMaterial().TextureMaps) { if (ftex.Textures.ContainsKey(tex.Name)) { Surfaces.Add(ftex.Textures[tex.Name]); } } } } Console.WriteLine("tex count " + Surfaces.Count); AssimpData assimp = new AssimpData(); assimp.SaveFromModel(this, sfd.FileName, Surfaces); break; } } }
public void Export(object sender, EventArgs args) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Supported Formats|*.bfmdl;*.fbx;*.dae; *.obj;*.csv;|" + "Bfres Model|*.bfmdl|" + "FBX |*.fbx|" + "DAE |*.dae|" + "OBJ |*.obj|" + "CSV |*.csv|" + "All files(*.*)|*.*"; sfd.DefaultExt = ".bfobj"; sfd.FileName = Text; if (sfd.ShowDialog() == DialogResult.OK) { string ext = System.IO.Path.GetExtension(sfd.FileName); ext = ext.ToLower(); switch (ext) { case ".bfmdl": Model.Export(sfd.FileName, GetResFile()); break; case ".csv": CsvModel csv = new CsvModel(); foreach (FSHP shape in shapes) { STGenericObject obj = new STGenericObject(); obj.ObjectName = shape.Text; obj.vertices = shape.vertices; obj.faces = shape.lodMeshes[shape.DisplayLODIndex].faces; csv.objects.Add(obj); int CurVtx = 0; foreach (Vertex v in shape.vertices) { if (v.boneIds[0] != 0) { obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[0])); } if (v.boneIds[1] != 0) { obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[1])); } if (v.boneIds[2] != 0) { obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[2])); } if (v.boneIds[3] != 0) { obj.vertices[CurVtx].boneNames.Add(shape.GetBoneNameFromIndex(this, v.boneIds[3])); } CurVtx++; } } System.IO.File.WriteAllBytes(sfd.FileName, csv.Save()); break; default: AssimpData assimp = new AssimpData(); assimp.SaveFromModel(this, sfd.FileName); break; } } }