]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/track.cpp
Add a path_changed signal to Track
[r2c2.git] / source / libmarklin / track.cpp
index 0a9f1ac83f8977f02935fd6f5838d93265a62278..9b63d5b2c2050cc9f940231bcd6d96c022940001 100644 (file)
@@ -212,7 +212,8 @@ bool Track::snap_to(Track &other, bool link)
                        Point epp2 = other.get_endpoint_position(j);
                        float dx = epp2.x-epp.x;
                        float dy = epp2.y-epp.y;
-                       if(dx*dx+dy*dy<limit)
+                       float dz = epp2.z-epp.z;
+                       if(dx*dx+dy*dy<limit && dz*dz<4e-4)
                        {
                                if(!link || (!flex && !other.get_flex()))
                                {
@@ -347,6 +348,10 @@ void Track::turnout_event(unsigned addr, bool state)
                active_path = (active_path&2) | (state ? 1 : 0);
        else if(type.is_double_address() && addr==turnout_id+1)
                active_path = (active_path&1) | (state ? 2 : 0);
+       else
+               return;
+
+       signal_path_changed.emit(active_path);
 }