using System.Collections.Generic; using Microsoft.Xna.Framework.Graphics; namespace KavTest { public static class ModelLoader { public static Kav.Model Load(GraphicsDevice graphicsDevice, Smuggler.ModelData modelData) { var meshes = new List(); foreach (var meshData in modelData.Meshes) { var meshParts = new List(); foreach (var meshPartData in meshData.MeshParts) { var effect = new Kav.PBREffect( graphicsDevice ) { Albedo = meshPartData.Albedo, Metallic = meshPartData.Metallic, Roughness = meshPartData.Roughness, AlbedoTexture = meshPartData.AlbedoTexture, NormalTexture = meshPartData.NormalTexture, MetallicRoughnessTexture = meshPartData.MetallicRoughnessTexture }; 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 ); } meshParts.Add(new Kav.MeshPart( meshPartData.VertexBuffer, meshPartData.IndexBuffer, meshPartData.Positions, triangles, effect )); } meshes.Add(new Kav.Mesh(meshParts.ToArray())); } return new Kav.Model(meshes.ToArray()); } } }