diff --git a/src/frontend/screens/LevelScreen.cpp b/src/frontend/screens/LevelScreen.cpp index 452fc3111..33b637531 100644 --- a/src/frontend/screens/LevelScreen.cpp +++ b/src/frontend/screens/LevelScreen.cpp @@ -261,6 +261,7 @@ void LevelScreen::update(float delta) { const Player& player = playerController->getPlayer(); const Camera& camera = *player.currentCamera; decorator->update(paused ? 0.0f : delta, camera, weather); + renderer->update(camera, delta * !hud->isPause()); } void LevelScreen::draw(float delta) { @@ -271,7 +272,6 @@ void LevelScreen::draw(float delta) { if (!hud->isPause()) { scripting::on_entities_render(engine.getTime().getDelta()); } - renderer->update(camera, delta * !hud->isPause()); renderer->renderFrame(ctx, camera, hudVisible, *postProcessing); if (!hud->isPause()) { scripting::on_frontend_render(); diff --git a/src/graphics/render/Decorator.cpp b/src/graphics/render/Decorator.cpp index 59840770a..b988898ce 100644 --- a/src/graphics/render/Decorator.cpp +++ b/src/graphics/render/Decorator.cpp @@ -271,8 +271,7 @@ void Decorator::updateBlockEmitters(const Camera& camera) { remove = true; } } else { - iter = blockEmitters.erase(iter); - continue; + remove = true; } if (util::distance2(iter->first, glm::ivec3(camera.position)) > UPDATE_AREA_DIAMETER * UPDATE_AREA_DIAMETER) { diff --git a/src/graphics/render/ParticlesRenderer.cpp b/src/graphics/render/ParticlesRenderer.cpp index 3c00830dd..d588cd63a 100644 --- a/src/graphics/render/ParticlesRenderer.cpp +++ b/src/graphics/render/ParticlesRenderer.cpp @@ -48,6 +48,7 @@ static inline void update_particle( void ParticlesRenderer::updateParticles(float delta) { std::vector unusedTextures; + visibleParticles = 0; for (auto& [texture, vec] : particles) { if (vec.empty()) { @@ -186,7 +187,6 @@ void ParticlesRenderer::update(const Camera& camera, float delta) { void ParticlesRenderer::render(const Camera& camera) { aliveEmitters = emitters.size(); - visibleParticles = 0; bool backlight = settings.backlight.get();