Animate::Animate():
target(0),
anim(0),
+ stacked(false),
player(0)
{ }
float speed = 1.0f;
if(!anim->is_looping() && d)
speed = (anim->get_duration()/Time::sec)/d;
- player->play(*target, *anim, speed);
+ if(target_obj)
+ {
+ if(stacked)
+ player->play_stacked(*target_obj, *anim, speed);
+ else
+ player->play(*target_obj, *anim, speed);
+ }
+ else
+ {
+ if(stacked)
+ player->play_stacked(*target, *anim, speed);
+ else
+ player->play(*target, *anim, speed);
+ }
}
{
a.player = &demo.get_animation_player();
add("animation", &Loader::animation);
+ add("stacked", &Animate::stacked);
add("target", &Loader::target);
}
void Animate::Loader::target(const string &n)
{
obj.target = &demo.get_thing<GL::Placeable>(n);
+ obj.target_obj = dynamic_cast<GL::AnimatedObject *>(obj.target);
}
} // namespace DemoScene