aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-04-04 19:37:31 +1000
committerDavid Walter Seikel2012-04-04 19:37:31 +1000
commit1e22c4f3610dcb2854ab6bcc0425cfbf3a820293 (patch)
tree14a0582bf3600735aa34d4ab01ab74e2d87e84ce /linden/indra/newview
parentWhite space fixes. Nothing to see here, move along. (diff)
downloadmeta-impy-1e22c4f3610dcb2854ab6bcc0425cfbf3a820293.zip
meta-impy-1e22c4f3610dcb2854ab6bcc0425cfbf3a820293.tar.gz
meta-impy-1e22c4f3610dcb2854ab6bcc0425cfbf3a820293.tar.bz2
meta-impy-1e22c4f3610dcb2854ab6bcc0425cfbf3a820293.tar.xz
More Windlight refactoring, including moving the new stuff back to lightshare.c.
What works seems to work fine. Still more work to do, but I might punt some of it to 1.5.
Diffstat (limited to 'linden/indra/newview')
-rw-r--r--linden/indra/newview/lightshare.cpp210
-rw-r--r--linden/indra/newview/lightshare.h27
-rw-r--r--linden/indra/newview/llwaterparammanager.cpp11
-rw-r--r--linden/indra/newview/llwaterparamset.h1
-rw-r--r--linden/indra/newview/llwlparammanager.cpp117
-rw-r--r--linden/indra/newview/llwlparammanager.h16
-rw-r--r--linden/indra/newview/llwlparamset.h2
7 files changed, 243 insertions, 141 deletions
diff --git a/linden/indra/newview/lightshare.cpp b/linden/indra/newview/lightshare.cpp
index 378a755..db391f5 100644
--- a/linden/indra/newview/lightshare.cpp
+++ b/linden/indra/newview/lightshare.cpp
@@ -1,9 +1,10 @@
1/** 1/**
2 * @file lightshare.cpp 2 * @file lightshare.cpp
3 * @brief Handler for Meta7 Lightshare (region-side Windlight settings). 3 * @brief Handler for Meta7 Lightshare (region-side Windlight settings), and other methods of sharing WindLight.
4 * 4 *
5 * Copyright (c) 2010, Tom Grimshaw (Tom Meta) 5 * Copyright (c) 2010, Tom Grimshaw (Tom Meta)
6 * Copyright (c) 2010, Jacek Antonelli 6 * Copyright (c) 2010, Jacek Antonelli
7 * Copyright (c) 2012, David Seikel
7 * 8 *
8 * The source code in this file ("Source Code") is provided to you 9 * The source code in this file ("Source Code") is provided to you
9 * under the terms of the GNU General Public License, version 2.0 10 * under the terms of the GNU General Public License, version 2.0
@@ -43,6 +44,10 @@
43#include "llworld.h" 44#include "llworld.h"
44 45
45 46
47const std::string LightShare::sRegionPresetName = "(Region settings)";
48const std::string LightShare::sParcelPresetName = "(Parcel settings)";
49const std::string LightShare::sRLVPresetName = "(RLV settings)";
50
46 51
47LLWaterParamSet* LightShare::mWater = NULL; 52LLWaterParamSet* LightShare::mWater = NULL;
48LLWLParamSet* LightShare::mSky = NULL; 53LLWLParamSet* LightShare::mSky = NULL;
@@ -131,12 +136,12 @@ void LightShare::applyMaybe(LLWaterParamSet* thisWater, LLUUID* thisWaterNormal,
131 // If they are using region settings already, or LightShare is 136 // If they are using region settings already, or LightShare is
132 // always allowed, just apply the new settings, don't bother asking. 137 // always allowed, just apply the new settings, don't bother asking.
133 if( gSavedSettings.getU32("LightShareAllowed") == LIGHTSHARE_ALWAYS || 138 if( gSavedSettings.getU32("LightShareAllowed") == LIGHTSHARE_ALWAYS ||
134 (sky == LLWLParamManager::sSkyPresetName && water == LLWLParamManager::sWaterPresetName) ) 139 (sky == sRegionPresetName && water == sRegionPresetName) )
135 { 140 {
136 mSky = thisSky; 141 mSky = thisSky;
137 mWater = thisWater; 142 mWater = thisWater;
138 mWaterNormal = thisWaterNormal; 143 mWaterNormal = thisWaterNormal;
139 LLWLParamManager::apply(mWater, mWaterNormal, mSky); 144 apply(mWater, mWaterNormal, mSky, WL_SCOPE_REGION);
140 return; 145 return;
141 } 146 }
142 147
@@ -182,7 +187,7 @@ bool LightShare::applyCallback(const LLSD& notification, const LLSD& response)
182 { 187 {
183 case 0:{ 188 case 0:{
184 // "Apply" 189 // "Apply"
185 LLWLParamManager::apply(mWater, mWaterNormal, mSky); 190 apply(mWater, mWaterNormal, mSky, WL_SCOPE_REGION);
186 191
187 break; 192 break;
188 } 193 }
@@ -205,7 +210,7 @@ bool LightShare::applyCallback(const LLSD& notification, const LLSD& response)
205void LightShare::resetRegion() 210void LightShare::resetRegion()
206{ 211{
207 sIgnoreRegion = false; 212 sIgnoreRegion = false;
208 LLWorld::getInstance()->rebuildClouds(gAgent.getRegion()); 213 apply(NULL, NULL, NULL, WL_SCOPE_REGION);
209} 214}
210 215
211// static 216// static
@@ -222,6 +227,201 @@ bool LightShare::ignoreTimerHasExpired()
222 return sIgnoreTimer->hasExpired(); 227 return sIgnoreTimer->hasExpired();
223} 228}
224 229
230// TODO - have regionSet and parcelSet be arrays, so we can deal with height zones.
231static struct WLCombined userSet, regionSet, parcelSet, RLVSet;
232
233// TODO - should spread this merging stuff around,
234// so that eventually we can get rid of almost identical code for water and sky.
235// Then one of these two methods goes away.
236
237//static
238void LightShare::mergeWaterSets(LLWaterParamSet* thisSet, LLWaterParamSet* oldSet)
239{
240 for(LLSD::map_const_iterator i = thisSet->mParamValues.beginMap();
241 i != thisSet->mParamValues.endMap();
242 ++i)
243 {
244 const std::string& param = i->first;
245
246 if(i->second.isArray())
247 {
248 for (int j = 0; j < i->second.size(); j++)
249 {
250 oldSet->mParamValues[param][j] = i->second[j].asReal();
251 }
252 }
253 else if(i->second.isReal())
254 oldSet->mParamValues[param] = i->second.asReal();
255 }
256}
257
258//static
259void LightShare::mergeWLSets(LLWLParamSet* thisSet, LLWLParamSet* oldSet)
260{
261 for(LLSD::map_const_iterator i = thisSet->mParamValues.beginMap();
262 i != thisSet->mParamValues.endMap();
263 ++i)
264 {
265 const std::string& param = i->first;
266
267 if(i->second.isArray())
268 {
269 for (int j = 0; j < i->second.size(); j++)
270 {
271 oldSet->mParamValues[param][j] = i->second[j].asReal();
272 }
273 }
274 else if(i->second.isReal())
275 oldSet->mParamValues[param] = i->second.asReal();
276 }
277}
278
279//static
280void LightShare::apply(LLWaterParamSet * newWater, LLUUID *newWaterNormal, LLWLParamSet *newSky, WLScope scope)
281// TODO - Deal with day cycle stuff.
282{
283 LLWaterParamManager* waterMgr = LLWaterParamManager::instance();
284 LLWLParamManager* skyMgr = LLWLParamManager::instance();
285 LLWaterParamSet oldWaterSet = waterMgr->mCurParams;
286 LLWLParamSet oldWLSet = skyMgr->mCurParams;
287 struct WLCombined* thisSet = &userSet;
288 bool user = true;
289
290 switch(scope)
291 {
292 case WL_SCOPE_USER :
293 {
294 thisSet = &userSet;
295 thisSet->water.mName = waterMgr->mCurParams.mName;
296 thisSet->sky.mName = skyMgr->mCurParams.mName;
297 thisSet->enabled = true;
298 // Check if user selected to show the saved region or parcel settings.
299 if (newSky && (sRegionPresetName == skyMgr->mCurParams.mName))
300 thisSet->enabled = false;
301 if (newWater && (sParcelPresetName == skyMgr->mCurParams.mName))
302 thisSet->enabled = false;
303 break;
304 }
305 case WL_SCOPE_REGION :
306 {
307 thisSet = &regionSet;
308 thisSet->water.mName = sRegionPresetName;
309 thisSet->sky.mName = sRegionPresetName;
310 thisSet->enabled = (gSavedSettings.getU32("LightShareAllowed") != LIGHTSHARE_NEVER);
311 break;
312 }
313 case WL_SCOPE_PARCEL :
314 {
315 thisSet = &parcelSet;
316 thisSet->water.mName = sParcelPresetName;
317 thisSet->sky.mName = sParcelPresetName;
318 thisSet->enabled = (gSavedSettings.getU32("LightShareAllowed") != LIGHTSHARE_NEVER);
319 break;
320 }
321 case WL_SCOPE_RLV :
322 {
323 thisSet = &RLVSet;
324 thisSet->water.mName = sRLVPresetName;
325 thisSet->sky.mName = sRLVPresetName;
326 // TODO set enabled properly.
327 break;
328 }
329 }
330
331 if (newWater)
332 thisSet->water.setAll(newWater->getAll());
333 if (newWaterNormal)
334 thisSet->water.mParamValues["normalMap"] = *newWaterNormal;
335 if (newSky)
336 thisSet->sky.setAll(newSky->getAll());
337
338 if ((NULL == newWater) && (NULL == newSky))
339 thisSet->enabled = false;
340
341 F32 fade = 0; //Instant
342 bool error;
343 fade = thisSet->sky.getFloat("fade", error);
344
345 if (fade)
346 {
347 // TODO - should copy the original, then set that here.
348 // The fade should delete this copy once it's done fading.
349 // Dunno if we actually need to do any of this anyway.
350 waterMgr->removeParamSet( oldWaterSet.mName, false );
351 waterMgr->addParamSet( oldWaterSet.mName, oldWaterSet );
352 waterMgr->setNormalMapID( *newWaterNormal );
353 waterMgr->getParamSet(oldWaterSet.mName, waterMgr->mCurParams);
354 waterMgr->propagateParameters();
355
356 skyMgr->removeParamSet( oldWLSet.mName, false );
357 skyMgr->addParamSet( oldWLSet.mName, oldWLSet );
358 skyMgr->getParamSet(oldWLSet.mName, skyMgr->mCurParams);
359 skyMgr->propagateParameters();
360 }
361
362 if (regionSet.enabled)
363 {
364 waterMgr->setParamSet( regionSet.water.mName, regionSet.water );
365 skyMgr->setParamSet( regionSet.sky.mName, regionSet.sky );
366 mergeWaterSets(&(regionSet.water), &oldWaterSet);
367 mergeWLSets(&(regionSet.sky), &oldWLSet);
368 }
369 else
370 {
371 waterMgr->removeParamSet( regionSet.water.mName, false );
372 skyMgr->removeParamSet( regionSet.sky.mName, false );
373 }
374 if (parcelSet.enabled)
375 {
376 waterMgr->setParamSet( parcelSet.water.mName, parcelSet.water );
377 skyMgr->setParamSet( parcelSet.sky.mName, parcelSet.sky );
378 mergeWaterSets(&(parcelSet.water), &oldWaterSet);
379 mergeWLSets(&(parcelSet.sky), &oldWLSet);
380 }
381 else
382 {
383 waterMgr->removeParamSet( parcelSet.water.mName, false );
384 skyMgr->removeParamSet( parcelSet.sky.mName, false );
385 }
386 if (userSet.enabled)
387 {
388 mergeWaterSets(&(userSet.water), &oldWaterSet);
389 mergeWLSets(&(userSet.sky), &oldWLSet);
390 }
391 if (RLVSet.enabled)
392 {
393 mergeWaterSets(&(RLVSet.water), &oldWaterSet);
394 mergeWLSets(&(RLVSet.sky), &oldWLSet);
395 }
396
397 skyMgr->mAnimator.mIsRunning = false;
398 skyMgr->mAnimator.mUseLindenTime = false;
399 if (fade)
400 {
401 waterMgr->SetMixTime(&oldWaterSet, fade);
402 skyMgr->SetMixTime(&oldWLSet, fade);
403 }
404 else
405 {
406 if (newWater)
407 {
408 waterMgr->setParamSet( thisSet->water.mName, oldWaterSet );
409 waterMgr->setNormalMapID( *newWaterNormal );
410 waterMgr->getParamSet(thisSet->water.mName, waterMgr->mCurParams);
411 waterMgr->propagateParameters();
412 }
413
414 if (newSky)
415 {
416 skyMgr->setParamSet( thisSet->sky.mName, oldWLSet );
417 skyMgr->getParamSet(thisSet->sky.mName, skyMgr->mCurParams);
418 skyMgr->propagateParameters();
419 }
420 }
421
422 LLWorld::getInstance()->rebuildClouds(gAgent.getRegion());
423}
424
225bool LightShare::isValid() 425bool LightShare::isValid()
226{ 426{
227 return mIsValid; 427 return mIsValid;
diff --git a/linden/indra/newview/lightshare.h b/linden/indra/newview/lightshare.h
index 1df2084..3561a91 100644
--- a/linden/indra/newview/lightshare.h
+++ b/linden/indra/newview/lightshare.h
@@ -37,6 +37,21 @@
37struct Meta7WindlightPacket; 37struct Meta7WindlightPacket;
38 38
39 39
40typedef enum wl_scope
41{
42 WL_SCOPE_USER,
43 WL_SCOPE_REGION,
44 WL_SCOPE_PARCEL,
45 WL_SCOPE_RLV
46} WLScope;
47
48struct WLCombined
49{
50 LLWaterParamSet water;
51 LLWLParamSet sky;
52 BOOL enabled;
53};
54
40// Encapsulates a "Windlight" (LightShare) message sent from the 55// Encapsulates a "Windlight" (LightShare) message sent from the
41// region, allowing the settings to be applied at a later time. 56// region, allowing the settings to be applied at a later time.
42// 57//
@@ -51,6 +66,13 @@ public:
51 LIGHTSHARE_ALWAYS = 2, 66 LIGHTSHARE_ALWAYS = 2,
52 }; 67 };
53 68
69 // The name of the preset where the region settings are stored.
70 static const std::string sRegionPresetName;
71 // The name of the preset where the parcel settings are stored.
72 static const std::string sParcelPresetName;
73 // The name of the preset where the RLV settings are stored.
74 static const std::string sRLVPresetName;
75
54 // Constructs a new LightShare instance from a GenericMessage 76 // Constructs a new LightShare instance from a GenericMessage
55 // with the "Windlight" method, such as those sent by a 77 // with the "Windlight" method, such as those sent by a
56 // Lightshare-enabled OpenSim region. 78 // Lightshare-enabled OpenSim region.
@@ -72,6 +94,8 @@ public:
72 // (But there's no real validation yet, so this is always true.) 94 // (But there's no real validation yet, so this is always true.)
73 bool isValid(); 95 bool isValid();
74 96
97 static void apply(LLWaterParamSet * newWater, LLUUID *newWaterNormal, LLWLParamSet *newSky, WLScope scope);
98
75private: 99private:
76 static LLTimer* sIgnoreTimer; 100 static LLTimer* sIgnoreTimer;
77 static bool sIgnoreRegion; 101 static bool sIgnoreRegion;
@@ -100,6 +124,9 @@ private:
100 // Returns true if the ignore timer has expired (i.e. new settings 124 // Returns true if the ignore timer has expired (i.e. new settings
101 // should not be ignored anymore). 125 // should not be ignored anymore).
102 static bool ignoreTimerHasExpired(); 126 static bool ignoreTimerHasExpired();
127
128 static void mergeWaterSets(LLWaterParamSet* thisSet, LLWaterParamSet* oldSet);
129 static void mergeWLSets(LLWLParamSet* thisSet, LLWLParamSet* oldSet);
103}; 130};
104 131
105#endif 132#endif
diff --git a/linden/indra/newview/llwaterparammanager.cpp b/linden/indra/newview/llwaterparammanager.cpp
index 9d0fd86..6e2b420 100644
--- a/linden/indra/newview/llwaterparammanager.cpp
+++ b/linden/indra/newview/llwaterparammanager.cpp
@@ -69,6 +69,7 @@
69 69
70#include "llwlparammanager.h" 70#include "llwlparammanager.h"
71#include "llwaterparamset.h" 71#include "llwaterparamset.h"
72#include "lightshare.h"
72#include "llpostprocess.h" 73#include "llpostprocess.h"
73#include "llfloaterwater.h" 74#include "llfloaterwater.h"
74 75
@@ -159,7 +160,7 @@ void LLWaterParamManager::loadPreset(const std::string & name,bool propagate)
159 if(propagate) 160 if(propagate)
160 { 161 {
161 getParamSet(name, mCurParams); 162 getParamSet(name, mCurParams);
162 propagateParameters(); 163 LightShare::apply(&mCurParams, NULL, NULL, WL_SCOPE_USER);
163 } 164 }
164 return; 165 return;
165 } 166 }
@@ -200,21 +201,21 @@ void LLWaterParamManager::loadPreset(const std::string & name,bool propagate)
200 if(propagate) 201 if(propagate)
201 { 202 {
202 getParamSet(name, mCurParams); 203 getParamSet(name, mCurParams);
203 propagateParameters(); 204 LightShare::apply(&mCurParams, NULL, NULL, WL_SCOPE_USER);
204 } 205 }
205} 206}
206 207
207bool LLWaterParamManager::loadPresetXML(const std::string& name, std::istream& preset_stream, bool propagate /* = false */, bool check_if_real /* = false */) 208bool LLWaterParamManager::loadPresetXML(const std::string& name, std::istream& preset_stream, bool propagate /* = false */, bool check_if_real /* = false */)
208{ 209{
209 LLSD paramsData(LLSD::emptyMap()); 210 LLSD paramsData(LLSD::emptyMap());
210 211
211 LLPointer<LLSDParser> parser = new LLSDXMLParser(); 212 LLPointer<LLSDParser> parser = new LLSDXMLParser();
212 213
213 if(parser->parse(preset_stream, paramsData, LLSDSerialize::SIZE_UNLIMITED) == LLSDParser::PARSE_FAILURE) 214 if(parser->parse(preset_stream, paramsData, LLSDSerialize::SIZE_UNLIMITED) == LLSDParser::PARSE_FAILURE)
214 { 215 {
215 return false; 216 return false;
216 } 217 }
217 218
218 if(check_if_real) 219 if(check_if_real)
219 { 220 {
220 static const char* expected_windlight_settings[] = { 221 static const char* expected_windlight_settings[] = {
diff --git a/linden/indra/newview/llwaterparamset.h b/linden/indra/newview/llwaterparamset.h
index f2667ab..09da42b 100644
--- a/linden/indra/newview/llwaterparamset.h
+++ b/linden/indra/newview/llwaterparamset.h
@@ -48,6 +48,7 @@ class LLWaterParamSet
48{ 48{
49 friend class LLWaterParamManager; 49 friend class LLWaterParamManager;
50 friend class LLWLParamManager; 50 friend class LLWLParamManager;
51 friend class LightShare;
51 52
52public: 53public:
53 std::string mName; 54 std::string mName;
diff --git a/linden/indra/newview/llwlparammanager.cpp b/linden/indra/newview/llwlparammanager.cpp
index 75592da..b4d999c 100644
--- a/linden/indra/newview/llwlparammanager.cpp
+++ b/linden/indra/newview/llwlparammanager.cpp
@@ -34,6 +34,7 @@
34 34
35#include "llwlparammanager.h" 35#include "llwlparammanager.h"
36#include "llwaterparammanager.h" 36#include "llwaterparammanager.h"
37#include "lightshare.h"
37 38
38#include "pipeline.h" 39#include "pipeline.h"
39#include "llsky.h" 40#include "llsky.h"
@@ -77,9 +78,6 @@
77 78
78#include "curl/curl.h" 79#include "curl/curl.h"
79 80
80const std::string LLWLParamManager::sWaterPresetName = "(Region settings)";
81const std::string LLWLParamManager::sSkyPresetName = "(Region settings)";
82
83LLWLParamManager * LLWLParamManager::sInstance = NULL; 81LLWLParamManager * LLWLParamManager::sInstance = NULL;
84std::vector<LLWLPresetsObserver*> LLWLParamManager::sObservers; 82std::vector<LLWLPresetsObserver*> LLWLParamManager::sObservers;
85LLFrameTimer wlSmoothTransitionTimer; 83LLFrameTimer wlSmoothTransitionTimer;
@@ -346,7 +344,7 @@ void LLWLParamManager::loadPreset(const std::string & name,bool propagate)
346 if(propagate) 344 if(propagate)
347 { 345 {
348 getParamSet(name, mCurParams); 346 getParamSet(name, mCurParams);
349 propagateParameters(); 347 LightShare::apply(NULL, NULL, &mCurParams, WL_SCOPE_USER);
350 } 348 }
351 return; 349 return;
352 } 350 }
@@ -388,7 +386,7 @@ void LLWLParamManager::loadPreset(const std::string & name,bool propagate)
388 if(propagate) 386 if(propagate)
389 { 387 {
390 getParamSet(name, mCurParams); 388 getParamSet(name, mCurParams);
391 propagateParameters(); 389 LightShare::apply(NULL, NULL, &mCurParams, WL_SCOPE_USER);
392 } 390 }
393 391
394 notifyObservers(); 392 notifyObservers();
@@ -859,112 +857,3 @@ bool LLWLParamManager::isSettingsNotecard(std::string name)
859{ 857{
860 return (isSkySettingsNotecard(name) || isWaterSettingsNotecard(name)); 858 return (isSkySettingsNotecard(name) || isWaterSettingsNotecard(name));
861} 859}
862
863
864struct WLCombined userSet, regionSet, parcelSet, RLVSet;
865
866//static
867void LLWLParamManager::apply(LLWaterParamSet * newWater, LLUUID *newWaterNormal, LLWLParamSet *newSky)
868// TODO - Pass in scope and day cycle stuff.
869{
870 LLWaterParamManager* waterMgr = LLWaterParamManager::instance();
871 LLWLParamManager* skyMgr = LLWLParamManager::instance();
872 struct WLCombined* thisSet = &userSet;
873
874// if (region == scope)
875 thisSet = &regionSet;
876// if (parcel== scope)
877// thisSet = &parcelSet;
878// if (RLV == scope)
879// thisSet = &RLVSet;
880
881 thisSet->water.setAll(newWater->getAll());
882 thisSet->water.mParamValues["normalMap"] = *newWaterNormal;
883 thisSet->sky.setAll(newSky->getAll());
884
885// TODO - if scope is region or parcel, and not using server settings
886// return
887
888 thisSet->enabled = true;
889
890 F32 fade = 0; //Instant
891 bool error;
892 fade = newSky->getFloat("fade", error);
893
894 newWater->mName = sWaterPresetName;
895 newSky->mName = sSkyPresetName;
896 LLWaterParamSet oldWaterSet = waterMgr->mCurParams;
897 LLWLParamSet oldWLSet = skyMgr->mCurParams;
898
899 if (fade)
900 {
901 // TODO - should copy the original, then set that here.
902 // The fade should delete this copy once it's done fading.
903 waterMgr->removeParamSet( sWaterPresetName, false );
904 waterMgr->addParamSet( sWaterPresetName, oldWaterSet );
905 waterMgr->loadPreset( sWaterPresetName, true );
906 waterMgr->setNormalMapID( *newWaterNormal );
907
908 skyMgr->removeParamSet( sSkyPresetName, true );
909 skyMgr->addParamSet( sSkyPresetName, oldWLSet );
910 skyMgr->loadPreset( sSkyPresetName, true );
911 }
912
913 for(LLSD::map_const_iterator i = thisSet->water.mParamValues.beginMap();
914 i != thisSet->water.mParamValues.endMap();
915 ++i)
916 {
917 const std::string& param = i->first;
918
919 if(i->second.isArray())
920 {
921 for (int j = 0; j < i->second.size(); j++)
922 {
923 oldWaterSet.mParamValues[param][j] = i->second[j].asReal();
924 }
925 }
926 else if(i->second.isReal())
927 oldWaterSet.mParamValues[param] = i->second.asReal();
928 }
929
930 skyMgr->mAnimator.mIsRunning = false;
931 skyMgr->mAnimator.mUseLindenTime = false;
932 for(LLSD::map_const_iterator i = thisSet->sky.mParamValues.beginMap();
933 i != thisSet->sky.mParamValues.endMap();
934 ++i)
935 {
936 const std::string& param = i->first;
937
938 if(i->second.isArray())
939 {
940 for (int j = 0; j < i->second.size(); j++)
941 {
942 oldWLSet.mParamValues[param][j] = i->second[j].asReal();
943 }
944 }
945 else if(i->second.isReal())
946 oldWLSet.mParamValues[param] = i->second.asReal();
947 }
948
949// TODO - If RLV enabled
950// Loop through RLVSet, setting the values into the old one, but keeping old values that are not in RLVSet
951
952 if (fade)
953 {
954 waterMgr->SetMixTime(&oldWaterSet, fade);
955 skyMgr->SetMixTime(&oldWLSet, fade);
956 }
957 else
958 {
959 waterMgr->removeParamSet( sWaterPresetName, false );
960 waterMgr->addParamSet( sWaterPresetName, oldWaterSet );
961 waterMgr->loadPreset( sWaterPresetName, true );
962 waterMgr->setNormalMapID( *newWaterNormal );
963
964 skyMgr->removeParamSet( sSkyPresetName, true );
965 skyMgr->addParamSet( sSkyPresetName, oldWLSet );
966 skyMgr->loadPreset( sSkyPresetName, true );
967 }
968
969 LLWorld::getInstance()->rebuildClouds(gAgent.getRegion());
970}
diff --git a/linden/indra/newview/llwlparammanager.h b/linden/indra/newview/llwlparammanager.h
index 27e7663..034b2e6 100644
--- a/linden/indra/newview/llwlparammanager.h
+++ b/linden/indra/newview/llwlparammanager.h
@@ -230,8 +230,6 @@ public:
230 static bool isSkySettingsNotecard(std::string name); 230 static bool isSkySettingsNotecard(std::string name);
231 static bool isSettingsNotecard(std::string name); 231 static bool isSettingsNotecard(std::string name);
232 232
233 static void apply(LLWaterParamSet * newWater, LLUUID *newWaterNormal, LLWLParamSet *newSky);
234
235public: 233public:
236 234
237 // helper variables 235 // helper variables
@@ -288,12 +286,6 @@ public:
288 // list of all the parameters, listed by name 286 // list of all the parameters, listed by name
289 std::map<std::string, LLWLParamSet> mParamList; 287 std::map<std::string, LLWLParamSet> mParamList;
290 288
291 // The name of the water preset where the region settings are stored.
292 static const std::string sWaterPresetName;
293
294 // The name of the sky preset where the region settings are stored.
295 static const std::string sSkyPresetName;
296
297private: 289private:
298 // our parameter manager singleton instance 290 // our parameter manager singleton instance
299 static LLWLParamManager * sInstance; 291 static LLWLParamManager * sInstance;
@@ -306,7 +298,6 @@ private:
306 static std::vector<LLWLPresetsObserver*> sObservers; 298 static std::vector<LLWLPresetsObserver*> sObservers;
307 299
308 static void loadWindlightNotecard(LLVFS *vfs, const LLUUID& asset_id, LLAssetType::EType asset_type, void *user_data, S32 status, LLExtStat ext_status); 300 static void loadWindlightNotecard(LLVFS *vfs, const LLUUID& asset_id, LLAssetType::EType asset_type, void *user_data, S32 status, LLExtStat ext_status);
309
310}; 301};
311 302
312inline F32 LLWLParamManager::getDomeOffset(void) const 303inline F32 LLWLParamManager::getDomeOffset(void) const
@@ -334,11 +325,4 @@ inline LLVector4 LLWLParamManager::getRotatedLightDir(void) const
334 return mRotatedLightDir; 325 return mRotatedLightDir;
335} 326}
336 327
337struct WLCombined
338{
339 LLWaterParamSet water;
340 LLWLParamSet sky;
341 BOOL enabled;
342};
343
344#endif 328#endif
diff --git a/linden/indra/newview/llwlparamset.h b/linden/indra/newview/llwlparamset.h
index 4b6f336..ce01f84 100644
--- a/linden/indra/newview/llwlparamset.h
+++ b/linden/indra/newview/llwlparamset.h
@@ -46,7 +46,7 @@ class LLWLParamSet;
46/// A class representing a set of parameter values for the WindLight shaders. 46/// A class representing a set of parameter values for the WindLight shaders.
47class LLWLParamSet { 47class LLWLParamSet {
48 48
49 friend class LLWLParamManager; 49 friend class LightShare;
50 50
51public: 51public:
52 std::string mName; 52 std::string mName;