diff --git a/Kav b/Kav index 19a6198..06e5523 160000 --- a/Kav +++ b/Kav @@ -1 +1 @@ -Subproject commit 19a61985ca25a7562a7f62e03186f0ccfdc1c8ef +Subproject commit 06e552399600be4b706249bab54740eae4fd8e6b diff --git a/KavTest/Components/SkyboxComponent.cs b/KavTest/Components/SkyboxComponent.cs new file mode 100644 index 0000000..f7c9566 --- /dev/null +++ b/KavTest/Components/SkyboxComponent.cs @@ -0,0 +1,15 @@ +using Encompass; +using Microsoft.Xna.Framework.Graphics; + +namespace KavTest.Components +{ + public struct SkyboxComponent : IComponent + { + public TextureCube Skybox { get; } + + public SkyboxComponent(TextureCube skybox) + { + Skybox = skybox; + } + } +} diff --git a/KavTest/Content/Skybox/back.jpg b/KavTest/Content/Skybox/back.jpg new file mode 100644 index 0000000..470a679 Binary files /dev/null and b/KavTest/Content/Skybox/back.jpg differ diff --git a/KavTest/Content/Skybox/bottom.jpg b/KavTest/Content/Skybox/bottom.jpg new file mode 100644 index 0000000..893f394 Binary files /dev/null and b/KavTest/Content/Skybox/bottom.jpg differ diff --git a/KavTest/Content/Skybox/front.jpg b/KavTest/Content/Skybox/front.jpg new file mode 100644 index 0000000..4e17b77 Binary files /dev/null and b/KavTest/Content/Skybox/front.jpg differ diff --git a/KavTest/Content/Skybox/left.jpg b/KavTest/Content/Skybox/left.jpg new file mode 100644 index 0000000..5750b91 Binary files /dev/null and b/KavTest/Content/Skybox/left.jpg differ diff --git a/KavTest/Content/Skybox/right.jpg b/KavTest/Content/Skybox/right.jpg new file mode 100644 index 0000000..8963037 Binary files /dev/null and b/KavTest/Content/Skybox/right.jpg differ diff --git a/KavTest/Content/Skybox/top.jpg b/KavTest/Content/Skybox/top.jpg new file mode 100644 index 0000000..4db3c2a Binary files /dev/null and b/KavTest/Content/Skybox/top.jpg differ diff --git a/KavTest/KavTestGame.cs b/KavTest/KavTestGame.cs index 48e8dad..1bb0b94 100644 --- a/KavTest/KavTestGame.cs +++ b/KavTest/KavTestGame.cs @@ -119,6 +119,56 @@ namespace KavTest ) ); + Texture2D.TextureDataFromStreamEXT( + File.OpenRead("Content/Skybox/front.jpg"), + out var skyboxSize, + out _, + out byte[] frontPixels + ); + + Texture2D.TextureDataFromStreamEXT( + File.OpenRead("Content/Skybox/back.jpg"), + out _, + out _, + out byte[] backPixels + ); + + Texture2D.TextureDataFromStreamEXT( + File.OpenRead("Content/Skybox/right.jpg"), + out _, + out _, + out byte[] rightPixels + ); + + Texture2D.TextureDataFromStreamEXT( + File.OpenRead("Content/Skybox/left.jpg"), + out _, + out _, + out byte[] leftPixels + ); + + Texture2D.TextureDataFromStreamEXT( + File.OpenRead("Content/Skybox/top.jpg"), + out _, + out _, + out byte[] topPixels + ); + + Texture2D.TextureDataFromStreamEXT( + File.OpenRead("Content/Skybox/bottom.jpg"), + out _, + out _, + out byte[] bottomPixels + ); + + var skybox = new TextureCube(GraphicsDevice, skyboxSize, false, SurfaceFormat.Color); + skybox.SetData(CubeMapFace.PositiveZ, frontPixels); + skybox.SetData(CubeMapFace.NegativeZ, backPixels); + skybox.SetData(CubeMapFace.PositiveX, rightPixels); + skybox.SetData(CubeMapFace.NegativeX, leftPixels); + skybox.SetData(CubeMapFace.PositiveY, topPixels); + skybox.SetData(CubeMapFace.NegativeY, bottomPixels); + WorldBuilder.AddEngine(new InputEngine(this)); WorldBuilder.AddEngine(new AngularVelocityEngine()); WorldBuilder.AddEngine(new MoveAlongCurve3DEngine()); @@ -150,40 +200,52 @@ namespace KavTest // rustyBallModel // )); - // WorldBuilder.SendMessage(new StaticModelSpawnMessage( - // new Transform3D(new Vector3(0, -3, 0), Quaternion.Identity, new Vector3(10f, 1f, 10f)), - // floorModel - // )); - - // WorldBuilder.SendMessage(new StaticModelSpawnMessage( - // new Transform3D( - // new Vector3(-3, 1, 0), - // Quaternion.CreateFromAxisAngle( - // Vector3.Right, - // -Microsoft.Xna.Framework.MathHelper.PiOver2 - // ), - // new Vector3(1f, 1f, 1f) - // ), - // blueTorusModel - // )); - - // WorldBuilder.SendMessage(new StaticModelSpawnMessage( - // new Transform3D( - // new Vector3(3, 1, 0), - // Quaternion.CreateFromAxisAngle( - // Vector3.Right, - // -Microsoft.Xna.Framework.MathHelper.PiOver2 - // ), - // new Vector3(1f, 1f, 1f) - // ), - // cubeModel - // )); - WorldBuilder.SendMessage(new StaticModelSpawnMessage( - Transform3D.Identity, - toonShadeRuinsModel + new Transform3D(new Vector3(0, -3, 0), Quaternion.Identity, new Vector3(10f, 1f, 10f)), + floorModel )); + WorldBuilder.SendMessage(new StaticModelSpawnMessage( + new Transform3D( + new Vector3(0, 1, 0), + Quaternion.CreateFromAxisAngle( + Vector3.Right, + -Microsoft.Xna.Framework.MathHelper.PiOver2 + ), + new Vector3(1f, 1f, 1f) + ), + redCylinderModel + )); + + WorldBuilder.SendMessage(new StaticModelSpawnMessage( + new Transform3D( + new Vector3(-3, 1, 0), + Quaternion.CreateFromAxisAngle( + Vector3.Right, + -Microsoft.Xna.Framework.MathHelper.PiOver2 + ), + new Vector3(1f, 1f, 1f) + ), + blueTorusModel + )); + + WorldBuilder.SendMessage(new StaticModelSpawnMessage( + new Transform3D( + new Vector3(3, 1, 0), + Quaternion.CreateFromAxisAngle( + Vector3.Right, + -Microsoft.Xna.Framework.MathHelper.PiOver2 + ), + new Vector3(1f, 1f, 1f) + ), + cubeModel + )); + + // WorldBuilder.SendMessage(new StaticModelSpawnMessage( + // Transform3D.Identity, + // toonShadeRuinsModel + // )); + for (var i = 0; i < 1; i++) { var start = RandomHelper.RandomVector3(-5, 5); @@ -236,6 +298,11 @@ namespace KavTest 100f )); + var skyboxEntity = WorldBuilder.CreateEntity(); + WorldBuilder.SetComponent(skyboxEntity, new SkyboxComponent( + skybox + )); + World = WorldBuilder.Build(); } diff --git a/KavTest/Renderers/SceneRenderer.cs b/KavTest/Renderers/SceneRenderer.cs index d6369e0..75428dd 100644 --- a/KavTest/Renderers/SceneRenderer.cs +++ b/KavTest/Renderers/SceneRenderer.cs @@ -143,7 +143,8 @@ namespace KavTest.Renderers camera, ModelTransforms, AmbientLight, - DirectionalLight() + DirectionalLight(), + ReadComponent().Skybox ); // foreach (var directionalLight in DirectionalLights)