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);
    }