diff --git a/Kav.csproj b/Kav.csproj index cdb5cfc..25eac44 100644 --- a/Kav.csproj +++ b/Kav.csproj @@ -9,11 +9,12 @@ + - Smuggler.Resources.PBREffect.fxb + Kav.Resources.PBREffect.fxb diff --git a/ModelLoader.cs b/ModelLoader.cs new file mode 100644 index 0000000..fc5b206 --- /dev/null +++ b/ModelLoader.cs @@ -0,0 +1,58 @@ +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(); + + 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()); + } + } +} diff --git a/Resources.cs b/Resources.cs index 918ca8a..e20f87b 100644 --- a/Resources.cs +++ b/Resources.cs @@ -21,7 +21,7 @@ namespace Kav private static byte[] GetResource(string name) { Stream stream = typeof(Resources).Assembly.GetManifestResourceStream( - "Smuggler.Resources." + name + ".fxb" + "Kav.Resources." + name + ".fxb" ); using (MemoryStream ms = new MemoryStream()) {