예제 #1
0
    private IEnumerator DoBigProcess()
    {
        levelXLength++;
        levelZLength++;

        yield return(StartCoroutine(CalculateTerrainPartSize()));

        _levelMap = StreetGenerator.GenerateStreetMap(levelZLength, levelXLength, streetsAlongX, streetsAlongZ);
        yield return(null);

        yield return(StartCoroutine(GenerateMesh()));

        CreateTerrainParts(_numberTerrainMeshPartsX * _numberTerrainMeshPartsZ);
        yield return(null);

        yield return(StartCoroutine(GetComponent <BuildingGenerator>().MarkUpLevelArea(_levelMap)));

        yield return(null);

        yield return(StartCoroutine(AssembleTerrainParts()));

        SpawnLevelBorders();
        StaticOcclusionCulling.GenerateInBackground();
        while (StaticOcclusionCulling.isRunning)
        {
            yield return(null);
        }
        yield return(null);

        isDone = true;
        yield return(null);
    }
예제 #2
0
    public void Execute()
    {
        _subMeshTris = new[]
        {
            new List <List <int> >(),
            new List <List <int> >(),
            new List <List <int> >(),
            new List <List <int> >()
        };

        CalculateTerrainPartSize();
        _levelMap = StreetGenerator.GenerateStreetMap(LevelZLength, LevelXLength, StreetsAlongX.ToList(),
                                                      StreetsAlongZ.ToList());
        GenerateMesh();
        CreateTerrainParts(_numberTerrainMeshPartsX * _numberTerrainMeshPartsZ);
        //GetComponent<BuildingGenerator>().GenerateBuildingBasement(LevelMap);
        AssembleTerrainParts();
        //SpawnLevelBorders();
        //UnityEditor.StaticOcclusionCulling.GenerateInBackground();
    }