]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/trackpart.h
Avoid negative values of wait_time
[r2c2.git] / source / libr2c2 / trackpart.h
index ebe353c34cfde4022586fbd9f2b3922f40a479ef..97e76349d138e769c96f23d34cf0dd268121f8a2 100644 (file)
@@ -1,14 +1,7 @@
-/* $Id$
-
-This file is part of R²C²
-Copyright © 2006-2011  Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
 #ifndef LIBR2C2_TRACKPART_H_
 #define LIBR2C2_TRACKPART_H_
 
-#include <msp/datafile/loader.h>
+#include <msp/datafile/objectloader.h>
 #include "geometry.h"
 
 namespace R2C2 {
@@ -16,7 +9,7 @@ namespace R2C2 {
 class TrackPart
 {
 public:
-       class Loader: public Msp::DataFile::BasicLoader<TrackPart>
+       class Loader: public Msp::DataFile::ObjectLoader<TrackPart>
        {
        public:
                Loader(TrackPart &);
@@ -27,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