List<Hex3D> reachable(Hex3D startHex, int r)
{
startHex.distance = r;
List<Hex3D> hexes = new List<Hex3D>();
if (r <= 0)
{
return hexes;
}
foreach (Hex3D h in startHex.getNeighbors())
{
//if (!h.passable) continue;
int dist = h.distance;
if (dist == -1 || dist < r - 1)
{
hexes.Add(h);
hexes.AddRange(reachable(h, r - 1));
}
}
return hexes;
}