public bool CheckConnection(GridNode node, int dir)
{
if (neighbours == NumNeighbours.Eight) {
return node.GetConnection (dir);
} else {
int dir1 = (dir-4-1) & 0x3;
int dir2 = (dir-4+1) & 0x3;
if (!node.GetConnection (dir1) || !node.GetConnection (dir2)) {
return false;
} else {
GridNode n1 = nodes[node.GetIndex ()+neighbourOffsets[dir1]] as GridNode;
GridNode n2 = nodes[node.GetIndex ()+neighbourOffsets[dir2]] as GridNode;
if (!n1.walkable || !n2.walkable) {
return false;
}
if (!n2.GetConnection (dir1) || !n1.GetConnection (dir2)) {
return false;
}
}
return true;
}
}