X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Fvehicle.cpp;h=5a26f9294b665c8a5178696e482f78a8489f17dd;hb=25c26706d400228110e14a4a9a9765cb1298372d;hp=75afa4bba78f9c10c03c4fb3254875d49770d9d1;hpb=97443d96ff3ce51388d2edd1e0dca8f2cd231346;p=r2c2.git diff --git a/source/libmarklin/vehicle.cpp b/source/libmarklin/vehicle.cpp index 75afa4b..5a26f92 100644 --- a/source/libmarklin/vehicle.cpp +++ b/source/libmarklin/vehicle.cpp @@ -83,9 +83,9 @@ void Vehicle::detach_front() prev = 0; } -void Vehicle::place(Track *t, unsigned e, float o, PlaceMode m) +void Vehicle::place(Track &t, unsigned e, float o, PlaceMode m) { - track_pos = TrackPosition(t, e, o); + track_pos = TrackPosition(&t, e, o); if(m==FRONT_AXLE) track_pos.advance(-type.get_front_axle_offset()); @@ -100,6 +100,19 @@ void Vehicle::place(Track *t, unsigned e, float o, PlaceMode m) propagate_position(); } +void Vehicle::unplace() +{ + if(!track_pos.track) + return; + + track_pos = TrackPosition(); + + if(prev) + prev->unplace(); + if(next) + next->unplace(); +} + void Vehicle::advance(float d) { track_pos.advance(d);