]> git.tdb.fi Git - r2c2.git/blobdiff - source/3d/catalogue.cpp
Add accessors adding things to a Catalogue from the outside
[r2c2.git] / source / 3d / catalogue.cpp
index a5c584be58e4dd0e41f41ff35dbab3bc0fa81deb..54341c10c0432e7344d30d35cda86cf3724b2596 100644 (file)
@@ -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<unsigned, TrackType *> &trks = catalogue.get_tracks();
        for(map<unsigned, TrackType *>::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();