Merge pull request #9988 from pchote/isometric-boundingregion

Fix CellRegion.BoundingRegion behaviour.
This commit is contained in:
Oliver Brakmann
2015-12-03 21:36:58 +01:00

View File

@@ -53,23 +53,24 @@ namespace OpenRA
if (cells == null || !cells.Any()) if (cells == null || !cells.Any())
throw new ArgumentException("cells must not be null or empty.", "cells"); throw new ArgumentException("cells must not be null or empty.", "cells");
var minX = int.MaxValue; var minU = int.MaxValue;
var minY = int.MaxValue; var minV = int.MaxValue;
var maxX = int.MinValue; var maxU = int.MinValue;
var maxY = int.MinValue; var maxV = int.MinValue;
foreach (var cell in cells) foreach (var cell in cells)
{ {
if (minX > cell.X) var uv = cell.ToMPos(shape);
minX = cell.X; if (minU > uv.U)
if (maxX < cell.X) minU = uv.U;
maxX = cell.X; if (maxU < uv.U)
if (minY > cell.Y) maxU = uv.U;
minY = cell.Y; if (minV > uv.V)
if (maxY < cell.Y) minV = uv.V;
maxY = cell.Y; if (maxV < uv.V)
maxV = uv.V;
} }
return new CellRegion(shape, new CPos(minX, minY), new CPos(maxX, maxY)); return new CellRegion(shape, new MPos(minU, minV).ToCPos(shape), new MPos(maxU, maxV).ToCPos(shape));
} }
public bool Contains(CellRegion region) public bool Contains(CellRegion region)