ES-DE/es-core/src/animations/AnimationController.cpp

53 lines
969 B
C++
Raw Normal View History

//
// AnimationController.cpp
//
// Basic animation controls.
//
#include "animations/AnimationController.h"
2017-11-01 22:21:10 +00:00
#include "animations/Animation.h"
AnimationController::AnimationController(
Animation* anim,
int delay,
std::function<void()> finishedCallback,
bool reverse)
: mAnimation(anim),
mFinishedCallback(finishedCallback),
mReverse(reverse),
mTime(-delay),
mDelay(delay)
{
}
AnimationController::~AnimationController()
{
if (mFinishedCallback)
mFinishedCallback();
delete mAnimation;
}
bool AnimationController::update(int deltaTime)
{
mTime += deltaTime;
if(mTime < 0) // Are we still in delay?
return false;
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;
}