diff options
author | Rider Linden <rider@lindenlab.com> | 2018-05-22 10:49:55 -0700 |
---|---|---|
committer | Rider Linden <rider@lindenlab.com> | 2018-05-22 10:49:55 -0700 |
commit | 044b80e4e1a7b55f46e6f3b52c9cae6d9c6df3eb (patch) | |
tree | 3505ebdff373a1c32117cddd42700776d8f051d3 /indra/newview | |
parent | 9dc8df35c0ae24ed8a1d8329c7b0ac0f71d239bf (diff) |
Manual blender for use in day editing dialog.
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llenvironment.cpp | 77 | ||||
-rw-r--r-- | indra/newview/llenvironment.h | 22 | ||||
-rw-r--r-- | indra/newview/llfloatereditextdaycycle.cpp | 252 | ||||
-rw-r--r-- | indra/newview/llfloatereditextdaycycle.h | 23 | ||||
-rw-r--r-- | indra/newview/llfloaterfixedenvironment.h | 2 | ||||
-rw-r--r-- | indra/newview/llpaneleditsky.h | 2 | ||||
-rw-r--r-- | indra/newview/llpaneleditwater.h | 2 | ||||
-rw-r--r-- | indra/newview/llpanelenvironment.cpp | 10 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_fixedenvironment.xml | 4 |
10 files changed, 296 insertions, 100 deletions
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index 76192d1fe9..cfea83c788 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -400,6 +400,18 @@ void LLEnvironment::setEnvironment(LLEnvironment::EnvSelection_t env, const LLSe { DayInstance::ptr_t environment = getEnvironmentInstance(env); + if (env == ENV_DEFAULT) + { + LL_WARNS("ENVIRONMENT") << "Attempt to set default environment. Not allowed." << LL_ENDL; + return; + } + + if (!settings) + { + clearEnvironment(env); + return; + } + if (settings->getSettingType() == "daycycle") { S64Seconds daylength(LLSettingsDay::DEFAULT_DAYLENGTH); @@ -1624,3 +1636,68 @@ void LLEnvironment::DayTransition::animate() LLEnvironment::instance().mCurrentEnvironment = mNextInstance; }); } + +//========================================================================= +LLTrackBlenderLoopingManual::LLTrackBlenderLoopingManual(const LLSettingsBase::ptr_t &target, const LLSettingsDay::ptr_t &day, S32 trackno) : + LLSettingsBlender(target, LLSettingsBase::ptr_t(), LLSettingsBase::ptr_t()), + mDay(day), + mTrackNo(trackno), + mPosition(0.0) +{ + LLSettingsDay::TrackBound_t initial = getBoundingEntries(mPosition); + + if (initial.first != mEndMarker) + { // No frames in track + mInitial = (*initial.first).second; + mFinal = (*initial.second).second; + + LLSD initSettings = mInitial->getSettings(); + mTarget->replaceSettings(initSettings); + } +} + +F64 LLTrackBlenderLoopingManual::setPosition(F64 position) +{ + mPosition = llclamp(position, 0.0, 1.0); + + LLSettingsDay::TrackBound_t bounds = getBoundingEntries(mPosition); + + if (bounds.first == mEndMarker) + { // No frames in track. + return 0.0; + } + + mInitial = (*bounds.first).second; + mFinal = (*bounds.second).second; + + F64 spanLength = getSpanLength(bounds); + + F64 spanPos = ((mPosition < (*bounds.first).first) ? (mPosition + 1.0) : mPosition) - (*bounds.first).first; + + F64 blendf = fmod(spanPos, spanLength) / spanLength; + return LLSettingsBlender::setPosition(blendf); +} + +void LLTrackBlenderLoopingManual::switchTrack(S32 trackno, F64 position) +{ + mTrackNo = trackno; + + F64 useposition = (position < 0.0) ? mPosition : position; + + setPosition(useposition); +} + +LLSettingsDay::TrackBound_t LLTrackBlenderLoopingManual::getBoundingEntries(F64 position) +{ + LLSettingsDay::CycleTrack_t &wtrack = mDay->getCycleTrack(mTrackNo); + + mEndMarker = wtrack.end(); + + LLSettingsDay::TrackBound_t bounds = get_bounding_entries(wtrack, position); + return bounds; +} + +F64 LLTrackBlenderLoopingManual::getSpanLength(const LLSettingsDay::TrackBound_t &bounds) const +{ + return get_wrapping_distance((*bounds.first).first, (*bounds.second).first); +} diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h index fb3bb9f051..9f9eb614a4 100644 --- a/indra/newview/llenvironment.h +++ b/indra/newview/llenvironment.h @@ -155,6 +155,7 @@ public: void setEnvironment(EnvSelection_t env, const LLSettingsBase::ptr_t &fixed); void setEnvironment(EnvSelection_t env, const LLSettingsSky::ptr_t & fixed) { setEnvironment(env, fixedEnvironment_t(fixed, LLSettingsWater::ptr_t())); } void setEnvironment(EnvSelection_t env, const LLSettingsWater::ptr_t & fixed) { setEnvironment(env, fixedEnvironment_t(LLSettingsSky::ptr_t(), fixed)); } + void setEnvironment(EnvSelection_t env, const LLSettingsSky::ptr_t & fixeds, const LLSettingsWater::ptr_t & fixedw) { setEnvironment(env, fixedEnvironment_t(fixeds, fixedw)); } void clearEnvironment(EnvSelection_t env); LLSettingsDay::ptr_t getEnvironmentDay(EnvSelection_t env); S64Seconds getEnvironmentDayLength(EnvSelection_t env); @@ -370,6 +371,27 @@ private: }; +class LLTrackBlenderLoopingManual : public LLSettingsBlender +{ +public: + LLTrackBlenderLoopingManual(const LLSettingsBase::ptr_t &target, const LLSettingsDay::ptr_t &day, S32 trackno); + + F64 setPosition(F64 position) override; + void switchTrack(S32 trackno, F64 position = -1.0); + S32 getTrack() const { return mTrackNo; } + + typedef std::shared_ptr<LLTrackBlenderLoopingManual> ptr_t; +protected: + LLSettingsDay::TrackBound_t getBoundingEntries(F64 position); + F64 getSpanLength(const LLSettingsDay::TrackBound_t &bounds) const; + +private: + LLSettingsDay::ptr_t mDay; + S32 mTrackNo; + F64 mPosition; + + LLSettingsDay::CycleTrack_t::iterator mEndMarker; +}; #endif // LL_ENVIRONMENT_H diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp index 74cde2b0f7..1c9b42d03f 100644 --- a/indra/newview/llfloatereditextdaycycle.cpp +++ b/indra/newview/llfloatereditextdaycycle.cpp @@ -38,10 +38,10 @@ #include "llnotificationsutil.h" #include "llspinctrl.h" #include "lltimectrl.h" +#include "lltabcontainer.h" #include "llsettingsvo.h" #include "llinventorymodel.h" - // newview #include "llagent.h" //#include "llflyoutcombobtnctrl.h" //Todo: get rid of this and LLSaveOutfitComboBtn, make a proper UI element/button/pannel instead @@ -75,10 +75,9 @@ const std::string XML_FLYOUTMENU_FILE("menu_save_settings.xml");*/ //========================================================================= // **RIDER** -const std::string LLFloaterFixedEnvironment::KEY_INVENTORY_ID("inventory_id"); -const std::string LLFloaterFixedEnvironment::KEY_LIVE_ENVIRONMENT("live_environment"); -const std::string LLFloaterFixedEnvironment::KEY_DAY_LENGTH("day_length"); -const std::string LLFloaterFixedEnvironment::KEY_DAY_OFFSET("day_offset"); +const std::string LLFloaterEditExtDayCycle::KEY_INVENTORY_ID("inventory_id"); +const std::string LLFloaterEditExtDayCycle::KEY_LIVE_ENVIRONMENT("live_environment"); +const std::string LLFloaterEditExtDayCycle::KEY_DAY_LENGTH("day_length"); // **RIDER** @@ -88,7 +87,6 @@ LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key): mCancelButton(NULL), mUploadButton(NULL), mDayLength(0), - mDayOffset(0), mCurrentTrack(4), mTimeSlider(NULL), mFramesSlider(NULL), @@ -96,10 +94,17 @@ LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key): mCurrentTimeLabel(NULL), // **RIDER** mInventoryId(), - mInventoryItem(nullptr) + mInventoryItem(nullptr), + mSkyBlender(), + mWaterBlender(), + mScratchSky(), + mScratchWater() // **RIDER** { mCommitCallbackRegistrar.add("DayCycle.Track", boost::bind(&LLFloaterEditExtDayCycle::onTrackSelectionCallback, this, _2)); + + mScratchSky = LLSettingsVOSky::buildDefaultSky(); + mScratchWater = LLSettingsVOWater::buildDefaultWater(); } LLFloaterEditExtDayCycle::~LLFloaterEditExtDayCycle() @@ -110,14 +115,13 @@ LLFloaterEditExtDayCycle::~LLFloaterEditExtDayCycle() //delete mFlyoutControl; } -void LLFloaterEditExtDayCycle::openFloater(LLSettingsDay::ptr_t settings, S64Seconds daylength, S64Seconds dayoffset) -{ - mSavedDay = settings; - mEditDay = settings->buildClone(); - mDayLength = daylength; - mDayOffset = dayoffset; - LLFloater::openFloater(); -} +// void LLFloaterEditExtDayCycle::openFloater(LLSettingsDay::ptr_t settings, S64Seconds daylength, S64Seconds dayoffset) +// { +// mEditDay = settings->buildClone(); +// mDayLength = daylength; +// mDayOffset = dayoffset; +// LLFloater::openFloater(); +// } // virtual BOOL LLFloaterEditExtDayCycle::postBuild() @@ -173,13 +177,15 @@ void LLFloaterEditExtDayCycle::onOpen(const LLSD& key) loadLiveEnvironment(env); } + else + { + loadLiveEnvironment(LLEnvironment::ENV_DEFAULT); + } mDayLength.value(0); - mDayOffset.value(0); if (key.has(KEY_DAY_LENGTH)) { mDayLength.value(key[KEY_DAY_LENGTH].asReal()); - mDayOffset.value(key[KEY_DAY_OFFSET].asReal()); } // **RIDER** @@ -201,7 +207,7 @@ void LLFloaterEditExtDayCycle::onOpen(const LLSD& key) LLUIString formatted_label = getString("time_label"); for (int i = 0; i < max_elm; i++) { - total = ((mDayLength / (max_elm - 1)) * i) + mDayOffset; + total = ((mDayLength / (max_elm - 1)) * i); hrs = total; minutes = total - hrs; @@ -213,8 +219,8 @@ void LLFloaterEditExtDayCycle::onOpen(const LLSD& key) formatted_label.setArg("[MM]", llformat("%d", abs(minutes.value()))); getChild<LLTextBox>("p" + llformat("%d", i), true)->setTextArg("[DSC]", formatted_label.getString()); } - hrs = mDayOffset; - minutes = mDayOffset - hrs; + hrs = mDayLength; + minutes = mDayLength - hrs; //formatted_label.setArg("[TIME]", llformat("%.1f", hrs.value())); //date = LLDate(mDayOffset); //formatted_label.setArg("[TIME]", date.toHTTPDateString(std::string("%H:%M"))); @@ -246,7 +252,7 @@ void LLFloaterEditExtDayCycle::onVisibilityChange(BOOL new_visibility) { if (new_visibility) { - LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, mEditDay, LLSettingsDay::DEFAULT_DAYLENGTH, LLSettingsDay::DEFAULT_DAYOFFSET); + LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, mScratchSky, mScratchWater); LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT); } else @@ -289,8 +295,6 @@ void LLFloaterEditExtDayCycle::onVisibilityChange(BOOL new_visibility) void LLFloaterEditExtDayCycle::onBtnSave() { - mSavedDay = mEditDay; - //no longer needed? if (!mCommitSignal.empty()) mCommitSignal(mEditDay); @@ -322,41 +326,49 @@ void LLFloaterEditExtDayCycle::onAddTrack() if (mCurrentTrack == LLSettingsDay::TRACK_WATER) { - if (mSliderKeyMap.empty()) - { - // No existing points, use defaults - setting = LLSettingsVOWater::buildDefaultWater(); - } - else - { - // clone existing element, since we are intentionally dropping slider on time selection, copy from tab panels - LLView* tab_container = mWaterTabLayoutContainer->getChild<LLView>("water_tabs"); //can't extract panels directly, since it is in 'tuple' - LLPanelSettingsWaterMainTab* panel = dynamic_cast<LLPanelSettingsWaterMainTab*>(tab_container->getChildView("water_panel")); - if (panel) - { - setting = panel->getWater()->buildClone(); - } - } + // **RIDER** + // scratch water should always have the current water settings. + setting = mScratchWater->buildClone(); +// if (mSliderKeyMap.empty()) +// { +// // No existing points, use defaults +// setting = LLSettingsVOWater::buildDefaultWater(); +// } +// else +// { +// // clone existing element, since we are intentionally dropping slider on time selection, copy from tab panels +// LLView* tab_container = mWaterTabLayoutContainer->getChild<LLView>("water_tabs"); //can't extract panels directly, since it is in 'tuple' +// LLPanelSettingsWaterMainTab* panel = dynamic_cast<LLPanelSettingsWaterMainTab*>(tab_container->getChildView("water_panel")); +// if (panel) +// { +// setting = panel->getWater()->buildClone(); +// } +// } + // **RIDER** mEditDay->setWaterAtKeyframe(std::dynamic_pointer_cast<LLSettingsWater>(setting), frame); } else { - if (mSliderKeyMap.empty()) - { - // No existing points, use defaults - setting = LLSettingsVOSky::buildDefaultSky(); - } - else - { - // clone existing element, since we are intentionally dropping slider on time selection, copy from tab panels - LLView* tab_container = mSkyTabLayoutContainer->getChild<LLView>("sky_tabs"); //can't extract panels directly, since they are in 'tuple' - - LLPanelSettingsSky* panel = dynamic_cast<LLPanelSettingsSky*>(tab_container->getChildView("atmosphere_panel")); - if (panel) - { - setting = panel->getSky()->buildClone(); - } - } + // **RIDER** + // scratch sky should always have the current sky settings. + setting = mScratchSky->buildClone(); +// if (mSliderKeyMap.empty()) +// { +// // No existing points, use defaults +// setting = LLSettingsVOSky::buildDefaultSky(); +// } +// else +// { +// // clone existing element, since we are intentionally dropping slider on time selection, copy from tab panels +// LLView* tab_container = mSkyTabLayoutContainer->getChild<LLView>("sky_tabs"); //can't extract panels directly, since they are in 'tuple' +// +// LLPanelSettingsSky* panel = dynamic_cast<LLPanelSettingsSky*>(tab_container->getChildView("atmosphere_panel")); +// if (panel) +// { +// setting = panel->getSky()->buildClone(); +// } +// } + // **RIDER** mEditDay->setSkyAtKeyframe(std::dynamic_pointer_cast<LLSettingsSky>(setting), frame, mCurrentTrack); } @@ -493,23 +505,27 @@ void LLFloaterEditExtDayCycle::clearTabs() void LLFloaterEditExtDayCycle::updateTabs() { - // TODO: either prevent user from editing existing settings or clone them to not affect saved frames - std::string sldr = mFramesSlider->getCurSlider(); - if (sldr.empty()) - { - // keep old settings for duplicating if there are any - // TODO: disable tabs to prevent editing without nulling settings - } - else if (mCurrentTrack == LLSettingsDay::TRACK_WATER) - { - const LLSettingsWaterPtr_t p_water = sldr.empty() ? LLSettingsWaterPtr_t(NULL) : mEditDay->getWaterAtKeyframe(mFramesSlider->getCurSliderValue()); - updateWaterTabs(p_water); - } - else - { - const LLSettingsSkyPtr_t p_sky = sldr.empty() ? LLSettingsSkyPtr_t(NULL) : mEditDay->getSkyAtKeyframe(mFramesSlider->getCurSliderValue(), mCurrentTrack); - updateSkyTabs(p_sky); - } +// // TODO: either prevent user from editing existing settings or clone them to not affect saved frames +// std::string sldr = mFramesSlider->getCurSlider(); +// if (sldr.empty()) +// { +// // keep old settings for duplicating if there are any +// // TODO: disable tabs to prevent editing without nulling settings +// } +// else if (mCurrentTrack == LLSettingsDay::TRACK_WATER) +// { +// const LLSettingsWaterPtr_t p_water = sldr.empty() ? LLSettingsWaterPtr_t(NULL) : mEditDay->getWaterAtKeyframe(mFramesSlider->getCurSliderValue()); +// updateWaterTabs(p_water); +// } +// else +// { +// const LLSettingsSkyPtr_t p_sky = sldr.empty() ? LLSettingsSkyPtr_t(NULL) : mEditDay->getSkyAtKeyframe(mFramesSlider->getCurSliderValue(), mCurrentTrack); +// updateSkyTabs(p_sky); +// } + + reblendSettings(); + syncronizeTabs(); + updateButtons(); updateTimeAndLabel(); } @@ -598,7 +614,7 @@ void LLFloaterEditExtDayCycle::updateTimeAndLabel() //formatted_label.setArg("[TIME]", llformat("%.1f", hrs.value())); //formatted_label.setArg("[TIME]", date.toHTTPDateString(std::string("%H:%M"))); - S64Seconds total = (mDayLength * time) + mDayOffset; + S64Seconds total = (mDayLength * time); S32Hours hrs = total; S32Minutes minutes = total - hrs; @@ -682,7 +698,7 @@ void LLFloaterEditExtDayCycle::loadInventoryItem(const LLUUID &inventoryId) void LLFloaterEditExtDayCycle::onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status) { - mEditDay = settings; + mEditDay = std::dynamic_pointer_cast<LLSettingsDay>(settings); updateEditEnvironment(); syncronizeTabs(); refresh(); @@ -697,7 +713,7 @@ void LLFloaterEditExtDayCycle::loadLiveEnvironment(LLEnvironment::EnvSelection_t if (day) { - mEditDay = day; + mEditDay = day->buildClone(); break; } } @@ -709,21 +725,97 @@ void LLFloaterEditExtDayCycle::loadLiveEnvironment(LLEnvironment::EnvSelection_t void LLFloaterEditExtDayCycle::updateEditEnvironment(void) { - LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, mEditDay); + S32 skytrack = (mCurrentTrack) ? mCurrentTrack : 1; + mSkyBlender = std::make_shared<LLTrackBlenderLoopingManual>(mScratchSky, mEditDay, skytrack); + mWaterBlender = std::make_shared<LLTrackBlenderLoopingManual>(mScratchWater, mEditDay, LLSettingsDay::TRACK_WATER); + + reblendSettings(); + + LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, mScratchSky, mScratchWater); } -void LLFloaterFixedEnvironment::syncronizeTabs() +void LLFloaterEditExtDayCycle::syncronizeTabs() { - LLView* tab_container = mWaterTabLayoutContainer->getChild<LLView>("water_tabs"); //can't extract panels directly, since they are in 'tuple' + // This should probably get moved into "updateTabs" - S32 count = mTab->getTabCount(); + F32 frame = mTimeSlider->getCurSliderValue(); + bool canedit(false); + LLSettingsWater::ptr_t psettingWater; + LLTabContainer * tabs = mWaterTabLayoutContainer->getChild<LLTabContainer>("water_tabs"); + if (mCurrentTrack == LLSettingsDay::TRACK_WATER) + { + canedit = true; + psettingWater = std::static_pointer_cast<LLSettingsWater>(mEditDay->getSettingsAtKeyframe(frame, LLSettingsDay::TRACK_WATER)); + if (!psettingWater) + { + canedit = false; + psettingWater = mScratchWater; + } + } + else + { + psettingWater = mScratchWater; + } + + S32 count = tabs->getTabCount(); for (S32 idx = 0; idx < count; ++idx) { - LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(mTab->getPanelByIndex(idx)); + LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(tabs->getPanelByIndex(idx)); if (panel) - panel->setSettings(mSettings); + { + panel->setAllChildrenEnabled(canedit); + panel->setSettings(psettingWater); + panel->refresh(); + } + } + + LLSettingsSky::ptr_t psettingSky; + + canedit = false; + tabs = mSkyTabLayoutContainer->getChild<LLTabContainer>("sky_tabs"); + if (mCurrentTrack != LLSettingsDay::TRACK_WATER) + { + canedit = true; + psettingSky = std::static_pointer_cast<LLSettingsSky>(mEditDay->getSettingsAtKeyframe(frame, mCurrentTrack)); + if (!psettingSky) + { + canedit = false; + psettingSky = mScratchSky; + } + } + else + { + psettingSky = mScratchSky; } + + count = tabs->getTabCount(); + for (S32 idx = 0; idx < count; ++idx) + { + LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(tabs->getPanelByIndex(idx)); + if (panel) + { + panel->setAllChildrenEnabled(canedit); + panel->setSettings(psettingSky); + panel->refresh(); + } + } + + LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, psettingSky, psettingWater); +} + +void LLFloaterEditExtDayCycle::reblendSettings() +{ + F64 position = mTimeSlider->getCurSliderValue(); + + if ((mSkyBlender->getTrack() != mCurrentTrack) && (mCurrentTrack != LLSettingsDay::TRACK_WATER)) + { + mSkyBlender->switchTrack(mCurrentTrack, position); + } + else + mSkyBlender->setPosition(position); + + mWaterBlender->setPosition(position); } // **RIDER** diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h index 3cc41e6248..80e5850558 100644 --- a/indra/newview/llfloatereditextdaycycle.h +++ b/indra/newview/llfloatereditextdaycycle.h @@ -31,6 +31,8 @@ #include "llsettingsdaycycle.h" #include <boost/signals2.hpp> +#include "llenvironment.h" + class LLCheckBoxCtrl; class LLComboBox; class LLLineEditor; @@ -39,6 +41,8 @@ class LLTextBox; class LLTimeCtrl; //class LLFlyoutComboBtnCtrl; +class LLInventoryItem; + typedef std::shared_ptr<LLSettingsBase> LLSettingsBasePtr_t; /** @@ -50,10 +54,9 @@ class LLFloaterEditExtDayCycle : public LLFloater public: // **RIDER** - static const std::string KEY_INVENTORY_ID; - static const std::string KEY_LIVE_ENVIRONMENT; - static const std::string KEY_DAY_LENGTH; - static const std::string KEY_DAY_OFFSET; + static const std::string KEY_INVENTORY_ID; + static const std::string KEY_LIVE_ENVIRONMENT; + static const std::string KEY_DAY_LENGTH; // **RIDER** typedef boost::signals2::signal<void(LLSettingsDay::ptr_t)> edit_commit_signal_t; @@ -62,7 +65,7 @@ public: LLFloaterEditExtDayCycle(const LLSD &key); ~LLFloaterEditExtDayCycle(); - void openFloater(LLSettingsDay::ptr_t settings, S64Seconds daylength = S64Seconds(0), S64Seconds dayoffset = S64Seconds(0)); + //void openFloater(LLSettingsDay::ptr_t settings, S64Seconds daylength = S64Seconds(0), S64Seconds dayoffset = S64Seconds(0)); BOOL postBuild(); void onOpen(const LLSD& key); @@ -115,13 +118,11 @@ private: void updateEditEnvironment(); void syncronizeTabs(); + void reblendSettings(); // **RIDER** - - LLSettingsDay::ptr_t mEditDay; S64Seconds mDayLength; - S64Seconds mDayOffset; U32 mCurrentTrack; std::string mLastFrameSlider; @@ -140,7 +141,11 @@ private: // **RIDER** LLUUID mInventoryId; LLInventoryItem * mInventoryItem; - LLEnvironment::EnvSelection_t mEditingEnv; + LLEnvironment::EnvSelection_t mEditingEnv; + LLTrackBlenderLoopingManual::ptr_t mSkyBlender; + LLTrackBlenderLoopingManual::ptr_t mWaterBlender; + LLSettingsSky::ptr_t mScratchSky; + LLSettingsWater::ptr_t mScratchWater; // **RIDER** // LLFlyoutComboBtnCtrl * mFlyoutControl; // not a View! diff --git a/indra/newview/llfloaterfixedenvironment.h b/indra/newview/llfloaterfixedenvironment.h index 782dc9e61c..6f1030e6ed 100644 --- a/indra/newview/llfloaterfixedenvironment.h +++ b/indra/newview/llfloaterfixedenvironment.h @@ -141,7 +141,7 @@ private: class LLSettingsEditPanel : public LLPanel { public: - virtual void setSettings(LLSettingsBase::ptr_t &) = 0; + virtual void setSettings(const LLSettingsBase::ptr_t &) = 0; // virtual void refresh() override; diff --git a/indra/newview/llpaneleditsky.h b/indra/newview/llpaneleditsky.h index 497c98af1f..56ae9dc7bb 100644 --- a/indra/newview/llpaneleditsky.h +++ b/indra/newview/llpaneleditsky.h @@ -45,7 +45,7 @@ class LLPanelSettingsSky : public LLSettingsEditPanel public: LLPanelSettingsSky(); - virtual void setSettings(LLSettingsBase::ptr_t &settings) override { setSky(std::static_pointer_cast<LLSettingsSky>(settings)); } + virtual void setSettings(const LLSettingsBase::ptr_t &settings) override { setSky(std::static_pointer_cast<LLSettingsSky>(settings)); } LLSettingsSky::ptr_t getSky() const { return mSkySettings; } void setSky(const LLSettingsSky::ptr_t &sky) { mSkySettings = sky; refresh(); } diff --git a/indra/newview/llpaneleditwater.h b/indra/newview/llpaneleditwater.h index 72ffa05767..3b41a1bb24 100644 --- a/indra/newview/llpaneleditwater.h +++ b/indra/newview/llpaneleditwater.h @@ -45,7 +45,7 @@ class LLPanelSettingsWater : public LLSettingsEditPanel public: LLPanelSettingsWater(); - virtual void setSettings(LLSettingsBase::ptr_t &settings) override { setWater(std::static_pointer_cast<LLSettingsWater>(settings)); } + virtual void setSettings(const LLSettingsBase::ptr_t &settings) override { setWater(std::static_pointer_cast<LLSettingsWater>(settings)); } LLSettingsWater::ptr_t getWater() const { return mWaterSettings; } void setWater(const LLSettingsWater::ptr_t &water) { mWaterSettings = water; refresh(); } diff --git a/indra/newview/llpanelenvironment.cpp b/indra/newview/llpanelenvironment.cpp index afbbbd424e..ebe3da79f2 100644 --- a/indra/newview/llpanelenvironment.cpp +++ b/indra/newview/llpanelenvironment.cpp @@ -359,9 +359,13 @@ void LLPanelEnvironmentInfo::onBtnEdit() LLFloaterEditExtDayCycle *dayeditor = (LLFloaterEditExtDayCycle *)LLFloaterReg::getInstance("env_edit_extdaycycle"); if (dayeditor) - { - dayeditor->setEditCommitSignal(boost::bind(&LLPanelEnvironmentInfo::onEditiCommited, this, _1)); //Not needed? - dayeditor->openFloater(mEditingDayCycle, F32Hours(mDayLengthSlider->getValue().asReal()), F32Hours(mDayOffsetSlider->getValue().asReal())); + { //*TODO Determine if region or parcel. + LLSD params(LLSDMap(LLFloaterEditExtDayCycle::KEY_LIVE_ENVIRONMENT, "parcel") + (LLFloaterEditExtDayCycle::KEY_DAY_LENGTH, mDayLengthSlider->getValueF32() * (60.0 * 60.0))); + + LLFloaterReg::showInstance("env_edit_extdaycycle", params, TAKE_FOCUS_YES); + +// dayeditor->openFloater(mEditingDayCycle, F32Hours(mDayLengthSlider->getValue().asReal()), F32Hours(mDayOffsetSlider->getValue().asReal())); } } diff --git a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml index bab902001f..3a3779e753 100644 --- a/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml +++ b/indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml @@ -437,7 +437,7 @@ name="atmosphere_panel" /> <panel border="true" - class="panel_settings_clouds" + class="panel_settings_cloud" filename="panel_settings_sky_clouds.xml" label="Clouds" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml b/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml index 38ce131dc2..f88618fb71 100644 --- a/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml +++ b/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml @@ -81,10 +81,6 @@ tab_width="120" tab_padding_right="3"> <!-- Tabs inserted here in code --> - <!-- --> - <!-- --> - - <!-- --> </tab_container> </layout_panel> <layout_panel name="button_panel" |