- const set<Track *> &tracks = objects.get<Track>();
- for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
- if(used_tracks.count(*i)==0)
- {
- Block *block = new Block(*this, **i);
- used_tracks.insert(block->get_tracks().begin(), block->get_tracks().end());
- }
+ list<Block *> created_blocks;
+ while(!loose_tracks.empty())
+ {
+ Block *block = new Block(*this, **loose_tracks.begin());
+ created_blocks.push_back(block);
+
+ const set<Track *> &btracks = block->get_tracks();
+ for(set<Track *>::const_iterator i=btracks.begin(); i!=btracks.end(); ++i)
+ loose_tracks.erase(*i);
+ }