void GenerateDetectRegions(Maze maze) { // Generate regions List <string> regionList = new List <string>(); for (int i = 0; i < maze.mazeLength; i++) { for (int j = 0; j < maze.mazeWidth; j++) { TryUpdateLinearRegionForTile(0, maze.mazeTile[i, j], regionList, maze); TryUpdateLinearRegionForTile(1, maze.mazeTile[i, j], regionList, maze); TryUpdateRectRegionForTile(maze.mazeTile[i, j], regionList, maze); } } maze.detectRegions = regionList; // Assign regions to each tile foreach (Tile tile in maze.mazeTileList) { string tileAddress = MazeUTL.GetTileAddress(tile.X, tile.Z); foreach (string region in regionList) { if (MazeUTL.CheckRegionHasAddress(region, tileAddress)) { tile.detectRegions.Add(region); } } } }