From 0ab7caedd9309a379e95a300eb4cfaff7e664834 Mon Sep 17 00:00:00 2001 From: Gustas <37534529+PunkPun@users.noreply.github.com> Date: Sun, 30 Apr 2023 15:09:34 +0300 Subject: [PATCH] Fix CandidateMouseoverCells being incorrectly calculated for Rectangular grid --- OpenRA.Game/Graphics/Viewport.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/OpenRA.Game/Graphics/Viewport.cs b/OpenRA.Game/Graphics/Viewport.cs index d59338a8f3..7d57c384ed 100644 --- a/OpenRA.Game/Graphics/Viewport.cs +++ b/OpenRA.Game/Graphics/Viewport.cs @@ -286,8 +286,19 @@ namespace OpenRA.Graphics var minPos = worldRenderer.ProjectedPosition(world); // Find all the cells that could potentially have been clicked. - var a = map.CellContaining(minPos - new WVec(tileScale, 0, 0)).ToMPos(map.Grid.Type); - var b = map.CellContaining(minPos + new WVec(tileScale, tileScale * map.Grid.MaximumTerrainHeight, 0)).ToMPos(map.Grid.Type); + MPos a; + MPos b; + if (map.Grid.Type == MapGridType.RectangularIsometric) + { + // TODO: this generates too many cells. + a = map.CellContaining(minPos - new WVec(tileScale, 0, 0)).ToMPos(map.Grid.Type); + b = map.CellContaining(minPos + new WVec(tileScale, tileScale * map.Grid.MaximumTerrainHeight, 0)).ToMPos(map.Grid.Type); + } + else + { + a = map.CellContaining(minPos).ToMPos(map.Grid.Type); + b = map.CellContaining(minPos + new WVec(0, tileScale * map.Grid.MaximumTerrainHeight, 0)).ToMPos(map.Grid.Type); + } for (var v = b.V; v >= a.V; v--) for (var u = b.U; u >= a.U; u--)