int FindNearestRoom(BSPTree bsp, int i, IntVector2 p)
{
if (bsp.IsLeaf(i))
{
return i;
}
else
{
int left = FindNearestRoom(bsp, bsp.GetLeft(i), p);
int right = FindNearestRoom(bsp, bsp.GetRight(i), p);
double dl = (bsp[left].Grid.Center - p).Length;
double rl = (bsp[right].Grid.Center - p).Length;
if (dl < rl)
return left;
else
return right;
}
}