public void Does_not_support_a_null_presenter()
        {
            var collidableBodies = new DummyCollidableBodies();
            CollidableMovementSystemPresenter presenter = null;

            Assert.Throws <ArgumentNullException>(() =>
            {
                CollidableMovementSystem.WithCollidableBodiesAndPresenter(
                    collidableBodies,
                    presenter);
            });
        }
        public void When_it_has_no_body_is_an_error()
        {
            var noCollidableBodies = new NoCollidableBodies();
            var spyPresenter       = new SpyPresenter();
            var system             = CollidableMovementSystem
                                     .WithCollidableBodiesAndPresenter(
                noCollidableBodies,
                spyPresenter);
            var player      = new Guid("8e7eaa84-f471-42ca-91ff-0eafe4cc5af3");
            var destination = new Vector3(3.0f, 0.0f, 3.0f);

            system.MoveEntityTowardsDestination(
                player,
                destination);
            Assert.IsTrue(spyPresenter.ReportedError);
        }
        public void Moves_it_as_far_as_possible_in_one_tick()
        {
            var noCollisions = new NoCollisions();
            var spyPresenter = new SpyPresenter();
            var system       = CollidableMovementSystem
                               .WithCollidableBodiesAndPresenter(
                noCollisions,
                spyPresenter);
            var player      = noCollisions.Player;
            var destination = new Vector3(2.0f, 0.0f, 2.0f);

            system.MoveEntityTowardsDestination(
                player,
                destination);
            Assert.IsFalse(spyPresenter.ReportedError);
            Assert.AreEqual(
                destination,
                spyPresenter.EndingLocation);
        }
Beispiel #4
0
        public MovementSystem MovementSystem(
            CharacterController characterController,
            CollidableMovementSystemPresenter presenter)
        {
            var collisions = CharacterControllerCollisions
                             .WithControllerAndBodiesAndGameObjects(
                characterController,
                bodies,
                gameObjects);
            var collidableBodies = InMemoryCollidableBodies
                                   .WithCollections(
                movementSpeeds,
                bodies,
                collisions);

            return(CollidableMovementSystem
                   .WithCollidableBodiesAndPresenter(
                       collidableBodies,
                       presenter));
        }
        public void Moves_it_to_the_adjusted_collision_location_in_one_tick()
        {
            var alwaysCollisions = new AlwaysCollisions();
            var spyPresenter     = new SpyPresenter();
            var system           = CollidableMovementSystem
                                   .WithCollidableBodiesAndPresenter(
                alwaysCollisions,
                spyPresenter);
            var player                 = alwaysCollisions.Player;
            var destination            = new Vector3(5.0f, 0.0f, 5.0f);
            var expectedEndingLocation =
                alwaysCollisions.AdjustedCollisionLocation;

            system.MoveEntityTowardsDestination(
                player,
                destination);
            Assert.IsFalse(spyPresenter.ReportedError);
            Assert.AreEqual(
                expectedEndingLocation,
                spyPresenter.EndingLocation);
        }