turnEntryAngle(0.0),
turnExitAngle(0.0),
turnRadius(0.0),
+ legCourseTrue(0.0),
pathDistanceM(0.0),
turnPathDistanceM(0.0),
overflightCompensationAngle(0.0),
}
} else {
// happens for first leg
- legCourseValid = true;
if (isRunway) {
+ legCourseValid = true;
FGRunway* rwy = static_cast<RunwayWaypt*>(wpt.get())->runway();
turnExitAngle = next.legCourseTrue - rwy->headingDeg();
legCourseTrue = rwy->headingDeg();
flyOver = true;
} else {
+ // don't set legCourseValid
turnExitAngle = 0.0;
}
}
} else {
// final waypt, fix up some data
d->waypoints[i].turnExitPos = d->waypoints[i].pos;
+ d->waypoints[i].turnEntryPos = d->waypoints[i].pos;
}
// now turn is computed, can resolve distances
double RoutePath::trackForIndex(int index) const
{
+
if (d->waypoints[index].skipped)
return trackForIndex(index - 1);
- return d->waypoints[index].legCourseTrue;
+
+ const WayptData& wd(d->waypoints[index]);
+ if (!wd.legCourseValid)
+ return 0.0;
+
+ return wd.legCourseTrue;
}
double RoutePath::distanceForIndex(int index) const