ES-DE/src/animations/AnimationController.cpp

33 lines
630 B
C++
Raw Normal View History

#include "AnimationController.h"
AnimationController::AnimationController(Animation* anim, std::function<void()> finishedCallback, bool reverse)
: mAnimation(anim), mFinishedCallback(finishedCallback), mReverse(reverse), mTime(0)
{
}
AnimationController::~AnimationController()
{
if(mFinishedCallback)
mFinishedCallback();
delete mAnimation;
}
bool AnimationController::update(int deltaTime)
{
mTime += deltaTime;
float t = (float)mTime / mAnimation->getDuration();
if(t > 1.0f)
t = 1.0f;
else if(t < 0.0f)
t = 0.0f;
mAnimation->apply(mReverse ? 1.0f - t : t);
if(t == 1.0f)
return true;
return false;
}