-#include <msp/gl/matrix.h>
-#include <msp/gl/renderer.h>
#include "bogie.h"
#include "vehicle.h"
#include "vehicletype.h"
namespace R2C2 {
Bogie3D::Bogie3D(const Vehicle3D &v, unsigned b):
- GL::ObjectInstance(*v.get_type().get_bogie_object(b)),
- vehicle(v.get_vehicle()),
- bogie(vehicle.get_bogie(b))
+ VehiclePart3D(v, *v.get_type().get_bogie_object(b)),
+ bogie(vehicle.get_vehicle().get_bogie(b))
{ }
-void Bogie3D::render(Msp::GL::Renderer &renderer, const GL::Tag &tag) const
+void Bogie3D::update_matrix()
{
- if(!vehicle.get_track())
- return;
-
- ObjectInstance::render(renderer, tag);
-}
-
-void Bogie3D::setup_render(Msp::GL::Renderer &renderer, const GL::Tag &) const
-{
- GL::Matrix matrix;
-
- matrix.translate(vehicle.get_position());
- matrix.rotate(vehicle.get_rotation(), 0, 0, 1);
+ matrix = vehicle.Object3D::get_matrix();
matrix.translate(bogie.type->position, 0, 0);
Angle dir = bogie.direction;
if(bogie.type->rotate_object)
dir += Angle::half_turn();
matrix.rotate(dir, 0, 0, 1);
-
- renderer.matrix_stack() *= matrix;
}
} // namespace R2C2