diff options
| author | hachem <im@hachem.wtf> | 2025-08-22 04:52:32 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2025-08-22 04:52:32 +0200 |
| commit | 34e5b184d391f3676ca22ca3309dd536c23ccedf (patch) | |
| tree | c1e8771635de9a89b101749db056d0496a6e731e /src | |
| parent | b9c20fccac64e7aadd28ea6c621c4ffda2561c54 (diff) | |
[fix]: settings not saving
Diffstat (limited to 'src')
| -rw-r--r-- | src/Core/SettingsManager.cpp | 22 | ||||
| -rw-r--r-- | src/Core/SettingsManager.h | 10 | ||||
| -rw-r--r-- | src/States/SimulationState.cpp | 22 |
3 files changed, 53 insertions, 1 deletions
diff --git a/src/Core/SettingsManager.cpp b/src/Core/SettingsManager.cpp index af163e7..9543787 100644 --- a/src/Core/SettingsManager.cpp +++ b/src/Core/SettingsManager.cpp @@ -51,12 +51,22 @@ namespace Donut s_Settings.simulation.maxStepsStatic = toml::find_or(sim, "max_steps_static", 15000); s_Settings.simulation.earlyExitDistance = toml::find_or(sim, "early_exit_distance", 5e12f); s_Settings.simulation.gravityEnabled = toml::find_or(sim, "gravity_enabled", true); + s_Settings.simulation.diskThickness = toml::find_or(sim, "disk_thickness", 0.1f); + s_Settings.simulation.diskDensity = toml::find_or(sim, "disk_density", 0.1f); + s_Settings.simulation.rotationSpeed = toml::find_or(sim, "rotation_speed", 1.0f); + s_Settings.simulation.blurStrength = toml::find_or(sim, "blur_strength", 2.0f); + s_Settings.simulation.glowIntensity = toml::find_or(sim, "glow_intensity", 0.1f); s_Settings.simulation.targetFPS = std::max(30, std::min(120, s_Settings.simulation.targetFPS)); s_Settings.simulation.computeHeight = std::max(64, std::min(2048, s_Settings.simulation.computeHeight)); s_Settings.simulation.maxStepsMoving = std::max(1000, std::min(60000, s_Settings.simulation.maxStepsMoving)); s_Settings.simulation.maxStepsStatic = std::max(1000, std::min(30000, s_Settings.simulation.maxStepsStatic)); s_Settings.simulation.earlyExitDistance = std::max(1e11f, std::min(1e13f, s_Settings.simulation.earlyExitDistance)); + s_Settings.simulation.diskThickness = std::max(0.01f, std::min(5.0f, s_Settings.simulation.diskThickness)); + s_Settings.simulation.diskDensity = std::max(0.01f, std::min(5.0f, s_Settings.simulation.diskDensity)); + s_Settings.simulation.rotationSpeed = std::max(0.0f, std::min(5.0f, s_Settings.simulation.rotationSpeed)); + s_Settings.simulation.blurStrength = std::max(0.1f, std::min(10.0f, s_Settings.simulation.blurStrength)); + s_Settings.simulation.glowIntensity = std::max(0.01f, std::min(5.0f, s_Settings.simulation.glowIntensity)); } if (config.contains("graphics")) @@ -111,7 +121,12 @@ namespace Donut {"max_steps_moving", s_Settings.simulation.maxStepsMoving }, {"max_steps_static", s_Settings.simulation.maxStepsStatic }, {"early_exit_distance", s_Settings.simulation.earlyExitDistance}, - {"gravity_enabled", s_Settings.simulation.gravityEnabled } + {"gravity_enabled", s_Settings.simulation.gravityEnabled }, + {"disk_thickness", s_Settings.simulation.diskThickness }, + {"disk_density", s_Settings.simulation.diskDensity }, + {"rotation_speed", s_Settings.simulation.rotationSpeed }, + {"blur_strength", s_Settings.simulation.blurStrength }, + {"glow_intensity", s_Settings.simulation.glowIntensity } }; toml::value graphics = toml::table @@ -168,6 +183,11 @@ namespace Donut s_Settings.simulation.maxStepsStatic = 15000; s_Settings.simulation.earlyExitDistance = 5e12f; s_Settings.simulation.gravityEnabled = true; + s_Settings.simulation.diskThickness = 0.1f; + s_Settings.simulation.diskDensity = 0.1f; + s_Settings.simulation.rotationSpeed = 1.0f; + s_Settings.simulation.blurStrength = 2.0f; + s_Settings.simulation.glowIntensity = 0.1f; s_Settings.graphics.renderAPI = "OpenGL"; s_Settings.graphics.vSyncEnabled = true; diff --git a/src/Core/SettingsManager.h b/src/Core/SettingsManager.h index bea1162..de0774b 100644 --- a/src/Core/SettingsManager.h +++ b/src/Core/SettingsManager.h @@ -13,6 +13,11 @@ namespace Donut int maxStepsStatic = 15000; float earlyExitDistance = 5e12f; bool gravityEnabled = true; + float diskThickness = 0.1f; + float diskDensity = 0.1f; + float rotationSpeed = 1.0f; + float blurStrength = 2.0f; + float glowIntensity = 0.1f; }; struct GraphicsSettings @@ -53,6 +58,11 @@ namespace Donut static int GetMaxStepsStatic() { return s_Settings.simulation.maxStepsStatic; } static float GetEarlyExitDistance() { return s_Settings.simulation.earlyExitDistance; } static bool GetGravityEnabled() { return s_Settings.simulation.gravityEnabled; } + static float GetDiskThickness() { return s_Settings.simulation.diskThickness; } + static float GetDiskDensity() { return s_Settings.simulation.diskDensity; } + static float GetRotationSpeed() { return s_Settings.simulation.rotationSpeed; } + static float GetBlurStrength() { return s_Settings.simulation.blurStrength; } + static float GetGlowIntensity() { return s_Settings.simulation.glowIntensity; } static std::string GetRenderAPI() { return s_Settings.graphics.renderAPI; } static bool GetVSyncEnabled() { return s_Settings.graphics.vSyncEnabled; } static bool GetShowFPS() { return s_Settings.graphics.showFPS; } diff --git a/src/States/SimulationState.cpp b/src/States/SimulationState.cpp index 2a79b3c..4d388fd 100644 --- a/src/States/SimulationState.cpp +++ b/src/States/SimulationState.cpp @@ -27,6 +27,13 @@ namespace Donut engine.SetEarlyExitDistance(settings.simulation.earlyExitDistance); engine.GetGravity() = settings.simulation.gravityEnabled; + // Load accretion disk settings + engine.SetDiskThickness(settings.simulation.diskThickness); + engine.SetDiskDensity(settings.simulation.diskDensity); + engine.SetRotationSpeed(settings.simulation.rotationSpeed); + engine.SetBlurStrength(settings.simulation.blurStrength); + engine.SetGlowIntensity(settings.simulation.glowIntensity); + engine.UpdateComputeDimensions(); m_Initialized = true; } @@ -227,6 +234,9 @@ namespace Donut if (ImGui::SliderFloat("Cloud Thickness", &diskThickness, 0.1f, 2.0f, "%.2f")) { engine.SetDiskThickness(diskThickness); + SimulationSettings settings = SettingsManager::GetSettingsConst().simulation; + settings.diskThickness = diskThickness; + SettingsManager::SetSimulationSettings(settings); } ImGui::TextDisabled("Thickness relative to Schwarzschild radius"); @@ -234,6 +244,9 @@ namespace Donut if (ImGui::SliderFloat("Cloud Density", &diskDensity, 0.1f, 3.0f, "%.2f")) { engine.SetDiskDensity(diskDensity); + SimulationSettings settings = SettingsManager::GetSettingsConst().simulation; + settings.diskDensity = diskDensity; + SettingsManager::SetSimulationSettings(settings); } ImGui::TextDisabled("Overall density multiplier"); @@ -241,6 +254,9 @@ namespace Donut if (ImGui::SliderFloat("Rotation Speed", &rotationSpeed, 0.0f, 3.0f, "%.2f")) { engine.SetRotationSpeed(rotationSpeed); + SimulationSettings settings = SettingsManager::GetSettingsConst().simulation; + settings.rotationSpeed = rotationSpeed; + SettingsManager::SetSimulationSettings(settings); } ImGui::TextDisabled("Rotation speed multiplier (0 = no rotation)"); @@ -248,6 +264,9 @@ namespace Donut if (ImGui::SliderFloat("Blur Strength", &blurStrength, 0.5f, 5.0f, "%.2f")) { engine.SetBlurStrength(blurStrength); + SimulationSettings settings = SettingsManager::GetSettingsConst().simulation; + settings.blurStrength = blurStrength; + SettingsManager::SetSimulationSettings(settings); } ImGui::TextDisabled("Blur radius for glow effect"); @@ -255,6 +274,9 @@ namespace Donut if (ImGui::SliderFloat("Glow Intensity", &glowIntensity, 0.1f, 3.0f, "%.2f")) { engine.SetGlowIntensity(glowIntensity); + SimulationSettings settings = SettingsManager::GetSettingsConst().simulation; + settings.glowIntensity = glowIntensity; + SettingsManager::SetSimulationSettings(settings); } ImGui::TextDisabled("Intensity of the glow effect"); |
