summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorRider Linden <rider@lindenlab.com>2019-02-14 16:19:39 -0800
committerRider Linden <rider@lindenlab.com>2019-02-14 16:19:39 -0800
commit2108d5ee38a955f140f40aa71705aa04e4487362 (patch)
tree462a064ab0b2cd93a6080a7defd48dfb74d847ec /indra
parente9777048751c73819e85257a6e7b0d0608fd6c39 (diff)
SL-10464: A couple last fixes dealing with region crossings. Environment Experiences are still stripped when changing regions. Even if destination region participates in the experience.
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llenvironment.cpp22
-rw-r--r--indra/newview/skins/default/xui/en/panel_settings_sky_sunmoon.xml23
2 files changed, 43 insertions, 2 deletions
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp
index 425ce6363d..4bf7a630a5 100644
--- a/indra/newview/llenvironment.cpp
+++ b/indra/newview/llenvironment.cpp
@@ -358,7 +358,14 @@ namespace
virtual ~LLSettingsInjected() {};
typename SETTINGT::ptr_t getSource() const { return this->mSource; }
- void setSource(const typename SETTINGT::ptr_t &source) { this->mSource = source; this->setDirtyFlag(true); this->mLastSourceHash = 0; }
+ void setSource(const typename SETTINGT::ptr_t &source)
+ {
+ if (source.get() == this) // do not set a source to itself.
+ return;
+ this->mSource = source;
+ this->setDirtyFlag(true);
+ this->mLastSourceHash = 0;
+ }
virtual bool isDirty() const override { return SETTINGT::isDirty() || (this->mSource->isDirty()); }
virtual bool isVeryDirty() const override { return SETTINGT::isVeryDirty() || (this->mSource->isVeryDirty()); }
@@ -974,8 +981,11 @@ bool LLEnvironment::isInventoryEnabled() const
void LLEnvironment::onRegionChange()
{
- // TODO: Use test experiences rather than full clear.
+// if (gAgent.getRegionCapability("ExperienceQuery").empty())
+// {
+// // for now environmental experiences do not survive region crossings
clearExperienceEnvironment(LLUUID::null, TRANSITION_DEFAULT);
+// }
LLViewerRegion* cur_region = gAgent.getRegion();
if (!cur_region)
@@ -2971,6 +2981,10 @@ namespace
void DayInjection::animateSkyChange(LLSettingsSky::ptr_t psky, LLSettingsBase::Seconds transition)
{
+ if (mInjectedSky.get() == psky.get())
+ { // An attempt to animate to itself... don't do it.
+ return;
+ }
if (transition == LLEnvironment::TRANSITION_INSTANT)
{
mBlenderSky.reset();
@@ -3000,6 +3014,10 @@ namespace
void DayInjection::animateWaterChange(LLSettingsWater::ptr_t pwater, LLSettingsBase::Seconds transition)
{
+ if (mInjectedWater.get() == pwater.get())
+ { // An attempt to animate to itself. Bad idea.
+ return;
+ }
if (transition == LLEnvironment::TRANSITION_INSTANT)
{
mBlenderWater.reset();
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 2aab41c5a0..bbba5ba729 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
@@ -176,6 +176,18 @@
top_delta="15"
width="250"
can_edit_text="true"/>
+
+ <check_box
+ control_name="sunbeacon"
+ width="60"
+ height="16"
+ label="Show Beacon"
+ layout="topleft"
+ name="sunbeacon"
+ right="-50"
+ bottom="-10"
+ follows="bottom|right"/>
+
</layout_panel>
<layout_panel
border="false"
@@ -287,6 +299,17 @@
top_delta="15"
width="130"
can_edit_text="true"/>
+ <check_box
+ control_name="moonbeacon"
+ width="60"
+ height="16"
+ label="Show Beacon"
+ layout="topleft"
+ name="moonbeacon"
+ right="-50"
+ bottom="-10"
+ follows="bottom|right"/>
+
</layout_panel>
</layout_stack>
</layout_panel>