X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fvehicletype.cpp;h=52dc7b0f45edf2f99fd9fc0257ef3bbb982fbbda;hb=251270c97a5e5eb8630bc1662a406255dedae90e;hp=b9c6ed2f72fe093c37043d3504bc226b225abe84;hpb=37af7970d9cefcf40ae58ca06ca8469f56b0cc13;p=r2c2.git diff --git a/source/libr2c2/vehicletype.cpp b/source/libr2c2/vehicletype.cpp index b9c6ed2..52dc7b0 100644 --- a/source/libr2c2/vehicletype.cpp +++ b/source/libr2c2/vehicletype.cpp @@ -1,7 +1,7 @@ /* $Id$ This file is part of R²C² -Copyright © 2010 Mikkosoft Productions, Mikko Rasa +Copyright © 2010-2011 Mikkosoft Productions, Mikko Rasa Distributed under the GPL */ @@ -27,6 +27,36 @@ unsigned VehicleType::get_max_function() const return (--functions.end())->first; } +const VehicleType::Axle &VehicleType::get_fixed_axle(unsigned i) const +{ + if(i>=axles.size()) + throw InvalidParameterValue("Axle index out of range"); + return axles[i]; +} + +const VehicleType::Bogie &VehicleType::get_bogie(unsigned i) const +{ + if(i>=bogies.size()) + throw InvalidParameterValue("Axle index out of range"); + return bogies[i]; +} + +const VehicleType::Axle &VehicleType::get_bogie_axle(unsigned i, unsigned j) const +{ + if(i>=bogies.size()) + throw InvalidParameterValue("Axle index out of range"); + if(j>=bogies[i].axles.size()) + throw InvalidParameterValue("Axle index out of range"); + return bogies[i].axles[j]; +} + +const VehicleType::Rod &VehicleType::get_rod(unsigned i) const +{ + if(i>=rods.size()) + throw InvalidParameterValue("Rod index out of range"); + return rods[i]; +} + float VehicleType::get_front_axle_offset() const { float front = length/2; @@ -202,8 +232,8 @@ void VehicleType::Rod::Loader::connect(const string &t, float px, float pz, floa if(i==tags.end()) throw KeyError("Unknown rod tag", t); obj.connect_index = i->second; - obj.connect_point = Point(px/1000, 0, pz/1000); - obj.connect_offset = Point(ox/1000, 0, oz/1000); + obj.connect_point = Vector(px/1000, 0, pz/1000); + obj.connect_offset = Vector(ox/1000, 0, oz/1000); } void VehicleType::Rod::Loader::pivot_body() @@ -235,7 +265,7 @@ void VehicleType::Rod::Loader::pivot_rod(const string &t) void VehicleType::Rod::Loader::position(float x, float y, float z) { - obj.pivot_point = Point(x/1000, y/1000, z/1000); + obj.pivot_point = Vector(x/1000, y/1000, z/1000); } void VehicleType::Rod::Loader::set_tag(const string &t)