Fix map rendering (#8514)

* Fix negative grids

* Map renderer: skip, and warn on empty grids.

* Fix local transform
This commit is contained in:
wrexbe
2022-05-28 22:57:37 -07:00
committed by GitHub
parent 941c47aae5
commit 5f94c8d57a
3 changed files with 11 additions and 4 deletions

View File

@@ -138,8 +138,8 @@ namespace Content.MapRenderer.Painters
private (float x, float y) TransformLocalPosition(Vector2 position, IMapGrid grid) private (float x, float y) TransformLocalPosition(Vector2 position, IMapGrid grid)
{ {
var xOffset = (int) Math.Abs(grid.LocalAABB.Left); var xOffset = (int) -grid.LocalAABB.Left;
var yOffset = (int) Math.Abs(grid.LocalAABB.Bottom); var yOffset = (int) -grid.LocalAABB.Bottom;
var tileSize = grid.TileSize; var tileSize = grid.TileSize;
var x = ((float) Math.Floor(position.X) + xOffset) * tileSize * TilePainter.TileImageSize; var x = ((float) Math.Floor(position.X) + xOffset) * tileSize * TilePainter.TileImageSize;

View File

@@ -111,6 +111,13 @@ namespace Content.MapRenderer.Painters
foreach (var grid in grids) 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 tileXSize = grid.TileSize * TilePainter.TileImageSize;
var tileYSize = grid.TileSize * TilePainter.TileImageSize; var tileYSize = grid.TileSize * TilePainter.TileImageSize;

View File

@@ -32,8 +32,8 @@ namespace Content.MapRenderer.Painters
stopwatch.Start(); stopwatch.Start();
var bounds = grid.LocalAABB; var bounds = grid.LocalAABB;
var xOffset = Math.Abs(bounds.Left); var xOffset = -bounds.Left;
var yOffset = Math.Abs(bounds.Bottom); var yOffset = -bounds.Bottom;
var tileSize = grid.TileSize * TileImageSize; var tileSize = grid.TileSize * TileImageSize;
var images = GetTileImages(_sTileDefinitionManager, _cResourceCache, tileSize); var images = GetTileImages(_sTileDefinitionManager, _cResourceCache, tileSize);