]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/vehicle.h
Make use of the geometry part of libmspmath
[r2c2.git] / source / libr2c2 / vehicle.h
index 54054bb50e325cb1babf87408fbbf637999a3ca4..bd815ab19f497bec7d07470d09700186765548ce 100644 (file)
@@ -33,7 +33,7 @@ public:
        struct Axle
        {
                const VehicleType::Axle *type;
-               float angle;
+               Angle angle;
 
                Axle(const VehicleType::Axle &);
        };
@@ -41,7 +41,7 @@ public:
        struct Bogie
        {
                const VehicleType::Bogie *type;
-               float direction;
+               Angle direction;
                std::vector<Axle> axles;
 
                Bogie(const VehicleType::Bogie &);
@@ -51,7 +51,7 @@ public:
        {
                const VehicleType::Rod *type;
                Vector position;
-               float angle;
+               Angle angle;
 
                Rod(const VehicleType::Rod &);
        };
@@ -95,7 +95,7 @@ public:
 
        // TODO implement these - should call place() with suitable parameters
        virtual void set_position(const Vector &) { }
-       virtual void set_rotation(float) { }
+       virtual void set_rotation(const Angle &) { }
        void place(Track &, unsigned, float, PlaceMode = CENTER);
        void unplace();
        void advance(float);
@@ -121,6 +121,10 @@ private:
        TrackPoint get_point(const TrackPosition &, float, float = 0.5) const;
 
 public:
+       virtual unsigned get_n_link_slots() const;
+       virtual Vehicle *get_link(unsigned) const;
+       virtual int get_link_slot(const Object &) const;
+
        virtual bool collide_ray(const Vector &, const Vector &) const { return false; }
 };