All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
SceneModelNodeAnimatedProperty.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "ISceneModelNodeAnimatedProperty.h"
6 #include "VectorMath.h"
7 #include <vector>
8 
9 namespace Eegeo
10 {
11  namespace Rendering
12  {
13  namespace SceneModels
14  {
15  template <class TProperty>
17  {
18  public:
19 
20  SceneModelNodeAnimatedProperty(std::vector<TProperty>& properties)
21  : m_properties(properties)
22  {
23  }
24 
25  void GetPropertyForFrame(u32 frame, TProperty& out_property) const
26  {
27  frame = frame % (u32)m_properties.size();//Clamp<u32>(frame, 0, (u32)m_properties.size()-1);
28  out_property = m_properties.at(frame);
29  }
30 
32  {
33  return Eegeo_NEW(SceneModelNodeAnimatedProperty<TProperty>)(*this);
34  }
35 
36  protected:
37 
39  : m_properties(source.m_properties)
40  {
41  }
42 
43  std::vector<TProperty> m_properties;
44  };
45  }
46  }
47 }