From 0da18810030f3d32da041385a54e31a84a8991db Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 14 Aug 2019 23:59:08 +0200 Subject: [PATCH] Ref T709, added support for taxi lights in XPlane, using the "bundle lights" flag --- .../simulator/xplane/simulatorxplane.cpp | 1 + .../xplane/xswiftbustrafficproxy.cpp | 3 ++- .../simulator/xplane/xswiftbustrafficproxy.h | 15 ++++++------- src/xswiftbus/traffic.cpp | 21 ++++++++++++++++--- src/xswiftbus/traffic.h | 3 ++- 5 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index fa511e16f..3a975ca2a 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -932,6 +932,7 @@ namespace BlackSimPlugin planesSurfaces.rudders.push_back(0.0); planesSurfaces.ailerons.push_back(0.0); planesSurfaces.landLights.push_back(parts.getLights().isLandingOn()); + planesSurfaces.taxiLights.push_back(parts.getLights().isTaxiOn()); planesSurfaces.beaconLights.push_back(parts.getLights().isBeaconOn()); planesSurfaces.strobeLights.push_back(parts.getLights().isStrobeOn()); planesSurfaces.navLights.push_back(parts.getLights().isNavOn()); diff --git a/src/plugins/simulator/xplane/xswiftbustrafficproxy.cpp b/src/plugins/simulator/xplane/xswiftbustrafficproxy.cpp index 73a5f1757..6b5462747 100644 --- a/src/plugins/simulator/xplane/xswiftbustrafficproxy.cpp +++ b/src/plugins/simulator/xplane/xswiftbustrafficproxy.cpp @@ -124,7 +124,8 @@ namespace BlackSimPlugin planesSurfaces.spoilers, planesSurfaces.speedBrakes, planesSurfaces.slats, planesSurfaces.wingSweeps, planesSurfaces.thrusts, planesSurfaces.elevators, planesSurfaces.rudders, planesSurfaces.ailerons, - planesSurfaces.landLights, planesSurfaces.beaconLights, planesSurfaces.strobeLights, + planesSurfaces.landLights, planesSurfaces.taxiLights, + planesSurfaces.beaconLights, planesSurfaces.strobeLights, planesSurfaces.navLights, planesSurfaces.lightPatterns); } diff --git a/src/plugins/simulator/xplane/xswiftbustrafficproxy.h b/src/plugins/simulator/xplane/xswiftbustrafficproxy.h index 772b61ca3..65d095d70 100644 --- a/src/plugins/simulator/xplane/xswiftbustrafficproxy.h +++ b/src/plugins/simulator/xplane/xswiftbustrafficproxy.h @@ -74,18 +74,19 @@ namespace BlackSimPlugin QList gears; //!< List of gears QList flaps; //!< List of flaps QList spoilers; //!< List of spoilers - QList speedBrakes; //!< List of speedBrakes + QList speedBrakes; //!< List of speed brakes QList slats; //!< List of slats - QList wingSweeps; //!< List of wingSweeps + QList wingSweeps; //!< List of wing sweeps QList thrusts; //!< List of thrusts QList elevators; //!< List of elevators QList rudders; //!< List of rudders QList ailerons; //!< List of ailerons - QList landLights; //!< List of landLights - QList beaconLights; //!< List of beaconLights - QList strobeLights; //!< List of strobeLights - QList navLights; //!< List of navLights - QList lightPatterns; //!< List of lightPatterns + QList landLights; //!< List of landing lights + QList taxiLights; //!< List of taxi lights + QList beaconLights; //!< List of beacon lights + QList strobeLights; //!< List of strobe lights + QList navLights; //!< List of nav lights + QList lightPatterns; //!< List of light patterns }; //! Plane Transponders diff --git a/src/xswiftbus/traffic.cpp b/src/xswiftbus/traffic.cpp index fb36d118a..add9c0662 100644 --- a/src/xswiftbus/traffic.cpp +++ b/src/xswiftbus/traffic.cpp @@ -418,9 +418,12 @@ namespace XSwiftBus void CTraffic::setPlanesSurfaces(const std::vector &callsigns, const std::vector &gears, const std::vector &flaps, const std::vector &spoilers, const std::vector &speedBrakes, const std::vector &slats, const std::vector &wingSweeps, const std::vector &thrusts, - const std::vector &elevators, const std::vector &rudders, const std::vector &ailerons, const std::vector &landLights, + const std::vector &elevators, const std::vector &rudders, const std::vector &ailerons, + const std::vector &landLights, const std::vector &taxiLights, const std::vector &beaconLights, const std::vector &strobeLights, const std::vector &navLights, const std::vector &lightPatterns) { + const bool bundleTaxiLandingLights = this->getSettings().isBundlingTaxiAndLandingLights(); + for (size_t i = 0; i < callsigns.size(); i++) { auto planeIt = m_planesByCallsign.find(callsigns.at(i)); @@ -440,7 +443,17 @@ namespace XSwiftBus plane->surfaces.yokePitch = static_cast(elevators.at(i)); plane->surfaces.yokeHeading = static_cast(rudders.at(i)); plane->surfaces.yokeRoll = static_cast(ailerons.at(i)); - plane->surfaces.lights.landLights = landLights.at(i); + if (bundleTaxiLandingLights) + { + const bool on = landLights.at(i) || taxiLights.at(i); + plane->surfaces.lights.landLights = on; + plane->surfaces.lights.taxiLights = on; + } + else + { + plane->surfaces.lights.landLights = landLights.at(i); + plane->surfaces.lights.taxiLights = taxiLights.at(i); + } plane->surfaces.lights.bcnLights = beaconLights.at(i); plane->surfaces.lights.strbLights = strobeLights.at(i); plane->surfaces.lights.navLights = navLights.at(i); @@ -712,6 +725,7 @@ namespace XSwiftBus std::vector rudders; std::vector ailerons; std::vector landLights; + std::vector taxiLights; std::vector beaconLights; std::vector strobeLights; std::vector navLights; @@ -729,6 +743,7 @@ namespace XSwiftBus message.getArgument(rudders); message.getArgument(ailerons); message.getArgument(landLights); + message.getArgument(taxiLights); message.getArgument(beaconLights); message.getArgument(strobeLights); message.getArgument(navLights); @@ -736,7 +751,7 @@ namespace XSwiftBus queueDBusCall([ = ]() { setPlanesSurfaces(callsigns, gears, flaps, spoilers, speedBrakes, slats, wingSweeps, thrusts, elevators, - rudders, ailerons, landLights, beaconLights, strobeLights, navLights, lightPatterns); + rudders, ailerons, landLights, taxiLights, beaconLights, strobeLights, navLights, lightPatterns); }); } else if (message.getMethodName() == "setPlanesTransponders") diff --git a/src/xswiftbus/traffic.h b/src/xswiftbus/traffic.h index 2b7dba7d7..29d4082db 100644 --- a/src/xswiftbus/traffic.h +++ b/src/xswiftbus/traffic.h @@ -106,7 +106,8 @@ namespace XSwiftBus //! Set the flight control surfaces and lights of multiple traffic aircrafts void setPlanesSurfaces(const std::vector &callsigns, const std::vector &gears, const std::vector &flaps, const std::vector &spoilers, const std::vector &speedBrakes, const std::vector &slats, const std::vector &wingSweeps, const std::vector &thrusts, - const std::vector &elevators, const std::vector &rudders, const std::vector &ailerons, const std::vector &landLights, + const std::vector &elevators, const std::vector &rudders, const std::vector &ailerons, + const std::vector &landLights, const std::vector &taxiLights, const std::vector &beaconLights, const std::vector &strobeLights, const std::vector &navLights, const std::vector &lightPatterns); //! Set the transponder of multiple traffic aircraft