From 35f8ebe79c2a3ca3b94d93c668ad2caffc3ce49d Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 6 Mar 2022 03:01:08 +0300 Subject: [PATCH] Fixed first chunks lighting concurrency problem --- src/voxels/ChunksController.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/voxels/ChunksController.cpp b/src/voxels/ChunksController.cpp index 8cdf29d1..b7bad1ce 100644 --- a/src/voxels/ChunksController.cpp +++ b/src/voxels/ChunksController.cpp @@ -61,16 +61,24 @@ bool ChunksController::loadVisible(WorldFiles* worldFiles){ if (chunk != nullptr) return false; + static int _totalLoaded = 0; + ChunksLoader* freeLoader = nullptr; for (int i = 0; i < LOADERS_COUNT; i++){ ChunksLoader* loader = loaders[i]; - if (loader->isBusy()) + if (loader->isBusy()){ + // Use only one loader at start to prevent near chunks lighting artifacts + if (_totalLoaded < 4){ + break; + } continue; + } freeLoader = loader; break; } if (freeLoader == nullptr) return false; + _totalLoaded++; chunk = new Chunk(nearX+ox,nearY+oy,nearZ+oz); if (worldFiles->getChunk(chunk->x, chunk->z, (char*)chunk->voxels)) chunk->loaded = true;