mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 12:55:33 +08:00
refs #895, add initial parts when aircraft is added in FSX
plus some utility functions
This commit is contained in:
committed by
Mathew Sutcliffe
parent
a27717cf8b
commit
03b8739158
@@ -30,6 +30,16 @@ namespace BlackSimPlugin
|
||||
m_interpolator->attachLogger(logger);
|
||||
}
|
||||
|
||||
void CSimConnectObject::addAircraftParts(const CAircraftParts &parts)
|
||||
{
|
||||
m_interpolator->addAircraftParts(parts);
|
||||
}
|
||||
|
||||
void CSimConnectObject::addAircraftSituation(const CAircraftSituation &situation)
|
||||
{
|
||||
m_interpolator->addAircraftSituation(situation);
|
||||
}
|
||||
|
||||
void CSimConnectObject::invalidatePartsAsSent()
|
||||
{
|
||||
DataDefinitionRemoteAircraftPartsWithoutLights dd;
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace BlackSimPlugin
|
||||
//! Constructor
|
||||
CSimConnectObject();
|
||||
|
||||
//! Constructor
|
||||
//! Constructor, providing initial situation/parts
|
||||
CSimConnectObject(const BlackMisc::Simulation::CSimulatedAircraft &aircraft,
|
||||
DWORD requestId,
|
||||
BlackMisc::Simulation::CInterpolationLogger *logger);
|
||||
@@ -56,6 +56,12 @@ namespace BlackSimPlugin
|
||||
//! Interpolator
|
||||
BlackMisc::Simulation::CInterpolatorSpline *getInterpolator() const { return m_interpolator.data(); }
|
||||
|
||||
//! Add parts for interpolator
|
||||
void addAircraftParts(const BlackMisc::Aviation::CAircraftParts &parts);
|
||||
|
||||
//! Add situation for interpolator
|
||||
void addAircraftSituation(const BlackMisc::Aviation::CAircraftSituation &situation);
|
||||
|
||||
//! Get current lights (requested from simulator)
|
||||
const BlackMisc::Aviation::CAircraftLights &getCurrentLightsInSimulator() const { return m_currentLightsInSim; }
|
||||
|
||||
|
||||
@@ -175,7 +175,8 @@ namespace BlackSimPlugin
|
||||
// we will request a new aircraft by request ID, later we will receive its object id
|
||||
// so far this object id is -1
|
||||
addedAircraft.setRendered(false);
|
||||
const CSimConnectObject simObject(addedAircraft, requestId, &m_interpolationLogger);
|
||||
CSimConnectObject simObject(addedAircraft, requestId, &m_interpolationLogger);
|
||||
if (addedAircraft.isPartsSynchronized()) { simObject.addAircraftParts(addedAircraft.getParts()); }
|
||||
m_simConnectObjects.insert(callsign, simObject);
|
||||
adding = true;
|
||||
}
|
||||
@@ -906,7 +907,7 @@ namespace BlackSimPlugin
|
||||
|
||||
// get interpolated situation
|
||||
CInterpolationStatus interpolatorStatus;
|
||||
CInterpolationHints hints(m_hints[simObj.getCallsign()]);
|
||||
CInterpolationHints hints(m_hints[callsign]);
|
||||
hints.setAircraftParts(useAircraftParts ? parts : CAircraftParts(), useAircraftParts);
|
||||
hints.setLoggingInterpolation(logInterpolationAndParts);
|
||||
const CAircraftSituation interpolatedSituation = simObj.getInterpolator()->getInterpolatedSituation(currentTimestamp, setup, hints, interpolatorStatus);
|
||||
@@ -1274,13 +1275,13 @@ namespace BlackSimPlugin
|
||||
void CSimulatorFsxCommon::ps_remoteProviderAddAircraftSituation(const CAircraftSituation &situation)
|
||||
{
|
||||
if (!m_simConnectObjects.contains(situation.getCallsign())) { return; }
|
||||
m_simConnectObjects[situation.getCallsign()].getInterpolator()->addAircraftSituation(situation);
|
||||
m_simConnectObjects[situation.getCallsign()].addAircraftSituation(situation);
|
||||
}
|
||||
|
||||
void CSimulatorFsxCommon::ps_remoteProviderAddAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, const CAircraftParts &parts)
|
||||
{
|
||||
if (!m_simConnectObjects.contains(callsign)) { return; }
|
||||
m_simConnectObjects[callsign].getInterpolator()->addAircraftParts(parts);
|
||||
m_simConnectObjects[callsign].addAircraftParts(parts);
|
||||
}
|
||||
|
||||
QString CSimulatorFsxCommon::fsxPositionToString(const SIMCONNECT_DATA_INITPOSITION &position)
|
||||
|
||||
Reference in New Issue
Block a user