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();
}
public bool Contains(CPos cell)
{
return Contains(cell.ToMPos(Shape));
}
public bool Contains(MPos uv)
{
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

View File

@@ -217,6 +217,9 @@ namespace OpenRA
{
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);
}
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)
{
var x = rand.Next(Bounds.Left, Bounds.Right);