X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Froute.cpp;h=befaa6de9245a9dbe5d36f02a3a333f265c14fc1;hb=9def58c4bbec8788430740a1e9afce64a496231f;hp=556cbf4014c57d474a5e7e604c01f08c7f1a5352;hpb=6bc2957656507e09f08206ae9b1111a694a4b891;p=r2c2.git diff --git a/source/libmarklin/route.cpp b/source/libmarklin/route.cpp index 556cbf4..befaa6d 100644 --- a/source/libmarklin/route.cpp +++ b/source/libmarklin/route.cpp @@ -87,7 +87,7 @@ list dijkstra(const TrackIter &from, const Pred &goal) break; } - unsigned paths = lowest.track->get_type().get_endpoints()[lowest.track.entry()].paths; + unsigned paths = lowest.track.endpoint().paths; for(unsigned i=0; paths>>i; ++i) if(paths&(1<get_turnout_id()) { - const TrackType::Endpoint &ep = links[j]->get_type().get_endpoints()[links[j]->get_endpoint_by_link(**i)]; + const TrackType::Endpoint &ep = links[j]->get_type().get_endpoint(links[j]->get_endpoint_by_link(**i)); int p = get_turnout(tid2); if(p>=0 && !(ep.paths&(1<::const_iterator i = turnouts.find(tid); + if(i!=turnouts.end()) + return i->second; + } + return trk.get_active_path(); +} + void Route::add_track(Track &trk) { if(tracks.count(&trk))