]> git.tdb.fi Git - r2c2.git/blobdiff - source/3d/signal.cpp
Don't crash if a train has no router
[r2c2.git] / source / 3d / signal.cpp
index 8601bcc8d935aaa381d137275602fe263a67e673..2e4a1120b217930288f21ed2c60b7459c89eae40 100644 (file)
@@ -9,25 +9,26 @@ using namespace Msp;
 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_direction(), 0, 0, 1);
+       renderer.matrix_stack() *= matrix;
        // XXX Use track gauge, configure signal side
        renderer.matrix_stack() *= GL::Matrix::translation(0, -0.035, 0);
 }