Merge pull request #9988 from pchote/isometric-boundingregion
Fix CellRegion.BoundingRegion behaviour.
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user