diff options
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 27 | ||||
| -rw-r--r-- | indra/newview/llwaterparammanager.cpp | 28 | ||||
| -rw-r--r-- | indra/newview/llwaterparammanager.h | 6 | 
3 files changed, 61 insertions, 0 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 6630d8f400..8bb60267da 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -11849,6 +11849,33 @@        <key>Value</key>        <integer>0</integer>      </map> +    <key>WaterFogColor</key> +    <map> +      <key>Comment</key> +      <string>Water fog color</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Color4</string> +      <key>Value</key> +      <array> +        <real>22</real> +        <real>43</real> +        <real>54</real> +        <real>0</real> +    </array> +    </map> +    <key>WaterFogDensity</key> +    <map> +      <key>Comment</key> +      <string>Water fog density</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>F32</string> +      <key>Value</key> +      <real>16.0</real> +    </map>      <key>WaterGLFogDensityScale</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp index d239347810..206570e247 100644 --- a/indra/newview/llwaterparammanager.cpp +++ b/indra/newview/llwaterparammanager.cpp @@ -72,6 +72,7 @@ LLWaterParamManager::LLWaterParamManager() :  	mWave1Dir(.5f, .5f, "wave1Dir"),  	mWave2Dir(.5f, .5f, "wave2Dir"),  	mDensitySliderValue(1.0f), +	mPrevFogDensity(16.0f), // 2^4  	mWaterFogKS(1.0f)  {  } @@ -264,6 +265,20 @@ void LLWaterParamManager::update(LLViewerCamera * cam)  	// 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<LLFloaterWater>("env_water"); @@ -449,7 +464,20 @@ LLWaterParamManager * LLWaterParamManager::instance()  		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"); +	mCurParams.set("waterFogColor", mPrevFogColor = mFogColor = fog_color_override); + +	// Do the same with fog density. +	F32 fog_density = gSavedSettings.getF32("WaterFogDensity"); +	mCurParams.set("waterFogDensity", mPrevFogDensity = mFogDensity = fog_density); +	setDensitySliderValue(mFogDensity.mExp); +} diff --git a/indra/newview/llwaterparammanager.h b/indra/newview/llwaterparammanager.h index c479f1861c..20556926ab 100644 --- a/indra/newview/llwaterparammanager.h +++ b/indra/newview/llwaterparammanager.h @@ -284,6 +284,9 @@ public:  	// singleton pattern implementation  	static LLWaterParamManager * instance(); +private: +	void initOverrides(); +  public:  	LLWaterParamSet mCurParams; @@ -314,6 +317,9 @@ private:  	LLVector4 mWaterPlane;  	F32 mWaterFogKS; +	LLColor4	mPrevFogColor; +	F32			mPrevFogDensity; +  	// our parameter manager singleton instance  	static LLWaterParamManager * sInstance;  }; | 
