X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fsignal.cpp;h=2e4a1120b217930288f21ed2c60b7459c89eae40;hb=d6213fa0f35a06182a7d3e88959c67ff019713b6;hp=4f124679eaed5d6ffa29338abd1d60a46061dd46;hpb=7a36d396eded897c421424905b2c938d770df341;p=r2c2.git diff --git a/source/3d/signal.cpp b/source/3d/signal.cpp index 4f12467..2e4a112 100644 --- a/source/3d/signal.cpp +++ b/source/3d/signal.cpp @@ -9,24 +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 { - renderer.matrix_stack() *= GL::Matrix::translation(signal.get_position()); - 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); }