X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Ftrain.cpp;h=c3affef1fdb48dbb0fbe18ff7d9adefda12a9b70;hb=42398f0178d499bb013ccc08f0c29f69f6f1ad2d;hp=d87d3768a7e0a482db808d934cd5f5211f389197;hpb=182ee232f01d5bb25ddc4cf6e00249698871412f;p=r2c2.git diff --git a/source/libmarklin/train.cpp b/source/libmarklin/train.cpp index d87d376..c3affef 100644 --- a/source/libmarklin/train.cpp +++ b/source/libmarklin/train.cpp @@ -272,7 +272,7 @@ void Train::place(Block &block, unsigned entry) else { const Block::Endpoint &bep = block.get_endpoints()[entry]; - vehicles.front()->place(bep.track, bep.track_ep, 0, Vehicle::BACK_BUFFER); + vehicles.back()->place(bep.track, bep.track_ep, 0, Vehicle::BACK_BUFFER); } } @@ -435,7 +435,10 @@ void Train::tick(const Time::TimeStamp &t, const Time::TimeDelta &dt) unsigned entry = bep.track_ep; bool found = false; - float dist = veh.get_offset()-veh.get_type().get_length()/2; + float dist = veh.get_offset(); + if(reverse) + dist = veh.get_track()->get_type().get_path_length(veh.get_track()->get_active_path())-dist; + dist -= veh.get_type().get_length()/2; while(1) { if(track==veh.get_track())