X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fvehicle.cpp;h=106be97d3c5be4c5ed49997362d314a4f2a412db;hb=0a370f46322b0d6b804801bed042817fb8f98408;hp=ceded8bc04c8012af255f399763ada36074270cb;hpb=4b7008978ce5b67e7e1db14b4a359e4ab1881bbd;p=r2c2.git diff --git a/source/3d/vehicle.cpp b/source/3d/vehicle.cpp index ceded8b..106be97 100644 --- a/source/3d/vehicle.cpp +++ b/source/3d/vehicle.cpp @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of R²C² -Copyright © 2010-2011 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - #include #include #include @@ -26,9 +19,9 @@ Vehicle3D::Vehicle3D(Layout3D &l, Vehicle &v): vehicle(v), type(layout.get_catalogue().get_vehicle(vehicle.get_type())) { - unsigned n_axles = vehicle.get_type().get_axles().size(); + unsigned n_axles = vehicle.get_type().get_fixed_axles().size(); for(unsigned i=0; i::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; + } } -Point Vehicle3D::get_node() const +Vector Vehicle3D::get_node() const { - Point p = vehicle.get_position(); - return Point(p.x, p.y, p.z+0.01+vehicle.get_type().get_height()); + Vector p = vehicle.get_position(); + return Vector(p.x, p.y, p.z+0.01+vehicle.get_type().get_height()); } bool Vehicle3D::is_visible() const @@ -95,73 +97,16 @@ void Vehicle3D::render(GL::Renderer &renderer, const GL::Tag &tag) const return; ObjectInstance::render(renderer, tag); - - /*if(tag==0) - { - GL::PushMatrix push_mat; - - const Point &pos = vehicle.get_position(); - GL::translate(pos.x, pos.y, pos.z); - GL::rotate(vehicle.get_direction()*180/M_PI, 0, 0, 1); - - if(const GL::Object *obj = type.get_body_object()) - obj->render(tag);*/ - - /*const vector &axles = vehicle.get_type().get_axles(); - for(unsigned i=0; irender(tag); - } - - const vector &bogies = vehicle.get_type().get_bogies(); - for(unsigned i=0; irender(tag); - } - - if(bogies[i].rotate_object) - GL::rotate(180, 0, 0, 1); - if(const GL::Object *obj = type.get_bogie_object(i)) - obj->render(tag); - }*/ - - /*const vector &rods = vehicle.get_type().get_rods(); - for(unsigned i=0; irender(tag); - }*/ - //} } void Vehicle3D::setup_render(GL::Renderer &renderer, const GL::Tag &) const { GL::Matrix matrix; - const Point &pos = vehicle.get_position(); - matrix.translate(pos.x, pos.y, pos.z); - matrix.rotate(vehicle.get_direction(), 0, 0, 1); + 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; }