+ /** Plays an animation, stacked with other animations. If no animations are
+ playing yet, the object's current matrix is used as the base. */
+ void play_stacked(AnimatedObject &, const Animation &);
+
+ /// 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 &);
+
+ /// Stops a single animation affecting an object.
+ void stop(AnimatedObject &, const Animation &);
+