public void TestCollisionPoint() { var repository = GetBlockRepository(); var world = new TrueCraft.Core.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); }
public void TestGravity() { var repository = GetBlockRepository(); var world = new TrueCraft.Core.World.World("default", new FlatlandGenerator()); var physics = new PhysicsEngine(world, repository); var entity = new TestEntity(); entity.Position = new Vector3(0, 100, 0); entity.AccelerationDueToGravity = 1; entity.Drag = 0; physics.AddEntity(entity); // Test physics.Update(TimeSpan.FromSeconds(1)); Assert.AreEqual(99, entity.Position.Y); physics.Update(TimeSpan.FromSeconds(1)); Assert.AreEqual(97, entity.Position.Y); }
public void TestAdjacentFall() { // Tests an entity that falls alongside a wall var repository = GetBlockRepository(); var world = new TrueCraft.Core.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 (int 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 TestTerrainCollision() { var repository = GetBlockRepository(); var world = new TrueCraft.Core.World.World("default", new FlatlandGenerator()); var physics = new PhysicsEngine(world, repository); var entity = new TestEntity(); entity.Size = new Size(0.6, 1.8, 0.6); entity.Position = new Vector3(-10.9, 4, -10.9); entity.AccelerationDueToGravity = 1; physics.AddEntity(entity); // Test physics.Update(TimeSpan.FromSeconds(1)); Assert.AreEqual(4, entity.Position.Y); physics.Update(TimeSpan.FromSeconds(5)); Assert.AreEqual(4, entity.Position.Y); }