List <PlanetNode> GetPlanetRegionNodes(PlanetNode planetNode) { List <PlanetNode> regionNodes = new List <PlanetNode>(); if (!planetNodes.ContainsKey(new Vector2Int(planetNode.Q, planetNode.R))) { return(regionNodes); } HashSet <PlanetNode> visitedNodes = new HashSet <PlanetNode>(); Queue <PlanetNode> queue = new Queue <PlanetNode>(); queue.Enqueue(planetNode); visitedNodes.Add(planetNode); while (queue.Count > 0) { PlanetNode curNode = queue.Dequeue(); regionNodes.Add(curNode); foreach (PlanetNode neighbour in curNode.getNeighbours()) { if (!visitedNodes.Contains(neighbour)) { visitedNodes.Add(neighbour); queue.Enqueue(neighbour); } } } return(regionNodes); }