X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fvehicle.cpp;h=5843c17998363f391025ecda5ba744726dd9fcaf;hb=a7ccbae5d5efd647a7f0c84f7e665e28c2892336;hp=e4bab870f856434b1e7e79f9b6c54543986921ee;hpb=4049f5bdacfdb61247f3c74fc5f748990be7bd4d;p=r2c2.git diff --git a/source/3d/vehicle.cpp b/source/3d/vehicle.cpp index e4bab87..5843c17 100644 --- a/source/3d/vehicle.cpp +++ b/source/3d/vehicle.cpp @@ -15,63 +15,34 @@ namespace R2C2 { Vehicle3D::Vehicle3D(Layout3D &l, Vehicle &v): Object3D(l, v), - GL::ObjectInstance(*l.get_catalogue().get_vehicle(v.get_type()).get_body_object()), + GL::ObjectInstance(*l.get_catalogue().get_3d(v.get_type()).get_body_object()), vehicle(v), - type(layout.get_catalogue().get_vehicle(vehicle.get_type())) + type(layout.get_catalogue().get_3d(vehicle.get_type())) { - unsigned n_axles = vehicle.get_type().get_fixed_axles().size(); + unsigned n_axles = vehicle.get_type().get_axles().size(); for(unsigned i=0; i::const_iterator i=children.begin(); i!=children.end(); ++i) + layout.get_scene().add(**i); } Vehicle3D::~Vehicle3D() { layout.get_scene().remove(*this); - for(vector::iterator i=axles.begin(); i!=axles.end(); ++i) - { - layout.get_scene().remove(**i); - delete *i; - } - for(vector::iterator i=bogies.begin(); i!=bogies.end(); ++i) - { - layout.get_scene().remove(**i); - delete *i; - } - for(vector::iterator i=rods.begin(); i!=rods.end(); ++i) + for(vector::iterator i=children.begin(); i!=children.end(); ++i) { layout.get_scene().remove(**i); delete *i; @@ -86,12 +57,20 @@ Vector Vehicle3D::get_node() const bool Vehicle3D::is_visible() const { - return vehicle.get_track(); + return vehicle.is_placed(); +} + +void Vehicle3D::moved() +{ + Object3D::moved(); + + for(vector::const_iterator i=children.begin(); i!=children.end(); ++i) + (*i)->update_matrix(); } void Vehicle3D::render(GL::Renderer &renderer, const GL::Tag &tag) const { - if(!vehicle.get_track()) + if(!is_visible()) return; ObjectInstance::render(renderer, tag);