Kav/Loaders/ModelLoader.cs

55 lines
1.9 KiB
C#

using System.Collections.Generic;
using Microsoft.Xna.Framework.Graphics;
namespace Kav
{
public static class ModelLoader
{
public static Kav.Model Load(GraphicsDevice graphicsDevice, Smuggler.ModelData modelData)
{
var meshes = new List<Kav.Mesh>();
foreach (var meshData in modelData.Meshes)
{
var meshParts = new List<Kav.MeshPart>();
foreach (var meshPartData in meshData.MeshParts)
{
var triangles = new Kav.Triangle[meshPartData.Triangles.Length];
for (int i = 0; i < meshPartData.Triangles.Length; i++)
{
var smugglerTriangle = meshPartData.Triangles[i];
triangles[i] = new Kav.Triangle(
smugglerTriangle.A,
smugglerTriangle.B,
smugglerTriangle.C
);
}
var meshPart = new Kav.MeshPart(
meshPartData.VertexBuffer,
meshPartData.IndexBuffer,
meshPartData.Positions,
triangles
);
meshPart.Albedo = meshPartData.Albedo;
meshPart.Metallic = meshPartData.Metallic;
meshPart.Roughness = meshPartData.Roughness;
meshPart.AlbedoTexture = meshPartData.AlbedoTexture;
meshPart.NormalTexture = meshPartData.NormalTexture;
meshPart.MetallicRoughnessTexture = meshPartData.MetallicRoughnessTexture;
meshParts.Add(meshPart);
}
meshes.Add(new Kav.Mesh(meshParts.ToArray()));
}
return new Kav.Model(meshes.ToArray());
}
}
}