Ref T275, Ref T280, parts guessing and interpolating can have different ratios

This commit is contained in:
Klaus Basan
2018-06-18 20:49:12 +02:00
parent 65c94cf2c3
commit 3f14be6517
2 changed files with 21 additions and 9 deletions

View File

@@ -283,7 +283,11 @@ namespace BlackMisc
CAircraftParts CInterpolator<Derived>::getInterpolatedOrGuessedParts(int aircraftNumber) CAircraftParts CInterpolator<Derived>::getInterpolatedOrGuessedParts(int aircraftNumber)
{ {
Q_ASSERT_X(m_partsToSituationInterpolationRatio >= 1 && m_partsToSituationInterpolationRatio < 11, Q_FUNC_INFO, "Wrong ratio"); Q_ASSERT_X(m_partsToSituationInterpolationRatio >= 1 && m_partsToSituationInterpolationRatio < 11, Q_FUNC_INFO, "Wrong ratio");
if (!m_unitTest && !m_lastParts.isNull() && ((m_interpolatedSituationsCounter + aircraftNumber) % m_partsToSituationInterpolationRatio) == 0) const bool needParts = m_unitTest || m_lastParts.isNull();
const bool doInterpolation = needParts || ((m_interpolatedSituationsCounter + aircraftNumber) % m_partsToSituationInterpolationRatio == 0);
const bool doGuess = needParts || ((m_interpolatedSituationsCounter + aircraftNumber) % m_partsToSituationGuessingRatio == 0);
if (!doGuess && !doInterpolation)
{ {
m_currentPartsStatus = m_lastPartsStatus; m_currentPartsStatus = m_lastPartsStatus;
m_currentPartsStatus.setReusedParts(true); m_currentPartsStatus.setReusedParts(true);
@@ -301,6 +305,13 @@ namespace BlackMisc
// the parts are still empty // the parts are still empty
if (!m_currentPartsStatus.isSupportingParts()) if (!m_currentPartsStatus.isSupportingParts())
{ {
if (!doGuess)
{
m_currentPartsStatus = m_lastPartsStatus;
m_currentPartsStatus.setReusedParts(true);
return m_lastParts;
}
// check if model has been thru model matching // check if model has been thru model matching
parts.guessParts(m_lastSituation, m_pastSituationsChange, m_model); parts.guessParts(m_lastSituation, m_pastSituationsChange, m_model);
this->logParts(parts, 0, false); this->logParts(parts, 0, false);

View File

@@ -275,6 +275,7 @@ namespace BlackMisc
CPartsStatus m_currentPartsStatus; //!< this step's parts status CPartsStatus m_currentPartsStatus; //!< this step's parts status
CPartsStatus m_lastPartsStatus; //!< status for last parts, used when last parts are re-used because of m_partsToSituationInterpolationRatio CPartsStatus m_lastPartsStatus; //!< status for last parts, used when last parts are re-used because of m_partsToSituationInterpolationRatio
int m_partsToSituationInterpolationRatio = 2; //!< ratio between parts and situation interpolation, 1..always, 2..every 2nd situation int m_partsToSituationInterpolationRatio = 2; //!< ratio between parts and situation interpolation, 1..always, 2..every 2nd situation
int m_partsToSituationGuessingRatio = 5; //!< ratio between parts guessing and situation interpolation
Aviation::CAircraftSituation m_lastSituation { Aviation::CAircraftSituation::null() }; //!< latest interpolation Aviation::CAircraftSituation m_lastSituation { Aviation::CAircraftSituation::null() }; //!< latest interpolation
Aviation::CAircraftParts m_lastParts { Aviation::CAircraftParts::null() }; //!< latest parts Aviation::CAircraftParts m_lastParts { Aviation::CAircraftParts::null() }; //!< latest parts
PhysicalQuantities::CLength m_currentSceneryOffset { PhysicalQuantities::CLength::null() }; //!< calculated scenery offset if any PhysicalQuantities::CLength m_currentSceneryOffset { PhysicalQuantities::CLength::null() }; //!< calculated scenery offset if any