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()