File AnimationScheduler.h

Defines

DEFAULT_FADE_SPEED
LOOP
namespace Ogre

File: MovableText.h

Description: This creates a billboarding object that display a text. Note: This object must have a dedicated scene node since it will rotate it to face the camera (OGRE 2.1)

Author

2003 by cTh see gavocanov@rambler.ru 2006 by barraq see nospam@barraquand.com 2012 to work with newer versions of OGRE by MindCalamity mindcalamity@gmail.com 2015 to work on OGRE 2.1 (but not on older versions anymore) by Jayray jeremy.richert1@gmail.com

namespace Gsage
class Animation
#include <AnimationScheduler.h>

Class that wraps ogre animation state, adds speed definition

Public Functions

Animation()
virtual ~Animation()
void initialize(OgreV1::AnimationState *state)
void update(double time)

Calls Ogre::AnimationState addTime with adjusted speed

Parameters
  • time: Time in seconds

void enable(double time = DEFAULT_FADE_SPEED)

Enables animation

Parameters
  • time: Time to fade in

void disable(double time = DEFAULT_FADE_SPEED)

Disables animation

Parameters
  • time: Time to fade out

float getTimePosition()

Gets current time position of anim

void setTimePosition(double value)

Sets current time position of anim

Parameters
  • value: Time in seconds

float getLength()

Gets animation length

bool getEnabled()

Gets enabled

void setEnabled(bool value)

Change enabled animation state immediately

Parameters
  • value: Enable anim

bool getLoop()

Gets loop enabled

void setLoop(bool value)

Sets loop value

Parameters
  • value:

bool hasEnded()

Gets animation finished (if not looping)

double getSpeed()

Gets animation speed

void setSpeed(float speed)

Sets animation speed

bool isInitialized()

Animation has anim state

bool isEnding()

Animation is finite and fading out

bool isFadingOut()

Animation is disabled but is still fading

void rewind(double offset = 0)

Rewind animation to the beginning, depends on direction

Parameters
  • offset: If speed >= 0: 0 + offset, else: length - offset

Private Members

OgreV1::AnimationState *mAnimationState
bool mFadeIn
bool mFadeOut
float mFadeTime
float mSpeed

Friends

friend Gsage::AnimationScheduler
class AnimationController
#include <AnimationScheduler.h>

Animation controller

Public Functions

AnimationController(Animation &animation, double speed = 0, double offset = 0)
AnimationController(const AnimationController &other)
virtual ~AnimationController()
void start()

Starts animation with predefined parameters

void finish()

Stops animation

bool hasEnded()

Check that wrapped animation ended

AnimationController operator=(const AnimationController &other)
bool operator==(Animation &anim)
bool operator!=(Animation &anim)

Private Members

Animation &mAnimation
float mOffset
float mSpeed
class AnimationGroup
#include <AnimationScheduler.h>

Container for several animations

Public Functions

AnimationGroup()
AnimationGroup(OgreRenderComponent *c)
virtual ~AnimationGroup()
bool initialize(const DataProxy &dict, Ogre::SceneManager *sceneManager)

Initialize animation groups

double getSpeed()

Gets animations speed

void setSpeed(float value)

Sets animations speed

Parameters
  • value: 1 is normal speed

bool hasEnded()

Checks that all animations ended

Private Types

typedef std::map<std::string, Animation> Animations

Private Members

Animations mAnimations
OgreRenderComponent *mRenderComponent
float mSpeed

Friends

friend Gsage::AnimationScheduler
class AnimationScheduler : public Serializable<AnimationScheduler>
#include <AnimationScheduler.h>

Class that reads all animation information, configures states, then manages all animations playback

Public Functions

AnimationScheduler()
virtual ~AnimationScheduler()
void setRenderComponent(OgreRenderComponent *c)
bool initialize(const DataProxy &dict, Ogre::SceneManager *sceneManager, OgreRenderComponent *renderComponent)

Read dict and configure groups, read anim states from entities

Parameters
  • dict: DataProxy to get settings from

  • sceneManager: Ogre::SceneManager to get entities from

  • renderComponent: target render component

bool adjustSpeed(const std::string &name, double speed)

Adjust animation speed

Return

true if animation group exists

Parameters

bool play(const std::string &name, int times = LOOP, double speed = 0, double offset = 0, bool reset = false)

Play animations from animations group

Return

true if animation group exists

Parameters
  • name: Animation group name

  • times: Repeat times, -1 means loop

  • speed: Animation speed, 1 is normal speed

  • offset: Animation start offset

  • reset: Starts animation immediately

void resetState()

Reset animation state

void update(double time)

Update animations

Parameters
  • time: Time delta in seconds

Private Types

typedef std::map<std::string, Animation *> Animations
typedef std::map<std::string, AnimationGroup> AnimationGroups
typedef std::queue<AnimationController> AnimationQueue
typedef std::map<std::string, AnimationQueue> AnimationQueues

Private Functions

void playDefaultAnimation()

Plays default animation, if present

bool queueAnimation(AnimationGroup &animation, double speed, double offset, bool reset)

Queue animation

Parameters

bool isQueued(const std::string &group, Animation &anim)

Check that animation is in queue

Parameters

void setStates(const DataProxy &dict)

Set animation states

Parameters
  • dict: DataProxy with settings

const DataProxy &getStates() const

Get animation states serialized

Private Members

Ogre::SceneManager *mSceneManager
AnimationQueues mAnimationQueues
AnimationGroups mAnimationGroups
Animations mAnimations
float mDefaultAnimationSpeed
std::string mDefaultAnimation
std::string mCurrentAnimation
DataProxy mAnimationStatesDict
OgreRenderComponent *mRenderComponent
bool mInitialized