diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llenvironment.cpp | 14 | ||||
| -rw-r--r-- | indra/newview/llfloatereditextdaycycle.cpp | 105 | ||||
| -rw-r--r-- | indra/newview/llfloatereditextdaycycle.h | 7 | ||||
| -rw-r--r-- | indra/newview/llsettingsvo.cpp | 5 | 
4 files changed, 85 insertions, 46 deletions
| diff --git a/indra/newview/llenvironment.cpp b/indra/newview/llenvironment.cpp index f0bec2fda1..938cf857ee 100644 --- a/indra/newview/llenvironment.cpp +++ b/indra/newview/llenvironment.cpp @@ -65,6 +65,8 @@ namespace      LLTrace::BlockTimerStatHandle   FTM_ENVIRONMENT_UPDATE("Update Environment Tick");      LLTrace::BlockTimerStatHandle   FTM_SHADER_PARAM_UPDATE("Update Shader Parameters"); +    LLSettingsBase::Seconds         DEFAULT_UPDATE_THRESHOLD(10.0); +      //---------------------------------------------------------------------      inline LLSettingsBase::TrackPosition get_wrapping_distance(LLSettingsBase::TrackPosition begin, LLSettingsBase::TrackPosition end)      { @@ -132,13 +134,15 @@ namespace      class LLTrackBlenderLoopingTime : public LLSettingsBlenderTimeDelta      {      public: -        LLTrackBlenderLoopingTime(const LLSettingsBase::ptr_t &target, const LLSettingsDay::ptr_t &day, S32 trackno, LLSettingsBase::Seconds cyclelength, LLSettingsBase::Seconds cycleoffset) : +        LLTrackBlenderLoopingTime(const LLSettingsBase::ptr_t &target, const LLSettingsDay::ptr_t &day, S32 trackno,  +                LLSettingsBase::Seconds cyclelength, LLSettingsBase::Seconds cycleoffset, LLSettingsBase::Seconds updateThreshold) :              LLSettingsBlenderTimeDelta(target, LLSettingsBase::ptr_t(), LLSettingsBase::ptr_t(), LLSettingsBase::Seconds(1.0)),              mDay(day),              mTrackNo(0),              mCycleLength(cyclelength),              mCycleOffset(cycleoffset)          { +            setTimeDeltaThreshold(updateThreshold);              // must happen prior to getBoundingEntries call...              mTrackNo = selectTrackNumber(trackno); @@ -1610,10 +1614,11 @@ void LLEnvironment::DayInstance::animate()      else      {          mWater = LLSettingsVOWater::buildDefaultWater(); -        mBlenderWater = std::make_shared<LLTrackBlenderLoopingTime>(mWater, mDayCycle, 0, mDayLength, mDayOffset); +        mBlenderWater = std::make_shared<LLTrackBlenderLoopingTime>(mWater, mDayCycle, 0,  +            mDayLength, mDayOffset, DEFAULT_UPDATE_THRESHOLD);      } -    // sky, initalize to track 1 +    // sky, initialize to track 1      LLSettingsDay::CycleTrack_t &track = mDayCycle->getCycleTrack(1);      if (track.empty()) @@ -1624,7 +1629,8 @@ void LLEnvironment::DayInstance::animate()      else      {          mSky = LLSettingsVOSky::buildDefaultSky(); -        mBlenderSky = std::make_shared<LLTrackBlenderLoopingTime>(mSky, mDayCycle, 1, mDayLength, mDayOffset); +        mBlenderSky = std::make_shared<LLTrackBlenderLoopingTime>(mSky, mDayCycle, 1,  +            mDayLength, mDayOffset, DEFAULT_UPDATE_THRESHOLD);          mBlenderSky->switchTrack(mSkyTrack, 0.0);      }  } diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp index 38e45dd6d5..7815f4244a 100644 --- a/indra/newview/llfloatereditextdaycycle.cpp +++ b/indra/newview/llfloatereditextdaycycle.cpp @@ -121,7 +121,7 @@ LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key) :      LLFloater(key),      mFlyoutControl(nullptr),      mDayLength(0), -    mCurrentTrack(4), +    mCurrentTrack(1),      mTimeSlider(nullptr),      mFramesSlider(nullptr),      mCurrentTimeLabel(nullptr), @@ -261,6 +261,7 @@ void LLFloaterEditExtDayCycle::onOpen(const LLSD& key)  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) @@ -284,16 +285,6 @@ void LLFloaterEditExtDayCycle::onFocusLost()  void LLFloaterEditExtDayCycle::onVisibilityChange(BOOL new_visibility)  { -//     if (new_visibility) -//     { -//         LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, mScratchSky, mScratchWater); -//         LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT); -//     } -//     else -//     { -//         LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_LOCAL); -//         stopPlay(); -//     }  }  void LLFloaterEditExtDayCycle::refresh() @@ -351,7 +342,14 @@ void LLFloaterEditExtDayCycle::onButtonImport()  void LLFloaterEditExtDayCycle::onButtonLoadFrame()  { -    doOpenInventoryFloater((mCurrentTrack == LLSettingsDay::TRACK_WATER) ? LLSettingsType::ST_WATER : LLSettingsType::ST_SKY); +    LLUUID curassetId; + +    if (mCurrentEdit) +    {  +        curassetId = mCurrentEdit->getAssetId(); +    } +     +    doOpenInventoryFloater((mCurrentTrack == LLSettingsDay::TRACK_WATER) ? LLSettingsType::ST_WATER : LLSettingsType::ST_SKY, curassetId);  }  void LLFloaterEditExtDayCycle::onAddTrack() @@ -382,6 +380,7 @@ void LLFloaterEditExtDayCycle::onAddTrack()      }      addSliderFrame(frame, setting); +    reblendSettings();      updateTabs();  } @@ -550,8 +549,10 @@ void LLFloaterEditExtDayCycle::onTimeSliderMoved()  void LLFloaterEditExtDayCycle::selectTrack(U32 track_index, bool force )  { -    mCurrentTrack = track_index; -    LLButton* button = getChild<LLButton>(track_tabs[track_index], true); +    if (track_index < LLSettingsDay::TRACK_MAX) +        mCurrentTrack = track_index; + +    LLButton* button = getChild<LLButton>(track_tabs[mCurrentTrack], true);      if (button->getToggleState() && !force)      {          return; @@ -559,7 +560,7 @@ void LLFloaterEditExtDayCycle::selectTrack(U32 track_index, bool force )      for (int i = 0; i < LLSettingsDay::TRACK_MAX; i++) // use max value      { -        getChild<LLButton>(track_tabs[i], true)->setToggleState(i == track_index); +        getChild<LLButton>(track_tabs[i], true)->setToggleState(i == mCurrentTrack);      }      bool show_water = (mCurrentTrack == LLSettingsDay::TRACK_WATER); @@ -612,7 +613,7 @@ void LLFloaterEditExtDayCycle::clearTabs()  void LLFloaterEditExtDayCycle::updateTabs()  {      reblendSettings(); -    syncronizeTabs(); +    synchronizeTabs();      updateButtons();      updateTimeAndLabel(); @@ -827,7 +828,7 @@ void LLFloaterEditExtDayCycle::loadInventoryItem(const LLUUID  &inventoryId)      }      LLSettingsVOBase::getSettingsAsset(mInventoryItem->getAssetUUID(), -        [this](LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status, LLExtStat) { onAssetLoaded(asset_id, settins, status); }); +        [this](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { onAssetLoaded(asset_id, settings, status); });  }  void LLFloaterEditExtDayCycle::onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status) @@ -843,7 +844,7 @@ void LLFloaterEditExtDayCycle::onAssetLoaded(LLUUID asset_id, LLSettingsBase::pt      mEditDay = std::dynamic_pointer_cast<LLSettingsDay>(settings);      updateEditEnvironment();      LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT); -    syncronizeTabs(); +    synchronizeTabs();      refresh();  } @@ -867,7 +868,7 @@ void LLFloaterEditExtDayCycle::loadLiveEnvironment(LLEnvironment::EnvSelection_t      }      updateEditEnvironment(); -    syncronizeTabs(); +    synchronizeTabs();      refresh();  } @@ -879,17 +880,17 @@ void LLFloaterEditExtDayCycle::updateEditEnvironment(void)      mSkyBlender = std::make_shared<LLTrackBlenderLoopingManual>(mScratchSky, mEditDay, skytrack);      mWaterBlender = std::make_shared<LLTrackBlenderLoopingManual>(mScratchWater, mEditDay, LLSettingsDay::TRACK_WATER); -    selectTrack(1, true); +    selectTrack(LLSettingsDay::TRACK_MAX, true);      reblendSettings();      LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, mScratchSky, mScratchWater);  } -void LLFloaterEditExtDayCycle::syncronizeTabs() +void LLFloaterEditExtDayCycle::synchronizeTabs()  {      // This should probably get moved into "updateTabs" -    LLSettingsBase::Seconds frame(mTimeSlider->getCurSliderValue()); +    LLSettingsBase::TrackPosition frame(mTimeSlider->getCurSliderValue());      bool canedit(false);      LLSettingsWater::ptr_t psettingW; @@ -899,6 +900,7 @@ void LLFloaterEditExtDayCycle::syncronizeTabs()          canedit = !mIsPlaying;          LLSettingsDay::CycleTrack_t::value_type found = mEditDay->getSettingsNearKeyfarme(frame, LLSettingsDay::TRACK_WATER, FRAME_SLOP_FACTOR);          psettingW = std::static_pointer_cast<LLSettingsWater>(found.second); +        mCurrentEdit = psettingW;          if (!psettingW)          {              canedit = false; @@ -922,6 +924,7 @@ void LLFloaterEditExtDayCycle::syncronizeTabs()          canedit = !mIsPlaying;          LLSettingsDay::CycleTrack_t::value_type found = mEditDay->getSettingsNearKeyfarme(frame, mCurrentTrack, FRAME_SLOP_FACTOR);          psettingS = std::static_pointer_cast<LLSettingsSky>(found.second); +        mCurrentEdit = psettingS;          if (!psettingS)          {              canedit = false; @@ -935,6 +938,8 @@ void LLFloaterEditExtDayCycle::syncronizeTabs()          psettingS = mScratchSky;      } +    doCloseInventoryFloater(); +      setTabsData(tabs, psettingS, canedit);      LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, psettingS, psettingW);  } @@ -1055,7 +1060,7 @@ void LLFloaterEditExtDayCycle::doImportFromDisk()          mCurrentTrack = 1;          updateSlider();          updateEditEnvironment(); -        syncronizeTabs(); +        synchronizeTabs();          refresh();      }  } @@ -1089,6 +1094,8 @@ bool LLFloaterEditExtDayCycle::canApplyParcel() const  void LLFloaterEditExtDayCycle::startPlay()  { +    doCloseInventoryFloater(); +      mIsPlaying = true;      mFramesSlider->resetCurSlider();      mPlayTimer.reset(); @@ -1126,39 +1133,59 @@ void LLFloaterEditExtDayCycle::onIdlePlay(void* user_data)      self->mTimeSlider->setCurSliderValue(new_frame); // will do the rounding      self->mSkyBlender->setPosition(new_frame);      self->mWaterBlender->setPosition(new_frame); -    self->syncronizeTabs(); +    self->synchronizeTabs();  } -void LLFloaterEditExtDayCycle::doOpenInventoryFloater(LLSettingsType::type_e type) +void LLFloaterEditExtDayCycle::doOpenInventoryFloater(LLSettingsType::type_e type, LLUUID currasset)  {  //  LLUI::sWindow->setCursor(UI_CURSOR_WAIT); -    LLFloater* floaterp = mInventoryFloater.get(); +    LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get());      // Show the dialog -    if (!floaterp) +    if (!picker)      { -        LLFloaterSettingsPicker *picker = new LLFloaterSettingsPicker( -            this, +        picker = new LLFloaterSettingsPicker(this,              LLUUID::null, "SELECT SETTINGS");          mInventoryFloater = picker->getHandle();          picker->setCommitCallback([this](LLUICtrl *, const LLSD &data){ onPickerCommitSetting(data.asUUID()); }); -//                 texture_floaterp->setTextureSelectedCallback(boost::bind(&LLOutfitGallery::onTextureSelectionChanged, this, _1)); -//                 texture_floaterp->setOnFloaterCommitCallback(boost::bind(&LLOutfitGallery::onTexturePickerCommit, this, _1, _2)); -//                 texture_floaterp->setOnUpdateImageStatsCallback(boost::bind(&LLOutfitGallery::onTexturePickerUpdateImageStats, this, _1)); -//                 texture_floaterp->setLocalTextureEnabled(FALSE); - -        floaterp = picker;      } -    ((LLFloaterSettingsPicker *)floaterp)->setSettingsFilter(type); -    floaterp->openFloater(); -    floaterp->setFocus(TRUE); +    picker->setSettingsFilter(type); +    picker->openFloater(); +    picker->setFocus(TRUE); +} + +void LLFloaterEditExtDayCycle::doCloseInventoryFloater(bool quitting) +{ +    LLFloater* floaterp = mInventoryFloater.get(); + +    if (floaterp) +    { +        floaterp->closeFloater(quitting); +    }  }  void LLFloaterEditExtDayCycle::onPickerCommitSetting(LLUUID asset_id)  { -    LL_WARNS("LAPRAS") << "Got asset ID=" << asset_id << LL_ENDL; +    LLSettingsBase::TrackPosition frame(mTimeSlider->getCurSliderValue()); +    S32 track = mCurrentTrack; + +    LLSettingsVOBase::getSettingsAsset(asset_id, +        [this, track, frame](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { onAssetLoadedForFrame(asset_id, settings, status, track, frame); }); +} + +void LLFloaterEditExtDayCycle::onAssetLoadedForFrame(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, S32 track, LLSettingsBase::TrackPosition frame) +{ +    if (!settings || status) +    { +        LL_WARNS("SETTINGS") << "Could not load asset " << asset_id << " into frame. status=" << status << LL_ENDL; +        return; +    } + +    mEditDay->setSettingsAtKeyframe(settings, frame, track); +    reblendSettings(); +    synchronizeTabs();  } diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h index 94b2d6c21b..c4f0811d17 100644 --- a/indra/newview/llfloatereditextdaycycle.h +++ b/indra/newview/llfloatereditextdaycycle.h @@ -124,15 +124,17 @@ private:      void                        onInventoryCreated(LLUUID asset_id, LLUUID inventory_id, LLSD results);      void                        onInventoryUpdated(LLUUID asset_id, LLUUID inventory_id, LLSD results); -    void                        doOpenInventoryFloater(LLSettingsType::type_e type); +    void                        doOpenInventoryFloater(LLSettingsType::type_e type, LLUUID currasset); +    void                        doCloseInventoryFloater(bool quitting = false);      void                        onPickerCommitSetting(LLUUID asset_id); +    void                        onAssetLoadedForFrame(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, S32 track, LLSettingsBase::TrackPosition frame);      bool                        canUseInventory() const;      bool                        canApplyRegion() const;      bool                        canApplyParcel() const;      void                        updateEditEnvironment(); -    void                        syncronizeTabs(); +    void                        synchronizeTabs();      void                        reblendSettings();      void                        setTabsData(LLTabContainer * tabcontainer, const LLSettingsBase::ptr_t &settings, bool editable); @@ -166,6 +168,7 @@ private:      LLTrackBlenderLoopingManual::ptr_t  mWaterBlender;      LLSettingsSky::ptr_t        mScratchSky;      LLSettingsWater::ptr_t      mScratchWater; +    LLSettingsBase::ptr_t       mCurrentEdit;      LLFrameTimer                mPlayTimer;      F32                         mPlayStartFrame; // an env frame diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp index 23c77c8a25..2ffb1c1bce 100644 --- a/indra/newview/llsettingsvo.cpp +++ b/indra/newview/llsettingsvo.cpp @@ -222,7 +222,10 @@ void LLSettingsVOBase::onAssetDownloadComplete(LLVFS *vfs, const LLUUID &asset_i              status = 1;              LL_WARNS("SETTINGS") << "Unable to creat settings object." << LL_ENDL;          } - +        else +        { +            settings->setAssetId(asset_id); +        }      }      else      { | 
