Ref T229, track sent position in SimObject

This commit is contained in:
Klaus Basan
2018-01-19 03:09:40 +01:00
parent 0991f20f7d
commit 2fbc7acc7d
2 changed files with 33 additions and 1 deletions

View File

@@ -69,6 +69,24 @@ namespace BlackSimPlugin
m_partsAsSent = dd;
}
bool CSimConnectObject::isSameAsSent(const SIMCONNECT_DATA_INITPOSITION &position) const
{
return std::tie(m_positionAsSent.Airspeed, m_positionAsSent.Altitude, m_positionAsSent.Bank, m_positionAsSent.Heading, m_positionAsSent.Latitude, m_positionAsSent.Longitude, m_positionAsSent.Pitch, m_positionAsSent.OnGround) ==
std::tie(position.Airspeed, position.Altitude, position.Bank, position.Heading, position.Latitude, position.Longitude, position.Pitch, position.OnGround);
}
void CSimConnectObject::invalidatePositionAsSent()
{
m_positionAsSent.Airspeed = 0;
m_positionAsSent.Altitude = -1;
m_positionAsSent.Bank = -1;
m_positionAsSent.Heading = -1;
m_positionAsSent.Latitude = -1;
m_positionAsSent.Longitude = -1;
m_positionAsSent.OnGround = 0;
m_positionAsSent.Pitch = -1;
}
void CSimConnectObject::setObjectId(DWORD id)
{
m_objectId = id;
@@ -104,12 +122,13 @@ namespace BlackSimPlugin
m_confirmedAdded = false;
m_currentLightsInSim = CAircraftLights();
m_lightsAsSent = CAircraftLights();
m_partsAsSent = DataDefinitionRemoteAircraftPartsWithoutLights {}; // init with 0s
m_requestId = -1;
m_objectId = -1;
m_lightsRequestedAt = -1;
m_validRequestId = false;
m_validObjectId = false;
this->invalidatePartsAsSent();
this->invalidatePositionAsSent();
}
bool CSimConnectObject::hasValidRequestAndObjectId() const

View File

@@ -81,6 +81,18 @@ namespace BlackSimPlugin
//! Invalidate parts as sent
void invalidatePartsAsSent();
//! Parts as sent to simulator
const SIMCONNECT_DATA_INITPOSITION &getPositionAsSent() const { return m_positionAsSent; }
//! Position as sent
void setPositionAsSent(const SIMCONNECT_DATA_INITPOSITION &position) { m_positionAsSent = position; }
//! Same as sent
bool isSameAsSent(const SIMCONNECT_DATA_INITPOSITION &position) const;
//! Invalidate position as sent;
void invalidatePositionAsSent();
//! Lights as sent to simulator
const BlackMisc::Aviation::CAircraftLights &getLightsAsSent() const { return m_lightsAsSent; }
@@ -172,6 +184,7 @@ namespace BlackSimPlugin
bool m_pendingRemoved = false;
int m_lightsRequestedAt = -1;
DataDefinitionRemoteAircraftPartsWithoutLights m_partsAsSent {}; //!< parts as sent
SIMCONNECT_DATA_INITPOSITION m_positionAsSent {}; //!< position as sent
BlackMisc::Aviation::CAircraftLights m_currentLightsInSim { nullptr }; //!< current lights to know state for toggling
BlackMisc::Aviation::CAircraftLights m_lightsAsSent { nullptr }; //!< lights as sent to simulator
SIMCONNECT_PERIOD m_requestSimDataPeriod = SIMCONNECT_PERIOD_NEVER; //!< how often do we query ground elevation