mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-02 23:25:53 +08:00
Ref T261, interpolator mode is now part of setup
* added attribute in setup * adjusted UI * adjusted interpolator / simulator functions
This commit is contained in:
committed by
Roland Winklmeier
parent
eb815ab987
commit
3d2a74a652
@@ -303,14 +303,6 @@ namespace BlackSimPlugin
|
||||
return c > 0;
|
||||
}
|
||||
|
||||
bool CSimulatorEmulated::setInterpolatorMode(CInterpolatorMulti::Mode mode, const CCallsign &callsign)
|
||||
{
|
||||
if (canLog()) m_monitorWidget->appendReceivingCall(Q_FUNC_INFO, CInterpolatorMulti::modeToString(mode), callsign.toQString());
|
||||
if (!m_interpolators.contains(callsign)) { return false; }
|
||||
CInterpolatorMulti *im = m_interpolators[callsign];
|
||||
return im->setMode(mode);
|
||||
}
|
||||
|
||||
int CSimulatorEmulated::physicallyRemoveAllRemoteAircraft()
|
||||
{
|
||||
if (canLog()) m_monitorWidget->appendReceivingCall(Q_FUNC_INFO);
|
||||
|
||||
@@ -60,7 +60,6 @@ namespace BlackSimPlugin
|
||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
|
||||
virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
virtual BlackMisc::Aviation::CCallsignSet physicallyRenderedAircraft() const override;
|
||||
virtual bool setInterpolatorMode(BlackMisc::Simulation::CInterpolatorMulti::Mode mode, const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
|
||||
// functions just logged
|
||||
virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) override;
|
||||
|
||||
@@ -279,16 +279,6 @@ namespace BlackSimPlugin
|
||||
this->displayStatusMessage(message.asStatusMessage(true, true));
|
||||
}
|
||||
|
||||
bool CSimulatorFs9::setInterpolatorMode(CInterpolatorMulti::Mode mode, const CCallsign &callsign)
|
||||
{
|
||||
const auto it = m_hashFs9Clients.find(callsign);
|
||||
if (it == m_hashFs9Clients.end()) { return false; }
|
||||
QTimer::singleShot(0, it->data(), [client = *it, mode] { client->getInterpolator()->setMode(mode); });
|
||||
// Always return true if we were setting the mode, since we cannot easily access the return value from
|
||||
// CInterpolatorMulti::setMode in a thread safe manner.
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CSimulatorFs9::isPhysicallyRenderedAircraft(const CCallsign &callsign) const
|
||||
{
|
||||
return m_hashFs9Clients.contains(callsign);
|
||||
|
||||
@@ -106,22 +106,10 @@ namespace BlackSimPlugin
|
||||
return this->hasValidRequestId() && this->hasValidObjectId();
|
||||
}
|
||||
|
||||
void CSimConnectObject::toggleInterpolatorMode()
|
||||
QString CSimConnectObject::getInterpolatorInfo(CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const
|
||||
{
|
||||
Q_ASSERT(m_interpolator);
|
||||
m_interpolator->toggleMode();
|
||||
}
|
||||
|
||||
bool CSimConnectObject::setInterpolatorMode(CInterpolatorMulti::Mode mode)
|
||||
{
|
||||
Q_ASSERT(m_interpolator);
|
||||
return m_interpolator->setMode(mode);
|
||||
}
|
||||
|
||||
QString CSimConnectObject::getInterpolatorInfo() const
|
||||
{
|
||||
Q_ASSERT(m_interpolator);
|
||||
return m_interpolator->getInterpolatorInfo();
|
||||
return m_interpolator->getInterpolatorInfo(mode);
|
||||
}
|
||||
|
||||
void CSimConnectObject::attachInterpolatorLogger(CInterpolationLogger *logger)
|
||||
@@ -157,10 +145,10 @@ namespace BlackSimPlugin
|
||||
return m_interpolator->getInterpolatedOrGuessedParts(currentTimeSinceEpoc, setup, partsStatus, log);
|
||||
}
|
||||
|
||||
const CAircraftSituation &CSimConnectObject::getLastInterpolatedSituation() const
|
||||
const CAircraftSituation &CSimConnectObject::getLastInterpolatedSituation(CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const
|
||||
{
|
||||
if (!m_interpolator) { return CAircraftSituation::null(); }
|
||||
return m_interpolator->getLastInterpolatedSituation();
|
||||
return m_interpolator->getLastInterpolatedSituation(mode);
|
||||
}
|
||||
|
||||
bool CSimConnectObjects::setSimConnectObjectIdForRequestId(DWORD requestId, DWORD objectId, bool resetSentParts)
|
||||
@@ -324,29 +312,5 @@ namespace BlackSimPlugin
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void CSimConnectObjects::toggleInterpolatorModes()
|
||||
{
|
||||
for (const CCallsign &cs : this->keys())
|
||||
{
|
||||
(*this)[cs].toggleInterpolatorMode();
|
||||
}
|
||||
}
|
||||
|
||||
void CSimConnectObjects::toggleInterpolatorMode(const CCallsign &callsign)
|
||||
{
|
||||
if (!this->contains(callsign)) { return; }
|
||||
(*this)[callsign].toggleInterpolatorMode();
|
||||
}
|
||||
|
||||
int CSimConnectObjects::setInterpolatorModes(CInterpolatorMulti::Mode mode)
|
||||
{
|
||||
int c = 0;
|
||||
for (const CCallsign &cs : this->keys())
|
||||
{
|
||||
if ((*this)[cs].setInterpolatorMode(mode)) c++;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -163,11 +163,8 @@ namespace BlackSimPlugin
|
||||
//! \copydoc BlackMisc::Simulation::CInterpolatorMulti::toggleMode
|
||||
void toggleInterpolatorMode();
|
||||
|
||||
//! \copydoc BlackMisc::Simulation::CInterpolatorMulti::setMode
|
||||
bool setInterpolatorMode(BlackMisc::Simulation::CInterpolatorMulti::Mode mode);
|
||||
|
||||
//! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolatorInfo
|
||||
QString getInterpolatorInfo() const;
|
||||
QString getInterpolatorInfo(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
|
||||
|
||||
//! \copydoc BlackMisc::Simulation::CInterpolator::attachLogger
|
||||
void attachInterpolatorLogger(BlackMisc::Simulation::CInterpolationLogger *logger);
|
||||
@@ -191,7 +188,7 @@ namespace BlackSimPlugin
|
||||
BlackMisc::Simulation::CPartsStatus &partsStatus, bool log) const;
|
||||
|
||||
//! Last interpolated situation
|
||||
const BlackMisc::Aviation::CAircraftSituation &getLastInterpolatedSituation() const;
|
||||
const BlackMisc::Aviation::CAircraftSituation &getLastInterpolatedSituation(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
|
||||
|
||||
//! Interpolator
|
||||
BlackMisc::Simulation::CInterpolatorMulti *getInterpolator() const { return m_interpolator.data(); }
|
||||
@@ -274,15 +271,6 @@ namespace BlackSimPlugin
|
||||
|
||||
//! Contains object of type
|
||||
bool containsType(CSimConnectObject::SimObjectType type) const;
|
||||
|
||||
//! Toggle interpolator modes
|
||||
void toggleInterpolatorModes();
|
||||
|
||||
//! Toggle interpolator modes
|
||||
void toggleInterpolatorMode(const BlackMisc::Aviation::CCallsign &callsign);
|
||||
|
||||
//! Set interpolator modes
|
||||
int setInterpolatorModes(BlackMisc::Simulation::CInterpolatorMulti::Mode mode);
|
||||
};
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -242,21 +242,6 @@ namespace BlackSimPlugin
|
||||
return CCallsignSet(m_simConnectObjects.keys());
|
||||
}
|
||||
|
||||
bool CSimulatorFsxCommon::setInterpolatorMode(CInterpolatorMulti::Mode mode, const CCallsign &callsign)
|
||||
{
|
||||
if (mode == CInterpolatorMulti::ModeUnknown) { return false; }
|
||||
if (callsign.isEmpty())
|
||||
{
|
||||
const int c = m_simConnectObjects.setInterpolatorModes(mode);
|
||||
return c > 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!m_simConnectObjects.contains(callsign)) { return false; }
|
||||
return m_simConnectObjects[callsign].setInterpolatorMode(mode);
|
||||
}
|
||||
}
|
||||
|
||||
CStatusMessageList CSimulatorFsxCommon::debugVerifyStateAfterAllAircraftRemoved() const
|
||||
{
|
||||
CStatusMessageList msgs;
|
||||
@@ -539,7 +524,8 @@ namespace BlackSimPlugin
|
||||
|
||||
// CElevationPlane: deg, deg, feet
|
||||
// we only remember near ground
|
||||
if (simObject.getLastInterpolatedSituation().canLikelySkipNearGroundInterpolation()) { return; }
|
||||
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupPerCallsignOrDefault(simObject.getCallsign());
|
||||
if (simObject.getLastInterpolatedSituation(setup.getInterpolatorMode()).canLikelySkipNearGroundInterpolation()) { return; }
|
||||
|
||||
CElevationPlane elevation(remoteAircraftData.latitudeDeg, remoteAircraftData.longitudeDeg, remoteAircraftData.elevationFt);
|
||||
elevation.setSinglePointRadius();
|
||||
@@ -763,10 +749,11 @@ namespace BlackSimPlugin
|
||||
CStatusMessage msg;
|
||||
if (!simObject.getAircraftModelString().isEmpty())
|
||||
{
|
||||
const CInterpolationAndRenderingSetupPerCallsign setup = this->getInterpolationSetupPerCallsignOrDefault(callsign);
|
||||
m_addPendingAircraft.replaceOrAddByCallsign(simObject.getAircraft());
|
||||
msg = CLogMessage(this).warning("Aircraft removed, '%1' '%2' object id '%3' out of reality bubble or other reason. Interpolator: '%4'")
|
||||
<< callsign.toQString() << simObject.getAircraftModelString()
|
||||
<< objectID << simObject.getInterpolatorInfo();
|
||||
<< objectID << simObject.getInterpolatorInfo(setup.getInterpolatorMode());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -127,7 +127,6 @@ namespace BlackSimPlugin
|
||||
virtual void displayTextMessage(const BlackMisc::Network::CTextMessage &message) const override;
|
||||
virtual bool isPhysicallyRenderedAircraft(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
virtual BlackMisc::Aviation::CCallsignSet physicallyRenderedAircraft() const override;
|
||||
virtual bool setInterpolatorMode(BlackMisc::Simulation::CInterpolatorMulti::Mode mode, const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
virtual void clearAllRemoteAircraftData() override;
|
||||
virtual BlackMisc::CStatusMessageList debugVerifyStateAfterAllAircraftRemoved() const override;
|
||||
//! @}
|
||||
|
||||
@@ -369,23 +369,6 @@ namespace BlackSimPlugin
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CSimulatorXPlane::setInterpolatorMode(CInterpolatorMulti::Mode mode, const CCallsign &callsign)
|
||||
{
|
||||
if (!isConnected()) { return false; }
|
||||
|
||||
if (mode == CInterpolatorMulti::ModeUnknown) { return false; }
|
||||
if (callsign.isEmpty())
|
||||
{
|
||||
const int c = m_xplaneAircraftObjects.setInterpolatorModes(mode);
|
||||
return c > 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!m_xplaneAircraftObjects.contains(callsign)) { return false; }
|
||||
return m_xplaneAircraftObjects[callsign].setInterpolatorMode(mode);
|
||||
}
|
||||
}
|
||||
|
||||
QDBusConnection CSimulatorXPlane::connectionFromString(const QString &str)
|
||||
{
|
||||
if (str == CDBusServer::sessionBusAddress()) { return QDBusConnection::sessionBus(); }
|
||||
|
||||
@@ -134,7 +134,6 @@ namespace BlackSimPlugin
|
||||
virtual BlackMisc::Aviation::CAirportList getAirportsInRange() const override;
|
||||
virtual bool setTimeSynchronization(bool enable, const BlackMisc::PhysicalQuantities::CTime &offset) override;
|
||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override { return BlackMisc::PhysicalQuantities::CTime(0, BlackMisc::PhysicalQuantities::CTimeUnit::hrmin()); }
|
||||
virtual bool setInterpolatorMode(BlackMisc::Simulation::CInterpolatorMulti::Mode mode, const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
virtual void unload() override;
|
||||
//! @}
|
||||
|
||||
|
||||
@@ -36,22 +36,10 @@ namespace BlackSimPlugin
|
||||
return m_situationAsSent == position;
|
||||
}
|
||||
|
||||
void CXPlaneMPAircraft::toggleInterpolatorMode()
|
||||
QString CXPlaneMPAircraft::getInterpolatorInfo(CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const
|
||||
{
|
||||
Q_ASSERT(m_interpolator);
|
||||
m_interpolator->toggleMode();
|
||||
}
|
||||
|
||||
bool CXPlaneMPAircraft::setInterpolatorMode(CInterpolatorMulti::Mode mode)
|
||||
{
|
||||
Q_ASSERT(m_interpolator);
|
||||
return m_interpolator->setMode(mode);
|
||||
}
|
||||
|
||||
QString CXPlaneMPAircraft::getInterpolatorInfo() const
|
||||
{
|
||||
Q_ASSERT(m_interpolator);
|
||||
return m_interpolator->getInterpolatorInfo();
|
||||
return m_interpolator->getInterpolatorInfo(mode);
|
||||
}
|
||||
|
||||
void CXPlaneMPAircraft::attachInterpolatorLogger(CInterpolationLogger *logger)
|
||||
@@ -91,15 +79,5 @@ namespace BlackSimPlugin
|
||||
{
|
||||
return CCallsignSet(this->keys());
|
||||
}
|
||||
|
||||
int CXPlaneMPAircraftObjects::setInterpolatorModes(CInterpolatorMulti::Mode mode)
|
||||
{
|
||||
int c = 0;
|
||||
for (const CCallsign &cs : this->keys())
|
||||
{
|
||||
if ((*this)[cs].setInterpolatorMode(mode)) c++;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -70,14 +70,8 @@ namespace BlackSimPlugin
|
||||
//! Engine count
|
||||
int getEngineCount() const { return m_aircraft.getEnginesCount(); }
|
||||
|
||||
//! \copydoc BlackMisc::Simulation::CInterpolatorMulti::toggleMode
|
||||
void toggleInterpolatorMode();
|
||||
|
||||
//! \copydoc BlackMisc::Simulation::CInterpolatorMulti::setMode
|
||||
bool setInterpolatorMode(BlackMisc::Simulation::CInterpolatorMulti::Mode mode);
|
||||
|
||||
//! \copydoc BlackMisc::Simulation::CInterpolator::getInterpolatorInfo
|
||||
QString getInterpolatorInfo() const;
|
||||
QString getInterpolatorInfo(BlackMisc::Simulation::CInterpolationAndRenderingSetupBase::InterpolatorMode mode) const;
|
||||
|
||||
//! \copydoc BlackMisc::Simulation::CInterpolator::attachLogger
|
||||
void attachInterpolatorLogger(BlackMisc::Simulation::CInterpolationLogger *logger);
|
||||
@@ -128,9 +122,6 @@ namespace BlackSimPlugin
|
||||
|
||||
//! Toggle interpolator modes
|
||||
void toggleInterpolatorMode(const BlackMisc::Aviation::CCallsign &callsign);
|
||||
|
||||
//! Set interpolator modes
|
||||
int setInterpolatorModes(BlackMisc::Simulation::CInterpolatorMulti::Mode mode);
|
||||
};
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user