mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-01 05:26:45 +08:00
Ref T275, FSX/P3D obtain model string and CG when model is added and set it in the providers
This commit is contained in:
@@ -618,6 +618,17 @@ namespace BlackSimPlugin
|
||||
});
|
||||
}
|
||||
|
||||
void CSimulatorFsxCommon::triggerUpdateRemoteAircraftFromSimulator(const CSimConnectObject &simObject, const DataDefinitionRemoteAircraftModel &remoteAircraftModel)
|
||||
{
|
||||
if (this->isShuttingDownOrDisconnected()) { return; }
|
||||
QPointer<CSimulatorFsxCommon> myself(this);
|
||||
QTimer::singleShot(0, this, [ = ]
|
||||
{
|
||||
if (!myself) { return; }
|
||||
myself->updateRemoteAircraftFromSimulator(simObject, remoteAircraftModel);
|
||||
});
|
||||
}
|
||||
|
||||
void CSimulatorFsxCommon::updateRemoteAircraftFromSimulator(const CSimConnectObject &simObject, const DataDefinitionPosData &remoteAircraftData)
|
||||
{
|
||||
if (this->isShuttingDownOrDisconnected()) { return; }
|
||||
@@ -649,10 +660,25 @@ namespace BlackSimPlugin
|
||||
{
|
||||
CElevationPlane elevation(remoteAircraftData.latitudeDeg, remoteAircraftData.longitudeDeg, remoteAircraftData.elevationFt);
|
||||
elevation.setSinglePointRadius();
|
||||
this->rememberElevationAndCG(cs, elevation, CLength(remoteAircraftData.cgToGroundFt, CLengthUnit::ft()));
|
||||
this->rememberElevationAndCG(cs, simObject.getAircraftModelString(), elevation, CLength(remoteAircraftData.cgToGroundFt, CLengthUnit::ft()));
|
||||
}
|
||||
}
|
||||
|
||||
void CSimulatorFsxCommon::updateRemoteAircraftFromSimulator(const CSimConnectObject &simObject, const DataDefinitionRemoteAircraftModel &remoteAircraftModel)
|
||||
{
|
||||
const CCallsign cs(simObject.getCallsign());
|
||||
if (!m_simConnectObjects.contains(cs)) { return; } // no longer existing
|
||||
CSimConnectObject &so = m_simConnectObjects[cs];
|
||||
if (so.isPendingRemoved()) { return; }
|
||||
|
||||
const QString modelString(remoteAircraftModel.title);
|
||||
const CLength cg(remoteAircraftModel.cgToGroundFt, CLengthUnit::ft());
|
||||
so.setAircraftCG(cg);
|
||||
so.setAircraftModelString(modelString);
|
||||
this->insertCG(cg, modelString, cs); // env. provider
|
||||
this->updateCGAndModelString(cs, cg, modelString); // remote aircraft provider
|
||||
}
|
||||
|
||||
void CSimulatorFsxCommon::updateProbeFromSimulator(const CCallsign &callsign, const DataDefinitionPosData &remoteAircraftData)
|
||||
{
|
||||
const CElevationPlane elevation(remoteAircraftData.latitudeDeg, remoteAircraftData.longitudeDeg, remoteAircraftData.elevationFt, CElevationPlane::singlePointRadius());
|
||||
|
||||
Reference in New Issue
Block a user