using System.IO; using Encompass; using KavTest.Components; using KavTest.Messages; using KavTest.Renderers; using KavTest.Spawners; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace KavTest { class KavTestGame : Game { GraphicsDeviceManager graphics; WorldBuilder WorldBuilder { get; } = new WorldBuilder(); World World { get; set; } public KavTestGame() { graphics = new GraphicsDeviceManager(this); graphics.PreferredBackBufferWidth = 1280; graphics.PreferredBackBufferHeight = 720; graphics.PreferMultiSampling = true; Content.RootDirectory = "Content"; Window.AllowUserResizing = true; IsMouseVisible = true; } protected override void LoadContent() { var rustyBallModel = ModelLoader.Load( GraphicsDevice, Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/cube.glb")) ); WorldBuilder.AddEngine(new RustyBallSpawner(rustyBallModel)); WorldBuilder.AddEngine(new LightBulbSpawner()); WorldBuilder.AddGeneralRenderer(new SceneRenderer(GraphicsDevice), 0); WorldBuilder.SendMessage(new RustyBallSpawnMessage( Matrix.CreateTranslation(0, 0, 0) )); WorldBuilder.SendMessage(new LightBulbSpawnMessage( Matrix.CreateTranslation(10, 0, -5), Color.White, 300f )); var cameraMatrix = Matrix.CreateLookAt(new Vector3(10, 0, 0), Vector3.Zero, Vector3.Up); var cameraEntity = WorldBuilder.CreateEntity(); WorldBuilder.SetComponent(cameraEntity, new CameraComponent( new Kav.Camera( cameraMatrix ) )); World = WorldBuilder.Build(); } protected override void UnloadContent() { base.UnloadContent(); } protected override void Update(GameTime gameTime) { World.Update(gameTime.ElapsedGameTime.TotalSeconds); base.Update(gameTime); } protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); World.Draw(); base.Draw(gameTime); } } }