Ref T261, CAircraftSituationChange improvements

* min/max ground distance, also added in situation list
* use model's vtol/CG info
* improved scenery deviation guessing
* adjusted interpolator scenery deviation handling
This commit is contained in:
Klaus Basan
2018-05-08 04:24:14 +02:00
committed by Roland Winklmeier
parent ed78eb5f0b
commit ea585ae166
8 changed files with 137 additions and 80 deletions

View File

@@ -75,13 +75,22 @@ namespace BlackMisc
CAircraftSituationList CInterpolator<Derived>::remoteAircraftSituationsAndChange(bool useSceneryOffset)
{
CAircraftSituationList validSituations = this->remoteAircraftSituations(m_callsign);
m_currentSituationChange = CAircraftSituationChange(validSituations, true, true);
m_currentSituationChange = CAircraftSituationChange(validSituations, m_model.getCG(), m_model.isVtol(), true, true);
if (useSceneryOffset && m_currentSituationChange.hasSceneryDeviation() && m_model.hasCG())
{
const CLength os = m_currentSituationChange.getGuessedSceneryDeviation(m_model.getCG());
validSituations.addAltitudeOffset(os);
m_currentSituationChange = CAircraftSituationChange(validSituations, true, true); // recalculate
const CLength os = m_currentSituationChange.getGuessedSceneryDeviationCG();
m_currentSceneryOffset = os;
if (!os.isNull())
{
const CLength addValue = os * -1.0; // positive values means too high, negative values too low
int changed = validSituations.addAltitudeOffset(addValue);
m_currentSituationChange = CAircraftSituationChange(validSituations, m_model.getCG(), m_model.isVtol(), true, true); // recalculate
Q_UNUSED(changed);
}
}
else
{
m_currentSceneryOffset = CLength::null();
}
return validSituations;
}

View File

@@ -32,7 +32,8 @@ namespace BlackMisc
{
Q_ASSERT_X(situations.isSortedAdjustedLatestFirstWithoutNullPositions(), Q_FUNC_INFO, "Expect latest first");
}
const CAircraftSituationChange change = CAircraftSituationChange(situations, true, true);
const CAircraftModel model = this->getAircraftInRangeModelForCallsign(callsign);
const CAircraftSituationChange change = CAircraftSituationChange(situations, model.getCG(), model.isVtol(), true, true);
return change;
}