protected void FillDisconnectedRoomsWithDifferentValues(ArrayGrid <MapElement> map, ArrayGrid <int> valueMap, ref int countOfRoomsFilled) { IEnumerator <Vector2Int> mapIter = IterateOverMap(map); while (mapIter.MoveNext()) { Vector2Int current = mapIter.Current; if (map[current] == defaultRoomElement) { valueMap[current] = valueRoom; } else if (map[current] == defaultWallElement) { valueMap[current] = valueWall; } } mapIter = IterateOverMap(map); int roomNumber = 0; while (mapIter.MoveNext()) { Vector2Int current = mapIter.Current; if (valueMap[current] == valueRoom) { valueMap.FloodFill(current, new List <int>() { valueWall }, false, 1 + (roomNumber++)); } } countOfRoomsFilled = roomNumber; }