/*! * @file animation_player.h */ #ifndef _ANIMATION_PLAYER_H #define _ANIMATION_PLAYER_H #include "base_object.h" #include "animation.h" #include /* FORWARD DECLARATION */ //! A AnimationPlayer, that handles the animation of all the Animations in the scene. /** AnimationPlayer usage: \n Initialisation: AnimationPlayer::getInstance() does the trick this is usually done when initializing a world \n Adding Animations: create an Animation the following Way: \li Anim* animation = new Anim(); // also use any other Subclass of Animation to initialize this \li set some parameters: also see the specific classes for more info \n if you do not want a specific Animation to be handled by the AnimationPlayer, you have to unload it explicitely with animation->doNotHandle(); \n eveything else will be done by the AnimationPlayer itself.\n */ class AnimationPlayer : public BaseObject { ObjectListDeclaration(AnimationPlayer); public: /** @returns a Pointer to the only object of this Class */ inline static AnimationPlayer* getInstance() { if (!singletonRef) singletonRef = new AnimationPlayer(); return singletonRef; }; virtual ~AnimationPlayer(); // animation handling void addAnimation(Animation* animation); void removeAnimation(Animation* animation); void flush(); // time functions void tick(float timePassed); void play(); void pause(); Animation* getAnimationFromBaseObject(const BaseObject* baseObject) const; void debug(); private: /* singleton */ AnimationPlayer(); static AnimationPlayer* singletonRef; //!< SingletonReference to this class. /* class specific */ std::list animationList; //!< A List of Animations to be handled. bool bRunning; //!< If the AnimationPlayer is running. }; #endif /* _ANIMATION_PLAYER_H */