X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftrackpart.cpp;h=37c5f97a90b0fc81cae5eb150bb2cbd8a654e8d5;hb=9b05c573a38639827697fe393d55b7c76f5bde45;hp=943832fff413577dc77eabdef5d7d16840d61dbc;hpb=38fb8d56efde037a71c46a58bda314655e68ab6c;p=r2c2.git diff --git a/source/libmarklin/trackpart.cpp b/source/libmarklin/trackpart.cpp index 943832f..37c5f97 100644 --- a/source/libmarklin/trackpart.cpp +++ b/source/libmarklin/trackpart.cpp @@ -1,7 +1,7 @@ /* $Id$ This file is part of the MSP Märklin suite -Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa +Copyright © 2006-2010 Mikkosoft Productions, Mikko Rasa Distributed under the GPL */ @@ -9,6 +9,7 @@ Distributed under the GPL #include "trackpart.h" using namespace std; +using namespace Msp; namespace Marklin { @@ -16,28 +17,25 @@ TrackPart::TrackPart(): dir(0), length(0), radius(0), - route(0), + path(0), dead_end(false) -{ } - -void TrackPart::collect_endpoints(vector &eps) const { - eps.push_back(Endpoint(pos.x, pos.y, dir+M_PI, 1<M_PI) + da -= M_PI*2; + while(da<-M_PI) + da += M_PI*2; + + if(dx*dx+dy*dy<1e-6 && da>=-0.01 && da<=0.01) + { + links[i] = &other; + other.links[j] = this; + return; + } + } + } +} + +TrackPart *TrackPart::get_link(unsigned i) const +{ + if(i>=2) + throw InvalidParameterValue("Index out of range"); + return links[i]; } @@ -58,7 +99,7 @@ TrackPart::Loader::Loader(TrackPart &p): add("start", &Loader::start); add("length", &TrackPart::length); add("radius", &TrackPart::radius); - add("route", &TrackPart::route); + add("path", &TrackPart::path); add("dead_end", &TrackPart::dead_end); }