From 9d7c7d178919b0536dd8f2190759fc8fb46b531c Mon Sep 17 00:00:00 2001 From: SkrubbySkrubInAShrub Date: Thu, 29 Jan 2026 13:13:24 +0100 Subject: [PATCH] cache last weather like how weather picker does it. --- src/WeatherManager.cpp | 10 +++++++++- src/WeatherManager.h | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/WeatherManager.cpp b/src/WeatherManager.cpp index ab5d54d7af..8e97e26713 100644 --- a/src/WeatherManager.cpp +++ b/src/WeatherManager.cpp @@ -12,9 +12,16 @@ WeatherManager::CurrentWeathers WeatherManager::GetCurrentWeathers() } result.currentWeather = sky->currentWeather; - result.lastWeather = sky->lastWeather; result.lerpFactor = sky->currentWeatherPct; + // Update cache: store current lastWeather if it exists, otherwise keep the cached one + if (sky->lastWeather) { + cachedLastWeather = sky->lastWeather; + } + + // Use cached last weather if sky->lastWeather is null + result.lastWeather = sky->lastWeather ? sky->lastWeather : cachedLastWeather; + return result; } @@ -260,5 +267,6 @@ void WeatherManager::ClearCache() { perWeatherSettingsCache.clear(); lastKnownWeather = CurrentWeathers(); + cachedLastWeather = nullptr; logger::info("Cleared WeatherManager cache"); } diff --git a/src/WeatherManager.h b/src/WeatherManager.h index 3b9fbe8f9c..66dc042d5b 100644 --- a/src/WeatherManager.h +++ b/src/WeatherManager.h @@ -57,4 +57,7 @@ class WeatherManager // Track last known weather state to detect changes CurrentWeathers lastKnownWeather; + + // Cached last weather - sky->lastWeather can be cleared before currentWeatherPct reaches 1.0 + RE::TESWeather* cachedLastWeather = nullptr; };