From 99b9be730c6b0f92fd4f30dd8d404477caf4c8b1 Mon Sep 17 00:00:00 2001 From: Kade <26305836+Kade-github@users.noreply.github.com> Date: Thu, 25 Apr 2024 17:47:02 -0700 Subject: [PATCH] some fixes --- src/Game/Scenes/Gameplay.cpp | 25 ++++++++++++++++++------- src/Game/Scenes/SettingsMenu.cpp | 27 +++++++++++++++++---------- src/Game/Scenes/SettingsMenu.h | 2 ++ src/Game/WorldManager.cpp | 1 - 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/src/Game/Scenes/Gameplay.cpp b/src/Game/Scenes/Gameplay.cpp index ad4d24f..e2e2bd6 100644 --- a/src/Game/Scenes/Gameplay.cpp +++ b/src/Game/Scenes/Gameplay.cpp @@ -382,7 +382,10 @@ void Gameplay::UpdateChunks() { Game::instance->log->Write("Loading region: " + std::to_string(pos.x * regionSize) + ", " + std::to_string(pos.y * regionSize)); toLoadedRegion.push_back(pos); - wm->LoadRegion(pos.x, pos.y); + loadPool.detach_task([this, pos]() + { + wm->LoadRegion(pos.x, pos.y); + }); // Queue load for edge chunks @@ -403,7 +406,11 @@ void Gameplay::UpdateChunks() { Game::instance->log->Write("Loading region: " + std::to_string(pos.x * regionSize) + ", " + std::to_string(pos.y * regionSize)); toLoadedRegion.push_back(pos); - wm->LoadRegion(pos.x, pos.y); + loadPool.detach_task([this, pos]() + { + wm->LoadRegion(pos.x, pos.y); + }); + // Queue load for edge chunks @@ -424,7 +431,10 @@ void Gameplay::UpdateChunks() { Game::instance->log->Write("Loading region: " + std::to_string(pos.x * regionSize) + ", " + std::to_string(pos.y * regionSize)); toLoadedRegion.push_back(pos); - wm->LoadRegion(pos.x, pos.y); + loadPool.detach_task([this, pos]() + { + wm->LoadRegion(pos.x, pos.y); + }); // Queue load for edge chunks @@ -445,7 +455,10 @@ void Gameplay::UpdateChunks() { Game::instance->log->Write("Loading region: " + std::to_string(pos.x * regionSize) + ", " + std::to_string(pos.y * regionSize)); toLoadedRegion.push_back(pos); - wm->LoadRegion(pos.x, pos.y); + loadPool.detach_task([this, pos]() + { + wm->LoadRegion(pos.x, pos.y); + }); // Queue load for edge chunks @@ -479,8 +492,6 @@ void Gameplay::UpdateChunks() if (Settings::instance->fogDistance >= 2.0) fog = 10000; - float fovModifier = Settings::instance->fov / 75.0f; - for (Chunk* c : allChunks) { glm::vec3 fakePosC = glm::vec3(c->position.x, 0, c->position.z); @@ -503,7 +514,7 @@ void Gameplay::UpdateChunks() float angle = camera->YawAngleTo(fakePosC); - if ((angle <= (180 * fovModifier) || distance <= 32) && distance <= fog + 32) + if ((angle <= 260 || distance <= 32) && distance <= fog + 32) { if (!c->isRendered || c->pleaseRender) { diff --git a/src/Game/Scenes/SettingsMenu.cpp b/src/Game/Scenes/SettingsMenu.cpp index 39b6828..19e8aa8 100644 --- a/src/Game/Scenes/SettingsMenu.cpp +++ b/src/Game/Scenes/SettingsMenu.cpp @@ -56,13 +56,13 @@ void SettingsMenu::Create() c2d->AddObject(fov); - float renderDistancePerc = Settings::instance->renderDistance / 1.0f; + float renderDistancePerc = Settings::instance->renderDistance / 2.0f; if (renderDistancePerc < 0.1f) renderDistancePerc = 0.1f; - if (renderDistancePerc > 2.0f) - renderDistancePerc = 2.0f; + if (renderDistancePerc > 1.0f) + renderDistancePerc = 1.0f; renderDistance = new DragBar(glm::vec3(0, 0, 0), "Render Distance", renderDistancePerc); @@ -79,8 +79,8 @@ void SettingsMenu::Create() if (fogDistancePerc < 0.1f) fogDistancePerc = 0.1f; - if (fogDistancePerc > 2.0f) - fogDistancePerc = 2.0f; + if (fogDistancePerc > 1.0f) + fogDistancePerc = 1.0f; fogDistance = new DragBar(glm::vec3(0, 0, 0), "Fog Distance", fogDistancePerc); @@ -122,10 +122,6 @@ void SettingsMenu::Draw() else back->selected = false; - Settings::instance->fov = fov->value * 140; - Settings::instance->renderDistance = renderDistance->value * 2.0f; - Settings::instance->fogDistance = fogDistance->value * 1.2f; - Scene::Draw(); } @@ -161,4 +157,15 @@ void SettingsMenu::Resize(float _w, float _h) { if (c2d != nullptr) c2d->Resize(); -} \ No newline at end of file +} + +void SettingsMenu::Destroy() +{ + Settings::instance->fov = fov->value * 140; + Settings::instance->renderDistance = renderDistance->value * 2.0f; + Settings::instance->fogDistance = fogDistance->value * 2.0f; + + + Settings::instance->Save(); + Scene::Destroy(); +} diff --git a/src/Game/Scenes/SettingsMenu.h b/src/Game/Scenes/SettingsMenu.h index 2d70ee3..2aa874f 100644 --- a/src/Game/Scenes/SettingsMenu.h +++ b/src/Game/Scenes/SettingsMenu.h @@ -28,6 +28,8 @@ class SettingsMenu : public Scene void MouseClick(int button, glm::vec2 mPos) override; void MouseRelease(int button, glm::vec2 mPos) override; void Resize(float _w, float _h) override; + + void Destroy() override; }; #endif \ No newline at end of file diff --git a/src/Game/WorldManager.cpp b/src/Game/WorldManager.cpp index e9c01cc..b8f3f48 100644 --- a/src/Game/WorldManager.cpp +++ b/src/Game/WorldManager.cpp @@ -156,7 +156,6 @@ void WorldManager::CheckGeneratedRegions() { if (_generatedRegions.size() != 0) { - std::lock_guard lock(generateMutex); for (Region r : _generatedRegions) regions.push_back(r);