From 7fd0e92b89a1a515e62c11652d5af8c3799e9a43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E8=82=B2=E5=98=89?= Date: Wed, 2 Apr 2025 15:56:54 +0800 Subject: [PATCH 1/2] add wetness override --- src/Features/WetnessEffects.cpp | 64 +++++++++++++++++++++++++++++++-- src/Features/WetnessEffects.h | 11 ++++++ 2 files changed, 73 insertions(+), 2 deletions(-) diff --git a/src/Features/WetnessEffects.cpp b/src/Features/WetnessEffects.cpp index daa012b714..47da320b8b 100644 --- a/src/Features/WetnessEffects.cpp +++ b/src/Features/WetnessEffects.cpp @@ -32,6 +32,16 @@ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT( RippleBreadth, RippleLifetime) +NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT( + WetnessEffects::DebugSettings, + EnableWetnessOverride, + EnablePuddleOverride, + EnableRainOverride, + EnableIntExOverride, + WetnessOverride, + PuddleWetnessOverride, + RainOverride) + // Climate preset data - defines regional weather characteristics // Precipitation rates calculated from actual shader mechanics: grid size, interval, and raindrop chance @@ -477,6 +487,30 @@ void WetnessEffects::DrawSettings() ImGui::Text("Open the installed %s feature", weatherPicker.GetShortName().c_str()); } } + + if (ImGui::TreeNodeEx("Debug", ImGuiTreeNodeFlags_DefaultOpen)) { + ImGui::Checkbox("Enable Wetness Override", &debugSettings.EnableWetnessOverride); + ImGui::Checkbox("Enable Puddle Override", &debugSettings.EnablePuddleOverride); + ImGui::Checkbox("Enable Rain Override", &debugSettings.EnableRainOverride); + ImGui::Checkbox("Enable Interior/Exterior Override", &debugSettings.EnableIntExOverride); + if (auto _tt = Util::HoverTooltipWrapper()) { + ImGui::Text( + "If disabled, will only use the exterior value. "); + } + + if (debugSettings.EnableWetnessOverride) { + ImGui::SliderFloat2("Wetness In/Exterior", &debugSettings.WetnessOverride.x, 0.0f, 2.0f); + } + + if (debugSettings.EnablePuddleOverride) { + ImGui::SliderFloat2("Puddle Wetness In/Exterior", &debugSettings.PuddleWetnessOverride.x, 0.0f, 2.0f); + } + + if (debugSettings.EnableRainOverride) { + ImGui::SliderFloat2("Rain In/Exterior", &debugSettings.RainOverride.x, 0.0f, 1.0f); + } + ImGui::TreePop(); + } } // ===================== @@ -712,6 +746,25 @@ WetnessEffects::PerFrame WetnessEffects::GetCommonBufferData() const float combinedPuddleWetness = std::min(1.0f, currentWeatherResult.puddleWetness + lastWeatherResult.puddleWetness); data.Wetness = combinedWetness; data.PuddleWetness = combinedPuddleWetness; + if (debugSettings.EnableWetnessOverride) { + data.Wetness = debugSettings.WetnessOverride.y; + } + if (debugSettings.EnablePuddleOverride) { + data.PuddleWetness = debugSettings.PuddleWetnessOverride.y; + } + if (debugSettings.EnableRainOverride) { + data.Raining = debugSettings.RainOverride.y; + } + } else { + if (debugSettings.EnableWetnessOverride) { + data.Wetness = debugSettings.EnableIntExOverride ? debugSettings.WetnessOverride.x : debugSettings.WetnessOverride.y; + } + if (debugSettings.EnablePuddleOverride) { + data.PuddleWetness = debugSettings.EnableIntExOverride ? debugSettings.PuddleWetnessOverride.x : debugSettings.PuddleWetnessOverride.y; + } + if (debugSettings.EnableRainOverride) { + data.Raining = debugSettings.EnableIntExOverride ? debugSettings.RainOverride.x : debugSettings.RainOverride.y; + } } } } @@ -743,19 +796,26 @@ void WetnessEffects::Prepass() void WetnessEffects::LoadSettings(json& o_json) { - settings = o_json; + settings = o_json; // Auto-detect which preset matches the loaded settings DetectCurrentPreset(); Ripples::UpdateSettings(); // Sync cached values after loading + + if (o_json.contains("DebugSettings")) { + debugSettings = o_json["DebugSettings"].get(); + } } void WetnessEffects::SaveSettings(json& o_json) { - o_json = settings; + o_json = settings; + + o_json["DebugSettings"] = debugSettings; } + void WetnessEffects::RestoreDefaultSettings() { settings = {}; diff --git a/src/Features/WetnessEffects.h b/src/Features/WetnessEffects.h index 7be4da6929..a69ee3ccb1 100644 --- a/src/Features/WetnessEffects.h +++ b/src/Features/WetnessEffects.h @@ -70,6 +70,17 @@ struct WetnessEffects : Feature uint pad0; }; + struct DebugSettings + { + bool EnableWetnessOverride = false; + bool EnablePuddleOverride = false; + bool EnableRainOverride = false; + bool EnableIntExOverride = false; + float2 WetnessOverride = float2(0.0f, 0.0f); + float2 PuddleWetnessOverride = float2(0.0f, 0.0f); + float2 RainOverride = float2(0.0f, 0.0f); + } debugSettings; + Settings settings; // Climate preset system enum class ClimatePreset : uint32_t From d37dc390686f2e850070a6e9a5033d38893cd416 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 30 Jul 2025 10:35:29 +0000 Subject: [PATCH 2/2] =?UTF-8?q?style:=20=F0=9F=8E=A8=20apply=20pre-commit.?= =?UTF-8?q?ci=20formatting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Automated formatting by clang-format, prettier, and other hooks. See https://pre-commit.ci for details. --- src/Features/WetnessEffects.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Features/WetnessEffects.cpp b/src/Features/WetnessEffects.cpp index 47da320b8b..69722bbeec 100644 --- a/src/Features/WetnessEffects.cpp +++ b/src/Features/WetnessEffects.cpp @@ -796,26 +796,25 @@ void WetnessEffects::Prepass() void WetnessEffects::LoadSettings(json& o_json) { - settings = o_json; + settings = o_json; // Auto-detect which preset matches the loaded settings DetectCurrentPreset(); Ripples::UpdateSettings(); // Sync cached values after loading - if (o_json.contains("DebugSettings")) { - debugSettings = o_json["DebugSettings"].get(); - } + if (o_json.contains("DebugSettings")) { + debugSettings = o_json["DebugSettings"].get(); + } } void WetnessEffects::SaveSettings(json& o_json) { - o_json = settings; + o_json = settings; - o_json["DebugSettings"] = debugSettings; + o_json["DebugSettings"] = debugSettings; } - void WetnessEffects::RestoreDefaultSettings() { settings = {};