diff options
author | andreykproductengine <akleshchev@productengine.com> | 2017-04-24 19:55:55 +0300 |
---|---|---|
committer | andreykproductengine <akleshchev@productengine.com> | 2017-04-24 19:55:55 +0300 |
commit | 5b5ee18f6fb1bb6c5ef8590f933014069c5613a9 (patch) | |
tree | 4c686434ca129ecb55ca2dfa5af81f00d7447ed7 /indra | |
parent | a48da201406f435d917b564a08b53eef6e4e321e (diff) |
MAINT-7330 Fixed circularity of environmental singletons
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/lldaycyclemanager.cpp | 22 | ||||
-rw-r--r-- | indra/newview/llsky.cpp | 3 | ||||
-rw-r--r-- | indra/newview/llwaterparammanager.cpp | 1 | ||||
-rw-r--r-- | indra/newview/llwlparammanager.cpp | 20 | ||||
-rw-r--r-- | indra/newview/llwlparammanager.h | 3 |
5 files changed, 34 insertions, 15 deletions
diff --git a/indra/newview/lldaycyclemanager.cpp b/indra/newview/lldaycyclemanager.cpp index 803e2b2fb2..e7bf989850 100644 --- a/indra/newview/lldaycyclemanager.cpp +++ b/indra/newview/lldaycyclemanager.cpp @@ -163,6 +163,28 @@ void LLDayCycleManager::initSingleton() { LL_DEBUGS("Windlight") << "Loading all day cycles" << LL_ENDL; loadAllPresets(); + + // presets loaded, can set params + if (LLEnvManagerNew::instance().getUseDayCycle()) + { + LLSD params; + std::string preferred_day = LLEnvManagerNew::getInstance()->getDayCycleName(); + if (getPreset(preferred_day, params)) + { + // Same as through useDayCycle(), but it will call LLDayCycleManager and we are initializing + // so no need to cycle + LLWLParamManager::getInstance()->applyDayCycleParams(params, LLEnvKey::SCOPE_LOCAL); + } + else + { + LL_WARNS() << "No day cycle named " << preferred_day << ", reverting LLWLParamManager to defaults" << LL_ENDL; + LLWLParamManager::getInstance()->setDefaultDay(); + } + } + else + { + LLWLParamManager::getInstance()->setDefaultDay(); + } } void LLDayCycleManager::loadAllPresets() diff --git a/indra/newview/llsky.cpp b/indra/newview/llsky.cpp index a961f0e3b4..7a292fe0ef 100644 --- a/indra/newview/llsky.cpp +++ b/indra/newview/llsky.cpp @@ -51,6 +51,7 @@ #include "llvosky.h" #include "llcubemap.h" #include "llviewercontrol.h" +#include "llenvmanager.h" #include "llvowlsky.h" @@ -340,6 +341,8 @@ void LLSky::init(const LLVector3 &sun_direction) LLGLState::checkTextureChannels(); mUpdatedThisFrame = TRUE; + + LLEnvManagerNew::instance().usePrefs(); //inits day cycles and water } diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp index 28ae569ba2..b484b6d709 100644 --- a/indra/newview/llwaterparammanager.cpp +++ b/indra/newview/llwaterparammanager.cpp @@ -427,7 +427,6 @@ void LLWaterParamManager::initSingleton() { LL_DEBUGS("Windlight") << "Initializing water" << LL_ENDL; loadAllPresets(); - LLEnvManagerNew::instance().usePrefs(); } // static diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp index 2b6d88efef..debe467a9a 100644 --- a/indra/newview/llwlparammanager.cpp +++ b/indra/newview/llwlparammanager.cpp @@ -50,7 +50,6 @@ #include "llagent.h" #include "llviewerregion.h" -#include "lldaycyclemanager.h" #include "llenvmanager.h" #include "llwlparamset.h" #include "llpostprocess.h" @@ -487,6 +486,12 @@ bool LLWLParamManager::applyDayCycleParams(const LLSD& params, LLEnvKey::EScope return true; } +void LLWLParamManager::setDefaultDay() +{ + mDay.loadDayCycleFromFile("Default.xml"); + resetAnimator(0.5, LLEnvManagerNew::getInstance()->getUseDayCycle()); +} + bool LLWLParamManager::applySkyParams(const LLSD& params) { mAnimator.deactivate(); @@ -672,17 +677,6 @@ void LLWLParamManager::initSingleton() loadAllPresets(); - // load the day - std::string preferred_day = LLEnvManagerNew::instance().getDayCycleName(); - if (!LLDayCycleManager::instance().getPreset(preferred_day, mDay)) - { - // Fall back to default. - LL_WARNS() << "No day cycle named " << preferred_day << ", falling back to defaults" << LL_ENDL; - mDay.loadDayCycleFromFile("Default.xml"); - - // *TODO: Fix user preferences accordingly. - } - // *HACK - sets cloud scrolling to what we want... fix this better in the future std::string sky = LLEnvManagerNew::instance().getSkyPresetName(); if (!getParamSet(LLWLParamKey(sky, LLWLParamKey::SCOPE_LOCAL), mCurParams)) @@ -698,8 +692,6 @@ void LLWLParamManager::initSingleton() // but use linden time sets it to what the estate is mAnimator.setTimeType(LLWLAnimator::TIME_LINDEN); - - LLEnvManagerNew::instance().usePrefs(); } // static diff --git a/indra/newview/llwlparammanager.h b/indra/newview/llwlparammanager.h index a10102edf7..db3c285e76 100644 --- a/indra/newview/llwlparammanager.h +++ b/indra/newview/llwlparammanager.h @@ -240,6 +240,9 @@ public: /// apply specified day cycle, setting time to noon by default bool applyDayCycleParams(const LLSD& params, LLEnvKey::EScope scope, F32 time = 0.5); + /// Apply Default.xml map + void setDefaultDay(); + /// apply specified fixed sky params bool applySkyParams(const LLSD& params); |