X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Fvehicletype.cpp;h=5c14cbada6b5dc43905d6b064b087533bd87d066;hb=9b05c573a38639827697fe393d55b7c76f5bde45;hp=dd15b48f964794b2291775f98fae9cb6dadc8d44;hpb=378f04522aa762729c0d5651fb60ad7e4d8ba9f3;p=r2c2.git diff --git a/source/libmarklin/vehicletype.cpp b/source/libmarklin/vehicletype.cpp index dd15b48..5c14cba 100644 --- a/source/libmarklin/vehicletype.cpp +++ b/source/libmarklin/vehicletype.cpp @@ -12,8 +12,9 @@ using namespace Msp; namespace Marklin { -VehicleType::VehicleType(unsigned n): - art_nr(n), +VehicleType::VehicleType(const ArticleNumber &an): + art_nr(an), + locomotive(false), length(0), width(0), height(0) @@ -26,6 +27,32 @@ unsigned VehicleType::get_max_function() const return (--functions.end())->first; } +float VehicleType::get_front_axle_offset() const +{ + float front = length/2; + if(!axles.empty()) + front = axles.front().position; + if(!bogies.empty()) + { + const Bogie &bogie = bogies.front(); + front = max(front, bogie.position+bogie.axles.front().position); + } + return front; +} + +float VehicleType::get_back_axle_offset() const +{ + float back = -length/2; + if(!axles.empty()) + back = axles.back().position; + if(!bogies.empty()) + { + const Bogie &bogie = bogies.back(); + back = min(back, bogie.position+bogie.axles.back().position); + } + return back; +} + VehicleType::Axle::Axle(): position(0), @@ -92,6 +119,7 @@ void VehicleType::Loader::width(float w) VehicleType::Axle::Loader::Loader(Axle &a): DataFile::ObjectLoader(a) { + add("object", &Axle::object); add("position", &Loader::position); add("powered", &Axle::powered); add("wheel_diameter", &Loader::wheel_diameter);