From 343585b1977119780a3873b5d90931f0c133f60e Mon Sep 17 00:00:00 2001 From: kaczy Date: Fri, 8 Nov 2024 08:54:56 +0100 Subject: [PATCH] Fix land tile recalculation --- CentrED/Map/MapManager.cs | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/CentrED/Map/MapManager.cs b/CentrED/Map/MapManager.cs index 29f00ce..9259272 100644 --- a/CentrED/Map/MapManager.cs +++ b/CentrED/Map/MapManager.cs @@ -176,25 +176,24 @@ public MapManager(GraphicsDevice gd) { AddTile(staticTile); } + //Recalculate tiles one and two tiles away from block, to fix corners and normals var landBlock = block.LandBlock; - ushort minTileX = (ushort)(landBlock.X * 8); - ushort minTileY = (ushort)(landBlock.Y * 8); - for (ushort x = minTileX ; x < minTileX + 8; x++) + var minTileX = landBlock.X * 8; + var maxTileX = minTileX + 7; + var minTileY = landBlock.Y * 8; + var maxTileY = minTileY + 7; + for (var x = minTileX - 2; x <= maxTileX + 2; x++) { - if(x == 0 || minTileY == 0) continue; - - var newZ = landBlock.Tiles[LandBlock.GetTileIndex(x, minTileY)].Z; - LandTiles?[x - 1, minTileY - 1]?.Update(); - LandTiles?[x - 1, minTileY - 2]?.Update(); - } - for (ushort y = minTileY ; y < minTileY + 8; y++) - { - if(y == 0 || minTileX == 0) continue; - - var newZ = landBlock.Tiles[LandBlock.GetTileIndex(minTileX, y)].Z; - LandTiles?[minTileX - 1, y - 1]?.Update(); - LandTiles?[minTileX - 2, y - 1]?.Update(); + for (var y = minTileY - 2; y <= maxTileY + 2; y++) + { + if(x >= minTileX && x <= maxTileX && y >= minTileY && y <= maxTileY) + continue; //Within block + if(!Client.IsValidX(x) || !Client.IsValidY(y)) + continue; + LandTiles?[x, y]?.Update(); + } } + UpdateLights(); }; Client.BlockUnloaded += block =>