X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fvehicle.h;h=2e91962842f2d319153ea4e8a2592f9f7af2275b;hb=3fa2b4016a4573be61f48c1dd4162c1dbc3372ba;hp=ec33edea0db503763c005ed717b3523186703fd5;hpb=1ff06c5bc46a677fa389ef86c6b26664368f1653;p=r2c2.git diff --git a/source/libr2c2/vehicle.h b/source/libr2c2/vehicle.h index ec33ede..2e91962 100644 --- a/source/libr2c2/vehicle.h +++ b/source/libr2c2/vehicle.h @@ -41,6 +41,14 @@ private: TrackPoint get_point() const; }; + struct Rod + { + Point position; + float angle; + + Rod(); + }; + Layout &layout; const VehicleType &type; Vehicle *next; @@ -49,6 +57,8 @@ private: Point position; float direction; std::vector bogie_dirs; + std::vector > axle_angles; + std::vector rods; unsigned front_sensor; unsigned back_sensor; @@ -73,7 +83,11 @@ public: float get_offset() const { return track_pos.offs; } const Point &get_position() const { return position; } float get_direction() const { return direction; } + float get_axle_angle(unsigned) const; float get_bogie_direction(unsigned) const; + float get_bogie_axle_angle(unsigned, unsigned) const; + const Point &get_rod_position(unsigned) const; + float get_rod_angle(unsigned) const; private: void update_position(); void update_position_from(const Vehicle &); @@ -81,6 +95,8 @@ private: void propagate_forward(); void propagate_backward(); void check_sensor(float, unsigned &); + void turn_axles(float); + void update_rods(); void adjust_for_distance(TrackPosition &, TrackPosition &, float, float = 0.5) const; TrackPoint get_point(const Point &, const Point &, float = 0.5) const;