Add some more coordinate utility functions.

This commit is contained in:
Paul Chote
2015-06-07 16:11:27 +01:00
parent b7567fa5fa
commit d21b63ca04
3 changed files with 24 additions and 0 deletions

View File

@@ -125,10 +125,25 @@ namespace OpenRA
return GetEnumerator(); return GetEnumerator();
} }
public bool Contains(CPos cell)
{
return Contains(cell.ToMPos(Shape));
}
public bool Contains(MPos uv) public bool Contains(MPos uv)
{ {
return bounds.Contains(uv.U, uv.V); return bounds.Contains(uv.U, uv.V);
} }
public CPos Clamp(CPos uv)
{
return Clamp(uv.ToMPos(Shape)).ToCPos(Shape);
}
public MPos Clamp(MPos uv)
{
return uv.Clamp(new Rectangle(0, 0, Size.Width - 1, Size.Height - 1));
}
} }
// Helper functions // Helper functions

View File

@@ -217,6 +217,9 @@ namespace OpenRA
{ {
return GetEnumerator(); return GetEnumerator();
} }
public MPos TopLeft { get { return r.mapTopLeft; } }
public MPos BottomRight { get { return r.mapBottomRight; } }
} }
} }
} }

View File

@@ -772,6 +772,12 @@ namespace OpenRA
return cell.ToMPos(this).Clamp(bounds).ToCPos(this); return cell.ToMPos(this).Clamp(bounds).ToCPos(this);
} }
public MPos Clamp(MPos uv)
{
var bounds = new Rectangle(Bounds.X, Bounds.Y, Bounds.Width - 1, Bounds.Height - 1);
return uv.Clamp(bounds);
}
public CPos ChooseRandomCell(MersenneTwister rand) public CPos ChooseRandomCell(MersenneTwister rand)
{ {
var x = rand.Next(Bounds.Left, Bounds.Right); var x = rand.Next(Bounds.Left, Bounds.Right);