]> git.tdb.fi Git - libs/gl.git/blob - source/animatedobject.h
Display overall progress when exporting scenes
[libs/gl.git] / source / animatedobject.h
1 #ifndef MSP_GL_ANIMATEDOBJECT_H_
2 #define MSP_GL_ANIMATEDOBJECT_H_
3
4 #include <vector>
5 #include <msp/datafile/objectloader.h>
6 #include "matrix.h"
7 #include "objectinstance.h"
8
9 namespace Msp {
10 namespace GL {
11
12 /**
13 An object instance that can be animated.  Despite the name, this can also be
14 useful for displaying objects at a static position.
15 */
16 class AnimatedObject: public ObjectInstance
17 {
18 public:
19         class Loader: public DataFile::ObjectLoader<AnimatedObject>
20         {
21         public:
22                 Loader(AnimatedObject &);
23
24         private:
25                 void position(float, float, float);
26                 void rotation(float, float, float, float);
27                 void scale(float, float, float);
28                 void scale_uniform(float);
29         };
30
31 private:
32         Matrix matrix;
33         std::vector<float> pose_data;
34         ProgramData *shdata;
35
36 public:
37         AnimatedObject(const Object &);
38         ~AnimatedObject();
39
40         void set_matrix(const Matrix &);
41         void set_pose_matrix(unsigned, const Matrix &);
42
43         virtual const Matrix *get_matrix() const { return &matrix; }
44
45         virtual void setup_render(Renderer &, const Tag &) const;
46 };
47
48 } // namespace GL
49 } // namespace Msp
50
51 #endif