AnimationPlayer::Target &AnimationPlayer::get_slot(Placeable &obj)
{
- ObjectMap::iterator i = objects.find(&obj);
+ auto i = objects.find(&obj);
if(i!=objects.end())
return i->second;
- return objects.insert(ObjectMap::value_type(&obj, Target(obj))).first->second;
+ return objects.insert(make_pair(&obj, Target(obj))).first->second;
}
AnimationPlayer::Target &AnimationPlayer::play_(Placeable &obj, const Animation &anim, bool stacked, float speed)
unsigned AnimationPlayer::get_n_active_animations(const AnimatedObject &obj) const
{
- ObjectMap::const_iterator i = objects.find(&obj);
+ auto i = objects.find(&obj);
return (i!=objects.end() ? i->second.animations.size() : 0);
}
void AnimationPlayer::unobserve_events(AnimatedObject &obj, AnimationEventObserver &observer)
{
- ObjectMap::iterator i = objects.find(&obj);
+ auto i = objects.find(&obj);
if(i==objects.end())
return;
- vector<AnimationEventObserver *>::iterator j = find(i->second.event_observers, &observer);
+ auto j = find(i->second.event_observers, &observer);
if(j!=i->second.event_observers.end())
i->second.event_observers.erase(j);
}
void AnimationPlayer::unobserve_events(AnimationEventObserver &observer)
{
- for(ObjectMap::iterator i=objects.begin(); i!=objects.end(); ++i)
+ for(auto &kvp: objects)
{
- vector<AnimationEventObserver *>::iterator j = find(i->second.event_observers, &observer);
- if(j!=i->second.event_observers.end())
- i->second.event_observers.erase(j);
+ auto j = find(kvp.second.event_observers, &observer);
+ if(j!=kvp.second.event_observers.end())
+ kvp.second.event_observers.erase(j);
}
}
void AnimationPlayer::stop(Placeable &obj, const Animation &anim)
{
- ObjectMap::iterator i = objects.find(&obj);
+ auto i = objects.find(&obj);
if(i==objects.end())
return;
- for(vector<PlayingAnimation>::iterator j=i->second.animations.begin(); j!=i->second.animations.end(); ++j)
- if(j->animation==&anim)
- {
- i->second.animations.erase(j);
- break;
- }
+ auto j = find_member(i->second.animations, &anim, &PlayingAnimation::animation);
+ if(j!=i->second.animations.end())
+ i->second.animations.erase(j);
if(i->second.animations.empty())
objects.erase(i);
void AnimationPlayer::tick(const Time::TimeDelta &dt)
{
- for(ObjectMap::iterator i=objects.begin(); i!=objects.end(); )
+ for(auto i=objects.begin(); i!=objects.end(); )
{
if(i->second.stacked)
tick_stacked(i->second, dt);
void AnimationPlayer::tick_stacked(Target &target, const Time::TimeDelta &dt)
{
Matrix matrix = target.base_matrix;
- for(vector<PlayingAnimation>::iterator i=target.animations.begin(); i!=target.animations.end(); ++i)
+ for(PlayingAnimation &a: target.animations)
{
- i->iterator += dt*i->speed;
- matrix *= i->iterator.get_matrix();
+ a.iterator += dt*a.speed;
+ matrix *= a.iterator.get_matrix();
if(target.object)
{
- unsigned n_uniforms = i->animation->get_n_uniforms();
+ unsigned n_uniforms = a.animation->get_n_uniforms();
for(unsigned j=0; j<n_uniforms; ++j)
- set_object_uniform(*target.object, i->animation->get_uniform_name(j), i->iterator.get_uniform(j));
+ set_object_uniform(*target.object, a.animation->get_uniform_name(j), a.iterator.get_uniform(j));
}
}
target.placeable.set_matrix(matrix);
matrix = Matrix();
/* XXX This is in all likelihood incorrect. The stacking should be
performed on local matrices. */
- for(vector<PlayingAnimation>::iterator j=target.animations.begin(); j!=target.animations.end(); ++j)
- if(j->animation->get_armature())
- matrix *= j->iterator.get_pose_matrix(i);
+ for(const PlayingAnimation &a: target.animations)
+ if(a.animation->get_armature())
+ matrix *= a.iterator.get_pose_matrix(i);
target.object->set_pose_matrix(i, matrix);
}
}
- for(vector<PlayingAnimation>::iterator i=target.animations.begin(); i!=target.animations.end(); )
+ for(auto i=target.animations.begin(); i!=target.animations.end(); )
{
i->iterator.dispatch_events(target);
void AnimationPlayer::Target::animation_event(Placeable *, const string &name, const Variant &value)
{
- for(vector<AnimationEventObserver *>::const_iterator i=event_observers.begin(); i!=event_observers.end(); ++i)
- (*i)->animation_event(&placeable, name, value);
+ for(AnimationEventObserver *o: event_observers)
+ o->animation_event(&placeable, name, value);
}
} // namespace GL