From 651ead5b5189df2b181df443085b603bc83e1d8e Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 6 Sep 2018 08:49:40 +0200 Subject: [PATCH] Ref T335, misc improvements in value objects * allow to reset PBH for terrain probe * check for null altitude before converting * function isTerrainProbe for model/aircraft --- src/blackmisc/aviation/aircraftsituation.cpp | 9 +++++++++ src/blackmisc/aviation/aircraftsituation.h | 3 +++ src/blackmisc/aviation/altitude.cpp | 3 +++ src/blackmisc/simulation/aircraftmodel.h | 3 +++ src/blackmisc/simulation/simulatedaircraft.cpp | 6 +++--- src/blackmisc/simulation/simulatedaircraft.h | 3 +++ 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/blackmisc/aviation/aircraftsituation.cpp b/src/blackmisc/aviation/aircraftsituation.cpp index f60231a4d..48f80d5b2 100644 --- a/src/blackmisc/aviation/aircraftsituation.cpp +++ b/src/blackmisc/aviation/aircraftsituation.cpp @@ -979,6 +979,15 @@ namespace BlackMisc m_pressureAltitude = altitude; } + void CAircraftSituation::setZeroPBH() + { + static const CAngle za(0, CAngleUnit::deg()); + static const CHeading zh(za, CHeading::True); + this->setPitch(za); + this->setBank(za); + this->setHeading(zh); + } + QString CAircraftSituation::getPBHInfo() const { static const QString pbh("P: %1 %2 B: %3 %4 H: %5 %6"); diff --git a/src/blackmisc/aviation/aircraftsituation.h b/src/blackmisc/aviation/aircraftsituation.h index 5dca456bb..3f6c0e258 100644 --- a/src/blackmisc/aviation/aircraftsituation.h +++ b/src/blackmisc/aviation/aircraftsituation.h @@ -413,6 +413,9 @@ namespace BlackMisc //! Set bank (angle) void setBank(const PhysicalQuantities::CAngle &bank) { m_bank = bank; } + //! Set PBH values to 0 (zero) + void setZeroPBH(); + //! Get PBH info (all together) QString getPBHInfo() const; diff --git a/src/blackmisc/aviation/altitude.cpp b/src/blackmisc/aviation/altitude.cpp index 7797349e8..81363c88c 100644 --- a/src/blackmisc/aviation/altitude.cpp +++ b/src/blackmisc/aviation/altitude.cpp @@ -101,6 +101,7 @@ namespace BlackMisc void CAltitude::convertToPressureAltitude(const CPressure &seaLevelPressure) { if (m_altitudeType == PressureAltitude) { return; } + if (this->isNull()) { return; } const CPressure deltaPressure = standardISASeaLevelPressure() - seaLevelPressure; const double deltaPressureV = deltaPressure.value(CPressureUnit::mbar()); const double deltaAltitudeV = deltaPressureV * 30.0; // 30.0 ft per mbar @@ -111,6 +112,8 @@ namespace BlackMisc CAltitude CAltitude::toPressureAltitude(const CPressure &seaLevelPressure) const { + if (seaLevelPressure.isNull()) { return CAltitude::null(); } + if (this->isNull()) { return CAltitude::null(); } CAltitude other(*this); other.convertToPressureAltitude(seaLevelPressure); return other; diff --git a/src/blackmisc/simulation/aircraftmodel.h b/src/blackmisc/simulation/aircraftmodel.h index 3a6ffed2d..55f78d3ea 100644 --- a/src/blackmisc/simulation/aircraftmodel.h +++ b/src/blackmisc/simulation/aircraftmodel.h @@ -277,6 +277,9 @@ namespace BlackMisc //! Model type ModelType getModelType() const { return m_modelType; } + //! Terrain probe? + bool isTerrainProbe() const { return m_modelType == TypeTerrainProbe; } + //! Model type const QString &getModelTypeAsString() const { return modelTypeToString(getModelType()); } diff --git a/src/blackmisc/simulation/simulatedaircraft.cpp b/src/blackmisc/simulation/simulatedaircraft.cpp index a37edca6b..9da9c4892 100644 --- a/src/blackmisc/simulation/simulatedaircraft.cpp +++ b/src/blackmisc/simulation/simulatedaircraft.cpp @@ -40,7 +40,7 @@ namespace BlackMisc CSimulatedAircraft::CSimulatedAircraft(const CCallsign &callsign, const CUser &user, const CAircraftSituation &situation) : m_callsign(callsign), m_pilot(user), m_situation(situation) { - init(); + this->init(); } CSimulatedAircraft::CSimulatedAircraft(const CCallsign &callsign, const CAircraftModel &model, const CUser &user, const CAircraftSituation &situation) : @@ -158,7 +158,7 @@ namespace BlackMisc if (this->getLivery().getAirlineIcaoCode() != airlineIcaoCode) { // create a dummy livery for given ICAO code - CLivery newLivery(CLivery::getStandardCode(airlineIcaoCode), airlineIcaoCode, "Standard auto generated"); + const CLivery newLivery(CLivery::getStandardCode(airlineIcaoCode), airlineIcaoCode, "Standard auto generated"); m_models[CurrentModel].setLivery(newLivery); } return m_models[CurrentModel].setAircraftIcaoCode(aircraftIcaoCode); @@ -171,7 +171,7 @@ namespace BlackMisc const QString &CSimulatedAircraft::getAirlineIcaoCodeDesignator() const { - return getAirlineIcaoCode().getDesignator(); + return this->getAirlineIcaoCode().getDesignator(); } void CSimulatedAircraft::setAircraftIcaoDesignator(const QString &designator) diff --git a/src/blackmisc/simulation/simulatedaircraft.h b/src/blackmisc/simulation/simulatedaircraft.h index 54e22f1f3..4e6781e06 100644 --- a/src/blackmisc/simulation/simulatedaircraft.h +++ b/src/blackmisc/simulation/simulatedaircraft.h @@ -357,6 +357,9 @@ namespace BlackMisc //! Get model (model used for mapping) const Simulation::CAircraftModel &getModel() const { return m_models[CurrentModel]; } + //! Terrain probe? + bool isTerrainProbe() const { return this->getModel().isTerrainProbe(); } + //! Get network model const Simulation::CAircraftModel &getNetworkModel() const { return m_models[NetworkModel]; }