From 66c97cfe2efb2b9ba3636ae33502efcde7a3fb3c Mon Sep 17 00:00:00 2001 From: Lars Toenning Date: Sat, 12 Feb 2022 00:53:18 +0100 Subject: [PATCH] [FG] Set velocities to 0 if simulator is paused --- .../simulator/flightgear/simulatorflightgear.cpp | 16 +++++++++++++--- .../simulator/flightgear/simulatorflightgear.h | 2 ++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/plugins/simulator/flightgear/simulatorflightgear.cpp b/src/plugins/simulator/flightgear/simulatorflightgear.cpp index 0811c20f2..68369e756 100644 --- a/src/plugins/simulator/flightgear/simulatorflightgear.cpp +++ b/src/plugins/simulator/flightgear/simulatorflightgear.cpp @@ -200,6 +200,7 @@ namespace BlackSimPlugin::Flightgear { m_serviceProxy->getOwnAircraftSituationData(&m_flightgearData); m_serviceProxy->getOwnAircraftVelocityData(&m_flightgearData); + m_serviceProxy->isPausedAsync(&m_simulatorPaused); m_serviceProxy->getCom1ActiveKhzAsync(&m_flightgearData.com1ActiveKhz); m_serviceProxy->getCom1StandbyKhzAsync(&m_flightgearData.com1StandbyKhz); m_serviceProxy->getCom2ActiveKhzAsync(&m_flightgearData.com2ActiveKhz); @@ -221,9 +222,18 @@ namespace BlackSimPlugin::Flightgear situation.setBank({ m_flightgearData.rollDeg, CAngleUnit::deg() }); situation.setGroundSpeed({ m_flightgearData.groundspeedKts, CSpeedUnit::kts() }); situation.setGroundElevation(CAltitude(m_flightgearData.groundElevation, CAltitude::MeanSeaLevel, CLengthUnit::m()), CAircraftSituation::FromProvider); - situation.setVelocity({ m_flightgearData.velocityXMs, m_flightgearData.velocityYMs, m_flightgearData.velocityZMs, - CSpeedUnit::m_s(), m_flightgearData.pitchRateRadPerSec, m_flightgearData.rollRateRadPerSec, m_flightgearData.yawRateRadPerSec, - CAngleUnit::rad(), CTimeUnit::s()}); + + if (!m_simulatorPaused) + { + situation.setVelocity({ m_flightgearData.velocityXMs, m_flightgearData.velocityYMs, m_flightgearData.velocityZMs, + CSpeedUnit::m_s(), m_flightgearData.pitchRateRadPerSec, m_flightgearData.rollRateRadPerSec, m_flightgearData.yawRateRadPerSec, + CAngleUnit::rad(), CTimeUnit::s()}); + } + else + { + situation.setVelocity({ 0.0, 0.0, 0.0, CSpeedUnit::m_s(), 0.0, 0.0, 0.0, CAngleUnit::rad(), CTimeUnit::s()}); + } + // Updates // Do not update ICAO codes, as this overrides reverse lookups diff --git a/src/plugins/simulator/flightgear/simulatorflightgear.h b/src/plugins/simulator/flightgear/simulatorflightgear.h index 770f62b45..c328579f6 100644 --- a/src/plugins/simulator/flightgear/simulatorflightgear.h +++ b/src/plugins/simulator/flightgear/simulatorflightgear.h @@ -244,6 +244,8 @@ namespace BlackSimPlugin::Flightgear qint64 m_statsAddMaxTimeMs = -1; qint64 m_statsAddCurrentTimeMs = -1; + bool m_simulatorPaused = false; + //! Reset the Flightgear data void resetFlightgearData() {