Thanks.
Code: Select all
class AnimationListener
{
public:
typedef boost::function<void, void> Callback;
AnimationListener(Real callbackTime, AnimationState* anim, const Callback& callback):
callbackTime(callbackTime), anim(anim), callback(callback)
{
}
void step(float timeStep)
{
static bool called = false;
Real time = anim->getTimePosition();
anim->addTime(timeStep);
if(called)
{
// It was called at some point
if(time >=0 && time < callbackTime)
{
// It is not yet time to do it this loop
// We say it hasn't been called
called = false;
}
}
else
{
// It hasn't been called yet
if(time > callbackTime)
{
// It should be called now
// We say it has been called and call it
callback();
called = true;
}
}
}
private:
Real callbackTime;
AnimationState* anim;
Callback callback;
};