- for(set<Track *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
- {
- const set<Track *> &btracks = (*i)->get_block().get_tracks();
- for(set<Track *>::iterator j=btracks.begin(); j!=btracks.end(); ++j)
- if(!tracks.count(*j))
- {
- tracks.insert(*j);
- changed = true;
- }
- }
+ for(set<Object *>::iterator i=objects.begin(); i!=objects.end(); ++i)
+ if(Track *track = dynamic_cast<Track *>(*i))
+ {
+ const set<Track *> &btracks = track->get_block().get_tracks();
+ for(set<Track *>::iterator j=btracks.begin(); j!=btracks.end(); ++j)
+ if(objects.insert(*j).second)
+ changed = true;
+ }