- Block &block = track->get_block();
-
- while(1)
- {
- const vector<Block::Endpoint> &eps = block.get_endpoints();
- bool ok = false;
- for(unsigned i=0; (!ok && i<eps.size()); ++i)
- if(eps[i].track==track && eps[i].track_ep==ep)
- {
- train.place(block, i);
- ok = true;
- }
-
- if(ok)
- break;
- else
- {
- Track *next = track->get_links()[ep];
- ep = next->traverse(next->get_endpoint_by_link(*track), 0);
- track = next;
- if(!block.has_track(*track))
- break;
- }
- }