X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fanimationplayer.cpp;h=cd71679800fffea672ebea6c4ef84ed796622104;hp=a3676ac90543331ddcba021b60d1c1f2c038f10b;hb=a993091fbb8fdb76a1d02be9de59529c14b59cf0;hpb=4a1e2b6a68095e6bb7c212be57abb5a1509739b9 diff --git a/source/animationplayer.cpp b/source/animationplayer.cpp index a3676ac9..cd716798 100644 --- a/source/animationplayer.cpp +++ b/source/animationplayer.cpp @@ -70,20 +70,19 @@ void AnimationPlayer::tick(const Time::TimeDelta &dt) { for(ObjectMap::iterator i=objects.begin(); i!=objects.end(); ) { - bool keep = false; if(i->second.stacked) - keep = tick_stacked(i->second, dt); + tick_stacked(i->second, dt); else - keep = tick_single(i->second, dt); + tick_single(i->second, dt); - if(!keep) + if(i->second.animations.empty()) objects.erase(i++); else ++i; } } -bool AnimationPlayer::tick_single(Target &target, const Time::TimeDelta &dt) +void AnimationPlayer::tick_single(Target &target, const Time::TimeDelta &dt) { PlayingAnimation &anim = target.animations.front(); anim.iterator += dt; @@ -100,10 +99,11 @@ bool AnimationPlayer::tick_single(Target &target, const Time::TimeDelta &dt) target.object.set_pose_matrix(i, anim.iterator.get_pose_matrix(i)); } - return !anim.iterator.is_end(); + if(!anim.iterator.is_end()) + target.animations.clear(); } -bool AnimationPlayer::tick_stacked(Target &target, const Time::TimeDelta &dt) +void AnimationPlayer::tick_stacked(Target &target, const Time::TimeDelta &dt) { Matrix matrix = target.base_matrix; for(vector::iterator i=target.animations.begin(); i!=target.animations.end(); ++i) @@ -140,7 +140,8 @@ bool AnimationPlayer::tick_stacked(Target &target, const Time::TimeDelta &dt) ++i; } - return !target.animations.empty(); + if(target.animations.empty()) + target.stacked = false; } void AnimationPlayer::set_object_uniform(AnimatedObject &obj, const string &name, const KeyFrame::AnimatedUniform &uni)