public Region GetVisibleRegion()
{
// initialize using point in lower left corner
m_intersectionPoint = coordDnLeft;
Region region = new Region(
Mathf.FloorToInt(m_intersectionPoint.x),
Mathf.CeilToInt(m_intersectionPoint.x),
Mathf.CeilToInt(m_intersectionPoint.z),
Mathf.FloorToInt(m_intersectionPoint.z)
);
// grow the region to include each corner
m_intersectionPoint = coordUpLeft;
region.Encapsulate(Mathf.FloorToInt(m_intersectionPoint.x), Mathf.CeilToInt(m_intersectionPoint.z));
m_intersectionPoint = coordUpRight;
region.Encapsulate(Mathf.CeilToInt(m_intersectionPoint.x), Mathf.CeilToInt(m_intersectionPoint.z));
m_intersectionPoint = coordDnRight;
region.Encapsulate(Mathf.CeilToInt(m_intersectionPoint.x), Mathf.FloorToInt(m_intersectionPoint.z));
// return the results
return region;
}