// 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()); } }