namespace R2C2 {
Signal3D::Signal3D(Layout3D &l, Signal &s):
- GL::ObjectInstance(l.get_catalogue().get_signal(s.get_type()).get_object()),
- layout(l),
+ Object3D(l, s),
+ GL::ObjectInstance(l.get_catalogue().get_3d(s.get_type()).get_object()),
signal(s)
{
- layout.add_signal(*this);
layout.get_scene().add(*this);
}
Signal3D::~Signal3D()
{
- layout.remove_signal(*this);
layout.get_scene().remove(*this);
}
+Vector Signal3D::get_node() const
+{
+ return matrix*Vector(0, -0.035, 0.13);
+}
+
void Signal3D::setup_render(GL::Renderer &renderer, const GL::Tag &) const
{
- const Vector &pos = signal.get_position();
- renderer.matrix_stack() *= GL::Matrix::translation(pos.x, pos.y, pos.z);
- renderer.matrix_stack() *= GL::Matrix::rotation(signal.get_rotation(), 0, 0, 1);
+ renderer.matrix_stack() *= matrix;
// XXX Use track gauge, configure signal side
renderer.matrix_stack() *= GL::Matrix::translation(0, -0.035, 0);
}