// Chunk Creation void ChunkManager::CreateNewChunk(int x, int y, int z) { ChunkCoordKeys coordKeys; coordKeys.x = x; coordKeys.y = y; coordKeys.z = z; // Create a new chunk at this grid position Chunk* pNewChunk = new Chunk(m_pRenderer, this, m_pVoxSettings); pNewChunk->SetPlayer(m_pPlayer); pNewChunk->SetSceneryManager(m_pSceneryManager); float xPos = x * (Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f); float yPos = y * (Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f); float zPos = z * (Chunk::CHUNK_SIZE * Chunk::BLOCK_RENDER_SIZE*2.0f); pNewChunk->SetPosition(vec3(xPos, yPos, zPos)); pNewChunk->SetGrid(coordKeys.x, coordKeys.y, coordKeys.z); m_ChunkMapMutexLock.lock(); m_chunksMap[coordKeys] = pNewChunk; m_ChunkMapMutexLock.unlock(); pNewChunk->Setup(); pNewChunk->SetNeedsRebuild(false, true); pNewChunk->RebuildMesh(); pNewChunk->CompleteMesh(); pNewChunk->SetCreated(true); UpdateChunkNeighbours(pNewChunk, x, y, z); }