X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fanimation.h;h=1ae571e7db217e8e624c6475dc6c4731ebf08a9d;hp=63b13f7224269443e9b562572be9447d263d6faf;hb=bb162b9edd4b8c0e9faeed75da4148f5b9735450;hpb=fa5b232a16e11d7950e80764497f0167ec9e3b41 diff --git a/source/animation.h b/source/animation.h index 63b13f72..1ae571e7 100644 --- a/source/animation.h +++ b/source/animation.h @@ -4,12 +4,12 @@ #include #include #include +#include "keyframe.h" namespace Msp { namespace GL { class Armature; -class KeyFrame; class Matrix; class Pose; @@ -66,6 +66,7 @@ private: Time::TimeDelta delta_t; RefPtr keyframe; MatrixInterpolation matrix; + std::vector uniforms; std::vector pose_matrices; TimedKeyFrame(const Animation &); @@ -74,6 +75,14 @@ private: typedef std::list KeyFrameList; + struct UniformInfo + { + std::string name; + unsigned size; + + UniformInfo(const std::string &, unsigned); + }; + public: class Iterator { @@ -90,6 +99,7 @@ public: bool is_end() const { return end; } Matrix get_matrix() const; + KeyFrame::AnimatedUniform get_uniform(unsigned) const; Matrix get_pose_matrix(unsigned) const; }; @@ -97,6 +107,7 @@ private: const Armature *armature; KeyFrameList keyframes; bool looping; + std::vector uniforms; public: Animation(); @@ -105,6 +116,10 @@ public: void set_armature(const Armature &); const Armature *get_armature() const { return armature; } + unsigned get_n_uniforms() const { return uniforms.size(); } + unsigned get_slot_for_uniform(const std::string &) const; + const std::string &get_uniform_name(unsigned) const; + void add_keyframe(const Time::TimeDelta &, const KeyFrame &); private: void prepare_keyframe(TimedKeyFrame &);