+ if(travel_time_secs>=2)
+ speed_quantizer->learn(current_speed_step, travel_distance/travel_time_secs, travel_time_secs);
+ }
+ }
+
+ last_entry_block = allocator.iter_for(*block);
+ travel_time = Time::zero;
+ pure_speed = true;
+ accurate_position = true;
+ overshoot_dist = 0;
+
+ if(!advancing && vehicles.front()->get_track())
+ {
+ TrackIter track = last_entry_block.track_iter();
+ if(reverse)
+ {
+ track = track.flip();
+ vehicles.back()->place(track, 0, Vehicle::BACK_AXLE);
+ }
+ else
+ vehicles.front()->place(track, 0, Vehicle::FRONT_AXLE);
+ }
+ }
+ else if(BeamGate *gate = dynamic_cast<BeamGate *>(&sensor))
+ {
+ if(!advancing && vehicles.front()->get_track())
+ {
+ TrackIter track = allocator.iter_for(*block).track_iter();
+ for(; (track && &track->get_block()==block); track=track.next())
+ if(track.track()==gate->get_track())