All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
SceneAnimator.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "VectorMath.h"
7 #include "POD.h"
8 
9 namespace Eegeo
10 {
11  class Node;
12 
14  {
15  public:
16  SceneAnimator(Eegeo::Node* rootNode,
17  int totalNumFramesInScene,
18  float frameRate=30.f);
19 
20  void Update(float dt);
21 
22  private:
23  float m_time;
24  const float m_frameRate;
25  const int m_totalNumFramesInScene;
26  Eegeo::Node* m_rootNode;
27 
28  void UpdateRecursive(Eegeo::Node* node);
29 
30  void UpdateTRS(Eegeo::Node* node);
31 
32  Eegeo::v3 EvaluatePosition(const Eegeo::IO::POD::PODNode& podNode, float frameTime);
33 
34  Eegeo::Quaternion EvaluateRotation(const Eegeo::IO::POD::PODNode& podNode, float frameTime);
35 
36  Eegeo::v3 EvaluateScale(const Eegeo::IO::POD::PODNode& podNode, float frameTime);
37 
38  Eegeo::v3 EvaluateAxisScale(const Eegeo::IO::POD::PODNode& podNode, float frameTime);
39 
40  float EvaluateStretchRotation(const Eegeo::IO::POD::PODNode& podNode, float frameTime);
41 
42  int GetFrameNumberToInterpolateFrom(float frameTime);
43 
44  int GetFrameNumberToInterpolateTo(float frameTime);
45 
46  float GetInterpolationParameters(float frameTime);
47 
48  void EvaluateInterpolatedMatrix(const Eegeo::IO::POD::PODNode& podNode, Eegeo::m44& target, float frameTim);
49  };
50 }