X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fanimationplayer.h;h=4c6e9ceca50bbc2fc0c7beeb5f256658a81c7150;hp=5d5f4cb85a260f88f9d5a109004b71b982c05564;hb=4cb33c263a00787a57531dfc41a4128bf34d7bee;hpb=a993091fbb8fdb76a1d02be9de59529c14b59cf0 diff --git a/source/animationplayer.h b/source/animationplayer.h index 5d5f4cb8..4c6e9cec 100644 --- a/source/animationplayer.h +++ b/source/animationplayer.h @@ -3,6 +3,7 @@ #include #include "animation.h" +#include "animationeventobserver.h" #include "matrix.h" namespace Msp { @@ -32,8 +33,11 @@ private: const Armature *armature; std::vector animations; bool stacked; + std::vector event_observers; Target(AnimatedObject &); + + virtual void animation_event(AnimatedObject *, const std::string &, const Variant &); }; typedef std::map ObjectMap; @@ -54,6 +58,17 @@ public: /// Returns the number of animations currently affecting an object. unsigned get_n_active_animations(const AnimatedObject &) const; + /** Request delivery of animation events for the given object. Events will + be delivered from all current and future animations until the observer is + removed. */ + void observe_events(AnimatedObject &, AnimationEventObserver &); + + /// Remove an event observer from one object. + void unobserve_events(AnimatedObject &, AnimationEventObserver &); + + /// Remove an event observer from all objects. + void unobserve_events(AnimationEventObserver &); + /// Stops all animations affecting an object. void stop(AnimatedObject &);