]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/vehicle.h
Make shoppinglist ignore zones
[r2c2.git] / source / libr2c2 / vehicle.h
index ec33edea0db503763c005ed717b3523186703fd5..2e91962842f2d319153ea4e8a2592f9f7af2275b 100644 (file)
@@ -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<float> bogie_dirs;
+       std::vector<std::vector<float> > axle_angles;
+       std::vector<Rod> 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;