public void Update_constrains_registered_objects_to_the_dimensions_of_the_universe()
        {
            var volume = new Volume(-600f, 600f, -400f, 400f, -100f, 100f);
            var universe = new Universe(volume);
            var gameObject1 = Substitute.For<IGameObject>();
            var gameObject2 = Substitute.For<IGameObject>();
            var gameObject3 = Substitute.For<IGameObject>();
            var gameObject4 = Substitute.For<IGameObject>();
            gameObject1.Position.Returns(new Vector2(volume.MinX - 10f, 0f));
            gameObject2.Position.Returns(new Vector2(volume.MaxX - 10f, volume.MaxY + 10f));
            gameObject3.Position.Returns(new Vector2(volume.MaxX + 10f, volume.MaxY - 10f));
            gameObject4.Position.Returns(new Vector2(volume.MinX - volume.Width - 20f, volume.MinY + volume.Height / 2));

            universe.Register(gameObject1);
            universe.Register(gameObject2);
            universe.Register(gameObject3);
            universe.Register(gameObject4);

            universe.Update();

            var expectedPosition1 = new Vector2(volume.MaxX - 10f, 0f);
            gameObject1.Received().Teleport(Arg.Is(expectedPosition1));

            var expectedPosition2 = new Vector2(volume.MaxX - 10f, volume.MinY + 10f);
            gameObject2.Received().Teleport(Arg.Is(expectedPosition2));

            var expectedPosition3 = new Vector2(volume.MinX + 10f, volume.MaxY - 10f);
            gameObject3.Received().Teleport(Arg.Is(expectedPosition3));

            var expectedPosition4 = new Vector2(volume.MaxX - 20f, volume.MinY + volume.Height / 2);
            gameObject4.Received().Teleport(Arg.Is(expectedPosition4));
        }
        public void Universe_creates_universe_and_initialises_the_volume_property()
        {
            var volume = new Volume(-600f, 600f, -400f, 400f, -100f, 100f);
            var universe = new Universe(volume);

            Assert.AreEqual(volume, universe.Volume);
        }
Exemple #3
0
        internal Camera(Volume volume)
        {
            _position = new Vector3(0, 0, 1);
            _target = Vector3.Zero;
            _volume = volume;

            UpdateView();
            UpdateProjection();
        }
        public void Volume_creates_volume_and_initialises_the_dimension_properties()
        {
            var volume = new Volume(-600f, 600f, -400f, 400f, -100f, 100f);

            Assert.AreEqual(-600, volume.MinX);
            Assert.AreEqual(600, volume.MaxX);
            Assert.AreEqual(-400, volume.MinY);
            Assert.AreEqual(400, volume.MaxY);
            Assert.AreEqual(-100, volume.MinZ);
            Assert.AreEqual(100, volume.MaxZ);

            Assert.AreEqual(1200f, volume.Width);
            Assert.AreEqual(800f, volume.Height);
        }
        public void Clone_returns_a_copy_of_Volume_with_same_dimensions()
        {
            var volume = new Volume(-400, 400, -240, 240, -1000, 1000);

            var clone = volume.Clone();

            Assert.AreNotSame(volume, clone);
            Assert.AreEqual(volume.MinX, clone.MinX);
            Assert.AreEqual(volume.MaxX, clone.MaxX);
            Assert.AreEqual(volume.MinY, clone.MinY);
            Assert.AreEqual(volume.MaxY, clone.MaxY);
            Assert.AreEqual(volume.MinZ, clone.MinZ);
            Assert.AreEqual(volume.MaxZ, clone.MaxZ);
        }
        public void UnRegister_removes_registered_object()
        {
            var volume = new Volume(-600f, 600f, -400f, 400f, -100f, 100f);
            var universe = new Universe(volume);
            var gameObject1 = Substitute.For<IGameObject>();
            gameObject1.Position.Returns(new Vector2(volume.MinX - 10f, 0f));

            universe.Register(gameObject1);
            universe.Unregister(gameObject1);

            universe.Update();

            gameObject1.DidNotReceive().Teleport(Arg.Any<Vector2>());
        }
        public void Expand_increases_size_of_Volume_vertically_by_amount_and_maintains_horizontal_proportion(float verticalAmount)
        {
            var volume = new Volume(-400, 400, -240, 240, -1000, 1000);
            var proportion = volume.Width / volume.Height;

            volume.Expand(verticalAmount);

            Assert.AreEqual(-400f - (verticalAmount * proportion), volume.MinX);
            Assert.AreEqual(400f + (verticalAmount * proportion), volume.MaxX);
            Assert.AreEqual(-240f - verticalAmount, volume.MinY);
            Assert.AreEqual(240f + verticalAmount, volume.MaxY);
            Assert.AreEqual(-1000f, volume.MinZ);
            Assert.AreEqual(1000f, volume.MaxZ);
            Assert.AreEqual(800 + (verticalAmount*2*proportion), volume.Width);
            Assert.AreEqual(480 + (verticalAmount*2), volume.Height);
        }
        public void Contract_decreases_size_of_Volume_vertically_by_amount_and_maintains_horizontal_proportion(float verticalAmount)
        {
            var volume = new Volume(-400, 400, -240, 240, -1000, 1000);
            var horizontalAmount = verticalAmount * volume.Width / volume.Height;

            volume.Contract(verticalAmount);

            Assert.AreEqual(-400f + horizontalAmount, volume.MinX);
            Assert.AreEqual(400f - horizontalAmount, volume.MaxX);
            Assert.AreEqual(-240f + verticalAmount, volume.MinY);
            Assert.AreEqual(240f - verticalAmount, volume.MaxY);
            Assert.AreEqual(-1000f, volume.MinZ);
            Assert.AreEqual(1000f, volume.MaxZ);

            Assert.AreEqual(800 - (horizontalAmount * 2), volume.Width);
            Assert.AreEqual(480 - (verticalAmount * 2), volume.Height);
        }
 public void SetUp()
 {
     _volume = new Volume(-100f, 100f, -200f, 200f, -10f, 10f);
 }
Exemple #10
0
 internal static IUniverse CreateDefault()
 {
     var volume = new Volume(-400, 400, -240, 240, -1000, 1000);
     return new Universe(volume);
 }
Exemple #11
0
 internal Universe(Volume volume)
 {
     _volume = volume;
     _managedObjects = new List<IGameObject>();
 }