X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Ftrackpart.h;h=97e76349d138e769c96f23d34cf0dd268121f8a2;hb=7b4155fa0581d7c5fe198e4fb1dea61fa0846eec;hp=462290526eb6809bd2663304bbcd1a97cb2a1a75;hpb=d15ac13f2e170f155b4bbd124df48400c339b644;p=r2c2.git diff --git a/source/libr2c2/trackpart.h b/source/libr2c2/trackpart.h index 4622905..97e7634 100644 --- a/source/libr2c2/trackpart.h +++ b/source/libr2c2/trackpart.h @@ -1,7 +1,7 @@ #ifndef LIBR2C2_TRACKPART_H_ #define LIBR2C2_TRACKPART_H_ -#include +#include #include "geometry.h" namespace R2C2 { @@ -9,7 +9,7 @@ namespace R2C2 { class TrackPart { public: - class Loader: public Msp::DataFile::BasicLoader + class Loader: public Msp::DataFile::ObjectLoader { public: Loader(TrackPart &); @@ -20,24 +20,29 @@ public: private: Vector pos; - float dir; + Angle dir; float length; float radius; unsigned path; bool dead_end; TrackPart *links[2]; + Shape *shape; + Transform transform; public: TrackPart(); + ~TrackPart(); float get_length() const; bool is_curved() const { return radius; } - TrackPoint get_point(float) const; + OrientedPoint get_point(float) const; + OrientedPoint get_nearest_point(const Vector &) const; unsigned get_path() const { return path; } bool is_dead_end() const { return dead_end; } void check_link(TrackPart &); TrackPart *get_link(unsigned) const; - bool collide_ray(const Vector &, const Vector &, float) const; + void create_shape(); + const Shape &get_shape() const { return *shape; } }; } // namespace R2C2