X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fsignal.cpp;h=8e0fea841aee940b62687bf03c1749fadbc807d8;hb=e3e3a940c75dcad126d5cf08f0802efdab914568;hp=0942bce22e1389aee4798c6376d2eb7e7cc7ac2e;hpb=2910db1364914c0ab98a0f80250cc39137821577;p=r2c2.git diff --git a/source/3d/signal.cpp b/source/3d/signal.cpp index 0942bce..8e0fea8 100644 --- a/source/3d/signal.cpp +++ b/source/3d/signal.cpp @@ -9,6 +9,7 @@ using namespace Msp; namespace R2C2 { Signal3D::Signal3D(Layout3D &l, Signal &s): + Object3D(s), GL::ObjectInstance(l.get_catalogue().get_signal(s.get_type()).get_object()), layout(l), signal(s) @@ -23,11 +24,14 @@ Signal3D::~Signal3D() 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); }