diff --git a/src/AIModel/AIAircraft.cxx b/src/AIModel/AIAircraft.cxx index d0e319705..1c904b79b 100644 --- a/src/AIModel/AIAircraft.cxx +++ b/src/AIModel/AIAircraft.cxx @@ -52,11 +52,15 @@ using std::string; static string tempReg; -FGAIAircraft::FGAIAircraft(FGAISchedule *ref) : FGAIBase(otAircraft) { +FGAIAircraft::FGAIAircraft(FGAISchedule *ref) : + /* HOT must be disabled for AI Aircraft, + * otherwise traffic detection isn't working as expected.*/ + FGAIBase(otAircraft, false) +{ trafficRef = ref; if (trafficRef) { groundOffset = trafficRef->getGroundOffset(); - setCallSign(trafficRef->getCallSign()); + setCallSign(trafficRef->getCallSign()); } else groundOffset = 0; diff --git a/src/AIModel/AIBallistic.cxx b/src/AIModel/AIBallistic.cxx index 69e090e3d..74b882821 100644 --- a/src/AIModel/AIBallistic.cxx +++ b/src/AIModel/AIBallistic.cxx @@ -40,7 +40,7 @@ const double FGAIBallistic::slugs_to_kgs = 14.5939029372; const double FGAIBallistic::slugs_to_lbs = 32.1740485564; FGAIBallistic::FGAIBallistic(object_type ot) : -FGAIBase(ot), +FGAIBase(ot, false), _height(0.0), _speed(0), _ht_agl_ft(0.0), diff --git a/src/AIModel/AIBase.cxx b/src/AIModel/AIBase.cxx index 33cb073cb..ac907c2e3 100644 --- a/src/AIModel/AIBase.cxx +++ b/src/AIModel/AIBase.cxx @@ -52,7 +52,7 @@ const double FGAIBase::lbs_to_slugs = 0.031080950172; //conversion factor using namespace simgear; -FGAIBase::FGAIBase(object_type ot) : +FGAIBase::FGAIBase(object_type ot, bool enableHot) : _max_speed(300), _name(""), _parent(""), @@ -121,6 +121,10 @@ FGAIBase::FGAIBase(object_type ot) : p = 1e5; a = 340; Mach = 0; + + // explicitly disable HOT for (most) AI models + if (!enableHot) + aip.getSceneGraph()->setNodeMask(~SG_NODEMASK_TERRAIN_BIT); } FGAIBase::~FGAIBase() { diff --git a/src/AIModel/AIBase.hxx b/src/AIModel/AIBase.hxx index 2f8362331..61351adbb 100644 --- a/src/AIModel/AIBase.hxx +++ b/src/AIModel/AIBase.hxx @@ -52,7 +52,7 @@ public: otEscort, otMultiplayer, MAX_OBJECTS }; // Needs to be last!!! - FGAIBase(object_type ot); + FGAIBase(object_type ot, bool enableHot); virtual ~FGAIBase(); virtual void readFromScenario(SGPropertyNode* scFileNode); diff --git a/src/AIModel/AIMultiplayer.cxx b/src/AIModel/AIMultiplayer.cxx index a9635c5f7..08f5afb40 100644 --- a/src/AIModel/AIMultiplayer.cxx +++ b/src/AIModel/AIMultiplayer.cxx @@ -29,18 +29,18 @@ #include "AIMultiplayer.hxx" -#include // #define SG_DEBUG SG_ALERT -FGAIMultiplayer::FGAIMultiplayer() : FGAIBase(otMultiplayer) { +FGAIMultiplayer::FGAIMultiplayer() : + FGAIBase(otMultiplayer, false) +{ no_roll = false; mTimeOffsetSet = false; mAllowExtrapolation = true; mLagAdjustSystemSpeed = 10; mLastTimestamp = 0; - aip.getSceneGraph()->setNodeMask(~SG_NODEMASK_TERRAIN_BIT); lastUpdateTime = 0; } diff --git a/src/AIModel/AIShip.cxx b/src/AIModel/AIShip.cxx index 9b6a04705..b5df3d145 100644 --- a/src/AIModel/AIShip.cxx +++ b/src/AIModel/AIShip.cxx @@ -42,7 +42,8 @@ FGAIShip::FGAIShip(object_type ot) : -FGAIBase(ot), +// allow HOT to be enabled +FGAIBase(ot, true), _waiting(false), diff --git a/src/AIModel/AIStatic.cxx b/src/AIModel/AIStatic.cxx index 83be7c8d6..5ac1f4ce3 100644 --- a/src/AIModel/AIStatic.cxx +++ b/src/AIModel/AIStatic.cxx @@ -33,7 +33,7 @@ using std::string; #include "AIStatic.hxx" -FGAIStatic::FGAIStatic() : FGAIBase(otStatic) { +FGAIStatic::FGAIStatic() : FGAIBase(otStatic, false) { } diff --git a/src/AIModel/AIStorm.cxx b/src/AIModel/AIStorm.cxx index fded8012d..a4241df46 100644 --- a/src/AIModel/AIStorm.cxx +++ b/src/AIModel/AIStorm.cxx @@ -35,7 +35,9 @@ using std::string; #include "AIStorm.hxx" -FGAIStorm::FGAIStorm() : FGAIBase(otStorm) { +FGAIStorm::FGAIStorm() : + FGAIBase(otStorm, false) +{ delay = 3.6; subflashes = 1; timer = 0.0; diff --git a/src/AIModel/AIThermal.cxx b/src/AIModel/AIThermal.cxx index 172d1e68a..f47ba2356 100644 --- a/src/AIModel/AIThermal.cxx +++ b/src/AIModel/AIThermal.cxx @@ -35,7 +35,9 @@ using std::string; #include "AIThermal.hxx" -FGAIThermal::FGAIThermal() : FGAIBase(otThermal) { +FGAIThermal::FGAIThermal() : + FGAIBase(otThermal, false) +{ max_strength = 6.0; diameter = 0.5; strength = factor = 0.0; diff --git a/src/Airports/simple.cxx b/src/Airports/simple.cxx index 9df1cb254..7354db28b 100644 --- a/src/Airports/simple.cxx +++ b/src/Airports/simple.cxx @@ -442,7 +442,7 @@ void FGAirport::processThreshold(SGPropertyNode* aThreshold) // first, let's identify the current runway string id(aThreshold->getStringValue("rwy")); if (!hasRunwayWithIdent(id)) { - SG_LOG(SG_GENERAL, SG_WARN, "FGAirport::processThreshold: " + SG_LOG(SG_GENERAL, SG_DEBUG, "FGAirport::processThreshold: " "found runway not defined in the global data:" << ident() << "/" << id); return; } diff --git a/src/MultiPlayer/multiplaymgr.cxx b/src/MultiPlayer/multiplaymgr.cxx index a8f862388..40a9c438a 100644 --- a/src/MultiPlayer/multiplaymgr.cxx +++ b/src/MultiPlayer/multiplaymgr.cxx @@ -1205,7 +1205,7 @@ FGMultiplayMgr::ProcessPosMsg(const FGMultiplayMgr::MsgBuf& Msg, else { // We failed to find the property. We'll try the next packet immediately. - SG_LOG(SG_NETWORK, SG_INFO, "FGMultiplayMgr::ProcessPosMsg - " + SG_LOG(SG_NETWORK, SG_DEBUG, "FGMultiplayMgr::ProcessPosMsg - " "message from " << MsgHdr->Callsign << " has unknown property id " << id); } diff --git a/src/Navaids/airways.cxx b/src/Navaids/airways.cxx index 5bdbb2bee..8313f75b4 100644 --- a/src/Navaids/airways.cxx +++ b/src/Navaids/airways.cxx @@ -197,13 +197,13 @@ void Airway::Network::addEdge(Airway* aWay, const SGGeod& aStartPos, FGPositionedRef end = FGPositioned::findClosestWithIdent(aEndIdent, aEndPos); if (!start) { - SG_LOG(SG_GENERAL, SG_INFO, "unknown airways start pt: '" << aStartIdent << "'"); + SG_LOG(SG_GENERAL, SG_DEBUG, "unknown airways start pt: '" << aStartIdent << "'"); start = FGPositioned::createUserWaypoint(aStartIdent, aStartPos); return; } if (!end) { - SG_LOG(SG_GENERAL, SG_INFO, "unknown airways end pt: '" << aEndIdent << "'"); + SG_LOG(SG_GENERAL, SG_DEBUG, "unknown airways end pt: '" << aEndIdent << "'"); end = FGPositioned::createUserWaypoint(aEndIdent, aEndPos); return; } diff --git a/src/Navaids/navdb.cxx b/src/Navaids/navdb.cxx index 96d38c153..b1a813d61 100644 --- a/src/Navaids/navdb.cxx +++ b/src/Navaids/navdb.cxx @@ -297,12 +297,12 @@ FGRunway* getRunwayFromName(const std::string& aName) const FGAirport* apt = fgFindAirportID(parts[0]); if (!apt) { - SG_LOG(SG_GENERAL, SG_WARN, "navaid " << aName << " associated with bogus airport ID:" << parts[0]); + SG_LOG(SG_GENERAL, SG_DEBUG, "navaid " << aName << " associated with bogus airport ID:" << parts[0]); return NULL; } if (!apt->hasRunwayWithIdent(parts[1])) { - SG_LOG(SG_GENERAL, SG_WARN, "navaid " << aName << " associated with bogus runway ID:" << parts[1]); + SG_LOG(SG_GENERAL, SG_DEBUG, "navaid " << aName << " associated with bogus runway ID:" << parts[1]); return NULL; } diff --git a/src/Navaids/navrecord.cxx b/src/Navaids/navrecord.cxx index 5edc64ef1..8c01c6a10 100644 --- a/src/Navaids/navrecord.cxx +++ b/src/Navaids/navrecord.cxx @@ -61,7 +61,7 @@ FGNavRecord::FGNavRecord(Type aTy, const std::string& aIdent, // assign our own defaults, unless the range is not set for some // reason. if (range < 0.1) { - SG_LOG(SG_GENERAL, SG_WARN, "navaid " << ident() << " has no range set, using defaults"); + SG_LOG(SG_GENERAL, SG_DEBUG, "navaid " << ident() << " has no range set, using defaults"); switch (type()) { case NDB: case VOR: diff --git a/src/Traffic/SchedFlight.cxx b/src/Traffic/SchedFlight.cxx index 5575f6ee0..8b5b6ee68 100644 --- a/src/Traffic/SchedFlight.cxx +++ b/src/Traffic/SchedFlight.cxx @@ -269,13 +269,13 @@ bool FGScheduledFlight::initializeAirports() departurePort = FGAirport::findByIdent(depId); if(departurePort == NULL) { - SG_LOG( SG_GENERAL, SG_WARN, "Traffic manager could not find departure airport : " << depId); + SG_LOG( SG_GENERAL, SG_DEBUG, "Traffic manager could not find departure airport : " << depId); return false; } arrivalPort = FGAirport::findByIdent(arrId); if(arrivalPort == NULL) { - SG_LOG( SG_GENERAL, SG_WARN, "Traffic manager could not find arrival airport : " << arrId); + SG_LOG( SG_GENERAL, SG_DEBUG, "Traffic manager could not find arrival airport : " << arrId); return false; }