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); }
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); }
internal static IUniverse CreateDefault() { var volume = new Volume(-400, 400, -240, 240, -1000, 1000); return new Universe(volume); }
internal Universe(Volume volume) { _volume = volume; _managedObjects = new List<IGameObject>(); }