FGAIAircraft::FGAIAircraft(FGAISchedule *ref) : FGAIBase(otAircraft) {
trafficRef = ref;
- if (trafficRef)
+ if (trafficRef) {
groundOffset = trafficRef->getGroundOffset();
+ setCallSign(trafficRef->getCallSign());
+ }
else
groundOffset = 0;
holdPos = false;
_performance = 0; //TODO initialize to JET_TRANSPORT from PerformanceDB
+
}
props->tie("controls/gear/gear-down",
SGRawValueMethods<FGAIAircraft,bool>(*this,
&FGAIAircraft::_getGearDown));
- props->setStringValue("callsign", callsign.c_str());
}
int leg;
if ((leg = fp->getLeg()) == 10) {
trafficRef->next();
+ setCallSign(trafficRef->getCallSign());
+ //props->setStringValue("callsign", callsign.c_str());
leg = 1;
fp->setLeg(leg);
}
}
-void FGAIAircraft::setCallSign(const string& s) {
- callsign = s;
-}
-
-
void FGAIAircraft::doGroundAltitude() {
if (fabs(altitude_ft - (tgt_altitude_ft+groundOffset)) > 1000.0)
altitude_ft = (tgt_altitude_ft + groundOffset);
if (finite(calc_bearing)) {
double hdg_error = calc_bearing - tgt_heading;
- if (fabs(hdg_error) > 1.0) {
+ if (fabs(hdg_error) > 0.01) {
TurnTo( calc_bearing );
}
if (fabs(speed_diff) > 10) {
prevSpeed = speed;
- fp->setLeadDistance(speed, tgt_heading, curr, next);
+ if (next) {
+ fp->setLeadDistance(speed, tgt_heading, curr, next);
+ }
}
}