From da52273dd0e9d67e7838d0d0e76e7154a675d95f Mon Sep 17 00:00:00 2001 From: cosmonaut Date: Thu, 6 Aug 2020 00:10:23 -0700 Subject: [PATCH] add dependency on smuggler --- Kav.csproj | 3 ++- ModelLoader.cs | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ Resources.cs | 2 +- 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 ModelLoader.cs 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()) {