struct Target: AnimationEventObserver
{
- AnimatedObject &object;
+ Placeable &placeable;
+ AnimatedObject *object;
Matrix base_matrix;
const Armature *armature;
std::vector<PlayingAnimation> animations;
bool stacked;
std::vector<AnimationEventObserver *> event_observers;
- Target(AnimatedObject &);
+ Target(Placeable &);
- virtual void animation_event(AnimatedObject *, const std::string &, const Variant &);
+ virtual void animation_event(Placeable *, const std::string &, const Variant &);
};
- typedef std::map<const AnimatedObject *, Target> ObjectMap;
+ typedef std::map<const Placeable *, Target> ObjectMap;
ObjectMap objects;
private:
- Target &get_slot(AnimatedObject &);
+ Target &get_slot(Placeable &);
+ Target &play_(Placeable &, const Animation &, bool);
public:
/// Plays an animation on an object. Any previous animations are replaced.
void play(AnimatedObject &, const Animation &);
+ void play(Placeable &, const Animation &);
+
/** 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 &);
+ void play_stacked(Placeable &, const Animation &);
+
/// Returns the number of animations currently affecting an object.
unsigned get_n_active_animations(const AnimatedObject &) const;