2020-08-05 19:21:42 +00:00
|
|
|
using System.IO;
|
|
|
|
using Encompass;
|
|
|
|
using KavTest.Components;
|
2020-08-05 20:57:15 +00:00
|
|
|
using KavTest.Engines;
|
2020-08-05 19:21:42 +00:00
|
|
|
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()
|
|
|
|
{
|
2020-08-06 07:10:54 +00:00
|
|
|
var rustyBallModel = Kav.ModelLoader.Load(
|
2020-08-05 19:21:42 +00:00
|
|
|
GraphicsDevice,
|
2020-08-06 07:00:02 +00:00
|
|
|
Smuggler.Importer.ImportGLB(GraphicsDevice, File.OpenRead("Content/rustysphere.glb"))
|
2020-08-05 19:21:42 +00:00
|
|
|
);
|
|
|
|
|
2020-08-06 21:21:34 +00:00
|
|
|
WorldBuilder.AddEngine(new InputEngine(GraphicsDevice.Viewport.Width / 2, GraphicsDevice.Viewport.Height / 2));
|
2020-08-06 07:00:02 +00:00
|
|
|
WorldBuilder.AddEngine(new AngularVelocityEngine());
|
|
|
|
WorldBuilder.AddEngine(new MotionEngine());
|
|
|
|
WorldBuilder.AddEngine(new CameraEngine());
|
2020-08-05 19:21:42 +00:00
|
|
|
WorldBuilder.AddEngine(new RustyBallSpawner(rustyBallModel));
|
|
|
|
WorldBuilder.AddEngine(new LightBulbSpawner());
|
|
|
|
WorldBuilder.AddGeneralRenderer(new SceneRenderer(GraphicsDevice), 0);
|
|
|
|
|
|
|
|
WorldBuilder.SendMessage(new RustyBallSpawnMessage(
|
2020-08-05 22:10:04 +00:00
|
|
|
new Transform3D(new Vector3(0, 0, 0)),
|
|
|
|
new Vector3(1, 1, -1)
|
2020-08-05 19:21:42 +00:00
|
|
|
));
|
2020-08-05 22:10:04 +00:00
|
|
|
|
|
|
|
WorldBuilder.SendMessage(new RustyBallSpawnMessage(
|
2020-08-06 07:00:02 +00:00
|
|
|
new Transform3D(new Vector3(-3, 0, 0)),
|
2020-08-05 22:10:04 +00:00
|
|
|
new Vector3(-1, 1, -1)
|
|
|
|
));
|
|
|
|
|
|
|
|
WorldBuilder.SendMessage(new RustyBallSpawnMessage(
|
2020-08-06 07:00:02 +00:00
|
|
|
new Transform3D(new Vector3(3, 0, 0)),
|
2020-08-05 22:10:04 +00:00
|
|
|
new Vector3(-1, 1, 1)
|
|
|
|
));
|
|
|
|
|
2020-08-05 19:21:42 +00:00
|
|
|
WorldBuilder.SendMessage(new LightBulbSpawnMessage(
|
2020-08-05 22:10:04 +00:00
|
|
|
new Transform3D(new Vector3(0, 2, -5)),
|
2020-08-05 19:21:42 +00:00
|
|
|
Color.White,
|
|
|
|
300f
|
|
|
|
));
|
|
|
|
|
|
|
|
var cameraEntity = WorldBuilder.CreateEntity();
|
2020-08-06 21:21:34 +00:00
|
|
|
WorldBuilder.SetComponent(cameraEntity, new ArcballTransformComponent(
|
|
|
|
new ArcballTransform(
|
|
|
|
new Vector3(0, 0, -10),
|
|
|
|
MathHelper.Pi,
|
|
|
|
0
|
|
|
|
)
|
2020-08-06 07:00:02 +00:00
|
|
|
));
|
2020-08-05 19:21:42 +00:00
|
|
|
WorldBuilder.SetComponent(cameraEntity, new CameraComponent(
|
2020-08-06 07:00:02 +00:00
|
|
|
Matrix.CreatePerspectiveFieldOfView(
|
|
|
|
MathHelper.PiOver4,
|
|
|
|
16f / 9f,
|
|
|
|
0.1f,
|
|
|
|
200f
|
2020-08-05 19:21:42 +00:00
|
|
|
)
|
|
|
|
));
|
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|