public void Draw(Camera2D camera, bool useMapBackgroundColor = false) { if(useMapBackgroundColor && BackgroundColor.HasValue) _graphicsDevice.Clear(BackgroundColor.Value); foreach (var layer in _layers) layer.Draw(camera); }
public void Camera2D_ContainsRectangle_Test() { var graphicsDevice = TestHelper.CreateGraphicsDevice(); var camera = new Camera2D(graphicsDevice); Assert.AreEqual(ContainmentType.Intersects, camera.Contains(new Rectangle(-50, -50, 100, 100))); Assert.AreEqual(ContainmentType.Contains, camera.Contains(new Rectangle(50, 50, 100, 100))); Assert.AreEqual(ContainmentType.Disjoint, camera.Contains(new Rectangle(850, 500, 100, 100))); }
protected override void Initialize() { base.Initialize(); _camera = new Camera2D(GraphicsDevice) { Zoom = 0.5f, Position = new Vector2(400, 440) }; }
public void Camera2D_ContainsPoint_Test() { var graphicsDevice = TestHelper.CreateGraphicsDevice(); var camera = new Camera2D(graphicsDevice); Assert.AreEqual(ContainmentType.Contains, camera.Contains(new Point(1, 1))); Assert.AreEqual(ContainmentType.Contains, camera.Contains(new Point(800, 480))); Assert.AreEqual(ContainmentType.Disjoint, camera.Contains(new Point(0, 0))); Assert.AreEqual(ContainmentType.Disjoint, camera.Contains(new Point(801, 481))); }
public void Camera2D_ContainsVector2_Test() { var graphicsDevice = TestHelper.CreateGraphicsDevice(); var camera = new Camera2D(graphicsDevice); // the edge cases fall on the half pixel boundary Assert.AreEqual(ContainmentType.Disjoint, camera.Contains(new Vector2(0.45f, 0.45f))); Assert.AreEqual(ContainmentType.Contains, camera.Contains(new Vector2(800.45f, 480.45f))); Assert.AreEqual(ContainmentType.Contains, camera.Contains(new Vector2(0.55f, 0.55f))); Assert.AreEqual(ContainmentType.Disjoint, camera.Contains(new Vector2(800.55f, 480.55f))); }
public void Camera2D_LookAt_Test() { var viewportAdapter = Substitute.For<ViewportAdapter>(); viewportAdapter.VirtualWidth.Returns(800); viewportAdapter.VirtualHeight.Returns(480); var camera = new Camera2D(viewportAdapter); camera.LookAt(new Vector2(100, 200)); Assert.AreEqual(new Vector2(-300, -40), camera.Position); }
protected override void Initialize() { _viewportAdapter = new BoxingViewportAdapter(GraphicsDevice, 800, 480); _camera = new Camera2D(_viewportAdapter) { Zoom = 0.5f, Position = new Vector2(408, 270) }; Window.AllowUserResizing = true; Window.ClientSizeChanged += (s, e) => _viewportAdapter.OnClientSizeChanged(); base.Initialize(); }
public void Camera2D_GetBoundingFrustum_Test() { var graphicsDevice = TestHelper.CreateGraphicsDevice(); var camera = new Camera2D(graphicsDevice); var boundingFrustum = camera.GetBoundingFrustum(); var corners = boundingFrustum.GetCorners(); const float delta = 0.01f; TestHelper.AreEqual(new Vector3(0.5f, 0.5f, 1), corners[0], delta); TestHelper.AreEqual(new Vector3(800.5f, 0.5f, 1), corners[1], delta); TestHelper.AreEqual(new Vector3(800.5f, 480.5f, 1), corners[2], delta); TestHelper.AreEqual(new Vector3(0.5f, 480.5f, 1), corners[3], delta); TestHelper.AreEqual(new Vector3(0.5f, 0.5f, 0), corners[4], delta); TestHelper.AreEqual(new Vector3(800.5f, 0.5f, 0), corners[5], delta); TestHelper.AreEqual(new Vector3(800.5f, 480.5f, 0), corners[6], delta); TestHelper.AreEqual(new Vector3(0.5f, 480.5f, 0), corners[7], delta); }
public void Draw(Camera2D camera) { var renderOrderFunction = GetRenderOrderFunction(); _spriteBatch.Begin(sortMode: SpriteSortMode.Immediate, blendState: BlendState.AlphaBlend, samplerState: SamplerState.PointClamp, transformMatrix: camera.GetViewMatrix()); foreach (var tile in renderOrderFunction()) { var region = _tiledMap.GetTileRegion(tile.Id); if (region != null) { // not exactly sure why we need to compensate 1 pixel here. Could be a bug in MonoGame? var tx = tile.X * (_tiledMap.TileWidth - 1); var ty = tile.Y * (_tiledMap.TileHeight - 1); _spriteBatch.Draw(region, new Rectangle(tx, ty, region.Width, region.Height), Color.White); } } _spriteBatch.End(); }