X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftracktype.cpp;h=cd832eb1997140e95c9e68eca7910c4d1c90dc6c;hb=25b79ab38c2be2e5c89b8240504f641fd9c4899c;hp=70d031699ff71ed3fcca68b28b2b254a45f064f4;hpb=52cbe8d99669f843f8f75c51128e2748584dd03a;p=r2c2.git diff --git a/source/libmarklin/tracktype.cpp b/source/libmarklin/tracktype.cpp index 70d0316..cd832eb 100644 --- a/source/libmarklin/tracktype.cpp +++ b/source/libmarklin/tracktype.cpp @@ -10,15 +10,21 @@ TrackType::TrackType(unsigned a): { } float TrackType::get_total_length() const +{ + return get_route_length(-1); +} + +float TrackType::get_route_length(int r) const { float len=0; for(vector::const_iterator i=parts.begin(); i!=parts.end(); ++i) - { - float l=i->length; - if(i->radius) - l*=i->radius; - len+=l; - } + if(r<0 || i->route==static_cast(r)) + { + float l=i->length; + if(i->radius) + l*=abs(i->radius); + len+=l; + } return len; }