private void DoNextGenerationStep(List <BoardSpace> activeSpaces) { int currentIndex = activeSpaces.Count - 1; //int currentIndex = Random.Range(0, activeSpaces.Count); BoardSpace currentSpace = activeSpaces[currentIndex]; if (currentSpace.IsFullyInitialized) { activeSpaces.RemoveAt(currentIndex); return; } Direction direction = currentSpace.GetRandomUninitializedDirection(); Vector2Int coordinates = currentSpace.coordinates + direction.ToCoordinates(); if (ContainsCoordinates(coordinates)) { BoardSpace neighbour = GetSpace(coordinates); if (neighbour == null) { neighbour = CreateSpace(coordinates); CreatePassage(currentSpace, neighbour, direction); activeSpaces.Add(neighbour); } else { CreateWall(currentSpace, neighbour, direction); } } else { CreateWall(currentSpace, null, direction); } }