namespace R2C2 {
class Layout;
+class Train;
class attachment_error: public std::logic_error
{
};
const VehicleType &type;
+ Train *train;
Vehicle *next;
Vehicle *prev;
TrackPosition track_pos;
virtual Vehicle *clone(Layout * = 0) const;
virtual const VehicleType &get_type() const { return type; }
+ void set_train(Train *);
+ Train *get_train() const { return train; }
void attach_back(Vehicle &);
void attach_front(Vehicle &);
void detach_back();
// TODO implement these - should call place() with suitable parameters
virtual void set_position(const Vector &) { }
virtual void set_rotation(const Angle &) { }
+ virtual void set_tilt(const Angle &) { }
void place(const TrackIter &, float, PlaceMode = CENTER);
void unplace();
void advance(float);
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; }
};
} // namespace R2C2