return _track.block_iter();
}
-TrackPoint TrackOffsetIter::point() const
+OrientedPoint TrackOffsetIter::point() const
{
if(!_track)
- return TrackPoint();
+ return OrientedPoint();
if(_path>=0)
return _track->get_point(_track.entry(), _path, _offset);
while(t)
{
if(p<0)
- {
- if(r)
- if(unsigned tid = t->get_turnout_id())
- p = r->get_turnout(tid);
- if(p<0)
- p = t->get_active_path();
- }
+ p = (r ? r->get_path(*t) : t->get_active_path());
float length = t->get_type().get_path_length(p);
if(o<length)
int p = (_path>=0 ? _path : _track->get_active_path());
TrackIter t = _track.reverse(p);
+ if(!t)
+ return TrackOffsetIter();
+
float o = t->get_type().get_path_length(p)-_offset;
return TrackOffsetIter(t, p, o);