X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fsignal.cpp;h=2e4a1120b217930288f21ed2c60b7459c89eae40;hb=3907520897611cb1b5f2f938c60d3eaff34477a5;hp=8601bcc8d935aaa381d137275602fe263a67e673;hpb=3e3675f8d86b06cdea7df197dfe8866ffb285aec;p=r2c2.git diff --git a/source/3d/signal.cpp b/source/3d/signal.cpp index 8601bcc..2e4a112 100644 --- a/source/3d/signal.cpp +++ b/source/3d/signal.cpp @@ -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); }