From 2dc72163f2f49376e254c3a76d2efd4f53d6cd18 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 16 Jul 2019 19:51:17 +0200 Subject: [PATCH] Ref T681, set CG from DB based on settings --- .../context/contextsimulatorimpl.cpp | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/blackcore/context/contextsimulatorimpl.cpp b/src/blackcore/context/contextsimulatorimpl.cpp index 6f15a1efa..47b2e7932 100644 --- a/src/blackcore/context/contextsimulatorimpl.cpp +++ b/src/blackcore/context/contextsimulatorimpl.cpp @@ -637,12 +637,31 @@ namespace BlackCore // in the first step we already tried to find accurate ICAO codes etc. // coming from CAirspaceMonitor::sendReadyForModelMatching MatchingLog whatToLog = m_logMatchingMessages; + const CSimulatorSettings simSettings = this->getSimulatorSettings(); CStatusMessageList matchingMessages; CStatusMessageList *pMatchingMessages = m_logMatchingMessages > 0 ? &matchingMessages : nullptr; CAircraftModel aircraftModel = m_aircraftMatcher.getClosestMatch(remoteAircraft, whatToLog, pMatchingMessages, true); Q_ASSERT_X(remoteAircraft.getCallsign() == aircraftModel.getCallsign(), Q_FUNC_INFO, "Mismatching callsigns"); - const CLength cg = m_simulatorPlugin.second->getSimulatorCGPerModelString(aircraftModel.getModelString()); - if (!cg.isNull()) { aircraftModel.setCG(cg); } + + // decide CG + CLength cgModel = aircraftModel.getCG(); + CLength cgSim = m_simulatorPlugin.second->getSimulatorCGPerModelString(aircraftModel.getModelString()); + switch (simSettings.getCGSource()) + { + case CSimulatorSettings::CGFromSimulatorOnly: + aircraftModel.setCG(cgSim); + break; + case CSimulatorSettings::CGFromSimulatorFirst: + if (!cgSim.isNull()) { aircraftModel.setCG(cgSim); } + break; + case CSimulatorSettings::CGFromDBFirst: + if (cgModel.isNull()) { aircraftModel.setCG(cgSim); } + break; + case CSimulatorSettings::CGFromDBOnly: + default: break; + } + + // model in provider this->updateAircraftModel(callsign, aircraftModel, this->identifier()); const CSimulatedAircraft aircraftAfterModelApplied = this->getAircraftInRangeForCallsign(remoteAircraft.getCallsign());