From 4e4524914239982a3c30780fbff38cd12ce29530 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 15 Apr 2020 20:15:51 +0200 Subject: [PATCH] Use "fixed "gear down" if on ground. Reason: Some sims do send incorrect gear down. Follow up of T778 --- src/blackmisc/aviation/aircraftparts.cpp | 5 +++++ src/blackmisc/aviation/aircraftparts.h | 4 ++++ src/plugins/simulator/flightgear/fgswiftbustrafficproxy.h | 2 +- src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp | 2 +- src/plugins/simulator/xplane/xswiftbustrafficproxy.h | 2 +- 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/blackmisc/aviation/aircraftparts.cpp b/src/blackmisc/aviation/aircraftparts.cpp index 8094a94fb..282d94bfa 100644 --- a/src/blackmisc/aviation/aircraftparts.cpp +++ b/src/blackmisc/aviation/aircraftparts.cpp @@ -315,6 +315,11 @@ namespace BlackMisc m_lights.setAllOff(); } + bool CAircraftParts::isFixedGearDown() const + { + return this->isGearDown() || this->isOnGround(); + } + CAircraftEngine CAircraftParts::getEngine(int number) const { return m_engines.getEngine(number); diff --git a/src/blackmisc/aviation/aircraftparts.h b/src/blackmisc/aviation/aircraftparts.h index 6c25f2266..d5d3bc1a5 100644 --- a/src/blackmisc/aviation/aircraftparts.h +++ b/src/blackmisc/aviation/aircraftparts.h @@ -101,6 +101,10 @@ namespace BlackMisc //! Is gear down? bool isGearDown() const { return m_gearDown; } + //! Is fixed gear down? + //! \remark using also other attributes to decide if gear is down + bool isFixedGearDown() const; + //! Set gear down void setGearDown(bool down) { m_gearDown = down; } diff --git a/src/plugins/simulator/flightgear/fgswiftbustrafficproxy.h b/src/plugins/simulator/flightgear/fgswiftbustrafficproxy.h index 21eb4d630..663ed3492 100644 --- a/src/plugins/simulator/flightgear/fgswiftbustrafficproxy.h +++ b/src/plugins/simulator/flightgear/fgswiftbustrafficproxy.h @@ -90,7 +90,7 @@ namespace BlackSimPlugin void push_back(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) { this->callsigns.push_back(callsign.asString()); - this->gears.push_back(parts.isGearDown() ? 1 : 0); + this->gears.push_back(parts.isFixedGearDown() ? 1 : 0); this->flaps.push_back(parts.getFlapsPercent() / 100.0); this->spoilers.push_back(parts.isSpoilersOut() ? 1 : 0); this->speedBrakes.push_back(parts.isSpoilersOut() ? 1 : 0); diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp index 16ffb502b..a7abed9c3 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp @@ -356,7 +356,7 @@ namespace BlackSimPlugin void DataDefinitionRemoteAircraftPartsWithoutLights::initFromParts(const CAircraftParts &parts) { - gearHandlePosition = parts.isGearDown() ? 1.0 : 0.0; + gearHandlePosition = parts.isFixedGearDown() ? 1.0 : 0.0; const double trail = parts.getFlapsPercent() / 100.0; const double lead = trail; flapsTrailingEdgeLeftPercent = trail; diff --git a/src/plugins/simulator/xplane/xswiftbustrafficproxy.h b/src/plugins/simulator/xplane/xswiftbustrafficproxy.h index ffdc4ed5b..39d07a02d 100644 --- a/src/plugins/simulator/xplane/xswiftbustrafficproxy.h +++ b/src/plugins/simulator/xplane/xswiftbustrafficproxy.h @@ -93,7 +93,7 @@ namespace BlackSimPlugin void push_back(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftParts &parts) { this->callsigns.push_back(callsign.asString()); - this->gears.push_back(parts.isGearDown() ? 1 : 0); + this->gears.push_back(parts.isFixedGearDown() ? 1 : 0); this->flaps.push_back(parts.getFlapsPercent() / 100.0); this->spoilers.push_back(parts.isSpoilersOut() ? 1 : 0); this->speedBrakes.push_back(parts.isSpoilersOut() ? 1 : 0);