You.i Engine
YiAnimation.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_ANIMATION_H_
3 #define _YI_ANIMATION_H_
4 
5 #include "framework/YiPredef.h"
6 #include "utility/YiTime.h"
7 
8 #include <limits>
9 
14 
15 class CYIAnimationPriv;
17 
33 {
34 public:
36  {
39 
40  };
41 
42  enum STATUS
43  {
48 
49  };
50 
51  enum DIRECTION
52  {
55 
56  };
57 
65  class Listener
66  {
67  public:
68  virtual ~Listener(){};
69 
73  virtual void OnAnimate(CYIAnimation *pAnim, float fDataPosition);
74 
80  virtual void OnAnimationBegin(CYIAnimation *pAnimation);
81 
87  virtual void OnAnimationEnd(CYIAnimation *pAnimation);
88  };
89 
90  static const uint64_t ANIMATION_TIME_UNDEFINED;
91  static const uint64_t ANIMATION_REPEAT_COUNT_INFINITE;
92 
93  CYIAnimation();
94  virtual ~CYIAnimation();
95 
99  void ChangeDirection();
100 
106 
110  uint64_t GetDuration() const;
111 
115  uint64_t GetLastDeltaTime() const;
116 
120  CYIAnimation *GetNext() const;
121 
125  CYIAnimation *GetPrevious() const;
126 
131  void *GetUserData() const;
132 
138 
143 
147  void InsertInList(CYIAnimation **ppFirstAnimation);
148 
154  void RemoveFromList(CYIAnimation **ppFirstAnimation);
155 
160  void Pause();
161 
166  void Reset();
167 
172  void AddListener(CYIAnimation::Listener *pListener);
173 
177  void RemoveListener(CYIAnimation::Listener *pListener);
178 
188  void ScaleDuration(uint64_t uNewSimpleDur);
189 
194  void SetDirection(CYIAnimation::DIRECTION direction);
195 
201  void SetDuration(uint64_t uDur);
202 
215  void SetRepeatCount(uint64_t uRepeatCount);
216 
224  void SetRepeatMode(CYIAnimation::REPEAT_MODE eRepeatMode);
225 
232  void SetStartTime(uint64_t uStartTime);
233 
240  void SetTimeInterpolator(CYITimeInterpolator *pTimeInterpolator);
241 
245  void SetNext(CYIAnimation *pAnimation);
246 
250  void SetPrevious(CYIAnimation *pAnimation);
251 
258  void SetUserData(void *pPrivData);
259 
266  void Start();
267 
278  void Terminate();
279 
280 private:
281  // tells the animation that a number of milliseconds have elapsed
282  virtual bool OnFrameTimeUpdated(std::chrono::microseconds nFrameTime) override;
283 
284  CYIAnimation(const CYIAnimation &);
285  const CYIAnimation &operator=(const CYIAnimation &);
286 
287 private:
288  CYIAnimationPriv *m_pPriv;
289 };
290 
293 inline void CYIAnimation::Listener::OnAnimate(CYIAnimation * /*pAnimation*/, float /*fDataPosition*/) {}
295 inline void CYIAnimation::Listener::OnAnimationEnd(CYIAnimation * /*pAnimation*/) {}
296 
297 #endif // _YI_ANIMATION_H_
virtual ~Listener()
Definition: YiAnimation.h:68
static const uint64_t ANIMATION_TIME_UNDEFINED
Definition: YiAnimation.h:90
void ChangeDirection()
void InsertInList(CYIAnimation **ppFirstAnimation)
static const uint64_t ANIMATION_REPEAT_COUNT_INFINITE
Definition: YiAnimation.h:91
Container for basic interpolator functions.
Definition: YiTimeInterpolator.h:21
void * GetUserData() const
virtual ~CYIAnimation()
CYIAnimation::STATUS GetStatus() const
uint64_t GetDuration() const
void RemoveListener(CYIAnimation::Listener *pListener)
DIRECTION
Definition: YiAnimation.h:51
The data position restarts from 0.0 and increases. (modulo the effects of the time interpolator) ...
Definition: YiAnimation.h:37
virtual void OnAnimationBegin(CYIAnimation *pAnimation)
Definition: YiAnimation.h:294
The animation is paused.
Definition: YiAnimation.h:46
The animation is not playing.
Definition: YiAnimation.h:44
void SetRepeatCount(uint64_t uRepeatCount)
CYIAnimation * GetNext() const
Plays the animation from start to end.
Definition: YiAnimation.h:53
void SetDirection(CYIAnimation::DIRECTION direction)
void SetStartTime(uint64_t uStartTime)
Definition: YiTime.h:31
void ScaleDuration(uint64_t uNewSimpleDur)
void SetNext(CYIAnimation *pAnimation)
Plays the animation from end to start.
Definition: YiAnimation.h:54
CYITimeInterpolator * GetTimeInterpolator() const
REPEAT_MODE
Definition: YiAnimation.h:35
void SetUserData(void *pPrivData)
The animation is playing.
Definition: YiAnimation.h:45
CYIAnimation::DIRECTION GetDirection() const
void AddListener(CYIAnimation::Listener *pListener)
uint64_t GetLastDeltaTime() const
void SetDuration(uint64_t uDur)
virtual void OnAnimate(CYIAnimation *pAnim, float fDataPosition)
Definition: YiAnimation.h:293
void Terminate()
void SetRepeatMode(CYIAnimation::REPEAT_MODE eRepeatMode)
Used to create animations programatically.
Definition: YiAnimation.h:32
CYIAnimation * GetPrevious() const
void SetPrevious(CYIAnimation *pAnimation)
void SetTimeInterpolator(CYITimeInterpolator *pTimeInterpolator)
STATUS
Definition: YiAnimation.h:42
Base class used to listen to one or more CYIAnimations as they update over time.
Definition: YiAnimation.h:65
The animation inverses its progression direction from the previous cycle.
Definition: YiAnimation.h:38
virtual void OnAnimationEnd(CYIAnimation *pAnimation)
Definition: YiAnimation.h:295
The animation has finished.
Definition: YiAnimation.h:47
void RemoveFromList(CYIAnimation **ppFirstAnimation)