-/*******************
-** Track::Part
-*/
-
-Track::Part::Part():
- x(0),
- y(0),
- dir(0),
- length(0),
- radius(0),
- route(0),
- dead_end(false)
-{ }
-
-void Track::Part::collect_endpoints(EndpointSeq &epl)
-{
- epl.push_back(Endpoint(Point(x, y, 0), dir+M_PI, 1<<route));
- if(dead_end)
- return;
- else if(radius)
- {
- float a=(radius<0)?-length:length;
- float c=cos(a);
- float s=sin(a);
- float rx=radius*sin(dir);
- float ry=-radius*cos(dir);
- epl.push_back(Endpoint(Point(x+c*rx-s*ry-rx, y+c*ry+s*rx-ry, 0), dir+a, 1<<route));
- }
- else
- epl.push_back(Endpoint(Point(x+cos(dir)*length, y+sin(dir)*length, 0), dir, 1<<route));
-}
-
-Track::Part::Loader::Loader(Part &p):
- part(p)
-{
- add("start", &Loader::start);
- add("length", &Part::length);
- add("radius", &Part::radius);
- add("route", &Part::route);
- add("dead_end", &Part::dead_end);
-}
-
-Track::Part::Loader::~Loader()
-{
- if(part.radius)
- {
- part.length*=M_PI/180;
- part.radius/=1000;
- }
- else
- part.length/=1000;
-
- part.x/=1000;
- part.y/=1000;
- part.dir*=M_PI/180;
-}
-
-void Track::Part::Loader::start(float x, float y, float d)
-{
- part.x=x;
- part.y=y;
- part.dir=d;
-}
-