-/* $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 {
class TrackPart
{
public:
- class Loader: public Msp::DataFile::BasicLoader<TrackPart>
+ class Loader: public Msp::DataFile::ObjectLoader<TrackPart>
{
public:
Loader(TrackPart &);
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