flex=f;
}
+void Track::check_slope()
+{
+ if(links.size()!=2)
+ return;
+
+ if(links[0] && links[1])
+ {
+ Point epp0=links[0]->get_endpoint_position(links[0]->get_endpoint_by_link(*this));
+ Point epp1=links[1]->get_endpoint_position(links[1]->get_endpoint_by_link(*this));
+ pos.z=epp0.z;
+ slope=epp1.z-pos.z;
+ }
+ else
+ {
+ slope=0;
+ if(links[0])
+ {
+ Point epp=links[0]->get_endpoint_position(links[0]->get_endpoint_by_link(*this));
+ pos.z=epp.z;
+ }
+ else if(links[1])
+ {
+ Point epp=links[1]->get_endpoint_position(links[1]->get_endpoint_by_link(*this));
+ pos.z=epp.z;
+ }
+ }
+}
+
void Track::set_turnout_id(unsigned i)
{
turnout_id=i;
return links[i];
}
-void Track::check_slope()
-{
- if(links.size()!=2)
- return;
-
- if(links[0] && links[1])
- {
- Point epp0=links[0]->get_endpoint_position(links[0]->get_endpoint_by_link(*this));
- Point epp1=links[1]->get_endpoint_position(links[1]->get_endpoint_by_link(*this));
- pos.z=epp0.z;
- slope=epp1.z-pos.z;
- }
- else
- {
- slope=0;
- if(links[0])
- {
- Point epp=links[0]->get_endpoint_position(links[0]->get_endpoint_by_link(*this));
- pos.z=epp.z;
- }
- else if(links[1])
- {
- Point epp=links[1]->get_endpoint_position(links[1]->get_endpoint_by_link(*this));
- pos.z=epp.z;
- }
- }
-}
-
int Track::traverse(unsigned i, unsigned route) const
{
const vector<Endpoint> &eps=type.get_endpoints();
Track::Loader::Loader(Track &t):
DataFile::BasicLoader<Track>(t)
{
- add("position", &Loader::position);
- add("rotation", &Track::rot);
- add("slope", &Track::slope);
- add("turnout_id", &Track::turnout_id);
- add("sensor_id", &Track::sensor_id);
- add("flex", &Track::flex);
+ add("position", &Loader::position);
+ add("rotation", &Track::rot);
+ add("slope", &Track::slope);
+ add("turnout_id", &Track::turnout_id);
+ add("sensor_id", &Track::sensor_id);
+ add("flex", &Track::flex);
}
void Track::Loader::position(float x, float y, float z)