- Track *track = queue.front();
- queue.erase(queue.begin());
-
- const vector<Track *> &links = track->get_links();
- for(vector<Track *>::const_iterator j=links.begin(); j!=links.end(); ++j)
- if(*j && tracks.insert(*j).second)
- {
- queue.push_back(*j);
- changed = true;
- }
- }
- for(set<Track *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
- {
- const vector<Track *> &links = (*i)->get_links();
- for(vector<Track *>::const_iterator j=links.begin(); j!=links.end(); ++j)
- if(*j && tracks.insert(*j).second)
- changed = true;
+ Object *obj = queue.front();
+ queue.pop_front();
+
+ unsigned nls = obj->get_n_link_slots();
+ for(unsigned j=0; j<nls; ++j)
+ if(Object *linked = obj->get_link(j))
+ if(objects.insert(linked).second)
+ {
+ queue.push_back(linked);
+ changed = true;
+ }