]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/vehicle.h
Support trains with multiple vehicles
[r2c2.git] / source / libmarklin / vehicle.h
index 149adda5d55e931ab6f92a6a83be383e510c8caf..c58df764917c0ea6c4cefb20006f756d3a2f19db 100644 (file)
@@ -55,6 +55,13 @@ public:
 
        const VehicleType &get_type() const { return type; }
 
+       void attach_back(Vehicle &);
+       void attach_front(Vehicle &);
+       void detach_back();
+       void detach_front();
+       Vehicle *get_next() const { return next; }
+       Vehicle *get_previous() const { return prev; }
+
        void place(Track *, unsigned, float, PlaceMode = CENTER);
        void advance(float);
        Track *get_track() const { return track_pos.track; }
@@ -64,7 +71,14 @@ public:
        float get_direction() const { return direction; }
 private:
        void update_position();
-       TrackPoint get_position(float, float, const TrackPosition &);
+       void update_position_from(const Vehicle &);
+       void propagate_position();
+       void propagate_forward();
+       void propagate_backward();
+
+       void adjust_for_distance(TrackPosition &, TrackPosition &, float, float = 0.5) const;
+       TrackPoint get_point(const Point &, const Point &, float = 0.5) const;
+       TrackPoint get_point(const TrackPosition &, float, float = 0.5) const;
 };
 
 } // namespace Marklin