@@ -65,6 +65,8 @@ namespace tsom
6565 GetPlanet ().OnChunkVisibilityMaskUpdated .Connect ([chunkLoadingData = m_chunkLoadingData](Planet* /* planet*/ , Chunk* chunk, DirectionMask oldVisibilityMask, DirectionMask newVisibilityMask)
6666 {
6767 DirectionMask newDirectionMask = newVisibilityMask & ~oldVisibilityMask;
68+
69+ std::unique_lock lock (chunkLoadingData->mutex );
6870 chunkLoadingData->visitedChunks [chunk->GetIndices ()] = true ;
6971 chunkLoadingData->HandleChunkLoaded (chunk->GetIndices (), newDirectionMask);
7072 });
@@ -275,6 +277,8 @@ namespace tsom
275277 chunkLoadingData->planet ->GenerateChunk (*chunk, seed, chunkCount, generatorName);
276278
277279 DirectionMask visibilityMask = chunkLoadingData->planet ->GetChunkVisibilityMask (chunk->GetIndices ());
280+
281+ std::unique_lock lock (chunkLoadingData->mutex );
278282 chunkLoadingData->HandleChunkLoaded (chunk->GetIndices (), visibilityMask);
279283
280284 if (--chunkLoadingData->chunkLoadingCount == 0 && chunkLoadingData->remainingChunks .empty ())
@@ -360,8 +364,6 @@ namespace tsom
360364 ChunkIndices minIndices (-int (chunkCount.x / 2 ), -int (chunkCount.y / 2 ), -int (chunkCount.z / 2 ));
361365 ChunkIndices maxIndices = minIndices + ChunkIndices (chunkCount) - ChunkIndices (1 );
362366
363- std::unique_lock lock (mutex);
364-
365367 // Direct neighbor can trigger indirect neighbor
366368 bool isPrimaryChunk = Nz::Retrieve (visitedChunks, chunkIndices);
367369
0 commit comments