X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fanimationplayer.h;h=93482c74f9b88daac2744e343f2bc04ab6bbdb42;hp=6211fd661c21acd921743644571b1a1d7a45b2d3;hb=573ea4e5602c4321cc1d75daf9ed0beed5cde280;hpb=4dfd9c85997867060a0d420f3e76c3711b90c765 diff --git a/source/animationplayer.h b/source/animationplayer.h index 6211fd66..93482c74 100644 --- a/source/animationplayer.h +++ b/source/animationplayer.h @@ -19,20 +19,18 @@ class AnimationPlayer private: struct AnimationSlot { - const Animation &animation; + const Animation *animation; Animation::Iterator iterator; AnimationSlot(const Animation &); }; - typedef std::list AnimationList; - struct ObjectSlot { AnimatedObject &object; Matrix base_matrix; const Armature *armature; - AnimationList animations; + std::vector animations; bool stacked; ObjectSlot(AnimatedObject &); @@ -56,9 +54,12 @@ public: /// Returns the number of animations currently affecting an object. unsigned get_n_active_animations(const AnimatedObject &) const; - /// Stops any animations affecting an object. + /// Stops all animations affecting an object. void stop(AnimatedObject &); + /// Stops a single animation affecting an object. + void stop(AnimatedObject &, const Animation &); + /** Advances all playing animations. Should be called in a regular manner, preferably just before rendering. */ void tick(const Time::TimeDelta &); @@ -66,6 +67,7 @@ public: private: bool tick_single(ObjectSlot &, const Time::TimeDelta &); bool tick_stacked(ObjectSlot &, const Time::TimeDelta &); + static void set_object_uniform(AnimatedObject &, const std::string &, const KeyFrame::AnimatedUniform &); }; } // namespace GL