static void Main(string[] args) { var engine = new Engine("Aarkanoid", 1280, 768, 60); engine.debugCollisions = false; engine.SpawnObject("gameManager", GameManager.I); engine.Run(); }
public static Vector3 Project(this Vector3 v, Engine engine, Camera camera) { float vY, vX; if (camera.Type == Camera.ProjectionType.Prespective) { // double var aratio = (double)engine.Width/engine.Height; var rad = camera.Fov/2.0*(Math.PI/180.0); // angles to radians var tan = Math.Tan(rad); // float vY = (float) (v.Y/(tan*v.Z)); vX = (float) (v.X/(tan*v.Z*aratio)); } else { vY = v.Y/v.Z; vX = v.X/v.Z; } return new Vector3(vX, vY, v.Z); }
public void FromNdc(Engine engine) { Position = Position.FromNdc(engine); }
public static Vector3 FromNdc(this Vector3 v, Engine engine) { return new Vector3((v.X + 1) / 2 * engine.Width, (v.Y + 1) / 2 * engine.Height, v.Z); }
//LERP min + (max - min) * delta public static Vector3 ToNdc(this Vector3 v, Engine engine) { return new Vector3(v.X / engine.Width * 2 - 1, v.Y / engine.Height * 2 - 1, v.Z); }
public TimerManager(Engine engine) : this() { this.engine = engine; }
static void Main(string[] args) { Engine engine = new Engine("Example", 1280, 768, 60, false, false); engine.debugCollisions = true; engine.Camera.Position = new Vector3(0f, 0f, -140f); Asset.BasePath = "..\\..\\..\\assets"; engine.LoadAsset("monkey", new MeshAsset("monkey.obj")); engine.LoadAsset("stormtrooper", new MeshAsset("Stormtrooper.obj")); var monkeyMesh = new Mesh((MeshAsset)engine.GetAsset("monkey")) { Color = new Color4(1f, 0.5f, 0f, 1f), Scale = new Vector3(15f, 15f, 15f), Position = new Vector3(40f, 0f, -20f) }; monkeyMesh.AddHitBox("mass", Vector3.Zero, new Vector3(10f, 10f, 15f)); var stormMesh = new Mesh((MeshAsset)engine.GetAsset("stormtrooper")) { Color = new Color4(0f, 0.5f, 1f, 0.9f), Scale = new Vector3(15f, 15f, 15f), Position = new Vector3(0f, 2f, -16f), Texture = new Texture(Asset.BasePath + "/" + "Stormtrooper.png"), Rotation = new Vector3((float)Math.PI, 0f, 0f) }; //stormMesh.Rotation = new Vector3((float)Math.PI, 0f, (float)Math.PI); //stormMesh.AddHitBox("mass", Vector3.Zero, new Vector3(10f, 10f, 15f)); float speed = -10f; monkeyMesh.OnUpdate += s => { var sender = (Mesh)s; if (sender.HasCollisions()) Console.WriteLine("collides"); else Console.WriteLine("no collision"); sender.Position = new Vector3(sender.Position.X + speed * sender.DeltaTime, sender.Position.Y, sender.Position.Z); }; var inputManager = new GameObject(); inputManager.OnUpdate += s => { var sender = (GameObject) s; float xM = 0; float yM = 0; float zM = 0; if (sender.Engine.IsKeyDown(KeyCode.W)) yM -= 1f; if (sender.Engine.IsKeyDown(KeyCode.S)) yM += 1f; if (sender.Engine.IsKeyDown(KeyCode.A)) xM -= 1f; if (sender.Engine.IsKeyDown(KeyCode.D)) xM += 1f; if (sender.Engine.IsKeyDown(KeyCode.E)) zM -= 1f; if (sender.Engine.IsKeyDown(KeyCode.F)) zM += 1f; var camera = sender.Engine.Camera; var m = 20f*sender.DeltaTime; camera.Position = new Vector3( camera.Position.X + xM * m, camera.Position.Y + yM * m, camera.Position.Z + zM * m); stormMesh.Rotation = new Vector3( stormMesh.Rotation.X, stormMesh.Rotation.Y - sender.DeltaTime, 0f); //var rotationModX = // (sender.Engine.MouseX - sender.Engine.Width / 2f) / sender.Engine.Width / 2f; //rotationModX = sender.DeltaTime * rotationModX; //var rotationModY = // (sender.Engine.MouseY - sender.Engine.Height / 2f) / sender.Engine.Height / 2f; //rotationModY = sender.DeltaTime * rotationModY; //camera.Rotation = new Vector3( // camera.Rotation.X + rotationModX, camera.Rotation.Y + rotationModY, camera.Rotation.Z); }; //engine.SpawnObject("monkeyMesh", monkeyMesh); engine.SpawnObject("stormMesh", stormMesh); engine.SpawnObject("inputManager", inputManager); engine.Run(); }