alt_lock = false;
roll = 0;
headingChangeRate = 0.0;
+ headingError = 0;
holdPos = false;
_performance = 0; //TODO initialize to JET_TRANSPORT from PerformanceDB
-
+ dt = 0;
}
void FGAIAircraft::checkVisibility()
{
- double visibility_meters = fgGetDouble("/environment/visibility-m");
-
- FGViewer* vw = globals->get_current_view();
- double course, distance;
-
- SGWayPoint current(pos.getLongitudeDeg(), pos.getLatitudeDeg(), 0);
- SGWayPoint view (vw->getLongitude_deg(), vw->getLatitude_deg(), 0);
- view.CourseAndDistance(current, &course, &distance);
- if (distance > visibility_meters) {
- invisible = true;
- } else {
- invisible = false;
- }
+ double visibility_meters = fgGetDouble("/environment/visibility-m");
+ FGViewer* vw = globals->get_current_view();
+ invisible = (SGGeodesy::distanceM(vw->getPosition(), pos) > visibility_meters);
}
}
//TODO let the fp handle this (loading of next leg)
- fp->IncrementWaypoint((bool) trafficRef);
- if (!(fp->getNextWaypoint()) && trafficRef)
+ fp->IncrementWaypoint( trafficRef != 0 );
+ if (!(fp->getNextWaypoint()) && trafficRef != 0)
if (!loadNextLeg()) {
setDie(true);
return;
// Only do the proper hitlist stuff if we are within visible range of the viewer.
if (!invisible) {
double visibility_meters = fgGetDouble("/environment/visibility-m");
-
FGViewer* vw = globals->get_current_view();
- double course, distance;
-
- SGWayPoint current(pos.getLongitudeDeg(), pos.getLatitudeDeg(), 0);
- SGWayPoint view (vw->getLongitude_deg(), vw->getLatitude_deg(), 0);
- view.CourseAndDistance(current, &course, &distance);
- if (distance > visibility_meters) {
+
+ if (SGGeodesy::distanceM(vw->getPosition(), pos) > visibility_meters) {
return;
}
}
double alt;
- if (globals->get_scenery()->get_elevation_m(SGGeod::fromGeodM(pos, 20000), alt, 0))
+ if (getGroundElevationM(SGGeod::fromGeodM(pos, 20000), alt, 0))
tgt_altitude_ft = alt * SG_METER_TO_FEET;
}
}
bool FGAIAircraft::aiTrafficVisible() {
- double userLatitude = fgGetDouble("/position/latitude-deg");
- double userLongitude = fgGetDouble("/position/longitude-deg");
- double course, distance;
-
- SGWayPoint current(pos.getLongitudeDeg(), pos.getLatitudeDeg(), 0);
- SGWayPoint user (userLongitude, userLatitude, 0);
-
- user.CourseAndDistance(current, &course, &distance);
-
- return ((distance * SG_METER_TO_NM) <= TRAFFICTOAIDISTTODIE);
+ SGGeod userPos(SGGeod::fromDeg(fgGetDouble("/position/longitude-deg"),
+ fgGetDouble("/position/latitude-deg")));
+
+ return (SGGeodesy::distanceNm(userPos, pos) <= TRAFFICTOAIDISTTODIE);
}