diff options
| author | Graham Linden <graham@lindenlab.com> | 2018-10-03 17:16:15 +0100 | 
|---|---|---|
| committer | Graham Linden <graham@lindenlab.com> | 2018-10-03 17:16:15 +0100 | 
| commit | 5b4dba2cea2d58d18380482d9b54eebcc2dda1af (patch) | |
| tree | dd534538e4ce15c0590a7b744bea3930fb6310ac | |
| parent | 05d3d1b4815e4bd683b4362b57942563e6902262 (diff) | |
| parent | ac184e1ca77fc5085487925f74aaa6826f39870e (diff) | |
Merge
| -rw-r--r-- | indra/newview/llenvironment.cpp | 83 | ||||
| -rw-r--r-- | indra/newview/llenvironment.h | 21 | ||||
| -rw-r--r-- | indra/newview/llpanelenvironment.cpp | 26 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_my_environments.xml | 2 | 
4 files changed, 73 insertions, 59 deletions
diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index 994420a139..61b5e7f576 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -1026,12 +1026,12 @@ void LLEnvironment::requestRegion(environment_apply_fn cb)      requestParcel(INVALID_PARCEL_ID, cb);  } -void LLEnvironment::updateRegion(const LLSettingsDay::ptr_t &pday, S32 day_length, S32 day_offset, environment_apply_fn cb) +void LLEnvironment::updateRegion(const LLSettingsDay::ptr_t &pday, S32 day_length, S32 day_offset, LLEnvironment::altitudes_vect_t altitudes, environment_apply_fn cb)  { -    updateParcel(INVALID_PARCEL_ID, pday, day_length, day_offset, cb); +    updateParcel(INVALID_PARCEL_ID, pday, day_length, day_offset, altitudes, cb);  } -void LLEnvironment::updateRegion(const LLUUID &asset_id, S32 day_length, S32 day_offset, environment_apply_fn cb) +void LLEnvironment::updateRegion(const LLUUID &asset_id, S32 day_length, S32 day_offset, LLEnvironment::altitudes_vect_t altitudes, environment_apply_fn cb)  {      if (!isExtendedEnvironmentEnabled())      { @@ -1040,17 +1040,17 @@ void LLEnvironment::updateRegion(const LLUUID &asset_id, S32 day_length, S32 day          return;      } -    updateParcel(INVALID_PARCEL_ID, asset_id, day_length, day_offset, cb); +    updateParcel(INVALID_PARCEL_ID, asset_id, day_length, day_offset, altitudes, cb);  } -void LLEnvironment::updateRegion(const LLSettingsSky::ptr_t &psky, S32 day_length, S32 day_offset, environment_apply_fn cb) +void LLEnvironment::updateRegion(const LLSettingsSky::ptr_t &psky, S32 day_length, S32 day_offset, LLEnvironment::altitudes_vect_t altitudes, environment_apply_fn cb)  { -    updateParcel(INVALID_PARCEL_ID, psky, day_length, day_offset, cb); +    updateParcel(INVALID_PARCEL_ID, psky, day_length, day_offset, altitudes, cb);  } -void LLEnvironment::updateRegion(const LLSettingsWater::ptr_t &pwater, S32 day_length, S32 day_offset, environment_apply_fn cb) +void LLEnvironment::updateRegion(const LLSettingsWater::ptr_t &pwater, S32 day_length, S32 day_offset, LLEnvironment::altitudes_vect_t altitudes, environment_apply_fn cb)  { -    updateParcel(INVALID_PARCEL_ID, pwater, day_length, day_offset, cb); +    updateParcel(INVALID_PARCEL_ID, pwater, day_length, day_offset, altitudes, cb);  } @@ -1090,15 +1090,15 @@ void LLEnvironment::requestParcel(S32 parcel_id, environment_apply_fn cb)          [this, parcel_id, cb]() { coroRequestEnvironment(parcel_id, cb); });  } -void LLEnvironment::updateParcel(S32 parcel_id, const LLUUID &asset_id, S32 day_length, S32 day_offset, environment_apply_fn cb) +void LLEnvironment::updateParcel(S32 parcel_id, const LLUUID &asset_id, S32 day_length, S32 day_offset, LLEnvironment::altitudes_vect_t altitudes, environment_apply_fn cb)  {      std::string coroname =          LLCoros::instance().launch("LLEnvironment::coroUpdateEnvironment", -        [this, parcel_id, asset_id, day_length, day_offset, cb]() { coroUpdateEnvironment(parcel_id, NO_TRACK, -            LLSettingsDay::ptr_t(), asset_id, day_length, day_offset, cb); }); +        [this, parcel_id, asset_id, day_length, day_offset, altitudes, cb]() { coroUpdateEnvironment(parcel_id, NO_TRACK, +            LLSettingsDay::ptr_t(), asset_id, day_length, day_offset, altitudes, cb); });  } -void LLEnvironment::onUpdateParcelAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, S32 parcel_id, S32 day_length, S32 day_offset) +void LLEnvironment::onUpdateParcelAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, S32 parcel_id, S32 day_length, S32 day_offset, LLEnvironment::altitudes_vect_t altitudes)  {      if (status)      { @@ -1123,27 +1123,27 @@ void LLEnvironment::onUpdateParcelAssetLoaded(LLUUID asset_id, LLSettingsBase::p          return;      } -    updateParcel(parcel_id, pday, day_length, day_offset); +    updateParcel(parcel_id, pday, day_length, day_offset, altitudes);  } -void LLEnvironment::updateParcel(S32 parcel_id, const LLSettingsSky::ptr_t &psky, S32 day_length, S32 day_offset, environment_apply_fn cb) +void LLEnvironment::updateParcel(S32 parcel_id, const LLSettingsSky::ptr_t &psky, S32 day_length, S32 day_offset, LLEnvironment::altitudes_vect_t altitudes, environment_apply_fn cb)  {      LLSettingsDay::ptr_t pday = createDayCycleFromEnvironment((parcel_id == INVALID_PARCEL_ID) ? ENV_REGION : ENV_PARCEL, psky); -    updateParcel(parcel_id, pday, day_length, day_offset, cb); +    updateParcel(parcel_id, pday, day_length, day_offset, altitudes, cb);  } -void LLEnvironment::updateParcel(S32 parcel_id, const LLSettingsWater::ptr_t &pwater, S32 day_length, S32 day_offset, environment_apply_fn cb) +void LLEnvironment::updateParcel(S32 parcel_id, const LLSettingsWater::ptr_t &pwater, S32 day_length, S32 day_offset, LLEnvironment::altitudes_vect_t altitudes, environment_apply_fn cb)  {      LLSettingsDay::ptr_t pday = createDayCycleFromEnvironment((parcel_id == INVALID_PARCEL_ID) ? ENV_REGION : ENV_PARCEL, pwater); -    updateParcel(parcel_id, pday, day_length, day_offset, cb); +    updateParcel(parcel_id, pday, day_length, day_offset, altitudes, cb);  } -void LLEnvironment::updateParcel(S32 parcel_id, const LLSettingsDay::ptr_t &pday, S32 day_length, S32 day_offset, environment_apply_fn cb) +void LLEnvironment::updateParcel(S32 parcel_id, const LLSettingsDay::ptr_t &pday, S32 day_length, S32 day_offset, LLEnvironment::altitudes_vect_t altitudes, environment_apply_fn cb)  {      std::string coroname =          LLCoros::instance().launch("LLEnvironment::coroUpdateEnvironment", -        [this, parcel_id, pday, day_length, day_offset, cb]() { coroUpdateEnvironment(parcel_id, NO_TRACK, -            pday, LLUUID::null, day_length, day_offset, cb); }); +        [this, parcel_id, pday, day_length, day_offset, altitudes, cb]() { coroUpdateEnvironment(parcel_id, NO_TRACK, +            pday, LLUUID::null, day_length, day_offset, altitudes, cb); });  } @@ -1212,7 +1212,8 @@ void LLEnvironment::coroRequestEnvironment(S32 parcel_id, LLEnvironment::environ  //     }  } -void LLEnvironment::coroUpdateEnvironment(S32 parcel_id, S32 track_no, LLSettingsDay::ptr_t pday, LLUUID settings_asset, S32 day_length, S32 day_offset, LLEnvironment::environment_apply_fn apply) +void LLEnvironment::coroUpdateEnvironment(S32 parcel_id, S32 track_no, LLSettingsDay::ptr_t pday,  +        LLUUID settings_asset, S32 day_length, S32 day_offset, LLEnvironment::altitudes_vect_t altitudes, LLEnvironment::environment_apply_fn apply)  {      LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);      LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t @@ -1223,30 +1224,40 @@ void LLEnvironment::coroUpdateEnvironment(S32 parcel_id, S32 track_no, LLSetting      if (url.empty())          return; -    if (day_length < 1) -    { -        day_length = getEnvironmentDayLength((parcel_id == INVALID_PARCEL_ID) ? ENV_REGION : ENV_PARCEL).value(); -        if ((day_length < 1) && (parcel_id != INVALID_PARCEL_ID)) -            day_length = getEnvironmentDayLength(ENV_REGION).value(); -    } - -    if (day_offset < 1) -    { -        day_offset = getEnvironmentDayOffset((parcel_id == INVALID_PARCEL_ID) ? ENV_REGION : ENV_PARCEL).value(); -        if ((day_offset < 1) && (parcel_id != INVALID_PARCEL_ID)) -            day_offset = getEnvironmentDayOffset(ENV_REGION).value(); -    } +//     if (day_length < 1) +//     { +//         day_length = getEnvironmentDayLength((parcel_id == INVALID_PARCEL_ID) ? ENV_REGION : ENV_PARCEL).value(); +//         if ((day_length < 1) && (parcel_id != INVALID_PARCEL_ID)) +//             day_length = getEnvironmentDayLength(ENV_REGION).value(); +//     } +//  +//     if (day_offset < 1) +//     { +//         day_offset = getEnvironmentDayOffset((parcel_id == INVALID_PARCEL_ID) ? ENV_REGION : ENV_PARCEL).value(); +//         if ((day_offset < 1) && (parcel_id != INVALID_PARCEL_ID)) +//             day_offset = getEnvironmentDayOffset(ENV_REGION).value(); +//     }      LLSD body(LLSD::emptyMap());      body[KEY_ENVIRONMENT] = LLSD::emptyMap();      if (track_no == NO_TRACK)      {   // day length and offset are only applicable if we are addressing the entire day cycle. -        if (day_length >= 0) +        if (day_length > 0)              body[KEY_ENVIRONMENT][KEY_DAYLENGTH] = day_length; -        if (day_offset >= 0) +        if (day_offset > 0)              body[KEY_ENVIRONMENT][KEY_DAYOFFSET] = day_offset; + +        if ((parcel_id == INVALID_PARCEL_ID) && (altitudes.size() == 3)) +        {   // only test for altitude changes if we are changing the region. +            body[KEY_ENVIRONMENT][KEY_TRACKALTS] = LLSD::emptyArray(); +            for (S32 i = 0; i < 3; ++i) +            { +                body[KEY_ENVIRONMENT][KEY_TRACKALTS][i] = altitudes[i]; +            } +        }      } +      if (pday)          body[KEY_ENVIRONMENT][KEY_DAYCYCLE] = pday->getSettings();      else if (!settings_asset.isNull()) diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h index aa7afd14bd..65c4748d02 100644 --- a/indra/newview/llenvironment.h +++ b/indra/newview/llenvironment.h @@ -108,6 +108,7 @@ public:      typedef boost::signals2::signal<void(EnvSelection_t)>           env_changed_signal_t;      typedef env_changed_signal_t::slot_type                         env_changed_fn;      typedef std::array<F32, 4>                                      altitude_list_t; +    typedef std::vector<F32>                                        altitudes_vect_t;      virtual                     ~LLEnvironment(); @@ -194,16 +195,16 @@ public:      connection_t                setEnvironmentChanged(env_changed_fn cb)    { return mSignalEnvChanged.connect(cb); }      void                        requestRegion(environment_apply_fn cb = environment_apply_fn()); -    void                        updateRegion(const LLUUID &asset_id, S32 day_length, S32 day_offset, environment_apply_fn cb = environment_apply_fn()); -    void                        updateRegion(const LLSettingsDay::ptr_t &pday, S32 day_length, S32 day_offset, environment_apply_fn cb = environment_apply_fn()); -    void                        updateRegion(const LLSettingsSky::ptr_t &psky, S32 day_length, S32 day_offset, environment_apply_fn cb = environment_apply_fn()); -    void                        updateRegion(const LLSettingsWater::ptr_t &pwater, S32 day_length, S32 day_offset, environment_apply_fn cb = environment_apply_fn()); +    void                        updateRegion(const LLUUID &asset_id, S32 day_length, S32 day_offset, altitudes_vect_t altitudes = altitudes_vect_t(), environment_apply_fn cb = environment_apply_fn()); +    void                        updateRegion(const LLSettingsDay::ptr_t &pday, S32 day_length, S32 day_offset, altitudes_vect_t altitudes = altitudes_vect_t(), environment_apply_fn cb = environment_apply_fn()); +    void                        updateRegion(const LLSettingsSky::ptr_t &psky, S32 day_length, S32 day_offset, altitudes_vect_t altitudes = altitudes_vect_t(), environment_apply_fn cb = environment_apply_fn()); +    void                        updateRegion(const LLSettingsWater::ptr_t &pwater, S32 day_length, S32 day_offset, altitudes_vect_t altitudes = altitudes_vect_t(), environment_apply_fn cb = environment_apply_fn());      void                        resetRegion(environment_apply_fn cb = environment_apply_fn());      void                        requestParcel(S32 parcel_id, environment_apply_fn cb = environment_apply_fn()); -    void                        updateParcel(S32 parcel_id, const LLUUID &asset_id, S32 day_length, S32 day_offset, environment_apply_fn cb = environment_apply_fn()); -    void                        updateParcel(S32 parcel_id, const LLSettingsDay::ptr_t &pday, S32 day_length, S32 day_offset, environment_apply_fn cb = environment_apply_fn()); -    void                        updateParcel(S32 parcel_id, const LLSettingsSky::ptr_t &psky, S32 day_length, S32 day_offset, environment_apply_fn cb = environment_apply_fn()); -    void                        updateParcel(S32 parcel_id, const LLSettingsWater::ptr_t &pwater, S32 day_length, S32 day_offset, environment_apply_fn cb = environment_apply_fn()); +    void                        updateParcel(S32 parcel_id, const LLUUID &asset_id, S32 day_length, S32 day_offset, altitudes_vect_t altitudes = altitudes_vect_t(), environment_apply_fn cb = environment_apply_fn()); +    void                        updateParcel(S32 parcel_id, const LLSettingsDay::ptr_t &pday, S32 day_length, S32 day_offset, altitudes_vect_t altitudes = altitudes_vect_t(), environment_apply_fn cb = environment_apply_fn()); +    void                        updateParcel(S32 parcel_id, const LLSettingsSky::ptr_t &psky, S32 day_length, S32 day_offset, altitudes_vect_t altitudes = altitudes_vect_t(), environment_apply_fn cb = environment_apply_fn()); +    void                        updateParcel(S32 parcel_id, const LLSettingsWater::ptr_t &pwater, S32 day_length, S32 day_offset, altitudes_vect_t altitudes = altitudes_vect_t(), environment_apply_fn cb = environment_apply_fn());      void                        resetParcel(S32 parcel_id, environment_apply_fn cb = environment_apply_fn());      void                        selectAgentEnvironment(); @@ -327,7 +328,7 @@ private:      void                        onParcelChange();      void                        coroRequestEnvironment(S32 parcel_id, environment_apply_fn apply); -    void                        coroUpdateEnvironment(S32 parcel_id, S32 track_no, LLSettingsDay::ptr_t pday, LLUUID settings_asset, S32 day_length, S32 day_offset, environment_apply_fn apply); +    void                        coroUpdateEnvironment(S32 parcel_id, S32 track_no, LLSettingsDay::ptr_t pday, LLUUID settings_asset, S32 day_length, S32 day_offset, altitudes_vect_t altitudes, environment_apply_fn apply);      void                        coroResetEnvironment(S32 parcel_id, S32 track_no, environment_apply_fn apply);      void                        recordEnvironment(S32 parcel_id, EnvironmentInfo::ptr_t environment); @@ -335,7 +336,7 @@ private:      void                        onAgentPositionHasChanged(const LLVector3 &localpos);      void                        onSetEnvAssetLoaded(EnvSelection_t env, LLUUID asset_id, LLSettingsBase::ptr_t settings, LLSettingsDay::Seconds daylength, LLSettingsDay::Seconds dayoffset, S32 status); -    void                        onUpdateParcelAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, S32 parcel_id, S32 day_length, S32 day_offset); +    void                        onUpdateParcelAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, S32 parcel_id, S32 day_length, S32 day_offset, altitudes_vect_t altitudes);  }; diff --git a/indra/newview/llpanelenvironment.cpp b/indra/newview/llpanelenvironment.cpp index 21b9c4edbd..ecd67ff8af 100644 --- a/indra/newview/llpanelenvironment.cpp +++ b/indra/newview/llpanelenvironment.cpp @@ -236,10 +236,6 @@ void LLPanelEnvironmentInfo::refresh()      updateEditFloater(mCurrentEnvironment, canEdit()); -#if 1  -    // hiding the controls until Rider can get the simulator code to adjust altitudes done. -    getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(FALSE); -#else      LLEnvironment::altitude_list_t altitudes = LLEnvironment::instance().getRegionAltitudes();      if (altitudes.size() > 0)      { @@ -252,7 +248,6 @@ void LLPanelEnvironmentInfo::refresh()          }          readjustAltLabels();      } -#endif  } @@ -378,12 +373,7 @@ bool LLPanelEnvironmentInfo::setControlsEnabled(bool enabled)      getChild<LLUICtrl>(PNL_BUTTONS)->setVisible(true);      getChild<LLUICtrl>(PNL_DISABLED)->setVisible(false); -#if 1  -    // hiding the controls until Rider can get the simulator code to adjust altitudes done. -    getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(FALSE); -#else -    getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(isRegion()); -#endif +    getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(isRegion() && LLEnvironment::instance().isExtendedEnvironmentEnabled());      S32 rdo_selection = getChild<LLRadioGroup>(RDG_ENVIRONMENT_SELECT)->getSelectedIndex(); @@ -636,9 +626,19 @@ void LLPanelEnvironmentInfo::doApply()      if (getIsDirtyFlag(DIRTY_FLAG_MASK))      {          LLHandle<LLPanel> that_h = getHandle(); +        LLEnvironment::altitudes_vect_t alts;          S32 rdo_selection = getChild<LLRadioGroup>(RDG_ENVIRONMENT_SELECT)->getSelectedIndex(); +        if (isRegion() && getIsDirtyFlag(DIRTY_FLAG_ALTITUDES)) +        { +            altitudes_data_t::iterator it; +            for (auto alt : mAltitudes) +            { +                alts.push_back(alt.second.mAltitude); +            } +        } +          if (rdo_selection == 0)          {              LLEnvironment::instance().resetParcel(parcel_id, @@ -647,13 +647,13 @@ void LLPanelEnvironmentInfo::doApply()          else if (rdo_selection == 1)          {              LLEnvironment::instance().updateParcel(parcel_id, -                mCurrentEnvironment->mDayCycle->getAssetId(), mCurrentEnvironment->mDayLength.value(), mCurrentEnvironment->mDayOffset.value(), +                mCurrentEnvironment->mDayCycle->getAssetId(), mCurrentEnvironment->mDayLength.value(), mCurrentEnvironment->mDayOffset.value(), alts,                  [that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); });          }          else          {              LLEnvironment::instance().updateParcel(parcel_id, -                mCurrentEnvironment->mDayCycle, mCurrentEnvironment->mDayLength.value(), mCurrentEnvironment->mDayOffset.value(),  +                mCurrentEnvironment->mDayCycle, mCurrentEnvironment->mDayLength.value(), mCurrentEnvironment->mDayOffset.value(), alts,                  [that_h](S32 parcel_id, LLEnvironment::EnvironmentInfo::ptr_t envifo) { _onEnvironmentReceived(that_h, parcel_id, envifo); });          } diff --git a/indra/newview/skins/default/xui/en/floater_my_environments.xml b/indra/newview/skins/default/xui/en/floater_my_environments.xml index 5565cdcaf0..dd05dd5a20 100644 --- a/indra/newview/skins/default/xui/en/floater_my_environments.xml +++ b/indra/newview/skins/default/xui/en/floater_my_environments.xml @@ -2,6 +2,8 @@  <floater          positioning="cascading"          save_rect="true" +        single_instance="true" +        reuse_instance="true"          legacy_header_height="18"          can_resize="true"          height="465"  | 
