diff --git a/src/plugins/simulator/fsx/simconnect_datadefinition.h b/src/plugins/simulator/fsx/simconnect_datadefinition.h index 5e8e9a7ed..4ee5cbd81 100644 --- a/src/plugins/simulator/fsx/simconnect_datadefinition.h +++ b/src/plugins/simulator/fsx/simconnect_datadefinition.h @@ -62,7 +62,8 @@ namespace BlackSimPlugin //! \brief SimConnect request ID's enum Requests { - RequestOwnAircraft = 1000 + RequestOwnAircraft = 1000, + RequestRemoveAircraft = 2000 }; //! \brief Constructor diff --git a/src/plugins/simulator/fsx/simulator_fsx.cpp b/src/plugins/simulator/fsx/simulator_fsx.cpp index 46f5a038b..e3fbe7c4d 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.cpp +++ b/src/plugins/simulator/fsx/simulator_fsx.cpp @@ -162,9 +162,9 @@ namespace BlackSimPlugin m_simConnectObjects.insert(callsign, simObj); } - void CSimulatorFsx::removeRemoteAircraft(const CCallsign &/*callsign*/) + void CSimulatorFsx::removeRemoteAircraft(const CCallsign &callsign) { - // TODO + removeRemoteAircraft(m_simConnectObjects.value(callsign)); } CSimulatorInfo CSimulatorFsx::getSimulatorInfo() const @@ -356,7 +356,12 @@ namespace BlackSimPlugin } else emit statusChanged(ConnectionFailed); - + } + + void CSimulatorFsx::removeRemoteAircraft(const CSimConnectObject &simObject) + { + SimConnect_AIRemoveObject(m_hSimConnect, simObject.getObjectId(), simObject.getRequestId()); + m_simConnectObjects.remove(simObject.getCallsign()); } HRESULT CSimulatorFsx::initSystemEvents() diff --git a/src/plugins/simulator/fsx/simulator_fsx.h b/src/plugins/simulator/fsx/simulator_fsx.h index aa88e31f9..f13dd0d98 100644 --- a/src/plugins/simulator/fsx/simulator_fsx.h +++ b/src/plugins/simulator/fsx/simulator_fsx.h @@ -144,6 +144,7 @@ namespace BlackSimPlugin private: + void removeRemoteAircraft(const CSimConnectObject &simObject); /*! * \brief Initialize SimConnect system events