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); }
public void SetUp() { var assemblyDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); World = TrueCraft.World.World.LoadWorld(Path.Combine(assemblyDir, "Files")); }