public void TestAdjacentFall()
        {
            // Tests an entity that falls alongside a wall

            var repository = GetBlockRepository();
            var world      = new TrueCraft.World.World("default", new FlatlandGenerator());
            var physics    = new PhysicsEngine(world, repository);
            var entity     = new TestEntity();

            entity.Position = new Vector3(0, 10, 0);
            entity.AccelerationDueToGravity = 1;
            physics.AddEntity(entity);

            // Create a wall
            for (var y = 0; y < 12; y++)
            {
                world.SetBlockId(new Coordinates3D(1, y, 0), StoneBlock.BlockId);
            }

            // Test
            physics.Update(TimeSpan.FromSeconds(1));

            Assert.AreEqual(9, entity.Position.Y);
            Assert.IsFalse(entity.CollisionOccured);
        }
        public void TestExtremeTerrainCollision()
        {
            var repository = GetBlockRepository();
            var world      = new TrueCraft.World.World("default", new FlatlandGenerator());
            var physics    = new PhysicsEngine(world, repository);
            var entity     = new TestEntity();

            entity.Position = new Vector3(0, 4, 0);
            entity.AccelerationDueToGravity = 10;
            physics.AddEntity(entity);

            // Test
            physics.Update(TimeSpan.FromSeconds(1));

            Assert.AreEqual(4, entity.Position.Y);
        }
        public void TestDrag()
        {
            var repository = GetBlockRepository();
            var world      = new TrueCraft.World.World("default", new FlatlandGenerator());
            var physics    = new PhysicsEngine(world, repository);
            var entity     = new TestEntity();

            entity.Position = new Vector3(0, 100, 0);
            entity.AccelerationDueToGravity = 0;
            entity.Drag     = 0.5f;
            entity.Velocity = Vector3.Down * 2;
            physics.AddEntity(entity);

            // Test
            physics.Update(TimeSpan.FromSeconds(1));

            Assert.AreEqual(99, entity.Position.Y);
        }
        public void TestCollisionPoint()
        {
            var repository = GetBlockRepository();
            var world      = new TrueCraft.World.World("default", new FlatlandGenerator());
            var physics    = new PhysicsEngine(world, repository);
            var entity     = new TestEntity();

            entity.Position = new Vector3(0, 5, 0);
            entity.AccelerationDueToGravity = 1;
            entity.Drag = 0;
            physics.AddEntity(entity);

            world.SetBlockId(new Coordinates3D(0, 4, 0), StoneBlock.BlockId);

            // Test
            physics.Update(TimeSpan.FromSeconds(1));

            Assert.AreEqual(new Vector3(0, 4, 0), entity.CollisionPoint);
        }
Exemple #5
0
        public void SetUp()
        {
            var assemblyDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            World = TrueCraft.World.World.LoadWorld(Path.Combine(assemblyDir, "Files"));
        }