Ref T275, use getSimObjectForObjectId / getProbeForObjectId

* added getProbeForObjectId
* used getSimObjectForObjectId where not yet used
This commit is contained in:
Klaus Basan
2018-06-10 20:09:45 +02:00
parent 6f5b4c5de8
commit 444c7a18ba
3 changed files with 20 additions and 11 deletions

View File

@@ -337,6 +337,11 @@ namespace BlackSimPlugin
return this->getSimConnectObjects().getSimObjectForObjectId(objectId); return this->getSimConnectObjects().getSimObjectForObjectId(objectId);
} }
CSimConnectObject CSimulatorFsxCommon::getProbeForObjectId(DWORD objectId) const
{
return this->getSimConnectProbes().getSimObjectForObjectId(objectId);
}
void CSimulatorFsxCommon::setSimConnected() void CSimulatorFsxCommon::setSimConnected()
{ {
m_simConnected = true; m_simConnected = true;
@@ -1046,7 +1051,7 @@ namespace BlackSimPlugin
CAircraftSituation situation(newRemoteAircraft.getSituation()); CAircraftSituation situation(newRemoteAircraft.getSituation());
if (canAdd && situation.isPositionOrAltitudeNull()) if (canAdd && situation.isPositionOrAltitudeNull())
{ {
// invalid position // invalid position because position or altitude is null
const CAircraftSituationList situations(this->remoteAircraftSituations(callsign)); const CAircraftSituationList situations(this->remoteAircraftSituations(callsign));
if (situations.isEmpty()) if (situations.isEmpty())
{ {
@@ -1055,16 +1060,17 @@ namespace BlackSimPlugin
} }
else else
{ {
CLogMessage(this).warning("Invalid aircraft situation for new aircraft '%1', use situation") << callsign.asString(); CLogMessage(this).warning("Invalid aircraft situation for new aircraft '%1', use closest situation") << callsign.asString();
situation = situations.findClosestTimeDistanceAdjusted(QDateTime::currentMSecsSinceEpoch()); situation = situations.findClosestTimeDistanceAdjusted(QDateTime::currentMSecsSinceEpoch());
Q_ASSERT_X(!situation.isPositionOrAltitudeNull(), Q_FUNC_INFO, "Invalid situation for new aircraft"); Q_ASSERT_X(!situation.isPositionOrAltitudeNull(), Q_FUNC_INFO, "Invalid situation for new aircraft");
} }
const bool validSituation = situation.isPositionOrAltitudeNull(); // still invalid?
canAdd = validSituation; const bool invalidSituation = situation.isPositionOrAltitudeNull();
canAdd = invalidSituation;
if (CBuildConfig::isLocalDeveloperDebugBuild()) if (CBuildConfig::isLocalDeveloperDebugBuild())
{ {
BLACK_VERIFY_X(validSituation, Q_FUNC_INFO, "Expect valid situation"); BLACK_VERIFY_X(invalidSituation, Q_FUNC_INFO, "Expect valid situation");
const CStatusMessage sm = CStatusMessage(this).warning("Invalid situation for '%1'") << callsign; const CStatusMessage sm = CStatusMessage(this).warning("Invalid situation for '%1'") << callsign;
this->clampedLog(callsign, sm); this->clampedLog(callsign, sm);
} }

View File

@@ -347,6 +347,9 @@ namespace BlackSimPlugin
//! The simconnect related probes //! The simconnect related probes
const CSimConnectObjects &getSimConnectProbes() const { return m_simConnectProbes; } const CSimConnectObjects &getSimConnectProbes() const { return m_simConnectProbes; }
//! Get probe for id
CSimConnectObject getProbeForObjectId(DWORD objectId) const;
//! Format conversion //! Format conversion
//! \note must be valid situation //! \note must be valid situation
SIMCONNECT_DATA_INITPOSITION aircraftSituationToFsxPosition(const BlackMisc::Aviation::CAircraftSituation &situation, bool sendGnd = true); SIMCONNECT_DATA_INITPOSITION aircraftSituationToFsxPosition(const BlackMisc::Aviation::CAircraftSituation &situation, bool sendGnd = true);
@@ -435,7 +438,7 @@ namespace BlackSimPlugin
// objects // objects
CSimConnectObjects m_simConnectObjects; //!< AI objects and their object / request ids CSimConnectObjects m_simConnectObjects; //!< AI objects and their object / request ids
CSimConnectObjects m_simConnectProbes; //!< AI terrain probes CSimConnectObjects m_simConnectProbes; //!< AI terrain probes and their object / request ids
CSimConnectObjects m_simConnectObjectsPositionAndPartsTraces; //!< position/parts received, but object not yet added, excluded, disabled etc. CSimConnectObjects m_simConnectObjectsPositionAndPartsTraces; //!< position/parts received, but object not yet added, excluded, disabled etc.
SIMCONNECT_DATA_REQUEST_ID m_requestIdSimData = static_cast<SIMCONNECT_DATA_REQUEST_ID>(RequestIdSimDataStart); //!< request id, use obtainRequestIdForSimData() to get id SIMCONNECT_DATA_REQUEST_ID m_requestIdSimData = static_cast<SIMCONNECT_DATA_REQUEST_ID>(RequestIdSimDataStart); //!< request id, use obtainRequestIdForSimData() to get id
SIMCONNECT_DATA_REQUEST_ID m_requestIdProbe = static_cast<SIMCONNECT_DATA_REQUEST_ID>(RequestIdTerrainProbeStart); //!< request id, use obtainRequestIdForProbe() to get id SIMCONNECT_DATA_REQUEST_ID m_requestIdProbe = static_cast<SIMCONNECT_DATA_REQUEST_ID>(RequestIdTerrainProbeStart); //!< request id, use obtainRequestIdForProbe() to get id

View File

@@ -180,7 +180,7 @@ namespace BlackSimPlugin
success = simulatorFsxP3D->setSimConnectProbeId(requestId, objectId); success = simulatorFsxP3D->setSimConnectProbeId(requestId, objectId);
if (!success) { break; } // not an request ID of ours if (!success) { break; } // not an request ID of ours
success = simulatorFsxP3D->simulatorReportedProbeAdded(objectId); success = simulatorFsxP3D->simulatorReportedProbeAdded(objectId);
const CSimConnectObject simObject = simulatorFsxP3D->getSimConnectProbes().getSimObjectForObjectId(objectId); const CSimConnectObject simObject = simulatorFsxP3D->getProbeForObjectId(objectId);
if (success) if (success)
{ {
CLogMessage(simulatorFsxP3D).info("Added probe '%1' id: %2") << simObject.getCallsign() << objectId; CLogMessage(simulatorFsxP3D).info("Added probe '%1' id: %2") << simObject.getCallsign() << objectId;
@@ -197,7 +197,7 @@ namespace BlackSimPlugin
success = simulatorFsxP3D->simulatorReportedObjectAdded(objectId); // trigger follow up actions success = simulatorFsxP3D->simulatorReportedObjectAdded(objectId); // trigger follow up actions
if (!success) if (!success)
{ {
const CSimConnectObject simObj = simulatorFsxP3D->getSimConnectObjects().getSimObjectForObjectId(objectId); const CSimConnectObject simObj = simulatorFsxP3D->getSimObjectForObjectId(objectId);
const CSimulatedAircraft remoteAircraft(simObj.getAircraft()); const CSimulatedAircraft remoteAircraft(simObj.getAircraft());
const CStatusMessage msg = CStatusMessage(simulatorFsxP3D).error("Cannot add object %1, cs: '%2' model: '%3'") << objectId << remoteAircraft.getCallsignAsString() << remoteAircraft.getModelString(); const CStatusMessage msg = CStatusMessage(simulatorFsxP3D).error("Cannot add object %1, cs: '%2' model: '%3'") << objectId << remoteAircraft.getCallsignAsString() << remoteAircraft.getModelString();
CLogMessage::preformatted(msg); CLogMessage::preformatted(msg);
@@ -270,7 +270,7 @@ namespace BlackSimPlugin
{ {
static_assert(sizeof(DataDefinitionRemoteAircraftSimData) == 5 * sizeof(double), "DataDefinitionRemoteAircraftSimData has an incorrect size."); static_assert(sizeof(DataDefinitionRemoteAircraftSimData) == 5 * sizeof(double), "DataDefinitionRemoteAircraftSimData has an incorrect size.");
simulatorFsxP3D->m_dispatchLastRequest = CSimConnectDefinitions::RequestRangeForProbe; simulatorFsxP3D->m_dispatchLastRequest = CSimConnectDefinitions::RequestRangeForProbe;
const CSimConnectObject probeObj = simulatorFsxP3D->getSimConnectProbes().getSimObjectForObjectId(objectId); const CSimConnectObject probeObj = simulatorFsxP3D->getProbeForObjectId(objectId);
if (!probeObj.hasValidRequestAndObjectId()) { break; } if (!probeObj.hasValidRequestAndObjectId()) { break; }
const DataDefinitionRemoteAircraftSimData *probeSimData = (DataDefinitionRemoteAircraftSimData *)&pObjData->dwData; const DataDefinitionRemoteAircraftSimData *probeSimData = (DataDefinitionRemoteAircraftSimData *)&pObjData->dwData;
// extra check, but ids should be the same // extra check, but ids should be the same
@@ -285,8 +285,8 @@ namespace BlackSimPlugin
{ {
static_assert(sizeof(DataDefinitionRemoteAircraftLights) == 8 * sizeof(double), "DataDefinitionRemoteAircraftLights has an incorrect size."); static_assert(sizeof(DataDefinitionRemoteAircraftLights) == 8 * sizeof(double), "DataDefinitionRemoteAircraftLights has an incorrect size.");
simulatorFsxP3D->m_dispatchLastRequest = CSimConnectDefinitions::RequestRangeForLights; simulatorFsxP3D->m_dispatchLastRequest = CSimConnectDefinitions::RequestRangeForLights;
const CSimConnectObject simObj = simulatorFsxP3D->getSimConnectObjects().getSimObjectForObjectId(objectId); const CSimConnectObject simObj = simulatorFsxP3D->getSimObjectForObjectId(objectId);
if (!simObj.hasValidRequestAndObjectId()) break; if (!simObj.hasValidRequestAndObjectId()) { break; }
const DataDefinitionRemoteAircraftLights *remoteAircraftLights = (DataDefinitionRemoteAircraftLights *)&pObjData->dwData; const DataDefinitionRemoteAircraftLights *remoteAircraftLights = (DataDefinitionRemoteAircraftLights *)&pObjData->dwData;
// extra check, but ids should be the same // extra check, but ids should be the same
if (objectId == simObj.getObjectId()) if (objectId == simObj.getObjectId())