public void CollisionManagerWorksWithinGame() { var rect = new Collidable(new BoundingRectangle(Vector2d.Zero, new Size2d(30, 50))); var circle = new Collidable(new BoundingCircle(Vector2d.Zero, 10)); var game = new CollisionManagerGame(); game.MonitorCollision(rect); game.MonitorCollision(circle); int rectCollisionTriggered = 0; int circleCollisionTriggered = 0; int managerCollisionTriggered = 0; rect.OnCollision += collisionData => { Assert.Equal(circle, collisionData.With); rectCollisionTriggered++; }; circle.OnCollision += collisionData => { Assert.Equal(rect, collisionData.With); circleCollisionTriggered++; }; game.RegisterCollisionEvent((first, second) => { Assert.NotNull(first); Assert.NotNull(second); Assert.Equal(first, rect); Assert.Equal(second, circle); managerCollisionTriggered++; }); Thread.Sleep(TimeSpan.FromSeconds(1)); Assert.True(rectCollisionTriggered > 10); Assert.True(circleCollisionTriggered > 10); Assert.True(managerCollisionTriggered > 10); rect.Dispose(); var savedRectCollisions = rectCollisionTriggered; var savedCircleCollisions = circleCollisionTriggered; var savedmanagerCollisions = managerCollisionTriggered; Thread.Sleep(TimeSpan.FromSeconds(1)); Assert.Equal(savedRectCollisions, rectCollisionTriggered); Assert.Equal(savedCircleCollisions, circleCollisionTriggered); Assert.Equal(savedmanagerCollisions, managerCollisionTriggered); }
public void CollisionManagerWorksWithinGame() { var rect = new Collidable(new BoundingRectangle(Vector2d.Zero, new Size2d(30, 50))); var circle = new Collidable(new BoundingCircle(Vector2d.Zero, 10)); var game = new CollisionManagerGame(); game.MonitorCollision(rect); game.MonitorCollision(circle); int rectCollisionTriggered = 0; int circleCollisionTriggered = 0; int managerCollisionTriggered = 0; rect.OnCollision += collisionData => { Assert.Equal(circle, collisionData.With); rectCollisionTriggered++; }; circle.OnCollision += collisionData => { Assert.Equal(rect, collisionData.With); circleCollisionTriggered++; }; game.RegisterCollisionEvent((first, second) => { Assert.NotNull(first); Assert.NotNull(second); Assert.Equal(first, rect); Assert.Equal(second, circle); managerCollisionTriggered++; }); Thread.Sleep(TimeSpan.FromSeconds(1)); Assert.True(rectCollisionTriggered > 10); Assert.True(circleCollisionTriggered > 10); Assert.True(managerCollisionTriggered > 10); rect.Dispose(); var savedRectCollisions = rectCollisionTriggered; var savedCircleCollisions = circleCollisionTriggered; var savedmanagerCollisions = managerCollisionTriggered; Thread.Sleep(TimeSpan.FromSeconds(1)); Assert.Equal(savedRectCollisions, rectCollisionTriggered); Assert.Equal(savedCircleCollisions, circleCollisionTriggered); Assert.Equal(savedmanagerCollisions, managerCollisionTriggered); }