mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-02 23:35:40 +08:00
Ref T372, updateAircraftInRangeDistanceBearing with null check
This commit is contained in:
@@ -80,7 +80,7 @@ namespace BlackMisc
|
|||||||
|
|
||||||
CAircraftSituation CRemoteAircraftProvider::remoteAircraftSituation(const CCallsign &callsign, int index) const
|
CAircraftSituation CRemoteAircraftProvider::remoteAircraftSituation(const CCallsign &callsign, int index) const
|
||||||
{
|
{
|
||||||
CAircraftSituationList situations = this->remoteAircraftSituations(callsign);
|
const CAircraftSituationList situations = this->remoteAircraftSituations(callsign);
|
||||||
if (index < 0 || index >= situations.size()) { return CAircraftSituation::null(); }
|
if (index < 0 || index >= situations.size()) { return CAircraftSituation::null(); }
|
||||||
return situations[index];
|
return situations[index];
|
||||||
}
|
}
|
||||||
@@ -237,6 +237,20 @@ namespace BlackMisc
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CRemoteAircraftProvider::updateAircraftInRangeDistanceBearing(const CCallsign &callsign, const CAircraftSituation &situation, const CLength &distance, const CAngle &bearing)
|
||||||
|
{
|
||||||
|
Q_ASSERT_X(!callsign.isEmpty(), Q_FUNC_INFO, "Missing callsign");
|
||||||
|
{
|
||||||
|
QWriteLocker l(&m_lockAircraft);
|
||||||
|
if (!m_aircraftInRange.contains(callsign)) { return false; }
|
||||||
|
CSimulatedAircraft &aircraft = m_aircraftInRange[callsign];
|
||||||
|
aircraft.setSituation(situation);
|
||||||
|
if (!bearing.isNull()) { aircraft.setRelativeBearing(bearing); }
|
||||||
|
if (!distance.isNull()) { aircraft.setRelativeDistance(distance); }
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
CAircraftSituation CRemoteAircraftProvider::storeAircraftSituation(const CAircraftSituation &situation, bool allowTestOffset)
|
CAircraftSituation CRemoteAircraftProvider::storeAircraftSituation(const CAircraftSituation &situation, bool allowTestOffset)
|
||||||
{
|
{
|
||||||
const CCallsign cs = situation.getCallsign();
|
const CCallsign cs = situation.getCallsign();
|
||||||
|
|||||||
@@ -414,6 +414,11 @@ namespace BlackMisc
|
|||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
int updateAircraftInRange(const Aviation::CCallsign &callsign, const CPropertyIndexVariantMap &vm, bool skipEqualValues = true);
|
int updateAircraftInRange(const Aviation::CCallsign &callsign, const CPropertyIndexVariantMap &vm, bool skipEqualValues = true);
|
||||||
|
|
||||||
|
//! Update aircraft bearing, distance and situation
|
||||||
|
//! \threadsafe
|
||||||
|
//! \remark does NOT emit signals
|
||||||
|
bool updateAircraftInRangeDistanceBearing(const Aviation::CCallsign &callsign, const Aviation::CAircraftSituation &situation, const PhysicalQuantities::CLength &distance, const PhysicalQuantities::CAngle &bearing);
|
||||||
|
|
||||||
//! Store an aircraft situation
|
//! Store an aircraft situation
|
||||||
//! \remark latest situations are kept first
|
//! \remark latest situations are kept first
|
||||||
//! \threadsafe
|
//! \threadsafe
|
||||||
|
|||||||
Reference in New Issue
Block a user