コード例 #1
0
    // Update is called once per frame
    public void Update()
    {
        for (int i = 0; i < chunksPerFrame; i++)
        {
            TerrainChunk chunk;

            if (priorityChunkQueue.Count > 0)
            {
                chunk = priorityChunkQueue.Dequeue();
                chunk.SetMap(noiseGenerator.EvaluateChunk(chunk.rawPosition, chunk.rawDims));
                meshGenerator.Enqueue(chunk, true);
            }
            else if (chunkQueue.Count > 0)
            {
                chunk = chunkQueue.Dequeue();
                chunk.SetMap(noiseGenerator.EvaluateChunk(chunk.rawPosition, chunk.rawDims));
                meshGenerator.Enqueue(chunk);
            }
            else
            {
                break;
            }
        }

        meshGenerator.Update();

        while (outdatedChunks.Count > 0)
        {
            meshGenerator.GenerateChunkMesh(outdatedChunks.Dequeue());
        }
    }