fix: backlight setting not applying on change

This commit is contained in:
MihailRis 2024-10-15 04:58:46 +03:00
parent 4dfa235f12
commit d59fac61bb
6 changed files with 20 additions and 0 deletions

View File

@ -45,12 +45,14 @@ LevelScreen::LevelScreen(Engine* engine, std::unique_ptr<Level> level)
keepAlive(settings.graphics.backlight.observe([=](bool) {
controller->getLevel()->chunks->saveAndClear();
worldRenderer->clear();
}));
keepAlive(settings.camera.fov.observe([=](double value) {
controller->getPlayer()->camera->setFov(glm::radians(value));
}));
keepAlive(Events::getBinding(BIND_CHUNKS_RELOAD).onactived.add([=](){
controller->getLevel()->chunks->saveAndClear();
worldRenderer->clear();
}));
animator = std::make_unique<TextureAnimator>();

View File

@ -79,6 +79,12 @@ void ChunksRenderer::unload(const Chunk* chunk) {
}
}
void ChunksRenderer::clear() {
meshes.clear();
inwork.clear();
threadPool.clearQueue();
}
std::shared_ptr<Mesh> ChunksRenderer::getOrRender(const std::shared_ptr<Chunk>& chunk, bool important) {
auto found = meshes.find(glm::ivec2(chunk->x, chunk->z));
if (found == meshes.end()) {

View File

@ -39,6 +39,7 @@ public:
std::shared_ptr<Mesh> render(const std::shared_ptr<Chunk>& chunk, bool important);
void unload(const Chunk* chunk);
void clear();
std::shared_ptr<Mesh> getOrRender(const std::shared_ptr<Chunk>& chunk, bool important);
std::shared_ptr<Mesh> get(Chunk* chunk);

View File

@ -410,3 +410,7 @@ void WorldRenderer::drawBorders(
}
lineBatch->flush();
}
void WorldRenderer::clear() {
renderer->clear();
}

View File

@ -96,4 +96,6 @@ public:
float delta,
bool pause
);
void clear();
};

View File

@ -237,6 +237,11 @@ namespace util {
jobsMutexCondition.notify_one();
}
void clearQueue() {
std::lock_guard<std::mutex> lock(jobsMutex);
jobs = {};
}
/// @brief If false: worker will be blocked until it's result performed
void setStandaloneResults(bool flag) {
standaloneResults = flag;