Ejemplo n.º 1
0
        public void MoveOverridesExistingPosition()
        {
            var entity   = new CobaltEntity();
            var expected = new PositionComponent(171, 201);

            entity.Move(999, 999);
            entity.Move(expected.X, expected.Y);

            var actual = entity.Get <PositionComponent>();

            // They're value types, they're two separate instances.
            Assert.That(actual.X, Is.EqualTo(expected.X));
            Assert.That(actual.Y, Is.EqualTo(expected.Y));
        }
Ejemplo n.º 2
0
        public void UpdateCallsOnCollideWhenCollisionComponentIsSetAndBoundingBoxesOverlap()
        {
            // Move them so that they overlap, and test.
            var wall = new CobaltEntity();

            wall.Move(0, 0);
            wall.Set(new CollisionComponent("Wall"));
            wall.Set(new SpriteComponent(100, 16));

            var player = new CobaltEntity();

            player.Move(50, 10); // X/Y overlaps wall
            player.Set(new SpriteComponent(32, 32));

            var wasCallbackCalled = false;

            player.Set(new CollisionComponent("Player", "Wall", (p, w) => wasCallbackCalled = true));

            var system = new CollisionSystem();

            system.Add(wall);
            system.Add(player);
            Assert.That(system.Entities.Count == 2, "System doesn't have the player and wall entities.");

            system.Update(0.1f);

            Assert.That(wasCallbackCalled, Is.True);

            // Move them so that they don't overlap, and re-test that it didn't trigger the collision resolution action

            wasCallbackCalled = false;
            player.Move(999, 888);
            system.Update(0.1f);

            Assert.That(wasCallbackCalled, Is.False);
        }