mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-30 11:55:35 +08:00
Ref T372, fixed freeze so aircraft is really stable
see https://swift-project.slack.com/archives/G96QTUBEG/p1537784648000100
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user