mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 20:15:35 +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
|
||||
{
|
||||
CAircraftSituationList situations = this->remoteAircraftSituations(callsign);
|
||||
const CAircraftSituationList situations = this->remoteAircraftSituations(callsign);
|
||||
if (index < 0 || index >= situations.size()) { return CAircraftSituation::null(); }
|
||||
return situations[index];
|
||||
}
|
||||
@@ -237,6 +237,20 @@ namespace BlackMisc
|
||||
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)
|
||||
{
|
||||
const CCallsign cs = situation.getCallsign();
|
||||
|
||||
@@ -414,6 +414,11 @@ namespace BlackMisc
|
||||
//! \threadsafe
|
||||
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
|
||||
//! \remark latest situations are kept first
|
||||
//! \threadsafe
|
||||
|
||||
Reference in New Issue
Block a user