X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fvehicle.cpp;h=e4bab870f856434b1e7e79f9b6c54543986921ee;hb=4049f5bdacfdb61247f3c74fc5f748990be7bd4d;hp=106be97d3c5be4c5ed49997362d314a4f2a412db;hpb=0a370f46322b0d6b804801bed042817fb8f98408;p=r2c2.git diff --git a/source/3d/vehicle.cpp b/source/3d/vehicle.cpp index 106be97..e4bab87 100644 --- a/source/3d/vehicle.cpp +++ b/source/3d/vehicle.cpp @@ -14,8 +14,8 @@ using namespace Msp; namespace R2C2 { Vehicle3D::Vehicle3D(Layout3D &l, Vehicle &v): + Object3D(l, v), GL::ObjectInstance(*l.get_catalogue().get_vehicle(v.get_type()).get_body_object()), - layout(l), vehicle(v), type(layout.get_catalogue().get_vehicle(vehicle.get_type())) { @@ -55,13 +55,11 @@ Vehicle3D::Vehicle3D(Layout3D &l, Vehicle &v): layout.get_scene().add(*r); } - layout.add_vehicle(*this); layout.get_scene().add(*this); } Vehicle3D::~Vehicle3D() { - layout.remove_vehicle(*this); layout.get_scene().remove(*this); for(vector::iterator i=axles.begin(); i!=axles.end(); ++i) { @@ -101,13 +99,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; - matrix.translate(vehicle.get_position()); - Angle rot = vehicle.get_rotation(); - if(vehicle.get_type().get_rotate_object()) - rot += Angle::half_turn(); - matrix.rotate(rot, 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