3 This file is part of the MSP Märklin suite
4 Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
15 TrackType::TrackType(unsigned a):
19 float TrackType::get_total_length() const
21 return get_route_length(-1);
24 float TrackType::get_route_length(int r) const
27 for(vector<TrackPart>::const_iterator i=parts.begin(); i!=parts.end(); ++i)
28 if(r<0 || i->route==static_cast<unsigned>(r))
38 unsigned TrackType::get_n_routes() const
41 for(vector<TrackPart>::const_iterator i=parts.begin(); i!=parts.end(); ++i)
47 void TrackType::collect_endpoints()
51 for(vector<TrackPart>::iterator i=parts.begin(); i!=parts.end(); ++i)
52 i->collect_endpoints(endpoints);
54 for(vector<Endpoint>::iterator i=endpoints.begin(); i!=endpoints.end();)
57 for(vector<Endpoint>::iterator j=i+1; j!=endpoints.end();)
61 if(dx*dx+dy*dy<0.0001)
63 float da=i->dir-j->dir;
85 TrackType::Loader::Loader(TrackType &t):
88 add("description", &TrackType::description);
89 add("part", &Loader::part);
92 void TrackType::Loader::finish()
94 ttype.collect_endpoints();
97 void TrackType::Loader::part()
101 ttype.parts.push_back(p);
104 } // namespace Marklin