]> git.tdb.fi Git - libs/gl.git/blobdiff - source/animation.h
Support for armature-based animation
[libs/gl.git] / source / animation.h
index a4bdabdd95401757b32c032ca56b646c2e58c92b..6b890ea369811d58ee7ae1aae42046dfef6cf173 100644 (file)
@@ -8,8 +8,10 @@
 namespace Msp {
 namespace GL {
 
+class Armature;
 class KeyFrame;
 class Matrix;
+class Pose;
 
 /**
 An Animation is a sequence of KeyFrames combined with timing information.  The
@@ -64,6 +66,7 @@ private:
                Time::TimeDelta delta_t;
                RefPtr<const KeyFrame> keyframe;
                MatrixInterpolation matrix;
+               std::vector<MatrixInterpolation> pose_matrices;
 
                TimedKeyFrame(const Animation &);
                void prepare();
@@ -87,15 +90,20 @@ public:
 
                bool is_end() const { return end; }
                Matrix get_matrix() const;
+               Matrix get_pose_matrix(unsigned) const;
        };
 
 private:
+       const Armature *armature;
        KeyFrameList keyframes;
        bool looping;
 
 public:
        Animation();
 
+       void set_armature(const Armature &);
+       const Armature *get_armature() const { return armature; }
+
        void add_keyframe(const Time::TimeDelta &, const KeyFrame &);
 private:
        void prepare_keyframe(TimedKeyFrame &);