Ref T372, fixed freeze so aircraft is really stable

see https://swift-project.slack.com/archives/G96QTUBEG/p1537784648000100
This commit is contained in:
Klaus Basan
2018-09-25 01:52:01 +02:00
parent f50266a5a3
commit 5323cb09d7
2 changed files with 24 additions and 27 deletions

View File

@@ -502,13 +502,13 @@ namespace BlackSimPlugin
SimConnect_AIReleaseControl(m_hSimConnect, objectId, requestId), SimConnect_AIReleaseControl(m_hSimConnect, objectId, requestId),
simObject, "Release control", Q_FUNC_INFO, "SimConnect_AIReleaseControl"); simObject, "Release control", Q_FUNC_INFO, "SimConnect_AIReleaseControl");
const HRESULT hr2 = this->logAndTraceSendId( const HRESULT hr2 = this->logAndTraceSendId(
SimConnect_TransmitClientEvent(m_hSimConnect, objectId, EventFreezeLat, 1, SIMCONNECT_GROUP_PRIORITY_HIGHEST, SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY), SimConnect_TransmitClientEvent(m_hSimConnect, objectId, EventFreezeLatLng, 1, SIMCONNECT_GROUP_PRIORITY_HIGHEST, SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY),
simObject, "EventFreezeLat", Q_FUNC_INFO, "SimConnect_TransmitClientEvent"); simObject, "EventFreezeLatLng", Q_FUNC_INFO, "SimConnect_TransmitClientEvent");
const HRESULT hr3 = this->logAndTraceSendId( const HRESULT hr3 = this->logAndTraceSendId(
SimConnect_TransmitClientEvent(m_hSimConnect, objectId, EventFreezeLat, 1, SIMCONNECT_GROUP_PRIORITY_HIGHEST, SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY), SimConnect_TransmitClientEvent(m_hSimConnect, objectId, EventFreezeAlt, 1, SIMCONNECT_GROUP_PRIORITY_HIGHEST, SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY),
simObject, "EventFreezeAlt", Q_FUNC_INFO, "SimConnect_TransmitClientEvent"); simObject, "EventFreezeAlt", Q_FUNC_INFO, "SimConnect_TransmitClientEvent");
const HRESULT hr4 = this->logAndTraceSendId( const HRESULT hr4 = this->logAndTraceSendId(
SimConnect_TransmitClientEvent(m_hSimConnect, objectId, EventFreezeLat, 1, SIMCONNECT_GROUP_PRIORITY_HIGHEST, SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY), SimConnect_TransmitClientEvent(m_hSimConnect, objectId, EventFreezeAtt, 1, SIMCONNECT_GROUP_PRIORITY_HIGHEST, SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY),
simObject, "EventFreezeAtt", Q_FUNC_INFO, "SimConnect_TransmitClientEvent"); simObject, "EventFreezeAtt", Q_FUNC_INFO, "SimConnect_TransmitClientEvent");
return isOk(hr1, hr2, hr3, hr4); return isOk(hr1, hr2, hr3, hr4);
@@ -1590,9 +1590,9 @@ namespace BlackSimPlugin
// http://www.prepar3d.com/SDKv2/LearningCenter/utilities/variables/event_ids.html // http://www.prepar3d.com/SDKv2/LearningCenter/utilities/variables/event_ids.html
hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventPauseToggle, "PAUSE_TOGGLE"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventPauseToggle, "PAUSE_TOGGLE");
hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, SystemEventSlewToggle, "SLEW_TOGGLE"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, SystemEventSlewToggle, "SLEW_TOGGLE");
hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventFreezeLat, "FREEZE_LATITUDE_LONGITUDE_SET"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventFreezeLatLng, "FREEZE_LATITUDE_LONGITUDE_SET"); // FSX old standard
hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventFreezeAlt, "FREEZE_ALTITUDE_SET"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventFreezeAlt, "FREEZE_ALTITUDE_SET"); // FSX old standard
hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventFreezeAtt, "FREEZE_ATTITUDE_SET"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventFreezeAtt, "FREEZE_ATTITUDE_SET"); // FSX old standard
hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventSetCom1Active, "COM_RADIO_SET"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventSetCom1Active, "COM_RADIO_SET");
hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventSetCom1Standby, "COM_STBY_RADIO_SET"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventSetCom1Standby, "COM_STBY_RADIO_SET");
hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventSetCom2Active, "COM2_RADIO_SET"); hr += SimConnect_MapClientEventToSimEvent(m_hSimConnect, EventSetCom2Active, "COM2_RADIO_SET");
@@ -1709,7 +1709,7 @@ namespace BlackSimPlugin
if (result.getInterpolationStatus().hasValidSituation()) if (result.getInterpolationStatus().hasValidSituation())
{ {
// update situation // update situation
if (!this->isEqualLastSent(result)) if (!this->isEqualLastSent(result.getInterpolatedSituation()))
{ {
SIMCONNECT_DATA_INITPOSITION position = this->aircraftSituationToFsxPosition(result, sendGround); SIMCONNECT_DATA_INITPOSITION position = this->aircraftSituationToFsxPosition(result, sendGround);
const HRESULT hr = this->logAndTraceSendId( const HRESULT hr = this->logAndTraceSendId(
@@ -2004,8 +2004,7 @@ namespace BlackSimPlugin
const SIMCONNECT_DATA_REQUEST_ID reqId = static_cast<SIMCONNECT_DATA_REQUEST_ID>(simObject.getRequestId(CSimConnectDefinitions::SimObjectPositionData)); const SIMCONNECT_DATA_REQUEST_ID reqId = static_cast<SIMCONNECT_DATA_REQUEST_ID>(simObject.getRequestId(CSimConnectDefinitions::SimObjectPositionData));
const HRESULT result = this->logAndTraceSendId( const HRESULT result = this->logAndTraceSendId(
SimConnect_RequestDataOnSimObject( SimConnect_RequestDataOnSimObject(
m_hSimConnect, reqId, m_hSimConnect, reqId, CSimConnectDefinitions::DataRemoteAircraftGetPosition,
CSimConnectDefinitions::DataRemoteAircraftGetPosition,
simObject.getObjectId(), period), simObject.getObjectId(), period),
simObject, "Cannot request simulator data", Q_FUNC_INFO, "SimConnect_RequestDataOnSimObject"); simObject, "Cannot request simulator data", Q_FUNC_INFO, "SimConnect_RequestDataOnSimObject");
@@ -2058,8 +2057,7 @@ namespace BlackSimPlugin
const SIMCONNECT_DATA_REQUEST_ID requestId = simObject.getRequestId(CSimConnectDefinitions::SimObjectModel); const SIMCONNECT_DATA_REQUEST_ID requestId = simObject.getRequestId(CSimConnectDefinitions::SimObjectModel);
const HRESULT result = this->logAndTraceSendId( const HRESULT result = this->logAndTraceSendId(
SimConnect_RequestDataOnSimObject( SimConnect_RequestDataOnSimObject(
m_hSimConnect, requestId, m_hSimConnect, requestId, CSimConnectDefinitions::DataRemoteAircraftModelData,
CSimConnectDefinitions::DataRemoteAircraftModelData,
simObject.getObjectId(), SIMCONNECT_PERIOD_ONCE), simObject.getObjectId(), SIMCONNECT_PERIOD_ONCE),
simObject, "Cannot request model info", Q_FUNC_INFO, "SimConnect_RequestDataOnSimObject"); simObject, "Cannot request model info", Q_FUNC_INFO, "SimConnect_RequestDataOnSimObject");
return isOk(result); return isOk(result);
@@ -2074,16 +2072,14 @@ namespace BlackSimPlugin
SIMCONNECT_DATA_REQUEST_ID requestId = simObject.getRequestId(CSimConnectDefinitions::SimObjectPositionData); SIMCONNECT_DATA_REQUEST_ID requestId = simObject.getRequestId(CSimConnectDefinitions::SimObjectPositionData);
const HRESULT hr1 = this->logAndTraceSendId( const HRESULT hr1 = this->logAndTraceSendId(
SimConnect_RequestDataOnSimObject( SimConnect_RequestDataOnSimObject(
m_hSimConnect, requestId, m_hSimConnect, requestId, CSimConnectDefinitions::DataRemoteAircraftGetPosition,
CSimConnectDefinitions::DataRemoteAircraftGetPosition,
simObject.getObjectId(), SIMCONNECT_PERIOD_NEVER), simObject.getObjectId(), SIMCONNECT_PERIOD_NEVER),
simObject, "Stopping position request", Q_FUNC_INFO, "SimConnect_RequestDataOnSimObject"); simObject, "Stopping position request", Q_FUNC_INFO, "SimConnect_RequestDataOnSimObject");
requestId = simObject.getRequestId(CSimConnectDefinitions::SimObjectLights); requestId = simObject.getRequestId(CSimConnectDefinitions::SimObjectLights);
const HRESULT hr2 = this->logAndTraceSendId( const HRESULT hr2 = this->logAndTraceSendId(
SimConnect_RequestDataOnSimObject( SimConnect_RequestDataOnSimObject(
m_hSimConnect, requestId, m_hSimConnect, requestId, CSimConnectDefinitions::DataRemoteAircraftLights,
CSimConnectDefinitions::DataRemoteAircraftLights,
simObject.getObjectId(), SIMCONNECT_PERIOD_NEVER), simObject.getObjectId(), SIMCONNECT_PERIOD_NEVER),
simObject, "Stopping lights request", Q_FUNC_INFO, "SimConnect_RequestDataOnSimObject"); simObject, "Stopping lights request", Q_FUNC_INFO, "SimConnect_RequestDataOnSimObject");
return isOk(hr1, hr2); return isOk(hr1, hr2);

View File

@@ -49,7 +49,7 @@ namespace BlackSimPlugin
SystemEventPause, SystemEventPause,
SystemEventFlightLoaded, SystemEventFlightLoaded,
EventPauseToggle, EventPauseToggle,
EventFreezeLat, EventFreezeLatLng,
EventFreezeAlt, EventFreezeAlt,
EventFreezeAtt, EventFreezeAtt,
EventSetCom1Active, EventSetCom1Active,
@@ -239,7 +239,8 @@ namespace BlackSimPlugin
SIMCONNECT_DATA_REQUEST_ID obtainRequestIdForSimObjTerrainProbe(); SIMCONNECT_DATA_REQUEST_ID obtainRequestIdForSimObjTerrainProbe();
//! Release AI control //! Release AI control
bool releaseAIControl(const CSimConnectObject &simObject, SIMCONNECT_DATA_REQUEST_ID requestId); //! \remark P3D version is overridden
virtual bool releaseAIControl(const CSimConnectObject &simObject, SIMCONNECT_DATA_REQUEST_ID requestId);
//! Valid CSimConnectObject which is NOT pendig removed //! Valid CSimConnectObject which is NOT pendig removed
bool isValidSimObjectNotPendingRemoved(const CSimConnectObject &simObject) const; bool isValidSimObjectNotPendingRemoved(const CSimConnectObject &simObject) const;
@@ -250,6 +251,15 @@ namespace BlackSimPlugin
//! Remove the CSimConnectObject linked in the trace //! Remove the CSimConnectObject linked in the trace
bool removeSimObjectForTrace(const TraceFsxSendId &trace); bool removeSimObjectForTrace(const TraceFsxSendId &trace);
//! Trace if required, log errors
HRESULT logAndTraceSendId(HRESULT hr, const QString &warningMsg, const QString &functionName, const QString &functionDetails = {});
//! Trace if required, log errors
HRESULT logAndTraceSendId(HRESULT hr, const CSimConnectObject &simObject, const QString &warningMsg, const QString &functionName, const QString &functionDetails = {});
//! Trace if required, log errors
HRESULT logAndTraceSendId(HRESULT hr, bool traceSendId, const CSimConnectObject &simObject, const QString &warningMsg, const QString &functionName, const QString &functionDetails = {});
//! Register help //! Register help
static void registerHelp(); static void registerHelp();
@@ -463,15 +473,6 @@ namespace BlackSimPlugin
//! Trace the send id //! Trace the send id
void traceSendId(const CSimConnectObject &simObject, const QString &functionName, const QString &details = {}, bool forceTrace = false); void traceSendId(const CSimConnectObject &simObject, const QString &functionName, const QString &details = {}, bool forceTrace = false);
//! Trace if required, log errors
HRESULT logAndTraceSendId(HRESULT hr, const QString &warningMsg, const QString &functionName, const QString &functionDetails = {});
//! Trace if required, log errors
HRESULT logAndTraceSendId(HRESULT hr, const CSimConnectObject &simObject, const QString &warningMsg, const QString &functionName, const QString &functionDetails = {});
//! Trace if required, log errors
HRESULT logAndTraceSendId(HRESULT hr, bool traceSendId, const CSimConnectObject &simObject, const QString &warningMsg, const QString &functionName, const QString &functionDetails = {});
//! Send id trace or given send id //! Send id trace or given send id
TraceFsxSendId getSendIdTrace(DWORD sendId) const; TraceFsxSendId getSendIdTrace(DWORD sendId) const;