public static void Fill_Random_DFS( this PM_Maze maze, Random rand ) { if (maze == null) { return; } List <UEdge2i> allPossibleEdges = maze.ConnectedCells_ExpansionEdges_List(); // temporarily commented out allPossibleEdges.Shuffle(rand); while (allPossibleEdges.Count > 0) { UEdge2i edge = allPossibleEdges.Pop_Last_Item(); if (maze.Q_Is_Cell_Unconnected(edge.exit)) { maze.OP_AddEdge(edge); List <UEdge2i> newEdges = maze.Cell_ExpansionEdges_List(edge.exit); newEdges.Shuffle(rand); allPossibleEdges.AddRange(newEdges); } } }
public static void Fill_RandomBFS( this PM_Maze maze, Random rand ) { if (maze == null) { return; } // edges List <UEdge2i> edges = maze.ConnectedCells_ExpansionEdges_List(); while (edges.Count > 0) { UEdge2i edge = edges.Pop_Random_Item(rand); if (maze.Q_Is_Cell_Unconnected(edge.exit)) { maze.OP_AddEdge(edge); edges.AddRange(maze.Cell_ExpansionEdges_List(edge.exit)); } } }