Example #1
0
        static void Main(string[] args)
        {
            var engine = new Engine("Aarkanoid", 1280, 768, 60);
            engine.debugCollisions = false;

            engine.SpawnObject("gameManager", GameManager.I);

            engine.Run();
        }
Example #2
0
 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);
 }
Example #3
0
 public void FromNdc(Engine engine)
 {
     Position = Position.FromNdc(engine);
 }
Example #4
0
 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);
 }
Example #5
0
 //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);
 }
Example #6
0
 public TimerManager(Engine engine) : this()
 {
     this.engine = engine;
 }
Example #7
0
        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();
        }