X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fcatalogue.cpp;h=54341c10c0432e7344d30d35cda86cf3724b2596;hb=d27edb207810f0b4e44be8c3632d421faa5fed80;hp=a5c584be58e4dd0e41f41ff35dbab3bc0fa81deb;hpb=02c9a9779954d993cb73fe5f7a72b0847e87f633;p=r2c2.git diff --git a/source/3d/catalogue.cpp b/source/3d/catalogue.cpp index a5c584b..54341c1 100644 --- a/source/3d/catalogue.cpp +++ b/source/3d/catalogue.cpp @@ -14,13 +14,15 @@ using namespace Msp; namespace Marklin { -Catalogue3D::Catalogue3D(const Catalogue &c): +Catalogue3D::Catalogue3D(Catalogue &c): catalogue(c), endpoint_mesh((GL::NORMAL3, GL::VERTEX3)) { + catalogue.signal_track_added.connect(sigc::mem_fun(this, &Catalogue3D::track_added)); + const map &trks = catalogue.get_tracks(); for(map::const_iterator i=trks.begin(); i!=trks.end(); ++i) - tracks[i->second] = new TrackType3D(*this, *i->second); + track_added(*i->second); ballast_material.set_diffuse(GL::Color(0.25, 0.25, 0.25)); rail_material.set_diffuse(GL::Color(0.85, 0.85, 0.85)); @@ -43,6 +45,11 @@ const TrackType3D &Catalogue3D::get_track(const TrackType &tt) const return *i->second; } +void Catalogue3D::track_added(const TrackType &track) +{ + tracks[&track] = new TrackType3D(*this, track); +} + void Catalogue3D::build_endpoint_mesh() { const Profile &ballast_profile = catalogue.get_ballast_profile();