diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp index 0fb0b9353..a8e4eb7a9 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.cpp @@ -130,6 +130,12 @@ namespace BlackSimPlugin::FsxCommon hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "GENERAL ENG COMBUSTION:2", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "GENERAL ENG COMBUSTION:3", "Bool"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "GENERAL ENG COMBUSTION:4", "Bool"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "VELOCITY WORLD X", "Feet per second"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "VELOCITY WORLD Y", "Feet per second"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "VELOCITY WORLD Z", "Feet per second"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "ROTATION VELOCITY BODY X", "Radians per second"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "ROTATION VELOCITY BODY Y", "Radians per second"); + hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraft, "ROTATION VELOCITY BODY Z", "Radians per second"); hr += SimConnect_AddToDataDefinition(hSimConnect, CSimConnectDefinitions::DataOwnAircraftTitle, "TITLE", nullptr, SIMCONNECT_DATATYPE_STRING256); if (isFailure(hr)) diff --git a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h index f595eea4a..32904e041 100644 --- a/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h +++ b/src/plugins/simulator/fsxcommon/simconnectdatadefinition.h @@ -70,6 +70,13 @@ namespace BlackSimPlugin::FsxCommon double engine3Combustion; //!< Engine 3 combustion flag double engine4Combustion; //!< Engine 4 combustion flag // 38 + double velocityWorldX; //!< Velocity World X + double velocityWorldY; //!< Velocity World Y + double velocityWorldZ; //!< Velocity World Z + double rotationVelocityBodyX; //!< Rotation Velocity Body X + double rotationVelocityBodyY; //!< Rotation Velocity Body Y + double rotationVelocityBodyZ; //!< Rotation Velocity Body Z + // 44 }; //! Data struct of aircraft position diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp index 8377a9daf..1db30001c 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxcommon.cpp @@ -683,6 +683,15 @@ namespace BlackSimPlugin::FsxCommon // it is duplicated in parts aircraftSituation.setOnGround(dtb(simulatorOwnAircraft.simOnGround) ? CAircraftSituation::OnGround : CAircraftSituation::NotOnGround, CAircraftSituation::OutOnGroundOwnAircraft); + CAircraftVelocity aircraftVelocity(simulatorOwnAircraft.velocityWorldX, + simulatorOwnAircraft.velocityWorldY, + simulatorOwnAircraft.velocityWorldZ, CSpeedUnit::ft_s(), + simulatorOwnAircraft.rotationVelocityBodyX, + simulatorOwnAircraft.rotationVelocityBodyZ, + simulatorOwnAircraft.rotationVelocityBodyY, + CAngleUnit::rad(), CTimeUnit::s()); + aircraftSituation.setVelocity(aircraftVelocity); + const CAircraftLights lights(dtb(simulatorOwnAircraft.lightStrobe), dtb(simulatorOwnAircraft.lightLanding), dtb(simulatorOwnAircraft.lightTaxi), dtb(simulatorOwnAircraft.lightBeacon), dtb(simulatorOwnAircraft.lightNav), dtb(simulatorOwnAircraft.lightLogo)); diff --git a/src/plugins/simulator/fsxcommon/simulatorfsxsimconnectproc.cpp b/src/plugins/simulator/fsxcommon/simulatorfsxsimconnectproc.cpp index 62978e778..50ab2e1fa 100644 --- a/src/plugins/simulator/fsxcommon/simulatorfsxsimconnectproc.cpp +++ b/src/plugins/simulator/fsxcommon/simulatorfsxsimconnectproc.cpp @@ -241,7 +241,7 @@ namespace BlackSimPlugin::FsxCommon { case CSimConnectDefinitions::RequestOwnAircraft: { - static_assert(sizeof(DataDefinitionOwnAircraft) == 38 * sizeof(double), "DataDefinitionOwnAircraft has an incorrect size."); + static_assert(sizeof(DataDefinitionOwnAircraft) == 44 * sizeof(double), "DataDefinitionOwnAircraft has an incorrect size."); const DataDefinitionOwnAircraft *ownAircaft = reinterpret_cast(&pObjData->dwData); simulatorFsxP3D->updateOwnAircraftFromSimulator(*ownAircaft); break;