Novetus_src/Novetus/NovetusLauncher/Classes/SDK/OBJConverter.cs

84 lines
2.6 KiB
C#

#region Usings
using ObjLoader.Loader.Data.VertexData;
using ObjLoader.Loader.Loaders;
using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;
#endregion
#region Icon Loader
public class OBJConverter
{
private OpenFileDialog openFileDialog1;
private string installOutcome = "";
public OBJConverter()
{
openFileDialog1 = new OpenFileDialog()
{
FileName = "Select an .obj file",
Filter = "Wavefront OBJ file (*.obj)|*.obj",
Title = "Open .obj"
};
}
public void setInstallOutcome(string text)
{
installOutcome = text;
}
public string getInstallOutcome()
{
return installOutcome;
}
public void ConvertOBJ()
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
using (Stream str = openFileDialog1.OpenFile())
{
Directory.SetCurrentDirectory(Path.GetDirectoryName(openFileDialog1.FileName));
var materialStreamProvider = new MaterialStreamProvider();
var objLoaderFactory = new ObjLoaderFactory();
var objLoader = objLoaderFactory.Create(materialStreamProvider);
var fileStream = materialStreamProvider.Open(openFileDialog1.FileName);
var result = objLoader.Load(fileStream);
string testString = "";
testString += "version 1.00\n";
testString += result.Groups.First().Faces.Count + "\n";
foreach (Vertex vert in result.Vertices)
{
testString += "[" + (vert.X * 0.5) + "," + (vert.Y * 0.5) + "," + (vert.Z * 0.5) + "]";
foreach (Normal norm in result.Normals)
{
testString += "[" + norm.X + "," + norm.Y + "," + norm.Z + "]";
//this is dumb
if (result.Textures.Count > 0)
{
foreach (Texture tex in result.Textures)
{
testString += "[" + tex.X + "," + tex.Y + ",0]";
}
}
else
{
testString += "[0,0,0]";
}
}
}
MessageBox.Show(testString);
Clipboard.SetText(testString);
Directory.SetCurrentDirectory(GlobalPaths.RootPath);
str.Close();
}
}
}
}
#endregion