Fix end of cycle trigger for time blender.

meow-7.2.2
Rider Linden 2018-05-17 12:05:31 -07:00
parent 3d224c66cb
commit b117a9ea19
2 changed files with 17 additions and 3 deletions

View File

@ -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.

View File

@ -306,6 +306,9 @@ public:
virtual void update(F64 blendf);
virtual F64 setPosition(F64 blendf);
protected:
void triggerComplete();
private:
finish_signal_t mOnFinished;