From 5f94c8d57aff40d8622f35e9235a719f0184bcb0 Mon Sep 17 00:00:00 2001 From: wrexbe <81056464+wrexbe@users.noreply.github.com> Date: Sat, 28 May 2022 22:57:37 -0700 Subject: [PATCH] Fix map rendering (#8514) * Fix negative grids * Map renderer: skip, and warn on empty grids. * Fix local transform --- Content.MapRenderer/Painters/GridPainter.cs | 4 ++-- Content.MapRenderer/Painters/MapPainter.cs | 7 +++++++ Content.MapRenderer/Painters/TilePainter.cs | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Content.MapRenderer/Painters/GridPainter.cs b/Content.MapRenderer/Painters/GridPainter.cs index 80de812a73..9895afcef3 100644 --- a/Content.MapRenderer/Painters/GridPainter.cs +++ b/Content.MapRenderer/Painters/GridPainter.cs @@ -138,8 +138,8 @@ namespace Content.MapRenderer.Painters private (float x, float y) TransformLocalPosition(Vector2 position, IMapGrid grid) { - var xOffset = (int) Math.Abs(grid.LocalAABB.Left); - var yOffset = (int) Math.Abs(grid.LocalAABB.Bottom); + var xOffset = (int) -grid.LocalAABB.Left; + var yOffset = (int) -grid.LocalAABB.Bottom; var tileSize = grid.TileSize; var x = ((float) Math.Floor(position.X) + xOffset) * tileSize * TilePainter.TileImageSize; diff --git a/Content.MapRenderer/Painters/MapPainter.cs b/Content.MapRenderer/Painters/MapPainter.cs index d59a4958d3..fde65a8cc7 100644 --- a/Content.MapRenderer/Painters/MapPainter.cs +++ b/Content.MapRenderer/Painters/MapPainter.cs @@ -111,6 +111,13 @@ namespace Content.MapRenderer.Painters foreach (var grid in grids) { + // Skip empty grids + if (grid.LocalAABB.IsEmpty()) + { + Console.WriteLine($"Warning: Grid {grid.Index} was empty. Skipping image rendering."); + continue;; + } + var tileXSize = grid.TileSize * TilePainter.TileImageSize; var tileYSize = grid.TileSize * TilePainter.TileImageSize; diff --git a/Content.MapRenderer/Painters/TilePainter.cs b/Content.MapRenderer/Painters/TilePainter.cs index c35a499ca2..e0985994a5 100644 --- a/Content.MapRenderer/Painters/TilePainter.cs +++ b/Content.MapRenderer/Painters/TilePainter.cs @@ -32,8 +32,8 @@ namespace Content.MapRenderer.Painters stopwatch.Start(); var bounds = grid.LocalAABB; - var xOffset = Math.Abs(bounds.Left); - var yOffset = Math.Abs(bounds.Bottom); + var xOffset = -bounds.Left; + var yOffset = -bounds.Bottom; var tileSize = grid.TileSize * TileImageSize; var images = GetTileImages(_sTileDefinitionManager, _cResourceCache, tileSize);