From 70f487cd012485ceb9ba11ed30cb64f04f10df37 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 11 Apr 2020 04:51:40 +0200 Subject: [PATCH] Ref T778, turn XCSL models offset NULL into 0 (zero) --- .../simulator/xplane/simulatorxplane.cpp | 20 +++++++++++++++---- .../simulator/xplane/simulatorxplane.h | 2 ++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index ced39959d..99996b14f 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -1151,12 +1151,12 @@ namespace BlackSimPlugin } const double cgValue = verticalOffsetsMeters[i]; // XP offset is swift CG - const CLength cg = std::isnan(cgValue) ? - CLength::null() : - CLength(cgValue, CLengthUnit::m(), CLengthUnit::ft()); + CLength cg = std::isnan(cgValue) ? + CLength::null() : + CLength(cgValue, CLengthUnit::m(), CLengthUnit::ft()); + cg = fixSimulatorCg(cg, xpAircraft.getAircraftModel()); // if we knew "on ground" here we could set it as parameter of rememberElevationAndSimulatorCG - // this->rememberElevationAndSimulatorCG(cs, xpAircraft.getAircraftModel(), false, elevation, cg); // with T778 we do NOT use this function for elevation here if "isSuspicious" const bool waterFlag = waterFlags[i]; const bool useElevation = this->handleProbeValue(elevation, cs, waterFlag, hint, true); @@ -1170,6 +1170,18 @@ namespace BlackSimPlugin } } + CLength CSimulatorXPlane::fixSimulatorCg(const CLength &cg, const CAircraftModel &model) + { + //! \todo KB 2020-04 hardcoded fix for XCSL + // For XCSL null means no offset => 0 + // so not to override it with some DB value in X mode, we set it to "0" + if (model.getDistributor().matchesKeyOrAlias(CDistributor::xplaneXcsl()) && cg.isNull()) + { + return CLength(0.0, CLengthUnit::ft()); + } + return cg; + } + void CSimulatorXPlane::disconnectFromDBus() { if (m_dBusConnection.isConnected()) diff --git a/src/plugins/simulator/xplane/simulatorxplane.h b/src/plugins/simulator/xplane/simulatorxplane.h index 4592389af..e9507013c 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.h +++ b/src/plugins/simulator/xplane/simulatorxplane.h @@ -247,6 +247,8 @@ namespace BlackSimPlugin static bool isSuspiciousTerrainValue(const BlackMisc::Geo::CElevationPlane &elevation); static const BlackMisc::PhysicalQuantities::CLength &maxTerrainRequestDistance(); + static BlackMisc::PhysicalQuantities::CLength fixSimulatorCg(const BlackMisc::PhysicalQuantities::CLength &cg, const BlackMisc::Simulation::CAircraftModel &model); + DBusMode m_dbusMode; BlackMisc::CSetting m_xSwiftBusServerSettings { this, &CSimulatorXPlane::onXSwiftBusSettingsChanged }; static constexpr qint64 TimeoutAdding = 10000;