1
0
Fork 0

Fixes for first/last legs on a route

- fixes total route distance calculation
This commit is contained in:
James Turner 2015-12-17 19:22:14 -08:00
parent c585f7f7d1
commit b431696e9b

View file

@ -238,6 +238,7 @@ public:
turnEntryAngle(0.0), turnEntryAngle(0.0),
turnExitAngle(0.0), turnExitAngle(0.0),
turnRadius(0.0), turnRadius(0.0),
legCourseTrue(0.0),
pathDistanceM(0.0), pathDistanceM(0.0),
turnPathDistanceM(0.0), turnPathDistanceM(0.0),
overflightCompensationAngle(0.0), overflightCompensationAngle(0.0),
@ -384,13 +385,14 @@ public:
} }
} else { } else {
// happens for first leg // happens for first leg
legCourseValid = true;
if (isRunway) { if (isRunway) {
legCourseValid = true;
FGRunway* rwy = static_cast<RunwayWaypt*>(wpt.get())->runway(); FGRunway* rwy = static_cast<RunwayWaypt*>(wpt.get())->runway();
turnExitAngle = next.legCourseTrue - rwy->headingDeg(); turnExitAngle = next.legCourseTrue - rwy->headingDeg();
legCourseTrue = rwy->headingDeg(); legCourseTrue = rwy->headingDeg();
flyOver = true; flyOver = true;
} else { } else {
// don't set legCourseValid
turnExitAngle = 0.0; turnExitAngle = 0.0;
} }
} }
@ -988,6 +990,7 @@ void RoutePath::commonInit()
} else { } else {
// final waypt, fix up some data // final waypt, fix up some data
d->waypoints[i].turnExitPos = d->waypoints[i].pos; d->waypoints[i].turnExitPos = d->waypoints[i].pos;
d->waypoints[i].turnEntryPos = d->waypoints[i].pos;
} }
// now turn is computed, can resolve distances // now turn is computed, can resolve distances
@ -1197,9 +1200,15 @@ double RoutePath::distanceForVia(Via* via, int index) const
double RoutePath::trackForIndex(int index) const double RoutePath::trackForIndex(int index) const
{ {
if (d->waypoints[index].skipped) if (d->waypoints[index].skipped)
return trackForIndex(index - 1); 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 double RoutePath::distanceForIndex(int index) const