summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llinventory/llsettingssky.cpp7
-rw-r--r--indra/llinventory/llsettingswater.cpp10
-rw-r--r--indra/llinventory/llsettingswater.h2
-rw-r--r--indra/llui/llvirtualtrackball.cpp31
-rw-r--r--indra/llui/llvirtualtrackball.h5
-rw-r--r--indra/newview/CMakeLists.txt2
-rw-r--r--indra/newview/app_settings/shaders/class1/deferred/sunDiscV.glsl5
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl2
-rw-r--r--indra/newview/app_settings/shaders/class1/windlight/sunDiscV.glsl4
-rw-r--r--indra/newview/lldrawpoolwater.cpp6
-rw-r--r--indra/newview/lldrawpoolwlsky.cpp3
-rw-r--r--indra/newview/llfloatereditextdaycycle.cpp112
-rw-r--r--indra/newview/llfloatereditextdaycycle.h15
-rw-r--r--indra/newview/llfloaterfixedenvironment.cpp131
-rw-r--r--indra/newview/llfloaterfixedenvironment.h44
-rw-r--r--indra/newview/llinventorybridge.cpp5
-rw-r--r--indra/newview/llinventorybridge.h2
-rw-r--r--indra/newview/llinventoryfunctions.cpp25
-rw-r--r--indra/newview/llinventorymodel.cpp1
-rw-r--r--indra/newview/llpaneleditsky.cpp230
-rw-r--r--indra/newview/llpaneleditsky.h34
-rw-r--r--indra/newview/llpaneleditwater.cpp12
-rw-r--r--indra/newview/llpaneleditwater.h2
-rw-r--r--indra/newview/llpanelenvironment.cpp20
-rw-r--r--indra/newview/llpanelenvironment.h25
-rw-r--r--indra/newview/llsettingsvo.cpp11
-rw-r--r--indra/newview/llsky.cpp16
-rw-r--r--indra/newview/llsky.h3
-rw-r--r--indra/newview/llviewerassetupload.cpp4
-rw-r--r--indra/newview/llviewernetwork.cpp2
-rw-r--r--indra/newview/llviewertexteditor.cpp16
-rw-r--r--indra/newview/llviewertexteditor.h1
-rw-r--r--indra/newview/llvosky.cpp20
-rw-r--r--indra/newview/llvosky.h8
-rw-r--r--indra/newview/skins/default/textures/textures.xml4
-rw-r--r--indra/newview/skins/default/textures/widgets/track_control_rotate_bottom_active.pngbin0 -> 362 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/track_control_rotate_left_side_active.pngbin0 -> 340 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/track_control_rotate_right_side_active.pngbin0 -> 358 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/track_control_rotate_top_active.pngbin0 -> 367 bytes
-rw-r--r--indra/newview/skins/default/xui/en/floater_edit_ext_day_cycle.xml55
-rw-r--r--indra/newview/skins/default/xui/en/floater_fixedenvironment.xml11
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml14
-rw-r--r--indra/newview/skins/default/xui/en/panel_region_environment.xml4
-rw-r--r--indra/newview/skins/default/xui/en/panel_settings_sky_density.xml290
-rw-r--r--indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml2
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml1
-rw-r--r--indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml16
-rw-r--r--indra/newview/tests/llviewernetwork_test.cpp4
48 files changed, 981 insertions, 236 deletions
diff --git a/indra/llinventory/llsettingssky.cpp b/indra/llinventory/llsettingssky.cpp
index cfd15814ed..0d789590fa 100644
--- a/indra/llinventory/llsettingssky.cpp
+++ b/indra/llinventory/llsettingssky.cpp
@@ -401,7 +401,10 @@ LLSettingsSky::LLSettingsSky():
void LLSettingsSky::replaceSettings(LLSD settings)
{
LLSettingsBase::replaceSettings(settings);
-
+ mNextSunTextureId.setNull();
+ mNextMoonTextureId.setNull();
+ mNextCloudTextureId.setNull();
+ mNextBloomTextureId.setNull();
}
void LLSettingsSky::blend(const LLSettingsBase::ptr_t &end, F64 blendf)
@@ -901,7 +904,7 @@ LLColor3 LLSettingsSky::getBlueDensity() const
LLColor3 LLSettingsSky::getBlueHorizon() const
{
- if (mSettings.has(SETTING_LEGACY_HAZE) && mSettings[SETTING_LEGACY_HAZE].has(SETTING_BLUE_DENSITY))
+ if (mSettings.has(SETTING_LEGACY_HAZE) && mSettings[SETTING_LEGACY_HAZE].has(SETTING_BLUE_HORIZON))
{
return LLColor3(mSettings[SETTING_LEGACY_HAZE][SETTING_BLUE_HORIZON]);
}
diff --git a/indra/llinventory/llsettingswater.cpp b/indra/llinventory/llsettingswater.cpp
index f0d63bf033..652e211ac4 100644
--- a/indra/llinventory/llsettingswater.cpp
+++ b/indra/llinventory/llsettingswater.cpp
@@ -185,10 +185,16 @@ void LLSettingsWater::blend(const LLSettingsBase::ptr_t &end, F64 blendf)
}
else
{
- LL_WARNS("SETTINGS") << "Cound not cast end settings to water. No blend performed." << LL_ENDL;
+ LL_WARNS("SETTINGS") << "Could not cast end settings to water. No blend performed." << LL_ENDL;
}
setBlendFactor(blendf);
- mNextNormalMapID = other->getNormalMapID();
+}
+
+void LLSettingsWater::replaceSettings(LLSD settings)
+{
+ LLSettingsBase::replaceSettings(settings);
+ mNextNormalMapID.setNull();
+ mNextTransparentTextureID.setNull();
}
LLSettingsWater::validation_list_t LLSettingsWater::getValidationList() const
diff --git a/indra/llinventory/llsettingswater.h b/indra/llinventory/llsettingswater.h
index b33b082bbf..11d7150ba9 100644
--- a/indra/llinventory/llsettingswater.h
+++ b/indra/llinventory/llsettingswater.h
@@ -64,6 +64,8 @@ public:
// Settings status
virtual void blend(const LLSettingsBase::ptr_t &end, F64 blendf) SETTINGS_OVERRIDE;
+ virtual void replaceSettings(LLSD settings) SETTINGS_OVERRIDE;
+
static LLSD defaults(const LLSettingsBase::TrackPosition& position = 0.0f);
//---------------------------------------------------------------------
diff --git a/indra/llui/llvirtualtrackball.cpp b/indra/llui/llvirtualtrackball.cpp
index e73bba57bb..723643dd25 100644
--- a/indra/llui/llvirtualtrackball.cpp
+++ b/indra/llui/llvirtualtrackball.cpp
@@ -88,6 +88,7 @@ LLVirtualTrackball::LLVirtualTrackball(const LLVirtualTrackball::Params& p)
btn_rt.rect(LLRect(centerX - axis_offset_lt, border_rect.mTop, centerX + axis_offset_rb, border_rect.mTop - btn_size));
btn_rt.click_callback.function(boost::bind(&LLVirtualTrackball::onRotateTopClick, this));
btn_rt.mouse_held_callback.function(boost::bind(&LLVirtualTrackball::onRotateTopClick, this));
+ btn_rt.mouseenter_callback.function(boost::bind(&LLVirtualTrackball::onRotateTopMouseEnter, this));
mBtnRotateTop = LLUICtrlFactory::create<LLButton>(btn_rt);
addChild(mBtnRotateTop);
@@ -104,6 +105,7 @@ LLVirtualTrackball::LLVirtualTrackball(const LLVirtualTrackball::Params& p)
btn_rr.rect(LLRect(border_rect.mRight - btn_size, centerY + axis_offset_lt, border_rect.mRight, centerY - axis_offset_rb));
btn_rr.click_callback.function(boost::bind(&LLVirtualTrackball::onRotateRightClick, this));
btn_rr.mouse_held_callback.function(boost::bind(&LLVirtualTrackball::onRotateRightClick, this));
+ btn_rr.mouseenter_callback.function(boost::bind(&LLVirtualTrackball::onRotateRightMouseEnter, this));
mBtnRotateRight = LLUICtrlFactory::create<LLButton>(btn_rr);
addChild(mBtnRotateRight);
@@ -120,6 +122,7 @@ LLVirtualTrackball::LLVirtualTrackball(const LLVirtualTrackball::Params& p)
btn_rb.rect(LLRect(centerX - axis_offset_lt, border_rect.mBottom + btn_size, centerX + axis_offset_rb, border_rect.mBottom));
btn_rb.click_callback.function(boost::bind(&LLVirtualTrackball::onRotateBottomClick, this));
btn_rb.mouse_held_callback.function(boost::bind(&LLVirtualTrackball::onRotateBottomClick, this));
+ btn_rb.mouseenter_callback.function(boost::bind(&LLVirtualTrackball::onRotateBottomMouseEnter, this));
mBtnRotateBottom = LLUICtrlFactory::create<LLButton>(btn_rb);
addChild(mBtnRotateBottom);
@@ -136,6 +139,7 @@ LLVirtualTrackball::LLVirtualTrackball(const LLVirtualTrackball::Params& p)
btn_rl.rect(LLRect(border_rect.mLeft, centerY + axis_offset_lt, border_rect.mLeft + btn_size, centerY - axis_offset_rb));
btn_rl.click_callback.function(boost::bind(&LLVirtualTrackball::onRotateLeftClick, this));
btn_rl.mouse_held_callback.function(boost::bind(&LLVirtualTrackball::onRotateLeftClick, this));
+ btn_rl.mouseenter_callback.function(boost::bind(&LLVirtualTrackball::onRotateLeftMouseEnter, this));
mBtnRotateLeft = LLUICtrlFactory::create<LLButton>(btn_rl);
addChild(mBtnRotateLeft);
@@ -228,6 +232,13 @@ void LLVirtualTrackball::draw()
gl_circle_2d(draw_point.mV[VX], draw_point.mV[VY], mImgSunFront->getWidth() / 2, 12, false);
}
+ // hide the direction labels when disabled
+ BOOL enabled = isInEnabledChain();
+ mLabelN->setVisible(enabled);
+ mLabelE->setVisible(enabled);
+ mLabelS->setVisible(enabled);
+ mLabelW->setVisible(enabled);
+
LLView::draw();
}
@@ -283,6 +294,26 @@ void LLVirtualTrackball::onRotateRightClick()
}
}
+void LLVirtualTrackball::onRotateTopMouseEnter()
+{
+ mBtnRotateTop->setHighlight(true);
+}
+
+void LLVirtualTrackball::onRotateBottomMouseEnter()
+{
+ mBtnRotateBottom->setHighlight(true);
+}
+
+void LLVirtualTrackball::onRotateLeftMouseEnter()
+{
+ mBtnRotateLeft->setHighlight(true);
+}
+
+void LLVirtualTrackball::onRotateRightMouseEnter()
+{
+ mBtnRotateRight->setHighlight(true);
+}
+
void LLVirtualTrackball::setValue(const LLSD& value)
{
if (value.isArray() && value.size() == 4)
diff --git a/indra/llui/llvirtualtrackball.h b/indra/llui/llvirtualtrackball.h
index 48ddb7f4d9..2d4b1ece17 100644
--- a/indra/llui/llvirtualtrackball.h
+++ b/indra/llui/llvirtualtrackball.h
@@ -130,6 +130,11 @@ private:
void onRotateLeftClick();
void onRotateRightClick();
+ void onRotateTopMouseEnter();
+ void onRotateBottomMouseEnter();
+ void onRotateLeftMouseEnter();
+ void onRotateRightMouseEnter();
+
S32 mPrevX;
S32 mPrevY;
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index a36ba949b7..e80bb5f4a5 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -163,7 +163,6 @@ set(viewer_SOURCE_FILES
lldebugview.cpp
lldeferredsounds.cpp
lldelayedgestureerror.cpp
- lldensityctrl.cpp
lldirpicker.cpp
lldonotdisturbnotificationstorage.cpp
lldndbutton.cpp
@@ -785,7 +784,6 @@ set(viewer_HEADER_FILES
lldebugview.h
lldeferredsounds.h
lldelayedgestureerror.h
- lldensityctrl.h
lldirpicker.h
lldonotdisturbnotificationstorage.h
lldndbutton.h
diff --git a/indra/newview/app_settings/shaders/class1/deferred/sunDiscV.glsl b/indra/newview/app_settings/shaders/class1/deferred/sunDiscV.glsl
index c75440cd05..5b4302e237 100644
--- a/indra/newview/app_settings/shaders/class1/deferred/sunDiscV.glsl
+++ b/indra/newview/app_settings/shaders/class1/deferred/sunDiscV.glsl
@@ -38,10 +38,11 @@ void main()
{
//transform vertex
vec4 vert = vec4(position.xyz, 1.0);
- vec4 pos = (modelview_matrix * vert);
+ vec4 pos = modelview_projection_matrix*vert;
- gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+ gl_Position = pos;
calcAtmospherics(pos.xyz);
+
vary_texcoord0 = (texture_matrix0 * vec4(texcoord0,0,1)).xy;
}
diff --git a/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl b/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl
index 0eb32b69b8..05251e7e96 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/sunDiscF.glsl
@@ -46,7 +46,7 @@ void main()
vec4 sunA = texture2D(diffuseMap, vary_texcoord0.xy);
vec4 sunB = texture2D(altDiffuseMap, vary_texcoord0.xy);
vec4 c = mix(sunB, sunA, blend_factor);
- c.rgb = pow(c.rgb, vec3(0.45f));
+ c.rgb = pow(c.rgb, vec3(0.7f));
c.rgb = fullbrightAtmosTransport(c.rgb);
c.rgb = fullbrightScaleSoftClip(c.rgb);
frag_color = c;
diff --git a/indra/newview/app_settings/shaders/class1/windlight/sunDiscV.glsl b/indra/newview/app_settings/shaders/class1/windlight/sunDiscV.glsl
index 5a6e481b18..90acb5be9e 100644
--- a/indra/newview/app_settings/shaders/class1/windlight/sunDiscV.glsl
+++ b/indra/newview/app_settings/shaders/class1/windlight/sunDiscV.glsl
@@ -38,9 +38,9 @@ void main()
{
//transform vertex
vec4 vert = vec4(position.xyz, 1.0);
- vec4 pos = (modelview_matrix * vert);
+ vec4 pos = modelview_projection_matrix*vert;
- gl_Position = modelview_projection_matrix*vec4(position.xyz, 1.0);
+ gl_Position = pos;
calcAtmospherics(pos.xyz);
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index ad4df751fd..913a85affd 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -724,7 +724,11 @@ void LLDrawPoolWater::shade()
sNeedsDistortionUpdate = TRUE;
face->renderIndexed();
}
- else if (gGLManager.mHasDepthClamp || deferred_render)
+ // MAINT-9006 using squash clip even for deferred keeps
+ // horizon consistent between ALM and non-ALM rendering
+ // I can't think of a reason we'd want to avoid it. - g
+ //else if (gGLManager.mHasDepthClamp || deferred_render)
+ else if (gGLManager.mHasDepthClamp)
{
face->renderIndexed();
}
diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
index 3557f5a1ce..6b32c196dc 100644
--- a/indra/newview/lldrawpoolwlsky.cpp
+++ b/indra/newview/lldrawpoolwlsky.cpp
@@ -572,7 +572,8 @@ void LLDrawPoolWLSky::render(S32 pass)
{
gGL.pushMatrix();
- gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
+ // MAINT-9006 keep sun position consistent between ALM and non-ALM rendering
+ //gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
// *NOTE: have to bind a texture here since register combiners blending in
// renderStars() requires something to be bound and we might as well only
diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp
index dd224474fc..38f90a327d 100644
--- a/indra/newview/llfloatereditextdaycycle.cpp
+++ b/indra/newview/llfloatereditextdaycycle.cpp
@@ -137,7 +137,8 @@ LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key) :
mWaterBlender(),
mScratchSky(),
mScratchWater(),
- mIsPlaying(false)
+ mIsPlaying(false),
+ mIsDirty(false)
{
mCommitCallbackRegistrar.add(EVNT_DAYTRACK, [this](LLUICtrl *ctrl, const LLSD &data) { onTrackSelectionCallback(data); });
@@ -175,7 +176,7 @@ BOOL LLFloaterEditExtDayCycle::postBuild()
mFlyoutControl = new LLFlyoutComboBtnCtrl(this, BTN_SAVE, BTN_FLYOUT, XML_FLYOUTMENU_FILE);
mFlyoutControl->setAction([this](LLUICtrl *ctrl, const LLSD &data) { onButtonApply(ctrl, data); });
- getChild<LLButton>(BTN_CANCEL, true)->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onBtnCancel(); });
+ getChild<LLButton>(BTN_CANCEL, true)->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onClickCloseBtn(); });
mTimeSlider->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onTimeSliderMoved(); });
mAddFrameButton->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onAddTrack(); });
mDeleteFrameButton->setCommitCallback([this](LLUICtrl *ctrl, const LLSD &data) { onRemoveTrack(); });
@@ -189,6 +190,26 @@ BOOL LLFloaterEditExtDayCycle::postBuild()
mTimeSlider->addSlider(0);
+ LLTabContainer* tab_container = mSkyTabLayoutContainer->getChild<LLTabContainer>("sky_tabs");
+ S32 tab_count = tab_container->getTabCount();
+
+ for (S32 idx = 0; idx < tab_count; ++idx)
+ {
+ LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(tab_container->getPanelByIndex(idx));
+ if (panel)
+ panel->setOnDirtyFlagChanged([this](LLPanel *, bool val) { onPanelDirtyFlagChanged(val); });
+ }
+
+ tab_container = mWaterTabLayoutContainer->getChild<LLTabContainer>("water_tabs");
+ tab_count = tab_container->getTabCount();
+
+ for (S32 idx = 0; idx < tab_count; ++idx)
+ {
+ LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(tab_container->getPanelByIndex(idx));
+ if (panel)
+ panel->setOnDirtyFlagChanged([this](LLPanel *, bool val) { onPanelDirtyFlagChanged(val); });
+ }
+
//getChild<LLButton>("sky1_track", true)->setToggleState(true);
return TRUE;
@@ -312,12 +333,12 @@ void LLFloaterEditExtDayCycle::onClose(bool app_quitting)
doCloseInventoryFloater(app_quitting);
// there's no point to change environment if we're quitting
// or if we already restored environment
- if (!app_quitting && LLEnvironment::instance().getSelectedEnvironment() == LLEnvironment::ENV_EDIT)
+ stopPlay();
+ if (!app_quitting)
{
- LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL);
+ LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL, LLEnvironment::TRANSITION_FAST);
LLEnvironment::instance().clearEnvironment(LLEnvironment::ENV_EDIT);
}
- stopPlay();
}
void LLFloaterEditExtDayCycle::onFocusReceived()
@@ -355,7 +376,7 @@ void LLFloaterEditExtDayCycle::refresh()
mFlyoutControl->setMenuItemVisible(ACTION_APPLY_PARCEL, show_apply);
mFlyoutControl->setMenuItemVisible(ACTION_APPLY_REGION, show_apply);
- mFlyoutControl->setMenuItemEnabled(ACTION_COMMIT, show_commit);
+ mFlyoutControl->setMenuItemEnabled(ACTION_COMMIT, show_commit && !mCommitSignal.empty());
mFlyoutControl->setMenuItemEnabled(ACTION_SAVE, is_inventory_avail);
mFlyoutControl->setMenuItemEnabled(ACTION_SAVEAS, is_inventory_avail);
mFlyoutControl->setMenuItemEnabled(ACTION_APPLY_LOCAL, true);
@@ -445,14 +466,18 @@ void LLFloaterEditExtDayCycle::onButtonApply(LLUICtrl *ctrl, const LLSD &data)
}
}
-void LLFloaterEditExtDayCycle::onBtnCancel()
+
+void LLFloaterEditExtDayCycle::onClickCloseBtn(bool app_quitting /*= false*/)
{
- closeFloater(); // will restore env
+ if (!app_quitting)
+ checkAndConfirmSettingsLoss([this](){ closeFloater(); });
+ else
+ closeFloater();
}
void LLFloaterEditExtDayCycle::onButtonImport()
{
- doImportFromDisk();
+ checkAndConfirmSettingsLoss([this]() { doImportFromDisk(); });
}
void LLFloaterEditExtDayCycle::onButtonLoadFrame()
@@ -616,11 +641,6 @@ void LLFloaterEditExtDayCycle::onFrameSliderCallback(const LLSD &data)
}
}
}
-
- mTimeSlider->setCurSliderValue(sliderpos);
-
- updateTabs();
- LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_INSTANT);
}
void LLFloaterEditExtDayCycle::onFrameSliderDoubleClick(S32 x, S32 y, MASK mask)
@@ -647,6 +667,11 @@ void LLFloaterEditExtDayCycle::onFrameSliderMouseDown(S32 x, S32 y, MASK mask)
mFramesSlider->resetCurSlider();
}
}
+
+ mTimeSlider->setCurSliderValue(sliderpos);
+
+ updateTabs();
+ LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_INSTANT);
}
void LLFloaterEditExtDayCycle::onFrameSliderMouseUp(S32 x, S32 y, MASK mask)
@@ -657,6 +682,35 @@ void LLFloaterEditExtDayCycle::onFrameSliderMouseUp(S32 x, S32 y, MASK mask)
selectFrame(sliderpos, LLSettingsDay::DEFAULT_FRAME_SLOP_FACTOR);
}
+
+void LLFloaterEditExtDayCycle::onPanelDirtyFlagChanged(bool value)
+{
+ if (value)
+ setDirtyFlag();
+}
+
+void LLFloaterEditExtDayCycle::checkAndConfirmSettingsLoss(on_confirm_fn cb)
+{
+ if (isDirty())
+ {
+ LLSD args(LLSDMap("TYPE", mEditDay->getSettingsType())
+ ("NAME", mEditDay->getName()));
+
+ // create and show confirmation textbox
+ LLNotificationsUtil::add("SettingsConfirmLoss", args, LLSD(),
+ [this, cb](const LLSD&notif, const LLSD&resp)
+ {
+ S32 opt = LLNotificationsUtil::getSelectedOption(notif, resp);
+ if (opt == 0)
+ cb();
+ });
+ }
+ else if (cb)
+ {
+ cb();
+ }
+}
+
void LLFloaterEditExtDayCycle::onTimeSliderMoved()
{
selectFrame(mTimeSlider->getCurSliderValue(), LLSettingsDay::DEFAULT_FRAME_SLOP_FACTOR);
@@ -1176,6 +1230,7 @@ void LLFloaterEditExtDayCycle::onInventoryCreated(LLUUID asset_id, LLUUID invent
return;
}
+ clearDirtyFlag();
setFocus(TRUE); // Call back the focus...
loadInventoryItem(inventory_id);
}
@@ -1184,6 +1239,7 @@ void LLFloaterEditExtDayCycle::onInventoryUpdated(LLUUID asset_id, LLUUID invent
{
LL_WARNS("ENVDAYEDIT") << "Inventory item " << inventory_id << " has been updated with asset " << asset_id << " results are:" << results << LL_ENDL;
+ clearDirtyFlag();
if (inventory_id != mInventoryId)
{
loadInventoryItem(inventory_id);
@@ -1209,6 +1265,7 @@ void LLFloaterEditExtDayCycle::doImportFromDisk()
}
mCurrentTrack = 1;
+ setDirtyFlag();
setEditDayCycle(legacyday);
}
}
@@ -1285,6 +1342,33 @@ void LLFloaterEditExtDayCycle::onIdlePlay(void* user_data)
}
+
+void LLFloaterEditExtDayCycle::clearDirtyFlag()
+{
+ mIsDirty = false;
+
+ LLTabContainer* tab_container = mSkyTabLayoutContainer->getChild<LLTabContainer>("sky_tabs");
+ S32 tab_count = tab_container->getTabCount();
+
+ for (S32 idx = 0; idx < tab_count; ++idx)
+ {
+ LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(tab_container->getPanelByIndex(idx));
+ if (panel)
+ panel->clearIsDirty();
+ }
+
+ tab_container = mWaterTabLayoutContainer->getChild<LLTabContainer>("water_tabs");
+ tab_count = tab_container->getTabCount();
+
+ for (S32 idx = 0; idx < tab_count; ++idx)
+ {
+ LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(tab_container->getPanelByIndex(idx));
+ if (panel)
+ panel->clearIsDirty();
+ }
+
+}
+
void LLFloaterEditExtDayCycle::doOpenInventoryFloater(LLSettingsType::type_e type, LLUUID currasset)
{
// LLUI::sWindow->setCursor(UI_CURSOR_WAIT);
diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h
index 7d0489f0bc..ba269dd538 100644
--- a/indra/newview/llfloatereditextdaycycle.h
+++ b/indra/newview/llfloatereditextdaycycle.h
@@ -91,13 +91,15 @@ public:
BOOL handleKeyUp(KEY key, MASK mask, BOOL called_from_parent) override;
-private:
+ BOOL isDirty() const override { return getIsDirty(); }
+private:
+ typedef std::function<void()> on_confirm_fn;
F32 getCurrentFrame() const;
// flyout response/click
void onButtonApply(LLUICtrl *ctrl, const LLSD &data);
- void onBtnCancel();
+ virtual void onClickCloseBtn(bool app_quitting = false) override;
void onButtonImport();
void onButtonLoadFrame();
void onAddTrack();
@@ -113,6 +115,10 @@ private:
void onFrameSliderMouseDown(S32 x, S32 y, MASK mask);
void onFrameSliderMouseUp(S32 x, S32 y, MASK mask);
+ void onPanelDirtyFlagChanged(bool);
+
+ void checkAndConfirmSettingsLoss(on_confirm_fn cb);
+
void selectTrack(U32 track_index, bool force = false);
void selectFrame(F32 frame, F32 slop_factor);
void clearTabs();
@@ -158,6 +164,10 @@ private:
void stopPlay();
static void onIdlePlay(void *);
+ bool getIsDirty() const { return mIsDirty; }
+ void setDirtyFlag() { mIsDirty = true; }
+ virtual void clearDirtyFlag();
+
LLSettingsDay::ptr_t mEditDay; // edited copy
LLSettingsDay::Seconds mDayLength;
U32 mCurrentTrack;
@@ -190,6 +200,7 @@ private:
LLFrameTimer mPlayTimer;
F32 mPlayStartFrame; // an env frame
bool mIsPlaying;
+ bool mIsDirty;
edit_commit_signal_t mCommitSignal;
diff --git a/indra/newview/llfloaterfixedenvironment.cpp b/indra/newview/llfloaterfixedenvironment.cpp
index 0b4de90703..ece4898935 100644
--- a/indra/newview/llfloaterfixedenvironment.cpp
+++ b/indra/newview/llfloaterfixedenvironment.cpp
@@ -69,6 +69,7 @@ namespace
const std::string ACTION_SAVE("save_settings");
const std::string ACTION_SAVEAS("save_as_new_settings");
+ const std::string ACTION_COMMIT("commit_changes");
const std::string ACTION_APPLY_LOCAL("apply_local");
const std::string ACTION_APPLY_PARCEL("apply_parcel");
const std::string ACTION_APPLY_REGION("apply_region");
@@ -85,7 +86,8 @@ LLFloaterFixedEnvironment::LLFloaterFixedEnvironment(const LLSD &key) :
LLFloater(key),
mFlyoutControl(nullptr),
mInventoryId(),
- mInventoryItem(nullptr)
+ mInventoryItem(nullptr),
+ mIsDirty(false)
{
}
@@ -103,11 +105,12 @@ BOOL LLFloaterFixedEnvironment::postBuild()
mTxtName->setCommitCallback([this](LLUICtrl *, const LLSD &) { onNameChanged(mTxtName->getValue().asString()); });
getChild<LLButton>(BUTTON_NAME_IMPORT)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onButtonImport(); });
- getChild<LLButton>(BUTTON_NAME_CANCEL)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onButtonCancel(); });
+ getChild<LLButton>(BUTTON_NAME_CANCEL)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onClickCloseBtn(); });
getChild<LLButton>(BUTTON_NAME_LOAD)->setClickedCallback([this](LLUICtrl *, const LLSD &) { onButtonLoad(); });
mFlyoutControl = new LLFlyoutComboBtnCtrl(this, BUTTON_NAME_COMMIT, BUTTON_NAME_FLYOUT, XML_FLYOUTMENU_FILE);
mFlyoutControl->setAction([this](LLUICtrl *ctrl, const LLSD &data) { onButtonApply(ctrl, data); });
+ mFlyoutControl->setMenuItemVisible(ACTION_COMMIT, false);
return TRUE;
}
@@ -191,6 +194,24 @@ void LLFloaterFixedEnvironment::syncronizeTabs()
}
}
+LLFloaterSettingsPicker * LLFloaterFixedEnvironment::getSettingsPicker()
+{
+ LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get());
+
+ // Show the dialog
+ if (!picker)
+ {
+ picker = new LLFloaterSettingsPicker(this,
+ LLUUID::null, "SELECT SETTINGS");
+
+ mInventoryFloater = picker->getHandle();
+
+ picker->setCommitCallback([this](LLUICtrl *, const LLSD &data){ onPickerCommitSetting(data.asUUID()); });
+ }
+
+ return picker;
+}
+
void LLFloaterFixedEnvironment::loadInventoryItem(const LLUUID &inventoryId)
{
if (inventoryId.isNull())
@@ -231,6 +252,29 @@ void LLFloaterFixedEnvironment::loadInventoryItem(const LLUUID &inventoryId)
[this](LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status, LLExtStat) { onAssetLoaded(asset_id, settins, status); });
}
+
+void LLFloaterFixedEnvironment::checkAndConfirmSettingsLoss(LLFloaterFixedEnvironment::on_confirm_fn cb)
+{
+ if (isDirty())
+ {
+ LLSD args(LLSDMap("TYPE", mSettings->getSettingsType())
+ ("NAME", mSettings->getName()));
+
+ // create and show confirmation textbox
+ LLNotificationsUtil::add("SettingsConfirmLoss", args, LLSD(),
+ [this, cb](const LLSD&notif, const LLSD&resp)
+ {
+ S32 opt = LLNotificationsUtil::getSelectedOption(notif, resp);
+ if (opt == 0)
+ cb();
+ });
+ }
+ else if (cb)
+ {
+ cb();
+ }
+}
+
void LLFloaterFixedEnvironment::onPickerCommitSetting(LLUUID asset_id)
{
LLSettingsVOBase::getSettingsAsset(asset_id,
@@ -257,11 +301,12 @@ void LLFloaterFixedEnvironment::onAssetLoaded(LLUUID asset_id, LLSettingsBase::p
void LLFloaterFixedEnvironment::onNameChanged(const std::string &name)
{
mSettings->setName(name);
+ setDirtyFlag();
}
void LLFloaterFixedEnvironment::onButtonImport()
{
- doImportFromDisk();
+ checkAndConfirmSettingsLoss([this](){ doImportFromDisk(); });
}
void LLFloaterFixedEnvironment::onButtonApply(LLUICtrl *ctrl, const LLSD &data)
@@ -288,31 +333,17 @@ void LLFloaterFixedEnvironment::onButtonApply(LLUICtrl *ctrl, const LLSD &data)
}
}
-void LLFloaterFixedEnvironment::onButtonCancel()
+void LLFloaterFixedEnvironment::onClickCloseBtn(bool app_quitting)
{
- // *TODO*: If changed issue a warning?
- this->closeFloater();
+ if (!app_quitting)
+ checkAndConfirmSettingsLoss([this](){ closeFloater(); });
+ else
+ closeFloater();
}
void LLFloaterFixedEnvironment::onButtonLoad()
{
- // LLUI::sWindow->setCursor(UI_CURSOR_WAIT);
- LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get());
-
- // Show the dialog
- if (!picker)
- {
- picker = new LLFloaterSettingsPicker(this,
- LLUUID::null, "SELECT SETTINGS");
-
- mInventoryFloater = picker->getHandle();
-
- picker->setCommitCallback([this](LLUICtrl *, const LLSD &data){ onPickerCommitSetting(data.asUUID()); });
- }
-
- picker->setSettingsFilter(mSettings->getSettingsTypeValue());
- picker->openFloater();
- picker->setFocus(TRUE);
+ checkAndConfirmSettingsLoss([this](){ doSelectFromInventory(); });
}
void LLFloaterFixedEnvironment::doApplyCreateNewInventory()
@@ -396,6 +427,7 @@ void LLFloaterFixedEnvironment::onInventoryCreated(LLUUID asset_id, LLUUID inven
return;
}
+ clearDirtyFlag();
setFocus(TRUE); // Call back the focus...
loadInventoryItem(inventory_id);
}
@@ -404,12 +436,44 @@ void LLFloaterFixedEnvironment::onInventoryUpdated(LLUUID asset_id, LLUUID inven
{
LL_WARNS("ENVIRONMENT") << "Inventory item " << inventory_id << " has been updated with asset " << asset_id << " results are:" << results << LL_ENDL;
+ clearDirtyFlag();
if (inventory_id != mInventoryId)
{
loadInventoryItem(inventory_id);
}
}
+
+void LLFloaterFixedEnvironment::clearDirtyFlag()
+{
+ mIsDirty = false;
+
+ S32 count = mTab->getTabCount();
+
+ for (S32 idx = 0; idx < count; ++idx)
+ {
+ LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(mTab->getPanelByIndex(idx));
+ if (panel)
+ panel->clearIsDirty();
+ }
+
+}
+
+void LLFloaterFixedEnvironment::doSelectFromInventory()
+{
+ LLFloaterSettingsPicker *picker = getSettingsPicker();
+
+ picker->setSettingsFilter(mSettings->getSettingsTypeValue());
+ picker->openFloater();
+ picker->setFocus(TRUE);
+}
+
+void LLFloaterFixedEnvironment::onPanelDirtyFlagChanged(bool value)
+{
+ if (value)
+ setDirtyFlag();
+}
+
//-------------------------------------------------------------------------
bool LLFloaterFixedEnvironment::canUseInventory() const
{
@@ -452,6 +516,7 @@ BOOL LLFloaterFixedEnvironmentWater::postBuild()
panel = new LLPanelSettingsWaterMainTab;
panel->buildFromFile("panel_settings_water.xml");
panel->setWater(std::static_pointer_cast<LLSettingsWater>(mSettings));
+ panel->setOnDirtyFlagChanged( [this] (LLPanel *, bool value) { onPanelDirtyFlagChanged(value); });
mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(true));
return TRUE;
@@ -477,11 +542,6 @@ void LLFloaterFixedEnvironmentWater::onOpen(const LLSD& key)
LLFloaterFixedEnvironment::onOpen(key);
}
-void LLFloaterFixedEnvironmentWater::onClose(bool app_quitting)
-{
- LLFloaterFixedEnvironment::onClose(app_quitting);
-}
-
void LLFloaterFixedEnvironmentWater::doImportFromDisk()
{ // Load a a legacy Windlight XML from disk.
@@ -500,8 +560,9 @@ void LLFloaterFixedEnvironmentWater::doImportFromDisk()
return;
}
+ setDirtyFlag();
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, legacywater);
- this->setEditSettings(legacywater);
+ setEditSettings(legacywater);
LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true);
}
}
@@ -520,16 +581,19 @@ BOOL LLFloaterFixedEnvironmentSky::postBuild()
panel = new LLPanelSettingsSkyAtmosTab;
panel->buildFromFile("panel_settings_sky_atmos.xml");
panel->setSky(std::static_pointer_cast<LLSettingsSky>(mSettings));
+ panel->setOnDirtyFlagChanged([this](LLPanel *, bool value) { onPanelDirtyFlagChanged(value); });
mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(true));
panel = new LLPanelSettingsSkyCloudTab;
panel->buildFromFile("panel_settings_sky_clouds.xml");
panel->setSky(std::static_pointer_cast<LLSettingsSky>(mSettings));
+ panel->setOnDirtyFlagChanged([this](LLPanel *, bool value) { onPanelDirtyFlagChanged(value); });
mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(false));
panel = new LLPanelSettingsSkySunMoonTab;
panel->buildFromFile("panel_settings_sky_sunmoon.xml");
panel->setSky(std::static_pointer_cast<LLSettingsSky>(mSettings));
+ panel->setOnDirtyFlagChanged([this](LLPanel *, bool value) { onPanelDirtyFlagChanged(value); });
mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(false));
return TRUE;
@@ -553,12 +617,6 @@ void LLFloaterFixedEnvironmentSky::onOpen(const LLSD& key)
}
LLFloaterFixedEnvironment::onOpen(key);
-
-}
-
-void LLFloaterFixedEnvironmentSky::onClose(bool app_quitting)
-{
- LLFloaterFixedEnvironment::onClose(app_quitting);
}
void LLFloaterFixedEnvironmentSky::doImportFromDisk()
@@ -580,8 +638,9 @@ void LLFloaterFixedEnvironmentSky::doImportFromDisk()
return;
}
+ clearDirtyFlag();
LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, legacysky);
- this->setEditSettings(legacysky);
+ setEditSettings(legacysky);
LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true);
}
}
diff --git a/indra/newview/llfloaterfixedenvironment.h b/indra/newview/llfloaterfixedenvironment.h
index f3b14c2daf..50b229e0c4 100644
--- a/indra/newview/llfloaterfixedenvironment.h
+++ b/indra/newview/llfloaterfixedenvironment.h
@@ -32,9 +32,12 @@
#include "llflyoutcombobtn.h"
#include "llinventory.h"
+#include "boost/signals2.hpp"
+
class LLTabContainer;
class LLButton;
class LLLineEditor;
+class LLFloaterSettingsPicker;
/**
* Floater container for creating and editing fixed environment settings.
@@ -56,16 +59,24 @@ public:
virtual void onFocusReceived() override;
virtual void onFocusLost() override;
- void setEditSettings(const LLSettingsBase::ptr_t &settings) { mSettings = settings; syncronizeTabs(); refresh(); }
+ void setEditSettings(const LLSettingsBase::ptr_t &settings) { mSettings = settings; clearDirtyFlag(); syncronizeTabs(); refresh(); }
LLSettingsBase::ptr_t getEditSettings() const { return mSettings; }
+ virtual BOOL isDirty() const override { return getIsDirty(); }
+
protected:
+ typedef std::function<void()> on_confirm_fn;
+
virtual void updateEditEnvironment() = 0;
virtual void refresh() override;
virtual void syncronizeTabs();
+ LLFloaterSettingsPicker *getSettingsPicker();
+
void loadInventoryItem(const LLUUID &inventoryId);
+ void checkAndConfirmSettingsLoss(on_confirm_fn cb);
+
LLTabContainer * mTab;
LLLineEditor * mTxtName;
@@ -90,16 +101,26 @@ protected:
void onInventoryCreated(LLUUID asset_id, LLUUID inventory_id, LLSD results);
void onInventoryUpdated(LLUUID asset_id, LLUUID inventory_id, LLSD results);
+ bool getIsDirty() const { return mIsDirty; }
+ void setDirtyFlag() { mIsDirty = true; }
+ virtual void clearDirtyFlag();
+
+ void doSelectFromInventory();
+ void onPanelDirtyFlagChanged(bool);
+
+ virtual void onClickCloseBtn(bool app_quitting = false) override;
+
private:
void onNameChanged(const std::string &name);
void onButtonImport();
void onButtonApply(LLUICtrl *ctrl, const LLSD &data);
- void onButtonCancel();
void onButtonLoad();
void onPickerCommitSetting(LLUUID asset_id);
void onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status);
+
+ bool mIsDirty;
};
class LLFloaterFixedEnvironmentWater : public LLFloaterFixedEnvironment
@@ -112,7 +133,6 @@ public:
BOOL postBuild() override;
virtual void onOpen(const LLSD& key) override;
- virtual void onClose(bool app_quitting) override;
protected:
virtual void updateEditEnvironment() override;
@@ -132,7 +152,6 @@ public:
BOOL postBuild() override;
virtual void onOpen(const LLSD& key) override;
- virtual void onClose(bool app_quitting) override;
protected:
virtual void updateEditEnvironment() override;
@@ -147,13 +166,26 @@ class LLSettingsEditPanel : public LLPanel
public:
virtual void setSettings(const LLSettingsBase::ptr_t &) = 0;
-// virtual void refresh() override;
+ typedef boost::signals2::signal<void(LLPanel *, bool)> on_dirty_charged_sg;
+ typedef boost::signals2::connection connection_t;
+
+ inline bool getIsDirty() const { return mIsDirty; }
+ inline void setIsDirty() { mIsDirty = true; if (!mOnDirtyChanged.empty()) mOnDirtyChanged(this, mIsDirty); }
+ inline void clearIsDirty() { mIsDirty = false; if (!mOnDirtyChanged.empty()) mOnDirtyChanged(this, mIsDirty); }
+
+ inline connection_t setOnDirtyFlagChanged(on_dirty_charged_sg::slot_type cb) { return mOnDirtyChanged.connect(cb); }
protected:
LLSettingsEditPanel() :
- LLPanel()
+ LLPanel(),
+ mIsDirty(false),
+ mOnDirtyChanged()
{}
+private:
+ bool mIsDirty;
+
+ on_dirty_charged_sg mOnDirtyChanged;
};
#endif // LL_FLOATERFIXEDENVIRONMENT_H
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 138ce9e1cf..e50055feb2 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -5097,6 +5097,11 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item,
tooltip_msg = LLTrans::getString("TooltipOutboxNotInInventory");
accept = FALSE;
}
+ else if ((inv_item->getActualType() == LLAssetType::AT_SETTINGS) && !LLEnvironment::instance().isInventoryEnabled())
+ {
+ tooltip_msg = LLTrans::getString("NoEnvironmentSettings");
+ accept = FALSE;
+ }
else
{
// Don't allow placing an original item from a notecard to Current Outfit or an outfit folder
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index 6a04f08cf8..77d0fa4b04 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -109,6 +109,7 @@ public:
virtual void closeItem() {}
virtual void showProperties();
virtual BOOL isItemRenameable() const { return TRUE; }
+ virtual BOOL isMultiPreviewAllowed() { return TRUE; }
//virtual BOOL renameItem(const std::string& new_name) {}
virtual BOOL isItemRemovable() const;
virtual BOOL isItemMovable() const;
@@ -621,6 +622,7 @@ public:
virtual LLUIImagePtr getIcon() const;
virtual void performAction(LLInventoryModel* model, std::string action);
virtual void openItem();
+ virtual BOOL isMultiPreviewAllowed() { return FALSE; }
virtual void buildContextMenu(LLMenuGL& menu, U32 flags);
virtual BOOL renameItem(const std::string& new_name);
virtual LLSettingsType::type_e getSettingsType() const { return mSettingsType; }
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index 030c967019..b0004c5e58 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -2395,10 +2395,29 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root
if (("task_open" == action || "open" == action) && selected_items.size() > 1)
{
- multi_previewp = new LLMultiPreview();
- gFloaterView->addChild(multi_previewp);
+ bool open_multi_preview = true;
- LLFloater::setFloaterHost(multi_previewp);
+ for (std::set<LLFolderViewItem*>::iterator set_iter = selected_items.begin(); set_iter != selected_items.end(); ++set_iter)
+ {
+ LLFolderViewItem* folder_item = *set_iter;
+ if (folder_item)
+ {
+ LLInvFVBridge* bridge = (LLInvFVBridge*)folder_item->getViewModelItem();
+ if (!bridge || !bridge->isMultiPreviewAllowed())
+ {
+ open_multi_preview = false;
+ break;
+ }
+ }
+ }
+
+ if (open_multi_preview)
+ {
+ multi_previewp = new LLMultiPreview();
+ gFloaterView->addChild(multi_previewp);
+
+ LLFloater::setFloaterHost(multi_previewp);
+ }
}
else if (("task_properties" == action || "properties" == action) && selected_items.size() > 1)
diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp
index cef6528724..9c50866dc1 100644
--- a/indra/newview/llinventorymodel.cpp
+++ b/indra/newview/llinventorymodel.cpp
@@ -2604,6 +2604,7 @@ void LLInventoryModel::createCommonSystemCategories()
gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE,true);
gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD,true);
gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS,true);
+ gInventory.findCategoryUUIDForType(LLFolderType::FT_SETTINGS, true);
}
struct LLUUIDAndName
diff --git a/indra/newview/llpaneleditsky.cpp b/indra/newview/llpaneleditsky.cpp
index dfb803a0a3..0799180a19 100644
--- a/indra/newview/llpaneleditsky.cpp
+++ b/indra/newview/llpaneleditsky.cpp
@@ -35,7 +35,6 @@
#include "llvirtualtrackball.h"
#include "llsettingssky.h"
-static LLDefaultChildRegistry::Register<LLDensityCtrl> register_density_control("densityctrl");
namespace
{
@@ -73,6 +72,23 @@ namespace
const std::string FIELD_SKY_MOON_IMAGE("moon_image");
const std::string FIELD_SKY_MOON_SCALE("moon_scale");
+ const std::string FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL("rayleigh_exponential");
+ const std::string FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL_SCALE("rayleigh_exponential_scale");
+ const std::string FIELD_SKY_DENSITY_RAYLEIGH_LINEAR("rayleigh_linear");
+ const std::string FIELD_SKY_DENSITY_RAYLEIGH_CONSTANT("rayleigh_constant");
+
+ const std::string FIELD_SKY_DENSITY_MIE_EXPONENTIAL("mie_exponential");
+ const std::string FIELD_SKY_DENSITY_MIE_EXPONENTIAL_SCALE("mie_exponential_scale");
+ const std::string FIELD_SKY_DENSITY_MIE_LINEAR("mie_linear");
+ const std::string FIELD_SKY_DENSITY_MIE_CONSTANT("mie_constant");
+ const std::string FIELD_SKY_DENSITY_MIE_ANISO("mie_aniso_factor");
+
+ const std::string FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL("absorption_exponential");
+ const std::string FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL_SCALE("absorption_exponential_scale");
+ const std::string FIELD_SKY_DENSITY_ABSORPTION_LINEAR("absorption_linear");
+ const std::string FIELD_SKY_DENSITY_ABSORPTION_CONSTANT("absorption_constant");
+ const std::string FIELD_SKY_DENSITY_MAX_ALTITUDE("max_altitude");
+
const F32 SLIDER_SCALE_SUN_AMBIENT(3.0f);
const F32 SLIDER_SCALE_BLUE_HORIZON_DENSITY(2.0f);
const F32 SLIDER_SCALE_GLOW_R(20.0f);
@@ -160,46 +176,64 @@ void LLPanelSettingsSkyAtmosTab::refresh()
void LLPanelSettingsSkyAtmosTab::onAmbientLightChanged()
{
mSkySettings->setAmbientColor(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_AMBIENT_LIGHT)->get() * SLIDER_SCALE_SUN_AMBIENT));
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkyAtmosTab::onBlueHorizonChanged()
{
mSkySettings->setBlueHorizon(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_BLUE_HORIZON)->get() * SLIDER_SCALE_BLUE_HORIZON_DENSITY));
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkyAtmosTab::onBlueDensityChanged()
{
mSkySettings->setBlueDensity(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_BLUE_DENSITY)->get() * SLIDER_SCALE_BLUE_HORIZON_DENSITY));
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkyAtmosTab::onHazeHorizonChanged()
{
mSkySettings->setHazeHorizon(getChild<LLUICtrl>(FIELD_SKY_HAZE_HORIZON)->getValue().asReal());
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkyAtmosTab::onHazeDensityChanged()
{
mSkySettings->setHazeDensity(getChild<LLUICtrl>(FIELD_SKY_HAZE_DENSITY)->getValue().asReal());
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkyAtmosTab::onSceneGammaChanged()
{
mSkySettings->setGamma(getChild<LLUICtrl>(FIELD_SKY_SCENE_GAMMA)->getValue().asReal());
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkyAtmosTab::onDensityMultipChanged()
{
mSkySettings->setDensityMultiplier(getChild<LLUICtrl>(FIELD_SKY_DENSITY_MULTIP)->getValue().asReal());
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkyAtmosTab::onDistanceMultipChanged()
{
mSkySettings->setDistanceMultiplier(getChild<LLUICtrl>(FIELD_SKY_DISTANCE_MULTIP)->getValue().asReal());
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkyAtmosTab::onMaxAltChanged()
{
mSkySettings->setMaxY(getChild<LLUICtrl>(FIELD_SKY_MAX_ALT)->getValue().asReal());
+ mSkySettings->update();
+ setIsDirty();
}
//==========================================================================
@@ -283,16 +317,21 @@ void LLPanelSettingsSkyCloudTab::refresh()
void LLPanelSettingsSkyCloudTab::onCloudColorChanged()
{
mSkySettings->setCloudColor(LLColor3(getChild<LLColorSwatchCtrl>(FIELD_SKY_CLOUD_COLOR)->get()));
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkyCloudTab::onCloudCoverageChanged()
{
mSkySettings->setCloudShadow(getChild<LLUICtrl>(FIELD_SKY_CLOUD_COVERAGE)->getValue().asReal());
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkyCloudTab::onCloudScaleChanged()
{
mSkySettings->setCloudScale(getChild<LLUICtrl>(FIELD_SKY_CLOUD_SCALE)->getValue().asReal());
+ setIsDirty();
}
void LLPanelSettingsSkyCloudTab::onCloudScrollChanged()
@@ -300,11 +339,13 @@ void LLPanelSettingsSkyCloudTab::onCloudScrollChanged()
LLVector2 scroll(getChild<LLUICtrl>(FIELD_SKY_CLOUD_SCROLL_XY)->getValue());
scroll += CLOUD_SCROLL_ADJUST;
mSkySettings->setCloudScrollRate(scroll);
+ setIsDirty();
}
void LLPanelSettingsSkyCloudTab::onCloudMapChanged()
{
mSkySettings->setCloudNoiseTextureId(getChild<LLTextureCtrl>(FIELD_SKY_CLOUD_MAP)->getValue().asUUID());
+ setIsDirty();
}
void LLPanelSettingsSkyCloudTab::onCloudDensityChanged()
@@ -314,6 +355,7 @@ void LLPanelSettingsSkyCloudTab::onCloudDensityChanged()
getChild<LLUICtrl>(FIELD_SKY_CLOUD_DENSITY_D)->getValue().asReal());
mSkySettings->setCloudPosDensity1(density);
+ setIsDirty();
}
void LLPanelSettingsSkyCloudTab::onCloudDetailChanged()
@@ -323,6 +365,7 @@ void LLPanelSettingsSkyCloudTab::onCloudDetailChanged()
getChild<LLUICtrl>(FIELD_SKY_CLOUD_DETAIL_D)->getValue().asReal());
mSkySettings->setCloudPosDensity2(detail);
+ setIsDirty();
}
//==========================================================================
@@ -340,6 +383,7 @@ BOOL LLPanelSettingsSkySunMoonTab::postBuild()
getChild<LLUICtrl>(FIELD_SKY_STAR_BRIGHTNESS)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onStarBrightnessChanged(); });
getChild<LLUICtrl>(FIELD_SKY_SUN_ROTATION)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunRotationChanged(); });
getChild<LLUICtrl>(FIELD_SKY_SUN_IMAGE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunImageChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_SUN_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onSunScaleChanged(); });
getChild<LLTextureCtrl>(FIELD_SKY_SUN_IMAGE)->setBlankImageAssetID(LLSettingsSky::GetBlankSunTextureId());
getChild<LLTextureCtrl>(FIELD_SKY_SUN_IMAGE)->setDefaultImageAssetID(LLSettingsSky::GetBlankSunTextureId());
getChild<LLTextureCtrl>(FIELD_SKY_SUN_IMAGE)->setAllowNoTexture(TRUE);
@@ -350,7 +394,7 @@ BOOL LLPanelSettingsSkySunMoonTab::postBuild()
getChild<LLTextureCtrl>(FIELD_SKY_MOON_IMAGE)->setBlankImageAssetID(LLSettingsSky::GetBlankSunTextureId());
getChild<LLTextureCtrl>(FIELD_SKY_MOON_IMAGE)->setAllowNoTexture(TRUE);
getChild<LLTextureCtrl>(FIELD_SKY_MOON_IMAGE)->setAllowLocalTexture(FALSE);
-
+ getChild<LLUICtrl>(FIELD_SKY_MOON_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMoonScaleChanged(); });
refresh();
@@ -387,8 +431,10 @@ void LLPanelSettingsSkySunMoonTab::refresh()
getChild<LLUICtrl>(FIELD_SKY_STAR_BRIGHTNESS)->setValue(mSkySettings->getStarBrightness());
getChild<LLVirtualTrackball>(FIELD_SKY_SUN_ROTATION)->setRotation(mSkySettings->getSunRotation());
getChild<LLTextureCtrl>(FIELD_SKY_SUN_IMAGE)->setValue(mSkySettings->getSunTextureId());
+ getChild<LLUICtrl>(FIELD_SKY_SUN_SCALE)->setValue(mSkySettings->getSunScale());
getChild<LLVirtualTrackball>(FIELD_SKY_MOON_ROTATION)->setRotation(mSkySettings->getMoonRotation());
getChild<LLTextureCtrl>(FIELD_SKY_MOON_IMAGE)->setValue(mSkySettings->getMoonTextureId());
+ getChild<LLUICtrl>(FIELD_SKY_MOON_SCALE)->setValue(mSkySettings->getMoonScale());
}
//-------------------------------------------------------------------------
@@ -399,6 +445,8 @@ void LLPanelSettingsSkySunMoonTab::onSunMoonColorChanged()
color *= SLIDER_SCALE_SUN_AMBIENT;
mSkySettings->setSunlightColor(color);
+ mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkySunMoonTab::onGlowChanged()
@@ -410,48 +458,56 @@ void LLPanelSettingsSkySunMoonTab::onGlowChanged()
mSkySettings->setGlow(glow);
mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkySunMoonTab::onStarBrightnessChanged()
{
mSkySettings->setStarBrightness(getChild<LLUICtrl>(FIELD_SKY_STAR_BRIGHTNESS)->getValue().asReal());
mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkySunMoonTab::onSunRotationChanged()
{
mSkySettings->setSunRotation(getChild<LLVirtualTrackball>(FIELD_SKY_SUN_ROTATION)->getRotation());
mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkySunMoonTab::onSunScaleChanged()
{
mSkySettings->setSunScale((getChild<LLUICtrl>(FIELD_SKY_SUN_SCALE)->getValue().asReal()));
mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkySunMoonTab::onSunImageChanged()
{
mSkySettings->setSunTextureId(getChild<LLTextureCtrl>(FIELD_SKY_SUN_IMAGE)->getValue().asUUID());
mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkySunMoonTab::onMoonRotationChanged()
{
mSkySettings->setMoonRotation(getChild<LLVirtualTrackball>(FIELD_SKY_MOON_ROTATION)->getRotation());
mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkySunMoonTab::onMoonImageChanged()
{
mSkySettings->setMoonTextureId(getChild<LLTextureCtrl>(FIELD_SKY_MOON_IMAGE)->getValue().asUUID());
mSkySettings->update();
+ setIsDirty();
}
void LLPanelSettingsSkySunMoonTab::onMoonScaleChanged()
{
mSkySettings->setMoonScale((getChild<LLUICtrl>(FIELD_SKY_MOON_SCALE)->getValue().asReal()));
mSkySettings->update();
+ setIsDirty();
}
@@ -461,8 +517,24 @@ LLPanelSettingsDensityTab::LLPanelSettingsDensityTab()
BOOL LLPanelSettingsDensityTab::postBuild()
{
- mControlName = LLDensityCtrl::NameForDensityProfileType(mProfileType);
- getChild<LLDensityCtrl>(mControlName)->setProfileType(mProfileType);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onRayleighExponentialChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onRayleighExponentialScaleChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_LINEAR)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onRayleighLinearChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_CONSTANT)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onRayleighConstantChanged(); });
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMieExponentialChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMieExponentialScaleChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_LINEAR)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMieLinearChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_CONSTANT)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMieConstantChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_ANISO)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMieAnisoFactorChanged(); });
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onAbsorptionExponentialChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL_SCALE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onAbsorptionExponentialScaleChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_LINEAR)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onAbsorptionLinearChanged(); });
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_CONSTANT)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onAbsorptionConstantChanged(); });
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MAX_ALTITUDE)->setCommitCallback([this](LLUICtrl *, const LLSD &) { onMaxAltitudeChanged(); });
+
refresh();
return TRUE;
}
@@ -470,7 +542,24 @@ BOOL LLPanelSettingsDensityTab::postBuild()
void LLPanelSettingsDensityTab::setEnabled(BOOL enabled)
{
LLPanelSettingsSky::setEnabled(enabled);
- getChild<LLDensityCtrl>(mControlName)->setEnabled(enabled);
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL)->setEnabled(enabled);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL_SCALE)->setEnabled(enabled);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_LINEAR)->setEnabled(enabled);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_CONSTANT)->setEnabled(enabled);
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL)->setEnabled(enabled);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL_SCALE)->setEnabled(enabled);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_LINEAR)->setEnabled(enabled);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_CONSTANT)->setEnabled(enabled);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_ANISO)->setEnabled(enabled);
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL)->setEnabled(enabled);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL_SCALE)->setEnabled(enabled);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_LINEAR)->setEnabled(enabled);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_CONSTANT)->setEnabled(enabled);
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MAX_ALTITUDE)->setEnabled(enabled);
}
void LLPanelSettingsDensityTab::refresh()
@@ -484,61 +573,124 @@ void LLPanelSettingsDensityTab::refresh()
setEnabled(TRUE);
setAllChildrenEnabled(TRUE);
- getChild<LLDensityCtrl>(mControlName)->setSky(mSkySettings);
- getChild<LLDensityCtrl>(mControlName)->refresh();
+
+ LLSD rayleigh_config = mSkySettings->getRayleighConfigs();
+ LLSD mie_config = mSkySettings->getMieConfigs();
+ LLSD absorption_config = mSkySettings->getAbsorptionConfigs();
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL)->setValue(rayleigh_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_TERM]);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL_SCALE)->setValue(rayleigh_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR]);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_LINEAR)->setValue(rayleigh_config[LLSettingsSky::SETTING_DENSITY_PROFILE_LINEAR_TERM]);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_RAYLEIGH_CONSTANT)->setValue(rayleigh_config[LLSettingsSky::SETTING_DENSITY_PROFILE_CONSTANT_TERM]);
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL)->setValue(mie_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_TERM]);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL_SCALE)->setValue(mie_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR]);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_LINEAR)->setValue(mie_config[LLSettingsSky::SETTING_DENSITY_PROFILE_LINEAR_TERM]);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_CONSTANT)->setValue(mie_config[LLSettingsSky::SETTING_DENSITY_PROFILE_CONSTANT_TERM]);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MIE_ANISO)->setValue(mie_config[LLSettingsSky::SETTING_MIE_ANISOTROPY_FACTOR]);
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL)->setValue(absorption_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_TERM]);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL_SCALE)->setValue(absorption_config[LLSettingsSky::SETTING_DENSITY_PROFILE_EXP_SCALE_FACTOR]);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_LINEAR)->setValue(absorption_config[LLSettingsSky::SETTING_DENSITY_PROFILE_LINEAR_TERM]);
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_ABSORPTION_CONSTANT)->setValue(absorption_config[LLSettingsSky::SETTING_DENSITY_PROFILE_CONSTANT_TERM]);
+
+ getChild<LLUICtrl>(FIELD_SKY_DENSITY_MAX_ALTITUDE)->setValue(rayleigh_config[LLSettingsSky::SETTING_DENSITY_PROFILE_WIDTH]);
}
void LLPanelSettingsDensityTab::updateProfile()
{
- getChild<LLDensityCtrl>(mControlName)->setSky(mSkySettings);
- getChild<LLDensityCtrl>(mControlName)->updateProfile();
+ F32 rayleigh_exponential_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL)->getValueF32();
+ F32 rayleigh_exponential_scale = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_RAYLEIGH_EXPONENTIAL_SCALE)->getValueF32();
+ F32 rayleigh_linear_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_RAYLEIGH_LINEAR)->getValueF32();
+ F32 rayleigh_constant_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_RAYLEIGH_CONSTANT)->getValueF32();
+ F32 mie_exponential_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL)->getValueF32();
+ F32 mie_exponential_scale = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MIE_EXPONENTIAL_SCALE)->getValueF32();
+ F32 mie_linear_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MIE_LINEAR)->getValueF32();
+ F32 mie_constant_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MIE_CONSTANT)->getValueF32();
+ F32 mie_aniso_factor = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MIE_ANISO)->getValueF32();
+ F32 absorption_exponential_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL)->getValueF32();
+ F32 absorption_exponential_scale = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_ABSORPTION_EXPONENTIAL_SCALE)->getValueF32();
+ F32 absorption_linear_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_ABSORPTION_LINEAR)->getValueF32();
+ F32 absorption_constant_term = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_ABSORPTION_CONSTANT)->getValueF32();
+ F32 max_alt = getChild<LLSliderCtrl>(FIELD_SKY_DENSITY_MAX_ALTITUDE)->getValueF32();
+
+ LLSD rayleigh_config = LLSettingsSky::createSingleLayerDensityProfile(max_alt, rayleigh_exponential_term, rayleigh_exponential_scale, rayleigh_linear_term, rayleigh_constant_term);
+ LLSD mie_config = LLSettingsSky::createSingleLayerDensityProfile(max_alt, mie_exponential_term, mie_exponential_scale, mie_linear_term, mie_constant_term, mie_aniso_factor);
+ LLSD absorption_config = LLSettingsSky::createSingleLayerDensityProfile(max_alt, absorption_exponential_term, absorption_exponential_scale, absorption_linear_term, absorption_constant_term);
+
+ mSkySettings->setRayleighConfigs(rayleigh_config);
+ mSkySettings->setMieConfigs(mie_config);
+ mSkySettings->setAbsorptionConfigs(absorption_config);
+
mSkySettings->update();
}
-LLPanelSettingsDensity::LLPanelSettingsDensity()
-{
+void LLPanelSettingsDensityTab::onRayleighExponentialChanged()
+{
+ updateProfile();
}
-BOOL LLPanelSettingsDensity::postBuild()
+void LLPanelSettingsDensityTab::onRayleighExponentialScaleChanged()
{
- //static_cast<LLPanelSettingsDensityTab*>(getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_RAYLEIGH))->setProfileType(LLDensityCtrl::Rayleigh);
- //static_cast<LLPanelSettingsDensityTab*>(getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_MIE))->setProfileType(LLDensityCtrl::Mie);
- //static_cast<LLPanelSettingsDensityTab*>(getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_ABSORPTION))->setProfileType(LLDensityCtrl::Absorption);
- refresh();
- return TRUE;
+ updateProfile();
}
-void LLPanelSettingsDensity::setEnabled(BOOL enabled)
+void LLPanelSettingsDensityTab::onRayleighLinearChanged()
{
- LLPanelSettingsSky::setEnabled(enabled);
+ updateProfile();
+}
- //getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_RAYLEIGH)->setEnabled(enabled);
- //getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_MIE)->setEnabled(enabled);
- //getChild<LLPanelSettingsDensityTab>(LLDensityCtrl::DENSITY_ABSORPTION)->setEnabled(enabled);
+void LLPanelSettingsDensityTab::onRayleighConstantChanged()
+{
+ updateProfile();
}
-void LLPanelSettingsDensity::refresh()
+void LLPanelSettingsDensityTab::onMieExponentialChanged()
{
- if (!mSkySettings)
- {
- setAllChildrenEnabled(FALSE);
- setEnabled(FALSE);
- return;
- }
+ updateProfile();
+}
- setEnabled(TRUE);
- setAllChildrenEnabled(TRUE);
+void LLPanelSettingsDensityTab::onMieExponentialScaleChanged()
+{
+ updateProfile();
+}
- //getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_RAYLEIGH)->refresh();
- //getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_MIE)->refresh();
- //getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_ABSORPTION)->refresh();
+void LLPanelSettingsDensityTab::onMieLinearChanged()
+{
+ updateProfile();
}
-void LLPanelSettingsDensity::updateProfile()
+void LLPanelSettingsDensityTab::onMieConstantChanged()
{
- //getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_RAYLEIGH)->updateProfile();
- //getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_MIE)->updateProfile();
- //getChild<LLDensityCtrl>(LLDensityCtrl::DENSITY_ABSORPTION)->updateProfile();
- mSkySettings->update();
+ updateProfile();
}
+void LLPanelSettingsDensityTab::onMieAnisoFactorChanged()
+{
+ updateProfile();
+}
+
+void LLPanelSettingsDensityTab::onAbsorptionExponentialChanged()
+{
+ updateProfile();
+}
+
+void LLPanelSettingsDensityTab::onAbsorptionExponentialScaleChanged()
+{
+ updateProfile();
+}
+
+void LLPanelSettingsDensityTab::onAbsorptionLinearChanged()
+{
+ updateProfile();
+}
+
+void LLPanelSettingsDensityTab::onAbsorptionConstantChanged()
+{
+ updateProfile();
+}
+
+void LLPanelSettingsDensityTab::onMaxAltitudeChanged()
+{
+ updateProfile();
+}
diff --git a/indra/newview/llpaneleditsky.h b/indra/newview/llpaneleditsky.h
index 982315adff..aadbd85a37 100644
--- a/indra/newview/llpaneleditsky.h
+++ b/indra/newview/llpaneleditsky.h
@@ -30,13 +30,11 @@
#include "llpanel.h"
#include "llsettingssky.h"
#include "llfloaterfixedenvironment.h"
-#include "lldensityctrl.h"
//=========================================================================
class LLSlider;
class LLColorSwatchCtrl;
class LLTextureCtrl;
-class LLDensityCtrl; // custom control for specifying various sky density settings
//=========================================================================
class LLPanelSettingsSky : public LLSettingsEditPanel
@@ -49,7 +47,7 @@ public:
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(); }
+ void setSky(const LLSettingsSky::ptr_t &sky) { mSkySettings = sky; clearIsDirty(); refresh(); }
protected:
LLSettingsSky::ptr_t mSkySettings;
@@ -144,25 +142,23 @@ public:
protected:
virtual void refresh() override;
- // update the settings for our profile type
- void updateProfile();
-
- LLDensityCtrl::DensityProfileType mProfileType;
- std::string mControlName;
-};
+ void onRayleighExponentialChanged();
+ void onRayleighExponentialScaleChanged();
+ void onRayleighLinearChanged();
+ void onRayleighConstantChanged();
-class LLPanelSettingsDensity : public LLPanelSettingsSky
-{
- LOG_CLASS(LLPanelSettingsDensity);
+ void onMieExponentialChanged();
+ void onMieExponentialScaleChanged();
+ void onMieLinearChanged();
+ void onMieConstantChanged();
+ void onMieAnisoFactorChanged();
-public:
- LLPanelSettingsDensity();
+ void onAbsorptionExponentialChanged();
+ void onAbsorptionExponentialScaleChanged();
+ void onAbsorptionLinearChanged();
+ void onAbsorptionConstantChanged();
- virtual BOOL postBuild() override;
- virtual void setEnabled(BOOL enabled) override;
-
-protected:
- virtual void refresh() override;
+ void onMaxAltitudeChanged();
// update the settings for our profile type
void updateProfile();
diff --git a/indra/newview/llpaneleditwater.cpp b/indra/newview/llpaneleditwater.cpp
index 9d9a183ffd..bf00ee34f9 100644
--- a/indra/newview/llpaneleditwater.cpp
+++ b/indra/newview/llpaneleditwater.cpp
@@ -161,21 +161,25 @@ void LLPanelSettingsWaterMainTab::refresh()
void LLPanelSettingsWaterMainTab::onFogColorChanged()
{
mWaterSettings->setWaterFogColor(LLColor3(mClrFogColor->get()));
+ setIsDirty();
}
void LLPanelSettingsWaterMainTab::onFogDensityChanged()
{
mWaterSettings->setWaterFogDensity(getChild<LLUICtrl>(FIELD_WATER_FOG_DENSITY)->getValue().asReal());
+ setIsDirty();
}
void LLPanelSettingsWaterMainTab::onFogUnderWaterChanged()
{
mWaterSettings->setFogMod(getChild<LLUICtrl>(FIELD_WATER_UNDERWATER_MOD)->getValue().asReal());
+ setIsDirty();
}
void LLPanelSettingsWaterMainTab::onNormalMapChanged()
{
mWaterSettings->setNormalMapID(mTxtNormalMap->getImageAssetID());
+ setIsDirty();
}
@@ -184,6 +188,7 @@ void LLPanelSettingsWaterMainTab::onLargeWaveChanged()
LLVector2 vect(getChild<LLUICtrl>(FIELD_WATER_WAVE1_XY)->getValue());
LL_WARNS("LAPRAS") << "Changing Large Wave from " << mWaterSettings->getWave1Dir() << " -> " << vect << LL_ENDL;
mWaterSettings->setWave1Dir(vect);
+ setIsDirty();
}
void LLPanelSettingsWaterMainTab::onSmallWaveChanged()
@@ -191,6 +196,7 @@ void LLPanelSettingsWaterMainTab::onSmallWaveChanged()
LLVector2 vect(getChild<LLUICtrl>(FIELD_WATER_WAVE2_XY)->getValue());
LL_WARNS("LAPRAS") << "Changing Small Wave from " << mWaterSettings->getWave2Dir() << " -> " << vect << LL_ENDL;
mWaterSettings->setWave2Dir(vect);
+ setIsDirty();
}
@@ -199,29 +205,35 @@ void LLPanelSettingsWaterMainTab::onNormalScaleChanged()
LLVector3 vect(getChild<LLUICtrl>(FIELD_WATER_NORMAL_SCALE_X)->getValue().asReal(), getChild<LLUICtrl>(FIELD_WATER_NORMAL_SCALE_Y)->getValue().asReal(), getChild<LLUICtrl>(FIELD_WATER_NORMAL_SCALE_Z)->getValue().asReal());
LL_WARNS("LAPRAS") << "Changing normal scale from " << mWaterSettings->getNormalScale() << " -> " << vect << LL_ENDL;
mWaterSettings->setNormalScale(vect);
+ setIsDirty();
}
void LLPanelSettingsWaterMainTab::onFresnelScaleChanged()
{
mWaterSettings->setFresnelScale(getChild<LLUICtrl>(FIELD_WATER_FRESNEL_SCALE)->getValue().asReal());
+ setIsDirty();
}
void LLPanelSettingsWaterMainTab::onFresnelOffsetChanged()
{
mWaterSettings->setFresnelOffset(getChild<LLUICtrl>(FIELD_WATER_FRESNEL_OFFSET)->getValue().asReal());
+ setIsDirty();
}
void LLPanelSettingsWaterMainTab::onScaleAboveChanged()
{
mWaterSettings->setScaleAbove(getChild<LLUICtrl>(FIELD_WATER_SCALE_ABOVE)->getValue().asReal());
+ setIsDirty();
}
void LLPanelSettingsWaterMainTab::onScaleBelowChanged()
{
mWaterSettings->setScaleBelow(getChild<LLUICtrl>(FIELD_WATER_SCALE_BELOW)->getValue().asReal());
+ setIsDirty();
}
void LLPanelSettingsWaterMainTab::onBlurMultipChanged()
{
mWaterSettings->setBlurMultiplier(getChild<LLUICtrl>(FIELD_WATER_BLUR_MULTIP)->getValue().asReal());
+ setIsDirty();
}
diff --git a/indra/newview/llpaneleditwater.h b/indra/newview/llpaneleditwater.h
index 5a04f98b05..ab2dc47bcc 100644
--- a/indra/newview/llpaneleditwater.h
+++ b/indra/newview/llpaneleditwater.h
@@ -49,7 +49,7 @@ public:
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(); }
+ void setWater(const LLSettingsWater::ptr_t &water) { mWaterSettings = water; clearIsDirty(); refresh(); }
protected:
LLSettingsWater::ptr_t mWaterSettings;
diff --git a/indra/newview/llpanelenvironment.cpp b/indra/newview/llpanelenvironment.cpp
index d91f9110e0..51b2fa380f 100644
--- a/indra/newview/llpanelenvironment.cpp
+++ b/indra/newview/llpanelenvironment.cpp
@@ -119,7 +119,19 @@ void LLPanelEnvironmentInfo::onVisibilityChange(BOOL new_visibility)
if (new_visibility)
gIdleCallbacks.addFunction(onIdlePlay, this);
else
+ {
gIdleCallbacks.deleteFunction(onIdlePlay, this);
+ LLFloaterEditExtDayCycle *dayeditor = getEditFloater();
+ if (mCommitConnection.connected())
+ mCommitConnection.disconnect();
+ if (dayeditor)
+ {
+ if (dayeditor->isDirty())
+ dayeditor->refresh();
+ else
+ dayeditor->closeFloater();
+ }
+ }
}
@@ -213,13 +225,13 @@ LLFloaterSettingsPicker *LLPanelEnvironmentInfo::getSettingsPicker()
return picker;
}
-LLFloaterEditExtDayCycle * LLPanelEnvironmentInfo::getEditFloater()
+LLFloaterEditExtDayCycle * LLPanelEnvironmentInfo::getEditFloater(bool create)
{
static const S32 FOURHOURS(4 * 60 * 60);
LLFloaterEditExtDayCycle *editor = static_cast<LLFloaterEditExtDayCycle *>(mEditFloater.get());
// Show the dialog
- if (!editor)
+ if (!editor && create)
{
LLSD params(LLSDMap(LLFloaterEditExtDayCycle::KEY_EDIT_CONTEXT, (mCurrentParcelId == INVALID_PARCEL_ID) ? LLFloaterEditExtDayCycle::CONTEXT_REGION : LLFloaterEditExtDayCycle::CONTEXT_PARCEL)
(LLFloaterEditExtDayCycle::KEY_DAY_LENGTH, mCurrentEnvironment ? (S32)(mCurrentEnvironment->mDayLength.value()) : FOURHOURS));
@@ -228,9 +240,11 @@ LLFloaterEditExtDayCycle * LLPanelEnvironmentInfo::getEditFloater()
if (!editor)
return nullptr;
- editor->setEditCommitSignal([this](LLSettingsDay::ptr_t pday) { onEditCommited(pday); });
}
+ if (editor && !mCommitConnection.connected())
+ mCommitConnection = editor->setEditCommitSignal([this](LLSettingsDay::ptr_t pday) { onEditCommited(pday); });
+
return editor;
}
diff --git a/indra/newview/llpanelenvironment.h b/indra/newview/llpanelenvironment.h
index 971f12c7e7..b867a7b61d 100644
--- a/indra/newview/llpanelenvironment.h
+++ b/indra/newview/llpanelenvironment.h
@@ -44,17 +44,16 @@ class LLPanelEnvironmentInfo : public LLPanel
public:
LLPanelEnvironmentInfo();
- // LLPanel
virtual BOOL postBuild() override;
virtual void onOpen(const LLSD& key) override;
- // LLView
+ virtual BOOL isDirty() const override { return getIsDirty(); }
virtual void onVisibilityChange(BOOL new_visibility) override;
virtual void refresh() override;
- S32 getCurrentParcelId() const { return mCurrentParcelId; }
- void setCurrentParcelId(S32 parcel_id) { mCurrentParcelId = parcel_id; }
+ S32 getCurrentParcelId() const { return mCurrentParcelId; }
+ void setCurrentParcelId(S32 parcel_id) { mCurrentParcelId = parcel_id; }
virtual bool isRegion() const = 0;
virtual LLParcel * getParcel() = 0;
@@ -95,9 +94,9 @@ protected:
void setApplyProgress(bool started);
void setDirtyFlag(U32 flag);
void clearDirtyFlag(U32 flag);
- bool getIsDirty() const { return (mDirtyFlag != 0); }
- bool getIsDirtyFlag(U32 flag) const { return ((mDirtyFlag & flag) != 0); }
- U32 getDirtyFlag() const { return mDirtyFlag; }
+ bool getIsDirty() const { return (mDirtyFlag != 0); }
+ bool getIsDirtyFlag(U32 flag) const { return ((mDirtyFlag & flag) != 0); }
+ U32 getDirtyFlag() const { return mDirtyFlag; }
void onSwitchDefaultSelection();
void onSldDayLengthChanged(F32 value);
@@ -121,17 +120,21 @@ protected:
std::string getInventoryNameForAssetId(LLUUID asset_id);
LLFloaterSettingsPicker * getSettingsPicker();
- LLFloaterEditExtDayCycle * getEditFloater();
+ LLFloaterEditExtDayCycle * getEditFloater(bool create = true);
LLEnvironment::EnvironmentInfo::ptr_t mCurrentEnvironment;
S32 mCurrentParcelId;
+
private:
static void onIdlePlay(void *);
- LLHandle<LLFloater> mSettingsFloater;
- LLHandle<LLFloater> mEditFloater;
- S32 mDirtyFlag;
+ typedef boost::signals2::connection connection_t;
+
+ connection_t mCommitConnection;
+ LLHandle<LLFloater> mSettingsFloater;
+ LLHandle<LLFloater> mEditFloater;
+ S32 mDirtyFlag;
};
#endif // LL_LLPANELEXPERIENCES_H
diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp
index c56b5df74d..719d682118 100644
--- a/indra/newview/llsettingsvo.cpp
+++ b/indra/newview/llsettingsvo.cpp
@@ -227,6 +227,14 @@ void LLSettingsVOBase::onAgentAssetUploadComplete(LLUUID itemId, LLUUID newAsset
psettings->setAssetId(newAssetId);
if (callback)
callback( newAssetId, itemId, LLUUID::null, response );
+
+#if 0
+ std::string exprtFile = gDirUtilp->getTempDir() + gDirUtilp->getDirDelimiter() + newAssetId.asString() + ".llsd";
+
+ LLSettingsVOBase::exportFile(psettings, exprtFile, LLSDSerialize::LLSD_NOTATION);
+
+ LL_WARNS("LAPRAS") << "SETTINGS File written as: '" << exprtFile << "'" << LL_ENDL;
+#endif
}
void LLSettingsVOBase::onTaskAssetUploadComplete(LLUUID itemId, LLUUID taskId, LLUUID newAssetId, LLSD response, LLSettingsBase::ptr_t psettings, inventory_result_fn callback)
@@ -579,6 +587,9 @@ void LLSettingsVOSky::updateSettings()
gSky.setMoonTextures(getMoonTextureId(), getNextMoonTextureId());
gSky.setCloudNoiseTextures(getCloudNoiseTextureId(), getNextCloudNoiseTextureId());
gSky.setBloomTextures(getBloomTextureId(), getNextBloomTextureId());
+
+ gSky.setSunScale(getSunScale());
+ gSky.setMoonScale(getMoonScale());
}
void LLSettingsVOSky::applySpecial(void *ptarget)
diff --git a/indra/newview/llsky.cpp b/indra/newview/llsky.cpp
index 9c7fc225a0..0740878901 100644
--- a/indra/newview/llsky.cpp
+++ b/indra/newview/llsky.cpp
@@ -129,6 +129,22 @@ void LLSky::resetVertexBuffers()
}
}
+void LLSky::setSunScale(F32 sun_scale)
+{
+ if(mVOSkyp.notNull())
+ {
+ mVOSkyp->setSunScale(sun_scale);
+ }
+}
+
+void LLSky::setMoonScale(F32 moon_scale)
+{
+ if(mVOSkyp.notNull())
+ {
+ mVOSkyp->setMoonScale(moon_scale);
+ }
+}
+
void LLSky::setSunTextures(const LLUUID& sun_texture, const LLUUID& sun_texture_next)
{
if(mVOSkyp.notNull()) {
diff --git a/indra/newview/llsky.h b/indra/newview/llsky.h
index d2067a58bb..e3cc567888 100644
--- a/indra/newview/llsky.h
+++ b/indra/newview/llsky.h
@@ -61,6 +61,9 @@ public:
void setCloudNoiseTextures(const LLUUID& cloud_noise_texture, const LLUUID& cloud_noise_texture_next);
void setBloomTextures(const LLUUID& bloom_texture, const LLUUID& bloom_texture_next);
+ void setSunScale(F32 sun_scale);
+ void setMoonScale(F32 moon_scale);
+
LLColor4 getSkyFogColor() const;
void setCloudDensityAtAgent(F32 cloud_density);
diff --git a/indra/newview/llviewerassetupload.cpp b/indra/newview/llviewerassetupload.cpp
index 555768615a..6a81c312d3 100644
--- a/indra/newview/llviewerassetupload.cpp
+++ b/indra/newview/llviewerassetupload.cpp
@@ -735,6 +735,10 @@ void LLViewerAssetUpload::AssetInventoryUploadCoproc(LLCoreHttpUtil::HttpCorouti
LLUploadDialog::modalUploadFinished();
return;
}
+ if (!result.has("success"))
+ {
+ result["success"] = LLSD::Boolean((ulstate == "complete") && status);
+ }
S32 uploadPrice = result["upload_price"].asInteger();//uploadInfo->getEconomyUploadCost();
diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp
index a94ac5973b..374322ac10 100644
--- a/indra/newview/llviewernetwork.cpp
+++ b/indra/newview/llviewernetwork.cpp
@@ -133,7 +133,7 @@ void LLGridManager::initialize(const std::string& grid_file)
addSystemGrid(LLTrans::getString("AditiGridLabel"),
"util.aditi.lindenlab.com",
"https://login.aditi.lindenlab.com/cgi-bin/login.cgi",
- "http://aditi-secondlife.webdev.lindenlab.com/helpers/",
+ "https://secondlife.aditi.lindenlab.com/helpers/",
DEFAULT_LOGIN_PAGE,
SL_UPDATE_QUERY_URL,
"https://my.aditi.lindenlab.com/",
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index 714170a513..6899424cf6 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -1123,7 +1123,9 @@ BOOL LLViewerTextEditor::openEmbeddedItem(LLPointer<LLInventoryItem> item, llwch
case LLAssetType::AT_CALLINGCARD:
openEmbeddedCallingcard( item, wc );
return TRUE;
-
+ case LLAssetType::AT_SETTINGS:
+ openEmbeddedSetting(item, wc);
+ return TRUE;
case LLAssetType::AT_NOTECARD:
case LLAssetType::AT_LSL_TEXT:
case LLAssetType::AT_CLOTHING:
@@ -1198,6 +1200,18 @@ void LLViewerTextEditor::openEmbeddedCallingcard( LLInventoryItem* item, llwchar
}
}
+void LLViewerTextEditor::openEmbeddedSetting(LLInventoryItem* item, llwchar wc)
+{
+ if (LLEnvironment::instance().isInventoryEnabled())
+ {
+ showCopyToInvDialog(item, wc);
+ }
+ else
+ {
+ LLNotificationsUtil::add("NoEnvironmentSettings");
+ }
+}
+
void LLViewerTextEditor::showUnsavedAlertDialog( LLInventoryItem* item )
{
LLSD payload;
diff --git a/indra/newview/llviewertexteditor.h b/indra/newview/llviewertexteditor.h
index 44f104dde1..a6d7fef409 100644
--- a/indra/newview/llviewertexteditor.h
+++ b/indra/newview/llviewertexteditor.h
@@ -107,6 +107,7 @@ private:
void openEmbeddedSound( LLInventoryItem* item, llwchar wc );
void openEmbeddedLandmark( LLPointer<LLInventoryItem> item_ptr, llwchar wc );
void openEmbeddedCallingcard( LLInventoryItem* item, llwchar wc);
+ void openEmbeddedSetting(LLInventoryItem* item, llwchar wc);
void showCopyToInvDialog( LLInventoryItem* item, llwchar wc );
void showUnsavedAlertDialog( LLInventoryItem* item );
diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp
index 64be033fdc..81632796e4 100644
--- a/indra/newview/llvosky.cpp
+++ b/indra/newview/llvosky.cpp
@@ -775,6 +775,16 @@ LLDrawable *LLVOSky::createDrawable(LLPipeline *pipeline)
return mDrawable;
}
+void LLVOSky::setSunScale(F32 sun_scale)
+{
+ mSunScale = sun_scale;
+}
+
+void LLVOSky::setMoonScale(F32 moon_scale)
+{
+ mMoonScale = moon_scale;
+}
+
void LLVOSky::setSunTextures(const LLUUID& sun_texture, const LLUUID& sun_texture_next)
{
// We test the UUIDs here because we explicitly do not want the default image returned by getFetchedTexture in that case...
@@ -955,8 +965,8 @@ BOOL LLVOSky::updateGeometry(LLDrawable *drawable)
right.normalize();
up.normalize();
- bool draw_sun = updateHeavenlyBodyGeometry(drawable, FACE_SUN, mSun, up, right);
- bool draw_moon = updateHeavenlyBodyGeometry(drawable, FACE_MOON, mMoon, up, right);
+ bool draw_sun = updateHeavenlyBodyGeometry(drawable, mSunScale, FACE_SUN, mSun, up, right);
+ bool draw_moon = updateHeavenlyBodyGeometry(drawable, mMoonScale, FACE_MOON, mMoon, up, right);
draw_sun &= LLEnvironment::getInstance()->getIsSunUp();
draw_moon &= LLEnvironment::getInstance()->getIsMoonUp();
@@ -987,7 +997,7 @@ BOOL LLVOSky::updateGeometry(LLDrawable *drawable)
return TRUE;
}
-bool LLVOSky::updateHeavenlyBodyGeometry(LLDrawable *drawable, const S32 f, LLHeavenBody& hb, const LLVector3 &up, const LLVector3 &right)
+bool LLVOSky::updateHeavenlyBodyGeometry(LLDrawable *drawable, F32 scale, const S32 f, LLHeavenBody& hb, const LLVector3 &up, const LLVector3 &right)
{
mHeavenlyBodyUpdated = TRUE ;
@@ -1010,8 +1020,8 @@ bool LLVOSky::updateHeavenlyBodyGeometry(LLDrawable *drawable, const S32 f, LLHe
F32 horiz_enlargement = 1 + enlargm_factor * 0.3f;
F32 vert_enlargement = 1 + enlargm_factor * 0.2f;
- const LLVector3 scaled_right = horiz_enlargement * HEAVENLY_BODY_DIST * HEAVENLY_BODY_FACTOR * hb.getDiskRadius() * hb_right;
- const LLVector3 scaled_up = vert_enlargement * HEAVENLY_BODY_DIST * HEAVENLY_BODY_FACTOR * hb.getDiskRadius() * hb_up;
+ const LLVector3 scaled_right = horiz_enlargement * scale * HEAVENLY_BODY_DIST * HEAVENLY_BODY_FACTOR * hb.getDiskRadius() * hb_right;
+ const LLVector3 scaled_up = vert_enlargement * scale * HEAVENLY_BODY_DIST * HEAVENLY_BODY_FACTOR * hb.getDiskRadius() * hb_up;
LLVector3 v_clipped[4];
diff --git a/indra/newview/llvosky.h b/indra/newview/llvosky.h
index d8039b7f80..4943c48f7c 100644
--- a/indra/newview/llvosky.h
+++ b/indra/newview/llvosky.h
@@ -236,7 +236,7 @@ public:
void setSunDirectionCFR(const LLVector3 &sun_direction);
void setMoonDirectionCFR(const LLVector3 &moon_direction);
- bool updateHeavenlyBodyGeometry(LLDrawable *drawable, const S32 side, LLHeavenBody& hb, const LLVector3 &up, const LLVector3 &right);
+ bool updateHeavenlyBodyGeometry(LLDrawable *drawable, F32 scale, const S32 side, LLHeavenBody& hb, const LLVector3 &up, const LLVector3 &right);
void updateReflectionGeometry(LLDrawable *drawable, F32 H, const LLHeavenBody& HB);
F32 getWorldScale() const { return mWorldScale; }
@@ -278,6 +278,9 @@ public:
void setCloudNoiseTextures(const LLUUID& cloud_noise_texture, const LLUUID& cloud_noise_texture_next);
void setBloomTextures(const LLUUID& bloom_texture, const LLUUID& bloom_texture_next);
+ void setSunScale(F32 sun_scale);
+ void setMoonScale(F32 sun_scale);
+
void forceSkyUpdate(void) { mForceUpdate = TRUE; }
public:
@@ -297,6 +300,9 @@ protected:
LLPointer<LLViewerFetchedTexture> mCloudNoiseTexturep[2];
LLPointer<LLViewerFetchedTexture> mBloomTexturep[2];
+ F32 mSunScale = 1.0f;
+ F32 mMoonScale = 1.0f;
+
static S32 sResolution;
static S32 sTileResX;
static S32 sTileResY;
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index a177dbadd5..176fbd49e9 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -695,6 +695,10 @@ with the same filename but different name
<texture name="VirtualTrackball_Rotate_Left" file_name="widgets/track_control_rotate_left_side.png" />
<texture name="VirtualTrackball_Rotate_Right" file_name="widgets/track_control_rotate_right_side.png" />
<texture name="VirtualTrackball_Rotate_Top" file_name="widgets/track_control_rotate_top.png" />
+ <texture name="VirtualTrackball_Rotate_Bottom_Active" file_name="widgets/track_control_rotate_bottom_active.png" />
+ <texture name="VirtualTrackball_Rotate_Left_Active" file_name="widgets/track_control_rotate_left_side_active.png" />
+ <texture name="VirtualTrackball_Rotate_Right_Active" file_name="widgets/track_control_rotate_right_side_active.png" />
+ <texture name="VirtualTrackball_Rotate_Top_Active" file_name="widgets/track_control_rotate_top_active.png" />
<texture name="VirtualTrackball_Sphere" file_name="widgets/track_control_sphere.png" />
<texture name="VirtualTrackball_Sun_Back" file_name="widgets/track_control_sun_back.png" />
<texture name="VirtualTrackball_Sun_Front" file_name="widgets/track_control_sun_front.png" />
diff --git a/indra/newview/skins/default/textures/widgets/track_control_rotate_bottom_active.png b/indra/newview/skins/default/textures/widgets/track_control_rotate_bottom_active.png
new file mode 100644
index 0000000000..911618b08e
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/track_control_rotate_bottom_active.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/track_control_rotate_left_side_active.png b/indra/newview/skins/default/textures/widgets/track_control_rotate_left_side_active.png
new file mode 100644
index 0000000000..2fe04b93f1
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/track_control_rotate_left_side_active.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/track_control_rotate_right_side_active.png b/indra/newview/skins/default/textures/widgets/track_control_rotate_right_side_active.png
new file mode 100644
index 0000000000..824051562f
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/track_control_rotate_right_side_active.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/widgets/track_control_rotate_top_active.png b/indra/newview/skins/default/textures/widgets/track_control_rotate_top_active.png
new file mode 100644
index 0000000000..9a7493703b
--- /dev/null
+++ b/indra/newview/skins/default/textures/widgets/track_control_rotate_top_active.png
Binary files differ
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 1ccd953b3b..c3f94f9aa3 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
@@ -3,13 +3,14 @@
layout="topleft"
name="env_edit_extdaycycle"
help_topic="day_presets"
- save_rect="true"
+ save_rect="false"
title="Edit Day Cycle"
width="705"
height="650"
min_width="705"
min_height="650"
- can_resize="true">
+ single_instance="true"
+ can_resize="false">
<!-- obsolete?, add as hint for 'save' button? -->
<string name="title_new">Create a New Day Cycle</string>
@@ -400,9 +401,17 @@
width="90"
label="Add Frame"
left_pad="175"
- top_delta="-12"
+ top_delta="-20"
name="add_frame" />
<button
+ follows="top|left"
+ height="23"
+ width="90"
+ label="Load Frame"
+ top_pad="0"
+ left_delta="0"
+ name="btn_load_frame" />
+ <button
follows="left|top"
height="23"
width="90"
@@ -421,36 +430,18 @@
visible="true">
<!--bg_alpha_color="blue"
background_visible="true" -->
- <icon
- border="1"
- bevel_style="out"
+ <text
name="icn_lock_edit"
- layout="bottomleft"
follows="bottom"
- image_name="Locked_Icon"
- bottom="4"
- left="5"
- height="15"
- width="15"
- tab_stop="false"
- visible="false"
- tool_tip="Select a key frame above to edit settings"/>
- <button
- name="btn_load_frame"
- follows="top"
- image_overlay="Command_Inventory_Icon"
- image_disabled="PushButton_Disabled"
- image_disabled_selected="PushButton_Disabled"
- image_selected="PushButton_Selected"
- image_unselected="PushButton_Off"
- hover_glow_amount="0.15"
- auto_resize="false"
- layout="topleft"
- height="30"
- width="30"
- left="25"
- top="1"
- tool_tip="Replace frame with settings from inventory"/>
+ height="10"
+ layout="bottomleft"
+ left_delta="15"
+ top_pad="15"
+ font="SansSerif"
+ text_color="Yellow"
+ width="500">
+Select a key frame from the timeline above to edit settings.
+ </text>
</layout_panel>
<layout_panel name="frame_settings_water"
auto_resize="true"
@@ -537,7 +528,7 @@
layout="topleft"
left_delta="0"
top_pad="5"
- name="advanced_atmo_panel" />
+ name="sky_density_panel" />
</tab_container>
</layout_panel>
</layout_stack>
diff --git a/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml b/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml
index f88618fb71..36462dcd02 100644
--- a/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml
+++ b/indra/newview/skins/default/xui/en/floater_fixedenvironment.xml
@@ -2,20 +2,19 @@
<floater
can_minimize="false"
can_tear_off="false"
- can_resize="true"
+ can_resize="false"
can_drag_on_left="false"
can_close="true"
- can_dock="true"
+ can_dock="false"
bevel_style="in"
- height="500"
+ height="550"
layout="topleft"
name="Fixed Environment"
save_rect="true"
title="Fixed Environment"
- save_dock_state="true"
- save_visibility="true"
+ save_visibility="false"
single_instance="true"
- width="650">
+ width="750">
<layout_stack name="floater_stack"
left="5"
top="5"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index f011fe0aaa..2ab22cb565 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -11183,5 +11183,19 @@ Settings are not supported on this region.
Please move to a settings enabled region and retry your action.
<tag>fail</tag>
</notification>
+
+ <notification
+ icon="alertmodal.tga"
+ name="SettingsConfirmLoss"
+ type="alertmodal">
+You are about to lose the changes you have made to this [TYPE] named "[NAME]".
+Are you sure you want to continue?
+ <tag>confirm</tag>
+ <usetemplate
+ ignoretext="Are you sure you want to lose changes?"
+ name="okcancelignore"
+ notext="No"
+ yestext="Yes"/>
+ </notification>
</notifications>
diff --git a/indra/newview/skins/default/xui/en/panel_region_environment.xml b/indra/newview/skins/default/xui/en/panel_region_environment.xml
index 3a1a8c432a..557e093f51 100644
--- a/indra/newview/skins/default/xui/en/panel_region_environment.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_environment.xml
@@ -29,8 +29,8 @@
valign="top"
top_pad="20"
text_color="white">
-Parcel environmental settings are
-disabled on legacy regions.
+No Parcel parcel is selected. Environmental
+settings are disabled.
</text>
</layout_panel>
<layout_panel
diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml
index 05bd3c336a..b97dfcd0fe 100644
--- a/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml
+++ b/indra/newview/skins/default/xui/en/panel_settings_sky_density.xml
@@ -1,32 +1,262 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel
- border="true"
- follows="all"
- label="Density"
- name="panel_settings_sky_density"
- layout="topleft"
- left="0"
- top="0"
- width="320"
- height="240">
-<tab_container>
- <panel>
- name="panel_settings_sky_density_rayleigh"
- <densityctrl>
- name = "density_rayleigh"
- </densityctrl>
- </panel>
- <panel>
- name="panel_settings_sky_density_mie"
- <densityctrl>
- name = "density_mie"
- </densityctrl>
- </panel>
- <panel>
- name="panel_settings_sky_density_absorption"
- <densityctrl>
- name = "density_absorption"
- </densityctrl>
- </panel>
-</tab_container>
-</panel>
+ border="true"
+ follows="all"
+ label="Density"
+ layout="topleft"
+ left="0"
+ help_topic="sky_density"
+ name="panel_settings_sky_density"
+ top="0">
+ <layout_stack
+ follows="all"
+ layout="topleft"
+ left="5"
+ top="5"
+ right="-5"
+ bottom="-5"
+ orientation="vertical">
+ <layout_panel
+ border="true"
+ bevel_style="in"
+ auto_resize="true"
+ user_resize="true"
+ visible="true"
+ height="28">
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="1"
+ name="rayleigh_exponential"
+ label="Rayleigh Exponential Term:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="1"
+ name="rayleigh_exponential_scale"
+ label="Rayleigh Exponential Scale:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="1"
+ name="rayleigh_linear"
+ label="Rayleigh Linear Term:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="1"
+ name="rayleigh_constant"
+ label="Rayleigh Constant Term:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ </layout_panel>
+ <layout_panel
+ border="true"
+ bevel_style="in"
+ auto_resize="true"
+ user_resize="true"
+ visible="true"
+ height="28">
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="3.0"
+ name="mie_exponential"
+ label="Mie Exponential Term:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="1"
+ name="mie_exponential_scale"
+ label="Mie Exponential Scale:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="3.0"
+ name="mie_linear"
+ label="Mie Linear Term:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="10"
+ name="mie_constant"
+ label="Mie Constant Term:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0.2"
+ max_val="1.8"
+ name="mie_aniso_factor"
+ label="Mie Aniso Factor:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ </layout_panel>
+ <layout_panel
+ border="true"
+ bevel_style="in"
+ auto_resize="true"
+ user_resize="true"
+ visible="true"
+ height="28">
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="1"
+ name="absorption_exponential"
+ label="Absorption Exponential Term:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="1"
+ name="absorption_exponential_scale"
+ label="Absorption Exponential Scale:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="1"
+ name="absorption_linear"
+ label="Absorption Linear Term:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="0.01"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="0"
+ max_val="1"
+ name="absorption_constant"
+ label="Absorption Constant Term:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ </layout_panel>
+ <layout_panel
+ border="true"
+ bevel_style="in"
+ auto_resize="true"
+ user_resize="true"
+ visible="true"
+ height="16">
+ <slider
+ decimal_digits="2"
+ follows="left|top"
+ height="16"
+ increment="1"
+ initial_value="0"
+ layout="topleft"
+ left_delta="5"
+ min_val="1000"
+ max_val="40000"
+ name="max_altitude"
+ label="Max Altitude:"
+ top_delta="8"
+ width="400"
+ can_edit_text="true"/>
+ </layout_panel>
+ </layout_stack>
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml b/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml
index 586aff4bb8..4b72bbbe0e 100644
--- a/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml
+++ b/indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml
@@ -260,7 +260,7 @@
left_delta="5"
min_val="0.25"
max_val="20"
- name="sun_scale"
+ name="moon_scale"
top_delta="15"
width="130"
can_edit_text="true"/>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index c0481d1a28..3a882a73d3 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2780,6 +2780,7 @@ If you continue to receive this message, please contact Second Life support for
<!-- Environment settings -->
<string name="LocalSettings">Local Settings</string>
<string name="RegionSettings">Region Settings</string>
+ <string name="NoEnvironmentSettings">This Region does not support environmental settings.</string>
<!-- panel classified -->
<string name="ClassifiedClicksTxt">Clicks: [TELEPORT] teleport, [MAP] map, [PROFILE] profile</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml b/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml
index 3a9655b317..0e729c821a 100644
--- a/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml
+++ b/indra/newview/skins/default/xui/en/widgets/sun_moon_trackball.xml
@@ -43,26 +43,26 @@
<sun_moon_trackball.button_rotate_top
name="btn_rotate_top"
image_unselected="VirtualTrackball_Rotate_Top"
- image_selected="VirtualTrackball_Rotate_Top"
- image_disabled="VirtualTrackball_Rotate_Top" />
+ image_selected="VirtualTrackball_Rotate_Top_Active"
+ image_disabled="Blank" />
<sun_moon_trackball.button_rotate_bottom
name="btn_rotate_bottom"
image_unselected="VirtualTrackball_Rotate_Bottom"
- image_selected="VirtualTrackball_Rotate_Bottom"
- image_disabled="VirtualTrackball_Rotate_Bottom" />
+ image_selected="VirtualTrackball_Rotate_Bottom_Active"
+ image_disabled="Blank" />
<sun_moon_trackball.button_rotate_left
name="btn_rotate_left"
image_unselected="VirtualTrackball_Rotate_Left"
- image_selected="VirtualTrackball_Rotate_Left"
- image_disabled="VirtualTrackball_Rotate_Left" />
+ image_selected="VirtualTrackball_Rotate_Left_Active"
+ image_disabled="Blank" />
<sun_moon_trackball.button_rotate_right
name="btn_rotate_right"
image_unselected="VirtualTrackball_Rotate_Right"
- image_selected="VirtualTrackball_Rotate_Right"
- image_disabled="VirtualTrackball_Rotate_Right" />
+ image_selected="VirtualTrackball_Rotate_Right_Active"
+ image_disabled="Blank" />
</sun_moon_trackball>
diff --git a/indra/newview/tests/llviewernetwork_test.cpp b/indra/newview/tests/llviewernetwork_test.cpp
index d1dddf8e7e..fe81fd63ea 100644
--- a/indra/newview/tests/llviewernetwork_test.cpp
+++ b/indra/newview/tests/llviewernetwork_test.cpp
@@ -258,7 +258,7 @@ namespace tut
std::string("https://login.aditi.lindenlab.com/cgi-bin/login.cgi"));
ensure_equals("Aditi helper uri",
LLGridManager::getInstance()->getHelperURI("util.aditi.lindenlab.com"),
- std::string("http://aditi-secondlife.webdev.lindenlab.com/helpers/"));
+ std::string("https://secondlife.aditi.lindenlab.com/helpers/"));
ensure_equals("Aditi login page",
LLGridManager::getInstance()->getLoginPage("util.aditi.lindenlab.com"),
std::string("https://viewer-splash.secondlife.com/"));
@@ -330,7 +330,7 @@ namespace tut
std::string("https://login.aditi.lindenlab.com/cgi-bin/login.cgi"));
ensure_equals("Aditi helper uri",
LLGridManager::getInstance()->getHelperURI("util.aditi.lindenlab.com"),
- std::string("http://aditi-secondlife.webdev.lindenlab.com/helpers/"));
+ std::string("https://secondlife.aditi.lindenlab.com/helpers/"));
ensure_equals("Aditi login page",
LLGridManager::getInstance()->getLoginPage("util.aditi.lindenlab.com"),
std::string("https://viewer-splash.secondlife.com/"));