X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Fvehicle.h;h=c58df764917c0ea6c4cefb20006f756d3a2f19db;hb=6968273080fa2a1cbcfc506610d5f249299611e9;hp=149adda5d55e931ab6f92a6a83be383e510c8caf;hpb=9ddcd066e37e4c72685817c042c30897786ece05;p=r2c2.git diff --git a/source/libmarklin/vehicle.h b/source/libmarklin/vehicle.h index 149adda..c58df76 100644 --- a/source/libmarklin/vehicle.h +++ b/source/libmarklin/vehicle.h @@ -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