void DumpStatus(DumpObjectStatus status) { switch (status) { case DumpObjectStatus.Ok: break; case DumpObjectStatus.Fail: ErrorPopup("Dump to .obj failed"); break; case DumpObjectStatus.ColorNotExported: ErrorPopup("Vertex colors not exported"); break; case DumpObjectStatus.TexCoord2NotExported: ErrorPopup("2nd Texture Coodinate not exported"); break; } }
static void WriteVertices(ref DumpObjectStatus status, ref bool normals, ref bool texcoords, StreamWriter writer, VMeshData vms, Matrix4 mat) { if (vms.verticesVertexPositionNormalDiffuseTextureTwo != null || vms.verticesVertexPositionNormalColorTexture != null) { writer.WriteLine("# WARNING: Color not exported"); status = DumpObjectStatus.ColorNotExported; } if (vms.verticesVertexPositionNormalTextureTwo != null) { writer.WriteLine("# WARNING: 2nd texcoord not exported"); status = DumpObjectStatus.TexCoord2NotExported; } var nm = mat.Inverted(); nm.Transpose(); for (int i = 0; i < vms.VertexCount; i++) { if (vms.verticesVertexPosition != null) { WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPosition[i].Position)); } if (vms.verticesVertexPositionNormal != null) { WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormal[i].Position)); WriteVector(FMT_VN, writer, TrNorm(vms.verticesVertexPositionNormal[i].Normal, nm)); normals = true; } if (vms.verticesVertexPositionTexture != null) { WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormalTexture[i].Position)); WriteVector(writer, vms.verticesVertexPositionNormalTexture[i].TextureCoordinate); texcoords = true; } if (vms.verticesVertexPositionNormalTexture != null) { WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormalTexture[i].Position)); WriteVector(FMT_VN, writer, TrNorm(vms.verticesVertexPositionNormalTexture[i].Normal, nm)); WriteVector(writer, vms.verticesVertexPositionNormalTexture[i].TextureCoordinate); normals = texcoords = true; } if (vms.verticesVertexPositionNormalTextureTwo != null) { WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormalTextureTwo[i].Position)); WriteVector(FMT_VN, writer, TrNorm(vms.verticesVertexPositionNormalTextureTwo[i].Normal, nm)); WriteVector(writer, vms.verticesVertexPositionNormalTextureTwo[i].TextureCoordinate); normals = texcoords = true; } if (vms.verticesVertexPositionNormalColorTexture != null) { WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormalColorTexture[i].Position)); WriteVector(FMT_VN, writer, TrNorm(vms.verticesVertexPositionNormalColorTexture[i].Normal, nm)); WriteVector(writer, vms.verticesVertexPositionNormalColorTexture[i].TextureCoordinate); normals = texcoords = true; } if (vms.verticesVertexPositionNormalDiffuseTextureTwo != null) { WriteVector(FMT_V, writer, mat.Transform(vms.verticesVertexPositionNormalDiffuseTextureTwo[i].Position)); WriteVector(FMT_VN, writer, TrNorm(vms.verticesVertexPositionNormalDiffuseTextureTwo[i].Normal, nm)); WriteVector(writer, vms.verticesVertexPositionNormalDiffuseTextureTwo[i].TextureCoordinate); normals = texcoords = true; } } }