]> git.tdb.fi Git - r2c2.git/blobdiff - source/libmarklin/track.cpp
Add a timetable row type to wait for another train
[r2c2.git] / source / libmarklin / track.cpp
index 74e51acab73fddb2246b750d23a3339b9e2dab24..c940e1cd93d15e517f1501506e228172362aba6c 100644 (file)
@@ -22,7 +22,7 @@ Track::Track(Layout &l, const TrackType &t):
        rot(0),
        slope(0),
        flex(false),
-       turnout_id(type.is_turnout() ? layout.allocate_turnout_id() : 0),
+       turnout_id(type.is_turnout() ? layout.allocate_turnout_id(type.is_double_address()) : 0),
        sensor_id(0),
        links(type.get_endpoints().size()),
        active_path(0)
@@ -310,7 +310,7 @@ TrackPoint Track::get_point(unsigned epi, unsigned path, float d) const
        float c = cos(rot);
        float s = sin(rot);
 
-       p.pos = Point(pos.x+c*p.pos.x-s*p.pos.y, pos.y+s*p.pos.x+c*p.pos.y, 0);
+       p.pos = Point(pos.x+c*p.pos.x-s*p.pos.y, pos.y+s*p.pos.x+c*p.pos.y, pos.z);
        p.dir += rot;
        if(type.get_endpoints().size()==2)
        {
@@ -318,12 +318,12 @@ TrackPoint Track::get_point(unsigned epi, unsigned path, float d) const
                float grade = slope/len;
                if(epi==0)
                {
-                       p.pos.z = pos.z+grade*d;
+                       p.pos.z += grade*d;
                        p.grade = grade;
                }
                else
                {
-                       p.pos.z = pos.z+slope-grade*d;
+                       p.pos.z += slope-grade*d;
                        p.grade = -grade;
                }
        }