TrackPosition track_pos;
Point position;
float direction;
+ std::vector<float> bogie_dirs;
+ unsigned front_sensor;
+ unsigned back_sensor;
public:
Vehicle(Layout &, const VehicleType &);
float get_offset() const { return track_pos.offs; }
const Point &get_position() const { return position; }
float get_direction() const { return direction; }
+ float get_bogie_direction(unsigned) const;
private:
void update_position();
void update_position_from(const Vehicle &);
void propagate_position();
void propagate_forward();
void propagate_backward();
+ void check_sensor(float, unsigned &);
void adjust_for_distance(TrackPosition &, TrackPosition &, float, float = 0.5) const;
TrackPoint get_point(const Point &, const Point &, float = 0.5) const;