mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-21 12:55:31 +08:00
Ref T275, Ref T280, parts guessing and interpolating can have different ratios
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user