- Vehicle &veh = *(reverse ? vehicles.back() : vehicles.front());
-
- TrackIter track(veh.get_track(), veh.get_entry());
- BlockIter block = allocator.first();
- const BlockIter &last_cur = allocator.last_current();
- const BlockIter &last = allocator.last();
- bool in_rsv = false;
- while(!block->has_track(*track))
- {
- if(&*block==&*last_cur)
- in_rsv = true;
- if(&*block==&*last)
- break;
- block = block.next();
- }
-
- float dist = veh.get_offset();
- if(reverse)
- track.reverse();
- else
- dist = track->get_type().get_path_length(track->get_active_path())-dist;
- dist -= veh.get_type().get_length()/2;
-
- bool nsens = 0;
- while(1)