void Connect(BSPTree bsp, int i, bool isLeft, int z)
{
if (bsp.IsLeaf(i))
return;
var left = bsp.GetLeft(i);
var right = bsp.GetRight(i);
Connect(bsp, left, true, z);
Connect(bsp, right, false, z);
var leftRoom = FindNearestRoom(bsp, left, bsp[right].Grid.Center);
var rightRoom = FindNearestRoom(bsp, right, bsp[left].Grid.Center);
ConnectRooms(bsp[leftRoom].Grid, bsp[rightRoom].Grid, z);
}