layout.remove_vehicle(*this);
layout.get_scene().remove(*this);
for(vector<Axle3D *>::iterator i=axles.begin(); i!=axles.end(); ++i)
+ {
+ layout.get_scene().remove(**i);
delete *i;
+ }
for(vector<Bogie3D *>::iterator i=bogies.begin(); i!=bogies.end(); ++i)
+ {
+ layout.get_scene().remove(**i);
delete *i;
+ }
for(vector<Rod3D *>::iterator i=rods.begin(); i!=rods.end(); ++i)
+ {
+ layout.get_scene().remove(**i);
delete *i;
+ }
}
Vector Vehicle3D::get_node() 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);
- float dir = vehicle.get_direction();
+ matrix.translate(vehicle.get_position());
+ Angle rot = vehicle.get_rotation();
if(vehicle.get_type().get_rotate_object())
- dir += M_PI;
- matrix.rotate(dir, 0, 0, 1);
+ rot += Angle::half_turn();
+ matrix.rotate(rot, 0, 0, 1);
renderer.matrix_stack() *= matrix;
}