diff --git a/indra/newview/llenvmanager.cpp b/indra/newview/llenvmanager.cpp index 9f2a1a8afd..8f87410011 100755 --- a/indra/newview/llenvmanager.cpp +++ b/indra/newview/llenvmanager.cpp @@ -347,7 +347,11 @@ void LLEnvManagerNew::setUserPrefs( const std::string& sky_preset, const std::string& day_cycle_preset, bool use_fixed_sky, - bool use_region_settings) + // Allow interpolation + //bool use_region_settings) + bool use_region_settings, + bool interpolate) + // { // operate on members directly to avoid side effects mUserPrefs.mWaterPresetName = water_preset; @@ -358,7 +362,10 @@ void LLEnvManagerNew::setUserPrefs( mUserPrefs.mUseDayCycle = !use_fixed_sky; saveUserPrefs(); - updateManagersFromPrefs(false); + // Allow interpolation + //updateManagersFromPrefs(false); + updateManagersFromPrefs(interpolate); + // } void LLEnvManagerNew::dumpUserPrefs() @@ -509,9 +516,10 @@ void LLEnvManagerNew::onRegionSettingsResponse(const LLSD& content) //bit of a hacky override since I've repurposed many of the settings and methods here -KC //NOTE* It might not be a good idea to do this if under RLV_BHVR_SETENV -KC else if (gSavedSettings.getBOOL("UseEnvironmentFromRegionAlways") - && !(rlv_handler_t::isEnabled() && gRlvHandler.hasBehaviour(RLV_BHVR_SETENV))) + && !(rlv_handler_t::isEnabled() && gRlvHandler.hasBehaviour(RLV_BHVR_SETENV))) { - setUseRegionSettings(true, mInterpNextChangeMessage); + // reset all environmental settings to track the region defaults, make this reset 'sticky' like the other sun settings. + setUserPrefs(getWaterPresetName(), getSkyPresetName(), getDayCycleName(), false, true, mInterpNextChangeMessage); } } diff --git a/indra/newview/llenvmanager.h b/indra/newview/llenvmanager.h index 850cebfd9a..0ee22cde8d 100755 --- a/indra/newview/llenvmanager.h +++ b/indra/newview/llenvmanager.h @@ -213,7 +213,11 @@ public: const std::string& sky_preset, const std::string& day_cycle_preset, bool use_fixed_sky, - bool use_region_settings); + // Allow interpolation + //bool use_region_settings); + bool use_region_settings, + bool interpolate = false); + // // debugging methods void dumpUserPrefs(); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 13352486e5..2d9f8dccf4 100755 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -10045,7 +10045,7 @@ class LLWorldEnvSettings : public view_listener_t envmgr.setUserPrefs(envmgr.getWaterPresetName(), envmgr.getSkyPresetName(), envmgr.getDayCycleName(), - use_fixed_sky, use_region_settings); + use_fixed_sky, use_region_settings, false); } return true; diff --git a/indra/newview/quickprefs.cpp b/indra/newview/quickprefs.cpp index 9e2070d3b9..775066c23b 100644 --- a/indra/newview/quickprefs.cpp +++ b/indra/newview/quickprefs.cpp @@ -553,7 +553,15 @@ void FloaterQuickPrefs::selectDayCyclePreset(const std::string& preset_name) void FloaterQuickPrefs::onChangeUseRegionWindlight() { - LLEnvManagerNew::instance().setUseRegionSettings(mUseRegionWindlight->get(), (gSavedSettings.getBOOL("FSInterpolateSky") || gSavedSettings.getBOOL("FSInterpolateWater"))); + LLEnvManagerNew &envmgr = LLEnvManagerNew::instance(); + // reset all environmental settings to track the region defaults, make this reset 'sticky' like the other sun settings. + bool use_fixed_sky = !mUseRegionWindlight->get(); + bool use_region_settings = !use_fixed_sky; + envmgr.setUserPrefs(envmgr.getWaterPresetName(), + envmgr.getSkyPresetName(), + envmgr.getDayCycleName(), + use_fixed_sky, use_region_settings, + (gSavedSettings.getBOOL("FSInterpolateSky") || gSavedSettings.getBOOL("FSInterpolateWater"))); } void FloaterQuickPrefs::onChangeWaterPreset()