return progress; // linear
}
-Animation::Animation(float durationSeconds, float speedFactor, const Vector2& playRange, bool isLooping, Dali::Animation::EndAction endAction, Dali::Animation::EndAction destroyAction)
+Animation::Animation( float durationSeconds, float speedFactor, const Vector2& playRange, bool isLooping, Dali::Animation::EndAction endAction, Dali::Animation::EndAction disconnectAction )
: mDurationSeconds(durationSeconds),
mSpeedFactor( speedFactor ),
mLooping(isLooping),
mEndAction(endAction),
- mDestroyAction(destroyAction),
+ mDisconnectAction(disconnectAction),
mState(Stopped),
mElapsedSeconds(playRange.x*mDurationSeconds),
mPlayCount(0),
mEndAction = action;
}
-void Animation::SetDestroyAction(Dali::Animation::EndAction action)
+void Animation::SetDisconnectAction(Dali::Animation::EndAction action)
{
- mDestroyAction = action;
+ if ( mDisconnectAction != action )
+ {
+ mDisconnectAction = action;
+
+ for ( AnimatorIter iter = mAnimators.Begin(), endIter = mAnimators.End(); iter != endIter; ++iter )
+ {
+ (*iter)->SetDisconnectAction( action );
+ }
+ }
}
void Animation::SetPlayRange( const Vector2& range )
{
if (mState == Playing || mState == Paused)
{
- if (mDestroyAction != Dali::Animation::Discard)
+ if (mEndAction != Dali::Animation::Discard)
{
- Bake( bufferIndex, mDestroyAction );
+ Bake( bufferIndex, mEndAction );
}
}
void Animation::AddAnimator( AnimatorBase* animator, PropertyOwner* propertyOwner )
{
animator->Attach( propertyOwner );
+ animator->SetDisconnectAction( mDisconnectAction );
mAnimators.PushBack( animator );
}