X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fvehicle.cpp;h=e33f643c8ddc69d710a63ef3019d988a593bab0e;hb=895fdb9568cda40898e5bb646061c14a41dc0124;hp=4e5965b2de44860d90881f21c3c18918d3786d60;hpb=d15ac13f2e170f155b4bbd124df48400c339b644;p=r2c2.git diff --git a/source/3d/vehicle.cpp b/source/3d/vehicle.cpp index 4e5965b..e33f643 100644 --- a/source/3d/vehicle.cpp +++ b/source/3d/vehicle.cpp @@ -14,6 +14,7 @@ using namespace Msp; namespace R2C2 { Vehicle3D::Vehicle3D(Layout3D &l, Vehicle &v): + Object3D(v), GL::ObjectInstance(*l.get_catalogue().get_vehicle(v.get_type()).get_body_object()), layout(l), vehicle(v), @@ -64,11 +65,20 @@ Vehicle3D::~Vehicle3D() layout.remove_vehicle(*this); 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) + { + layout.get_scene().remove(**i); delete *i; + } } Vector Vehicle3D::get_node() const @@ -92,11 +102,9 @@ void Vehicle3D::render(GL::Renderer &renderer, const GL::Tag &tag) const void Vehicle3D::setup_render(GL::Renderer &renderer, const GL::Tag &) const { - GL::Matrix matrix; - const Vector &pos = vehicle.get_position(); - matrix.translate(pos.x, pos.y, pos.z); - matrix.rotate(vehicle.get_direction(), 0, 0, 1); renderer.matrix_stack() *= matrix; + if(vehicle.get_type().get_rotate_object()) + renderer.matrix_stack() *= GL::Matrix::rotation(Angle::half_turn(), 0, 0, 1); } } // namespace R2C2