]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/track.cpp
Add signals for adding and removing vehicles
[r2c2.git] / source / libr2c2 / track.cpp
index c92ff3779021783e82ef85f9683f1fa52984d4e2..71c570cee86ccd251d6269c080b1c619bac18054 100644 (file)
@@ -26,7 +26,7 @@ Track::Track(Layout &l, const TrackType &t):
        if(type.is_turnout())
                turnout_id = layout.allocate_turnout_id();
 
-       layout.add_track(*this);
+       layout.add(*this);
 
        if(layout.has_driver())
                layout.get_driver().signal_turnout.connect(sigc::mem_fun(this, &Track::turnout_event));
@@ -37,7 +37,7 @@ Track::Track(Layout &l, const TrackType &t):
 Track::~Track()
 {
        break_links();
-       layout.remove_track(*this);
+       layout.remove(*this);
 }
 
 Track *Track::clone(Layout *to_layout) const
@@ -123,6 +123,8 @@ void Track::set_turnout_id(unsigned i)
 {
        if(!type.is_turnout())
                throw logic_error("not a turnout");
+       if(!i)
+               throw invalid_argument("Track::set_turnout_id");
 
        turnout_id = i;
        layout.create_blocks(*this);
@@ -149,6 +151,7 @@ void Track::set_active_path(unsigned p)
        if(!(type.get_paths()&(1<<p)))
                throw invalid_argument("Track::set_active_path");
 
+       signal_path_changing(p);
        path_changing = true;
        layout.get_driver().set_turnout(turnout_id, p);
 }
@@ -316,17 +319,6 @@ bool Track::break_link(unsigned i)
        return true;
 }
 
-bool Track::collide_ray(const Vector &start, const Vector &ray) const
-{
-       Transform trans = Transform::rotation(-rotation, Vector(0, 0, 1));
-       Vector local_start = trans.transform(start-position);
-       Vector local_ray = trans.transform(ray);
-
-       float width = layout.get_catalogue().get_ballast_profile().get_width();
-
-       return type.collide_ray(local_start, local_ray, width);
-}
-
 void Track::save(list<DataFile::Statement> &st) const
 {
        st.push_back((DataFile::Statement("position"), position.x, position.y, position.z));