LuciadCPillar 2023.1.04
luciad::IAnimation Class Referenceabstract

An animation that can be added to AnimationManager. More...

#include <luciad/animations/IAnimation.h>

Public Member Functions

virtual ~IAnimation ()=default
 
virtual std::chrono::milliseconds getDuration () const =0
 Returns the duration of this animation in milliseconds. More...
 
virtual bool isLooping () const =0
 Returns if this animation is a looping animation. More...
 
virtual void onStart ()=0
 This method is called when the animation is started. More...
 
virtual void onStop ()=0
 This method is called when the animation is stopped. More...
 
virtual bool onUpdate (double fraction)=0
 This method is called to update the animation. More...
 

Detailed Description

An animation that can be added to AnimationManager.

An animation is modeled as a function that takes a value between 0 and 1 as input.

  • 0: the start of the animation
  • 1: the end of the animation

AnimationManager generates this value using a duration that is assigned to the animation and the elapsed time at the moment the animation is updated.

Since
2021.1

Constructor & Destructor Documentation

◆ ~IAnimation()

virtual luciad::IAnimation::~IAnimation ( )
virtualdefault

Member Function Documentation

◆ getDuration()

virtual std::chrono::milliseconds luciad::IAnimation::getDuration ( ) const
pure virtual

Returns the duration of this animation in milliseconds.

This information is used by AnimationManager. In practice, this means that the IAnimation::onUpdate method is called with a value of 1.0 after this duration has elapsed.

Returns
the duration of this animation in milliseconds.

◆ isLooping()

virtual bool luciad::IAnimation::isLooping ( ) const
pure virtual

Returns if this animation is a looping animation.

This information is used by AnimationManager. If false, the animation is automatically stopped and removed once the duration has elapsed. Otherwise, the animation will continue as long as luciad::IAnimation::onUpdate returns true. In case of a looping animation, the fraction that is passed to the luciad::IAnimation::onUpdate restarts at 0 once the animation has completed and progresses again towards 1.

Returns
if this animation is a looping animation.

◆ onStart()

virtual void luciad::IAnimation::onStart ( )
pure virtual

This method is called when the animation is started.

No onUpdate call will be performed before this method is called. This method is not supposed to call luciad::IAnimation::onUpdate itself.

◆ onStop()

virtual void luciad::IAnimation::onStop ( )
pure virtual

This method is called when the animation is stopped.

No luciad::IAnimation::onUpdate call will be performed after this method is called. This method is not supposed to call luciad::IAnimation::onUpdate itself.

Note that this method may be called before the animation has finished. This can for example happen when an animation is canceled.

◆ onUpdate()

virtual bool luciad::IAnimation::onUpdate ( double  fraction)
pure virtual

This method is called to update the animation.

This method will typically perform an action, e.g. update the camera location.

Parameters
fractionThe position where you are located in the animation. This position varies from 0 to 1 (0 and 1 are included).
Returns
if the action needs to continue. Returning false stops the animation and triggers a call to the onStop method.
Exceptions
luciad::InvalidArgumentExceptionwhen the fraction value is invalid.