diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llfloaterfixedenvironment.cpp | 4 | ||||
-rw-r--r-- | indra/newview/llfloaterland.cpp | 18 | ||||
-rw-r--r-- | indra/newview/llfloaterregioninfo.cpp | 4 | ||||
-rw-r--r-- | indra/newview/llpanelenvironment.cpp | 19 | ||||
-rw-r--r-- | indra/newview/llpanelenvironment.h | 4 |
5 files changed, 40 insertions, 9 deletions
diff --git a/indra/newview/llfloaterfixedenvironment.cpp b/indra/newview/llfloaterfixedenvironment.cpp index 45662cb37b..9831a5fa84 100644 --- a/indra/newview/llfloaterfixedenvironment.cpp +++ b/indra/newview/llfloaterfixedenvironment.cpp @@ -586,7 +586,7 @@ void LLFloaterFixedEnvironmentWater::doImportFromDisk() void LLFloaterFixedEnvironmentWater::loadWaterSettingFromFile(const std::vector<std::string>& filenames) { - if (filenames.size() < 1) return;
+ if (filenames.size() < 1) return; std::string filename = filenames[0]; LL_WARNS("LAPRAS") << "Selected file: " << filename << LL_ENDL; LLSettingsWater::ptr_t legacywater = LLEnvironment::createWaterFromLegacyPreset(filename); @@ -673,7 +673,7 @@ void LLFloaterFixedEnvironmentSky::doImportFromDisk() void LLFloaterFixedEnvironmentSky::loadSkySettingFromFile(const std::vector<std::string>& filenames) { - if (filenames.size() < 1) return;
+ if (filenames.size() < 1) return; std::string filename = filenames[0]; LL_WARNS("LAPRAS") << "Selected file: " << filename << LL_ENDL; diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 38ced18edf..453c9f1138 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -3304,6 +3304,14 @@ void LLPanelLandEnvironment::refreshFromSource() { LLParcel *parcel = getParcel(); + if (!LLEnvironment::instance().isExtendedEnvironmentEnabled()) + { + setNoEnvironmentSupport(true); + setControlsEnabled(false); + return; + } + setNoEnvironmentSupport(false); + if (!parcel) { setNoSelection(true); @@ -3316,8 +3324,16 @@ void LLPanelLandEnvironment::refreshFromSource() { setCrossRegion(false); + LLHandle<LLPanel> that_h = getHandle(); + LLEnvironment::instance().requestParcel(parcel->getLocalID(), - [this](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { mLastParcelId = parcel_id; onEnvironmentReceived(parcel_id, envifo); }); + [that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) + { + LLPanelLandEnvironment *that = (LLPanelLandEnvironment*)that_h.get(); + if (!that) return; + that->mLastParcelId = parcel_id; + that->onEnvironmentReceived(parcel_id, envifo); + }); } else { diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 6aa35b40b6..96ca7c1ac4 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -3447,8 +3447,10 @@ void LLPanelRegionEnvironment::refreshFromEstate() void LLPanelRegionEnvironment::refreshFromSource() { + LLHandle<LLPanel> that_h = getHandle(); + LLEnvironment::instance().requestRegion( - [this](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) {onEnvironmentReceived(parcel_id, envifo); }); + [that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); }); } void LLPanelRegionEnvironment::doApply() diff --git a/indra/newview/llpanelenvironment.cpp b/indra/newview/llpanelenvironment.cpp index 8d7ec48d63..ecffa34ab9 100644 --- a/indra/newview/llpanelenvironment.cpp +++ b/indra/newview/llpanelenvironment.cpp @@ -119,6 +119,7 @@ LLPanelEnvironmentInfo::LLPanelEnvironmentInfo(): mDirtyFlag(0), mCrossRegion(false), mNoSelection(false), + mNoEnvironment(false), mSettingsFloater(), mEditFloater() { @@ -330,7 +331,7 @@ bool LLPanelEnvironmentInfo::setControlsEnabled(bool enabled) bool is_unavailable(false); bool is_legacy = (mCurrentEnvironment) ? mCurrentEnvironment->mIsLegacy : true; - if (!LLEnvironment::instance().isExtendedEnvironmentEnabled() && !isRegion()) + if (mNoEnvironment || (!LLEnvironment::instance().isExtendedEnvironmentEnabled() && !isRegion())) { is_unavailable = true; getChild<LLTextBox>(TXT_DISABLED)->setText(getString(STR_LEGACY)); @@ -574,24 +575,26 @@ void LLPanelEnvironmentInfo::doApply() if (getIsDirtyFlag(DIRTY_FLAG_MASK)) { + LLHandle<LLPanel> that_h = getHandle(); + S32 rdo_selection = getChild<LLRadioGroup>(RDG_ENVIRONMENT_SELECT)->getSelectedIndex(); if (rdo_selection == 0) { LLEnvironment::instance().resetParcel(parcel_id, - [this](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) {onEnvironmentReceived(parcel_id, envifo); }); + [that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); }); } else if (rdo_selection == 1) { LLEnvironment::instance().updateParcel(parcel_id, mCurrentEnvironment->mDayCycle->getAssetId(), mCurrentEnvironment->mDayLength.value(), mCurrentEnvironment->mDayOffset.value(), - [this](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) {onEnvironmentReceived(parcel_id, envifo); }); + [that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); }); } else { LLEnvironment::instance().updateParcel(parcel_id, mCurrentEnvironment->mDayCycle, mCurrentEnvironment->mDayLength.value(), mCurrentEnvironment->mDayOffset.value(), - [this](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) {onEnvironmentReceived(parcel_id, envifo); }); + [that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); }); } // Todo: save altitudes once LLEnvironment::setRegionAltitudes() gets implemented @@ -695,3 +698,11 @@ void LLPanelEnvironmentInfo::onEnvironmentReceived(S32 parcel_id, LLEnvironment: clearDirtyFlag(DIRTY_FLAG_MASK); refresh(); } + +void LLPanelEnvironmentInfo::_onEnvironmentReceived(LLHandle<LLPanel> that_h, S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) +{ + LLPanelEnvironmentInfo *that = (LLPanelEnvironmentInfo *)that_h.get(); + if (!that) + return; + that->onEnvironmentReceived(parcel_id, envifo); +} diff --git a/indra/newview/llpanelenvironment.h b/indra/newview/llpanelenvironment.h index fdf0fe46a7..a632acfd03 100644 --- a/indra/newview/llpanelenvironment.h +++ b/indra/newview/llpanelenvironment.h @@ -121,6 +121,7 @@ protected: void onEditCommitted(LLSettingsDay::ptr_t newday); void onPickerAssetDownloaded(LLSettingsBase::ptr_t settings); void onEnvironmentReceived(S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo); + static void _onEnvironmentReceived(LLHandle<LLPanel> that_h, S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo); virtual void refreshFromSource() = 0; @@ -132,6 +133,7 @@ protected: void setCrossRegion(bool val) { mCrossRegion = val; } void setNoSelection(bool val) { mNoSelection = val; } + void setNoEnvironmentSupport(bool val) { mNoEnvironment = val; } LLEnvironment::EnvironmentInfo::ptr_t mCurrentEnvironment; @@ -165,6 +167,6 @@ private: S32 mDirtyFlag; bool mCrossRegion; bool mNoSelection; - + bool mNoEnvironment; }; #endif // LL_LLPANELEXPERIENCES_H |