diff -r 33ca961b0870 indra/newview/app_settings/settings.xml --- a/indra/newview/app_settings/settings.xml Tue Apr 05 07:23:43 2011 -0400 +++ b/indra/newview/app_settings/settings.xml Wed Apr 06 14:53:43 2011 -0700 @@ -11926,6 +11926,33 @@ Value 0 + WaterFogColor + + Comment + Water fog color + Persist + 1 + Type + Color4 + Value + + 0.0863 + 0.168 + 0.212 + 0 + + + WaterFogDensity + + Comment + Water fog density + Persist + 1 + Type + F32 + Value + 16.0 + WaterGLFogDensityScale Comment diff -r 33ca961b0870 indra/newview/llwaterparammanager.h --- a/indra/newview/llwaterparammanager.h Tue Apr 05 07:23:43 2011 -0400 +++ b/indra/newview/llwaterparammanager.h Wed Apr 06 14:53:43 2011 -0700 @@ -284,6 +284,9 @@ // singleton pattern implementation static LLWaterParamManager * instance(); +private: + void initOverrides(); + public: LLWaterParamSet mCurParams; @@ -314,6 +317,9 @@ LLVector4 mWaterPlane; F32 mWaterFogKS; + LLColor4 mPrevFogColor; + F32 mPrevFogDensity; + // our parameter manager singleton instance static LLWaterParamManager * sInstance; }; diff -r 33ca961b0870 indra/newview/llwaterparammanager.cpp --- a/indra/newview/llwaterparammanager.cpp Tue Apr 05 07:23:43 2011 -0400 +++ b/indra/newview/llwaterparammanager.cpp Wed Apr 06 14:53:43 2011 -0700 @@ -72,6 +72,8 @@ mWave1Dir(.5f, .5f, "wave1Dir"), mWave2Dir(.5f, .5f, "wave2Dir"), mDensitySliderValue(1.0f), + mPrevFogDensity(16.0f), // 2^4 + mPrevFogColor(22.f/255.f, 43.f/255.f, 54.f/255.f, 0.0f), mWaterFogKS(1.0f) { } @@ -265,6 +267,20 @@ // update the shaders and the menu propagateParameters(); + // If water fog color has been changed, save it. + if (mPrevFogColor != mFogColor) + { + gSavedSettings.setColor4("WaterFogColor", mFogColor); + mPrevFogColor = mFogColor; + } + + // If water fog density has been changed, save it. + if (mPrevFogDensity != mFogDensity) + { + gSavedSettings.setF32("WaterFogDensity", mFogDensity); + mPrevFogDensity = mFogDensity; + } + // sync menus if they exist LLFloaterWater* waterfloater = LLFloaterReg::findTypedInstance("env_water"); if(waterfloater) @@ -449,7 +465,24 @@ sInstance->loadAllPresets(LLStringUtil::null); sInstance->getParamSet("Default", sInstance->mCurParams); + sInstance->initOverrides(); } return sInstance; } + +void LLWaterParamManager::initOverrides() +{ + // Override fog color from the current preset with the saved setting. + LLColor4 fog_color_override = gSavedSettings.getColor4("WaterFogColor"); + mFogColor = fog_color_override; + mPrevFogColor = fog_color_override; + mCurParams.set("waterFogColor", fog_color_override); + + // Do the same with fog density. + F32 fog_density = gSavedSettings.getF32("WaterFogDensity"); + mPrevFogDensity = fog_density; + mFogDensity = fog_density; + mCurParams.set("waterFogDensity", fog_density); + setDensitySliderValue(mFogDensity.mExp); +}