Ref T261, allow to enable/disable "fix scenery offset" via setup

* added UI functions
* fixed setup model
* use setup in interpolator
This commit is contained in:
Klaus Basan
2018-05-08 09:38:18 +02:00
committed by Roland Winklmeier
parent ea585ae166
commit 2e7e210010
7 changed files with 85 additions and 55 deletions

View File

@@ -31,7 +31,7 @@ namespace BlackMisc
return true;
}
bool CInterpolationAndRenderingSetupBase::setSendGndFlagToSimulator(bool sendFLag)
bool CInterpolationAndRenderingSetupBase::setSendingGndFlagToSimulator(bool sendFLag)
{
if (sendFLag == m_sendGndToSim) { return false; }
m_sendGndToSim = sendFLag;
@@ -95,6 +95,9 @@ namespace BlackMisc
case IndexEnabledAircraftParts: return CVariant::fromValue(m_enabledAircraftParts);
case IndexEnableGndFlag: return CVariant::fromValue(m_enabledGndFlag);
case IndexSendGndFlagToSimulator: return CVariant::fromValue(m_sendGndToSim);
case IndexInterpolatorMode: return CVariant::fromValue(m_interpolatorMode);
case IndexInterpolatorModeAsString: return CVariant::fromValue(this->getInterpolatorModeAsString());
case IndexFixSceneryOffset: return CVariant::fromValue(m_fixSceneryOffset);
default: break;
}
BLACK_VERIFY_X(false, Q_FUNC_INFO, "Cannot handle index");
@@ -112,6 +115,9 @@ namespace BlackMisc
case IndexEnabledAircraftParts: m_enabledAircraftParts = variant.toBool(); return;
case IndexEnableGndFlag: m_enabledGndFlag = variant.toBool(); return;
case IndexSendGndFlagToSimulator: m_sendGndToSim = variant.toBool(); return;
case IndexInterpolatorMode: m_interpolatorMode = variant.toInt(); return;
case IndexInterpolatorModeAsString: this->setInterpolatorMode(variant.toQString()); return;
case IndexFixSceneryOffset: m_fixSceneryOffset = variant.toBool(); return;
default: break;
}
BLACK_VERIFY_X(false, Q_FUNC_INFO, "Cannot handle index");
@@ -127,12 +133,13 @@ namespace BlackMisc
QStringLiteral(" | force full interpolation: ") % boolToYesNo(m_forceFullInterpolation) %
QStringLiteral(" | enable parts: ") % boolToYesNo(m_enabledAircraftParts) %
QStringLiteral(" | enable gnd: ") % boolToYesNo(m_enabledGndFlag) %
QStringLiteral(" | send gnd: ") % boolToYesNo(m_sendGndToSim);
QStringLiteral(" | send gnd: ") % boolToYesNo(m_sendGndToSim) %
QStringLiteral(" | fix.scenery offset: ") % boolToYesNo(m_fixSceneryOffset);
}
bool CInterpolationAndRenderingSetupBase::canHandleIndex(int index)
{
return index >= CInterpolationAndRenderingSetupBase::IndexLogInterpolation && index <= CInterpolationAndRenderingSetupBase::IndexEnabledAircraftParts;
return index >= CInterpolationAndRenderingSetupBase::IndexLogInterpolation && index <= CInterpolationAndRenderingSetupBase::IndexFixSceneryOffset;
}
CInterpolationAndRenderingSetupGlobal::CInterpolationAndRenderingSetupGlobal()
@@ -251,7 +258,7 @@ namespace BlackMisc
m_forceFullInterpolation = baseValues.isForcingFullInterpolation();
m_enabledAircraftParts = baseValues.isAircraftPartsEnabled();
m_enabledGndFlag = baseValues.isGndFlagEnabled();
m_sendGndToSim = baseValues.sendGndFlagToSimulator();
m_sendGndToSim = baseValues.isSendingGndFlagToSimulator();
}
QString CInterpolationAndRenderingSetupGlobal::convertToQString(bool i18n) const
@@ -314,7 +321,8 @@ namespace BlackMisc
if (this->isForcingFullInterpolation() != globalSetup.isForcingFullInterpolation()) { diff.push_back(IndexForceFullInterpolation); }
if (this->isAircraftPartsEnabled() != globalSetup.isAircraftPartsEnabled()) { diff.push_back(IndexEnabledAircraftParts); }
if (this->isGndFlagEnabled() != globalSetup.isGndFlagEnabled()) { diff.push_back(IndexEnableGndFlag); }
if (this->sendGndFlagToSimulator() != globalSetup.sendGndFlagToSimulator()) { diff.push_back(IndexSendGndFlagToSimulator); }
if (this->isSendingGndFlagToSimulator() != globalSetup.isSendingGndFlagToSimulator()) { diff.push_back(IndexSendGndFlagToSimulator); }
if (this->isFixingSceneryOffset() != globalSetup.isForcingFullInterpolation()) { diff.push_back(IndexFixSceneryOffset); }
return diff;
}

View File

@@ -37,7 +37,9 @@ namespace BlackMisc
IndexSendGndFlagToSimulator,
IndexEnableGndFlag,
IndexEnabledAircraftParts,
IndexInterpolatorMode
IndexInterpolatorMode,
IndexInterpolatorModeAsString,
IndexFixSceneryOffset
};
//! Interpolator type
@@ -59,7 +61,7 @@ namespace BlackMisc
//! Log.interpolation
void setLogInterpolation(bool log) { m_logInterpolation = log; }
//! Full interpolation
//! Full interpolation (skip optimizations like checking if aircraft moves etc.)
bool isForcingFullInterpolation() const { return m_forceFullInterpolation; }
//! Force full interpolation
@@ -71,20 +73,26 @@ namespace BlackMisc
//! Mask enabled aircraft parts
bool maskEnabledAircraftParts(bool mask);
//! Aircraft parts enabled
//! Aircraft parts enabled (still requires the other aircraft to send parts)
bool isAircraftPartsEnabled() const { return m_enabledAircraftParts; }
//! Set gnd flag enabled
//! Set gnd.flag enabled (aircraft supports gnd.flag)
bool setEnabledGndFLag(bool enabled);
//! Aircraft parts enabled
//! Is gnd.flag enabled (aircraft supports gnd.flag)
bool isGndFlagEnabled() const { return m_enabledGndFlag; }
//! Send GND flag to simulator
bool sendGndFlagToSimulator() const { return m_sendGndToSim; }
bool isSendingGndFlagToSimulator() const { return m_sendGndToSim; }
//! Set sending
bool setSendGndFlagToSimulator(bool sendFLag);
//! Set sending GND flag to simulator
bool setSendingGndFlagToSimulator(bool sendFLag);
//! Fix scenery offset if it has been detected
bool isFixingSceneryOffset() const { return m_fixSceneryOffset; }
//! Enable fix scenery offset if it has been detected
void setFixingSceneryOffset(bool fix) { m_fixSceneryOffset = fix; }
//! Consolidate with a network client
void consolidateWithClient(const Network::CClient &client);
@@ -126,6 +134,7 @@ namespace BlackMisc
bool m_enabledAircraftParts = true; //!< Enable aircraft parts
bool m_enabledGndFlag = true; //!< Enable gnd.flag
bool m_sendGndToSim = true; //!< Send the gnd.flag to simulator
bool m_fixSceneryOffset = true; //!< Fix. scenery offset
int m_interpolatorMode = static_cast<int>(Spline); //!< interpolator mode (spline, ...)
};
@@ -138,7 +147,7 @@ namespace BlackMisc
//! Properties by index
enum ColumnIndex
{
IndexMaxRenderedAircraft = CInterpolationAndRenderingSetupBase::IndexEnabledAircraftParts + 1,
IndexMaxRenderedAircraft = CInterpolationAndRenderingSetupBase::IndexFixSceneryOffset + 1,
IndexMaxRenderedDistance
};
@@ -208,6 +217,7 @@ namespace BlackMisc
BLACK_METAMEMBER(sendGndToSim),
BLACK_METAMEMBER(enabledAircraftParts),
BLACK_METAMEMBER(enabledGndFlag),
BLACK_METAMEMBER(fixSceneryOffset),
BLACK_METAMEMBER(interpolatorMode),
BLACK_METAMEMBER(maxRenderedAircraft),
BLACK_METAMEMBER(maxRenderedDistance)
@@ -267,6 +277,7 @@ namespace BlackMisc
BLACK_METAMEMBER(sendGndToSim),
BLACK_METAMEMBER(enabledAircraftParts),
BLACK_METAMEMBER(enabledGndFlag),
BLACK_METAMEMBER(fixSceneryOffset),
BLACK_METAMEMBER(interpolatorMode)
);
};

View File

@@ -359,7 +359,7 @@ namespace BlackMisc
m_currentTimeMsSinceEpoch = currentTimeSinceEpoc;
m_situationsLastModified = this->situationsLastModified(m_callsign);
m_currentSetup = setup;
m_currentSituations = this->remoteAircraftSituationsAndChange(true);
m_currentSituations = this->remoteAircraftSituationsAndChange(setup.isFixingSceneryOffset());
m_currentInterpolationStatus.reset();
m_currentPartsStatus.reset();