55 lines
1.9 KiB
C#
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());
|
|
}
|
|
}
|
|
}
|