X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fanimation.h;h=6845d23ee3e1652c9f7e49a86e5145f3faa6aa52;hb=HEAD;hp=58a76583392270e5f1c0dd7a348d0fe10cff23d7;hpb=8b9d1625ac367114612b57a83901033ffc2bc7e0;p=libs%2Fgl.git diff --git a/source/animation.h b/source/animation.h deleted file mode 100644 index 58a76583..00000000 --- a/source/animation.h +++ /dev/null @@ -1,119 +0,0 @@ -#ifndef MSP_GL_ANIMATION_H_ -#define MSP_GL_ANIMATION_H_ - -#include -#include -#include - -namespace Msp { -namespace GL { - -class Armature; -class KeyFrame; -class Matrix; -class Pose; - -/** -An Animation is a sequence of KeyFrames combined with timing information. The -state at any point in the animation can be interpolated from the keyframes. -*/ -class Animation -{ -public: - class Loader: public DataFile::CollectionObjectLoader - { - private: - Time::TimeDelta current_time; - - public: - Loader(Animation &); - Loader(Animation &, Collection &); - private: - void init(); - - void keyframe(const std::string &); - void keyframe_inline(); - void interval(float); - }; - -private: - struct AxisInterpolation - { - float slope; - float scale; - - AxisInterpolation(); - AxisInterpolation(const double *, const double *); - }; - - struct MatrixInterpolation - { - const Matrix *matrix1; - const Matrix *matrix2; - AxisInterpolation axes[3]; - - MatrixInterpolation(); - MatrixInterpolation(const Matrix &, const Matrix &); - - Matrix get(float) const; - }; - - struct TimedKeyFrame - { - const Animation &animation; - const TimedKeyFrame *prev; - Time::TimeDelta time; - Time::TimeDelta delta_t; - RefPtr keyframe; - MatrixInterpolation matrix; - std::vector pose_matrices; - - TimedKeyFrame(const Animation &); - void prepare(); - }; - - typedef std::list KeyFrameList; - -public: - class Iterator - { - private: - const Animation &animation; - KeyFrameList::const_iterator iter; - Time::TimeDelta time_since_keyframe; - bool end; - - public: - Iterator(const Animation &); - - Iterator &operator+=(const Time::TimeDelta &); - - 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(); - ~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 &); - -public: - void set_looping(bool); -}; - -} // namespace GL -} // namespace Msp - -#endif