private void DoNextGenerationStep(List <MazeCell> activecells) { int currentIndex = activecells.Count - 1; MazeCell currentcell = activecells[currentIndex]; if (currentcell.IsFullyInitialized) { activecells.RemoveAt(currentIndex); return; } MazeDirection direction = currentcell.RandomUnitializedDirection; IntVector2 coordinates = currentcell.coordinates + direction.TointVector2(); if (ContainsCoordinates(coordinates)) { MazeCell neighbor = GetCell(coordinates); if (neighbor == null) { neighbor = CreatCell(coordinates); CreatePassage(currentcell, neighbor, direction); activecells.Add(neighbor); } else if (currentcell.room.settingIndex == neighbor.room.settingIndex) { CreatePassageInSameRoom(currentcell, neighbor, direction); } else { CreateWall(currentcell, neighbor, direction); //activecells.RemoveAt(currentIndex); } } else { CreateWall(currentcell, null, direction); // activecells.RemoveAt(currentIndex); } }