From 0851f0705dedd86259baee42fb31e50ed52e4c6c Mon Sep 17 00:00:00 2001
From: elsid <elsid.mail@gmail.com>
Date: Fri, 7 Jul 2023 21:21:03 +0200
Subject: [PATCH] Use settings values for Groundcover settings

---
 apps/openmw/mwrender/renderingmanager.cpp | 16 ++++++----------
 apps/openmw/mwworld/worldimp.cpp          |  2 +-
 2 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp
index 4a781a4720..7fa0b40fc3 100644
--- a/apps/openmw/mwrender/renderingmanager.cpp
+++ b/apps/openmw/mwrender/renderingmanager.cpp
@@ -414,13 +414,11 @@ namespace MWRender
             globalDefines[itr->first] = itr->second;
 
         // Refactor this at some point - most shaders don't care about these defines
-        float groundcoverDistance = std::max(0.f, Settings::Manager::getFloat("rendering distance", "Groundcover"));
+        const float groundcoverDistance = Settings::groundcover().mRenderingDistance;
         globalDefines["groundcoverFadeStart"] = std::to_string(groundcoverDistance * 0.9f);
         globalDefines["groundcoverFadeEnd"] = std::to_string(groundcoverDistance);
-        globalDefines["groundcoverStompMode"]
-            = std::to_string(std::clamp(Settings::Manager::getInt("stomp mode", "Groundcover"), 0, 2));
-        globalDefines["groundcoverStompIntensity"]
-            = std::to_string(std::clamp(Settings::Manager::getInt("stomp intensity", "Groundcover"), 0, 2));
+        globalDefines["groundcoverStompMode"] = std::to_string(Settings::groundcover().mStompMode);
+        globalDefines["groundcoverStompIntensity"] = std::to_string(Settings::groundcover().mStompIntensity);
 
         globalDefines["reverseZ"] = reverseZ ? "1" : "0";
 
@@ -1327,7 +1325,7 @@ namespace MWRender
         RenderingManager::WorldspaceChunkMgr newChunkMgr;
 
         const float lodFactor = Settings::Manager::getFloat("lod factor", "Terrain");
-        bool groundcover = Settings::Manager::getBool("enabled", "Groundcover");
+        const bool groundcover = Settings::groundcover().mEnabled;
         bool distantTerrain = Settings::Manager::getBool("distant terrain", "Terrain");
         if (distantTerrain || groundcover)
         {
@@ -1350,10 +1348,8 @@ namespace MWRender
             }
             if (groundcover)
             {
-                float groundcoverDistance
-                    = std::max(0.f, Settings::Manager::getFloat("rendering distance", "Groundcover"));
-                float density = Settings::Manager::getFloat("density", "Groundcover");
-                density = std::clamp(density, 0.f, 1.f);
+                const float groundcoverDistance = Settings::groundcover().mRenderingDistance;
+                const float density = Settings::groundcover().mDensity;
 
                 newChunkMgr.mGroundcover = std::make_unique<Groundcover>(
                     mResourceSystem->getSceneManager(), density, groundcoverDistance, mGroundCoverStore);
diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp
index 3f246628cc..d0e8ab2301 100644
--- a/apps/openmw/mwworld/worldimp.cpp
+++ b/apps/openmw/mwworld/worldimp.cpp
@@ -2892,7 +2892,7 @@ namespace MWWorld
     void World::loadGroundcoverFiles(const Files::Collections& fileCollections,
         const std::vector<std::string>& groundcoverFiles, ToUTF8::Utf8Encoder* encoder, Loading::Listener* listener)
     {
-        if (!Settings::Manager::getBool("enabled", "Groundcover"))
+        if (!Settings::groundcover().mEnabled)
             return;
 
         Log(Debug::Info) << "Loading groundcover:";