Using Animation Callback Functions

Animation Event Listener 
 If an application shall be notified about events of the triggered animation, a listener needs to be implemented. The class Candera::Animation::AnimationPlayerListener allows to listen to a versatile set of animation events like: 
 
 
 
 
 OnStartAntimation, 
 OnResumeAnimation, 
 OnPauseAnimation, 
 OnDirectionChange, 
 OnStopAnimation, 
 OnFinishAnimation, 
 OnPastEnd. 
 
 
 
 
 Implement AnimationPlayerListener Functions 
 In order to register an AnimationPlayerListener to an AnimationPlayer simply derive from Candera::Animation::AnimationPlayerListener and override pure virtual functions with custom code. 
 In the example below the 3D application derives from AnimationPlayerListener and overrides the listener's functions. 
 class AnimationPlayerWidget : public CgiWidget3D, public Candera::Animation::AnimationPlayerListener

 
 virtual void OnPastEnd( Candera::Animation::AnimationPlayerBase * animationPlayer, Candera::Int32 completedIterationsCount);
 virtual void OnStartAnimation( Candera::Animation::AnimationPlayerBase * animationPlayer);
 virtual void OnStopAnimation( Candera::Animation::AnimationPlayerBase * animationPlayer);
 virtual void OnFinishAnimation( Candera::Animation::AnimationPlayerBase * animationPlayer);
 virtual void OnResumeAnimation( Candera::Animation::AnimationPlayerBase * animationPlayer);
 virtual void OnPauseAnimation( Candera::Animation::AnimationPlayerBase * animationPlayer);

 
 Use Candera::Animation::AnimationPlayerBase::AddAnimationPlayerListener and Candera::Animation::AnimationPlayerBase::RemoveAnimationPlayerListener for registering or removing a listener. 
 static_cast<void>(m_animPlayer->AddAnimationPlayerListener(this));

 
 static_cast<void>(m_animPlayer->RemoveAnimationPlayerListener(this));

 
 Now the application is notified about all animation listener events it has implemented. For example when implementing the Candera::Animation::AnimationPlayerListener::OnStartAnimation , the application is notified about all started animations. 
 void AnimationPlayerWidget::OnStartAnimation(Animation::AnimationPlayerBase* /* animationPlayer */)
{
 // do something when an animation has started
}