From a86e98ca3ac008d3d3b0244156e9bb2d4fd8519f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 23 May 2019 02:20:02 +0200 Subject: [PATCH] Ref T669, also interpolation Ref T668, remove last sent values if aircraft is removed --- src/blackcore/simulator.cpp | 9 +++++++-- src/plugins/simulator/emulated/simulatoremulated.cpp | 1 + src/plugins/simulator/flightgear/simulatorflightgear.cpp | 2 +- src/plugins/simulator/fs9/simulatorfs9.cpp | 2 +- src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp | 8 ++++---- src/plugins/simulator/xplane/simulatorxplane.cpp | 4 ++-- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/blackcore/simulator.cpp b/src/blackcore/simulator.cpp index 723d986c9..d8defd253 100644 --- a/src/blackcore/simulator.cpp +++ b/src/blackcore/simulator.cpp @@ -172,8 +172,7 @@ namespace BlackCore // rendering related stuff m_addAgainAircraftWhenRemoved.clear(); m_callsignsToBeRendered.clear(); - m_lastSentParts.clear(); - m_lastSentSituations.clear(); + this->resetLastSentValues(); // clear all last sent values m_updateRemoteAircraftInProgress = false; this->clearInterpolationSetupsPerCallsign(); @@ -759,6 +758,12 @@ namespace BlackCore } } + bool ISimulator::physicallyRemoveRemoteAircraft(const CCallsign &callsign) + { + this->resetLastSentValues(callsign); + return true; + } + int ISimulator::physicallyRemoveMultipleRemoteAircraft(const CCallsignSet &callsigns) { if (callsigns.isEmpty()) { return 0; } diff --git a/src/plugins/simulator/emulated/simulatoremulated.cpp b/src/plugins/simulator/emulated/simulatoremulated.cpp index de3dd3a5a..7b98cab38 100644 --- a/src/plugins/simulator/emulated/simulatoremulated.cpp +++ b/src/plugins/simulator/emulated/simulatoremulated.cpp @@ -316,6 +316,7 @@ namespace BlackSimPlugin m_interpolators.remove(callsign); const int c = m_renderedAircraft.removeByCallsign(callsign); this->updateAircraftRendered(callsign, false); // in provider + CSimulatorPluginCommon::physicallyRemoveRemoteAircraft(callsign); return c > 0; } diff --git a/src/plugins/simulator/flightgear/simulatorflightgear.cpp b/src/plugins/simulator/flightgear/simulatorflightgear.cpp index c8371c8f4..307f2033d 100644 --- a/src/plugins/simulator/flightgear/simulatorflightgear.cpp +++ b/src/plugins/simulator/flightgear/simulatorflightgear.cpp @@ -566,7 +566,7 @@ namespace BlackSimPlugin m_pendingToBeAddedAircraft.removeByCallsign(callsign); // bye - return true; + return CSimulatorPluginCommon::physicallyRemoveRemoteAircraft(callsign); } int CSimulatorFlightgear::physicallyRemoveAllRemoteAircraft() diff --git a/src/plugins/simulator/fs9/simulatorfs9.cpp b/src/plugins/simulator/fs9/simulatorfs9.cpp index 8578864e3..700f5114f 100644 --- a/src/plugins/simulator/fs9/simulatorfs9.cpp +++ b/src/plugins/simulator/fs9/simulatorfs9.cpp @@ -199,7 +199,7 @@ namespace BlackSimPlugin m_hashFs9Clients.remove(callsign); updateAircraftRendered(callsign, false); CLogMessage(this).info(u"FS9: Removed aircraft %1") << callsign.toQString(); - return true; + return CSimulatorFsCommon::physicallyRemoveRemoteAircraft(callsign); } int CSimulatorFs9::physicallyRemoveAllRemoteAircraft() diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp index 190ceb872..8c30abbd4 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp @@ -1745,7 +1745,7 @@ namespace BlackSimPlugin QTimer::singleShot(2000, this, [ = ] { if (!myself) { return; } - CLogMessage(this).info(u"Next trail to remove '%1'") << callsign.asString(); + CLogMessage(this).info(u"Next trial to remove '%1'") << callsign.asString(); myself->physicallyRemoveRemoteAircraft(callsign); }); return false; // not yet deleted @@ -1785,7 +1785,7 @@ namespace BlackSimPlugin this->physicallyRemoveAircraftNotInProviderAsync(); // bye - return true; + return CSimulatorPluginCommon::physicallyRemoveRemoteAircraft(callsign); } int CSimulatorFsxCommon::physicallyRemoveAllRemoteAircraft() @@ -1992,7 +1992,7 @@ namespace BlackSimPlugin const CCallsign cs = simObject.getCallsign(); if (result.getPartsStatus().isReusedParts() || this->isEqualLastSent(parts, cs)) { return true; } - DataDefinitionRemoteAircraftPartsWithoutLights ddRemoteAircraftPartsWithoutLights(parts); // no init, all values will be set + DataDefinitionRemoteAircraftPartsWithoutLights ddRemoteAircraftPartsWithoutLights(parts); // all values will be set const bool ok = this->sendRemoteAircraftPartsToSimulator(simObject, ddRemoteAircraftPartsWithoutLights, parts.getAdjustedLights()); if (ok) { this->rememberLastSent(parts, cs); } return ok; @@ -2039,7 +2039,7 @@ namespace BlackSimPlugin const DWORD objectId = simObject.getObjectId(); const bool traceId = this->isTracingSendId(); - const bool simObjectAircraftType = simObject.isAircraftSimulatedObject(); + const bool simObjectAircraftType = simObject.isAircraftSimulatedObject(); // no real aircraft type // in case we sent, we sent everything const HRESULT hr1 = simObjectAircraftType ? diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index e2c5729b4..b9f53a20b 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -641,7 +641,7 @@ namespace BlackSimPlugin bool CSimulatorXPlane::physicallyRemoveRemoteAircraft(const CCallsign &callsign) { - Q_ASSERT(isConnected()); + Q_ASSERT(this->isConnected()); // only remove from sim Q_ASSERT_X(CThreadUtils::isCurrentThreadObjectThread(this), Q_FUNC_INFO, "wrong thread"); @@ -692,7 +692,7 @@ namespace BlackSimPlugin m_pendingToBeAddedAircraft.removeByCallsign(callsign); // bye - return true; + return CSimulatorPluginCommon::physicallyRemoveRemoteAircraft(callsign); } int CSimulatorXPlane::physicallyRemoveAllRemoteAircraft()