struct Axle
{
const VehicleType::Axle *type;
- float angle;
+ Angle angle;
Axle(const VehicleType::Axle &);
};
struct Bogie
{
const VehicleType::Bogie *type;
- float direction;
+ Angle direction;
std::vector<Axle> axles;
Bogie(const VehicleType::Bogie &);
{
const VehicleType::Rod *type;
Vector position;
- float angle;
+ Angle angle;
Rod(const VehicleType::Rod &);
};
// 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);
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; }
};