#include <msp/gl/select.h>
#include <msp/gl/texture.h>
#include <msp/datafile/parser.h>
+#include "libmarklin/trafficmanager.h"
#include "layout.h"
using namespace std;
{
while(!tracks.empty())
delete tracks.front();
+ while(!trains.empty())
+ delete trains.front();
}
void Layout3D::add_track(Track3D &t)
return track;
}
+void Layout3D::set_traffic_manager(TrafficManager &tm)
+{
+ tm.signal_train_added.connect(sigc::mem_fun(this, &Layout3D::train_added));
+}
+
+void Layout3D::add_train(Train3D &t)
+{
+ trains.push_back(&t);
+}
+
+void Layout3D::remove_train(Train3D &t)
+{
+ list<Train3D *>::iterator i = find(trains.begin(), trains.end(), &t);
+ if(i!=trains.end())
+ trains.erase(i);
+}
+
+Train3D &Layout3D::get_train(const Train &t) const
+{
+ for(list<Train3D *>::const_iterator i=trains.begin(); i!=trains.end(); ++i)
+ if(&(*i)->get_train()==&t)
+ return **i;
+
+ throw KeyError("Unknown train");
+}
+
void Layout3D::track_added(Track &t)
{
new Track3D(*this, t);
}
}
+void Layout3D::train_added(Train &t)
+{
+ new Train3D(*this, t);
+}
+
} // namespace Marklin