diff options
| author | Rider Linden <rider@lindenlab.com> | 2018-05-17 12:05:31 -0700 | 
|---|---|---|
| committer | Rider Linden <rider@lindenlab.com> | 2018-05-17 12:05:31 -0700 | 
| commit | b117a9ea197a084eeec1e8330dbe7c562423e248 (patch) | |
| tree | e1fd0a023c0ac2116ae36da4022aa37ffc39c0f5 | |
| parent | 3d224c66cbb449b99545b93fb9742f32aca4ad5d (diff) | |
Fix end of cycle trigger for time blender.
| -rw-r--r-- | indra/llinventory/llsettingsbase.cpp | 17 | ||||
| -rw-r--r-- | indra/llinventory/llsettingsbase.h | 3 | 
2 files changed, 17 insertions, 3 deletions
| diff --git a/indra/llinventory/llsettingsbase.cpp b/indra/llinventory/llsettingsbase.cpp index daf42fc073..a6a7a9acf9 100644 --- a/indra/llinventory/llsettingsbase.cpp +++ b/indra/llinventory/llsettingsbase.cpp @@ -542,9 +542,7 @@ F64 LLSettingsBlender::setPosition(F64 blendf)  {      if (blendf >= 1.0)      { -        mTarget->replaceSettings(mFinal->getSettings()); -        LLSettingsBlender::ptr_t hold = shared_from_this();   // prevents this from deleting too soon -        mOnFinished(shared_from_this()); +        triggerComplete();          return 1.0;      }      blendf = llclamp(blendf, 0.0, 1.0); @@ -556,11 +554,24 @@ F64 LLSettingsBlender::setPosition(F64 blendf)      return blendf;  } +void LLSettingsBlender::triggerComplete() +{ +    mTarget->replaceSettings(mFinal->getSettings()); +    LLSettingsBlender::ptr_t hold = shared_from_this();   // prevents this from deleting too soon +    mOnFinished(shared_from_this()); +} +  //-------------------------------------------------------------------------  void LLSettingsBlenderTimeDelta::update(F64 timedelta)  {      mTimeSpent += F64Seconds(timedelta); +    if (mTimeSpent > mBlendSpan) +    { +        triggerComplete(); +        return; +    } +      F64 blendf = fmod(mTimeSpent.value(), mBlendSpan.value()) / mBlendSpan.value();      // Note no clamp here.   diff --git a/indra/llinventory/llsettingsbase.h b/indra/llinventory/llsettingsbase.h index ee0a86010c..d304638d20 100644 --- a/indra/llinventory/llsettingsbase.h +++ b/indra/llinventory/llsettingsbase.h @@ -306,6 +306,9 @@ public:      virtual void            update(F64 blendf);      virtual F64             setPosition(F64 blendf); +protected: +    void                    triggerComplete(); +  private:      finish_signal_t         mOnFinished; | 
