X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAIAircraft.cxx;h=5e803ef5e159b81e6c3934a73c060f13ab96a16a;hb=9d995907db00728da7eac9297ecbab93ed8a7400;hp=eac696d1030e4ccb98f15bf0110025058ff29816;hpb=f5b352429c7dc8f2d88a665fd575ef2d7a8a76b6;p=flightgear.git diff --git a/src/AIModel/AIAircraft.cxx b/src/AIModel/AIAircraft.cxx index eac696d10..5e803ef5e 100644 --- a/src/AIModel/AIAircraft.cxx +++ b/src/AIModel/AIAircraft.cxx @@ -33,16 +33,11 @@ #include #include -#include -#include - -#ifdef _MSC_VER -# include -# define finite _finite -#elif defined(__sun) || defined(sgi) -# include -#endif +#include +#include +// defined in AIShip.cxx +extern double fgIsFinite(double x); #include "AIAircraft.hxx" #include "performancedata.hxx" @@ -177,18 +172,12 @@ void FGAIAircraft::setPerformance(const std::string& acType, const std::string& // AI manager. In this particular case, the AIAircraft is used to shadow the user's aircraft's behavior in the AI world. // Since we perhaps don't want a radar entry of our own aircraft, the following conditional should probably be adequate // enough - if (manager) + if (manager){ UpdateRadar(manager); - checkVisibility(); + invisible = !manager->isVisible(pos); + } } -void FGAIAircraft::checkVisibility() -{ - double visibility_meters = fgGetDouble("/environment/visibility-m"); - invisible = (SGGeodesy::distanceM(globals->get_view_position(), pos) > visibility_meters); -} - - void FGAIAircraft::AccelTo(double speed) { tgt_speed = speed; @@ -238,7 +227,8 @@ double FGAIAircraft::sign(double x) { void FGAIAircraft::setFlightPlan(const std::string& flightplan, bool repeat) { if (flightplan.empty()) { - SG_LOG(SG_AI, SG_WARN, "setFlightPlan: empty flight plan"); + // this is the case for Nasal-scripted aircraft + return; } FGAIFlightPlan* fp = new FGAIFlightPlan(flightplan); @@ -252,7 +242,8 @@ void FGAIAircraft::setFlightPlan(const std::string& flightplan, bool repeat) } -void FGAIAircraft::SetFlightPlan(FGAIFlightPlan *f) { +void FGAIAircraft::SetFlightPlan(FGAIFlightPlan *f) +{ delete fp; fp = f; } @@ -943,7 +934,7 @@ void FGAIAircraft::controlHeading(FGAIWaypoint* curr) { SG_NORMALIZE_RANGE(calc_bearing, 0.0, 360.0); } - if (finite(calc_bearing)) { + if (fgIsFinite(calc_bearing)) { double hdg_error = calc_bearing - tgt_heading; if (fabs(hdg_error) > 0.01) { TurnTo( calc_bearing );