diff --git a/src/graphics/render/WorldRenderer.cpp b/src/graphics/render/WorldRenderer.cpp index 15372abe..6e5888ce 100644 --- a/src/graphics/render/WorldRenderer.cpp +++ b/src/graphics/render/WorldRenderer.cpp @@ -125,8 +125,8 @@ void WorldRenderer::drawChunks(Chunks* chunks, Camera* camera, Shader* shader) { float px = camera->position.x / (float)CHUNK_W - 0.5f; float pz = camera->position.z / (float)CHUNK_D - 0.5f; std::sort(indices.begin(), indices.end(), [chunks, px, pz](auto i, auto j) { - const auto& a = chunks->chunks[i]; - const auto& b = chunks->chunks[j]; + const auto a = chunks->chunks[i].get(); + const auto b = chunks->chunks[j].get(); auto adx = (a->x - px); auto adz = (a->z - pz); auto bdx = (b->x - px); diff --git a/src/lighting/Lighting.cpp b/src/lighting/Lighting.cpp index de4d0e6e..5b5775d1 100644 --- a/src/lighting/Lighting.cpp +++ b/src/lighting/Lighting.cpp @@ -65,14 +65,13 @@ void Lighting::buildSkyLight(int cx, int cz){ Chunk* chunk = chunks->getChunk(cx, cz); for (int z = 0; z < CHUNK_D; z++){ for (int x = 0; x < CHUNK_W; x++){ + int gx = x + cx * CHUNK_W; + int gz = z + cz * CHUNK_D; for (int y = chunk->lightmap.highestPoint; y >= 0; y--){ - int gx = x + cx * CHUNK_W; - int gz = z + cz * CHUNK_D; while (y > 0 && !blockDefs[chunk->voxels[vox_index(x, y, z)].id]->lightPassing) { y--; } if (chunk->lightmap.getS(x, y, z) != 15) { - solverS->add(gx,y+1,gz); for (; y >= 0; y--){ solverS->add(gx+1,y,gz); solverS->add(gx-1,y,gz);