mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-02 23:25:53 +08:00
Ref T778 XSwiftBus traffic service prodives water/land flag for elevations
This commit is contained in:
@@ -245,7 +245,7 @@ namespace BlackSimPlugin
|
||||
if (!myself) { return; }
|
||||
|
||||
// updates in providers and emits signal
|
||||
ISimulator::callbackReceivedRequestedElevation(elv, callsign);
|
||||
ISimulator::callbackReceivedRequestedElevation(elv, callsign, false);
|
||||
});
|
||||
|
||||
emit this->requestedElevation(callsign);
|
||||
|
||||
@@ -849,7 +849,7 @@ namespace BlackSimPlugin
|
||||
}
|
||||
|
||||
using namespace std::placeholders;
|
||||
auto callback = std::bind(&CSimulatorFlightgear::callbackReceivedRequestedElevation, this, _1, _2);
|
||||
auto callback = std::bind(&CSimulatorFlightgear::callbackReceivedRequestedElevation, this, _1, _2, false);
|
||||
|
||||
// Request
|
||||
m_trafficProxy->getElevationAtPosition(callsign,
|
||||
|
||||
@@ -897,7 +897,7 @@ namespace BlackSimPlugin
|
||||
void CSimulatorFsxCommon::updateProbeFromSimulator(const CCallsign &callsign, const DataDefinitionPosData &remoteAircraftData)
|
||||
{
|
||||
const CElevationPlane elevation(remoteAircraftData.latitudeDeg, remoteAircraftData.longitudeDeg, remoteAircraftData.elevationFt, CElevationPlane::singlePointRadius());
|
||||
this->callbackReceivedRequestedElevation(elevation, callsign);
|
||||
this->callbackReceivedRequestedElevation(elevation, callsign, false);
|
||||
}
|
||||
|
||||
void CSimulatorFsxCommon::updateOwnAircraftFromSimulator(const DataDefinitionClientAreaSb &sbDataArea)
|
||||
|
||||
@@ -92,7 +92,7 @@ namespace BlackSimPlugin
|
||||
const CElevationPlane ep(coordinate, CElevationPlane::singlePointRadius());
|
||||
|
||||
const CCallsign cs(simulatorP3D->getCallsignForPendingProbeRequests(requestId, true));
|
||||
simulatorP3D->callbackReceivedRequestedElevation(ep, cs);
|
||||
simulatorP3D->callbackReceivedRequestedElevation(ep, cs, false);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -213,7 +213,7 @@ namespace BlackSimPlugin
|
||||
return true;
|
||||
}
|
||||
|
||||
void CSimulatorXPlane::callbackReceivedRequestedElevation(const CElevationPlane &plane, const CCallsign &callsign)
|
||||
void CSimulatorXPlane::callbackReceivedRequestedElevation(const CElevationPlane &plane, const CCallsign &callsign, bool isWater)
|
||||
{
|
||||
static const QString hint("probe callback");
|
||||
if (!this->handleProbeValue(plane, callsign, hint, false))
|
||||
@@ -221,7 +221,7 @@ namespace BlackSimPlugin
|
||||
this->removePendingElevationRequest(callsign);
|
||||
return;
|
||||
}
|
||||
CSimulatorPluginCommon::callbackReceivedRequestedElevation(plane, callsign);
|
||||
CSimulatorPluginCommon::callbackReceivedRequestedElevation(plane, callsign, isWater);
|
||||
}
|
||||
|
||||
bool CSimulatorXPlane::isSuspiciousTerrainValue(const CElevationPlane &elevation)
|
||||
@@ -273,7 +273,7 @@ namespace BlackSimPlugin
|
||||
}
|
||||
|
||||
using namespace std::placeholders;
|
||||
auto callback = std::bind(&CSimulatorXPlane::callbackReceivedRequestedElevation, this, _1, _2);
|
||||
auto callback = std::bind(&CSimulatorXPlane::callbackReceivedRequestedElevation, this, _1, _2, _3);
|
||||
|
||||
// Request
|
||||
m_trafficProxy->getElevationAtPosition(callsign,
|
||||
@@ -1088,10 +1088,10 @@ namespace BlackSimPlugin
|
||||
if (!m_trafficProxy || this->isShuttingDown()) { return; }
|
||||
const QStringList csStrings = callsigns.getCallsignStrings();
|
||||
QPointer<CSimulatorXPlane> myself(this);
|
||||
m_trafficProxy->getRemoteAircraftData(csStrings, [ = ](const QStringList & callsigns, const QDoubleList & latitudesDeg, const QDoubleList & longitudesDeg, const QDoubleList & elevationsMeters, const QDoubleList & verticalOffsetsMeters)
|
||||
m_trafficProxy->getRemoteAircraftData(csStrings, [ = ](const QStringList & callsigns, const QDoubleList & latitudesDeg, const QDoubleList & longitudesDeg, const QDoubleList & elevationsMeters, const QBoolList &waterFlags, const QDoubleList & verticalOffsetsMeters)
|
||||
{
|
||||
if (!myself) { return; }
|
||||
this->updateRemoteAircraftFromSimulator(callsigns, latitudesDeg, longitudesDeg, elevationsMeters, verticalOffsetsMeters);
|
||||
this->updateRemoteAircraftFromSimulator(callsigns, latitudesDeg, longitudesDeg, elevationsMeters, waterFlags, verticalOffsetsMeters);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1108,7 +1108,7 @@ namespace BlackSimPlugin
|
||||
|
||||
void CSimulatorXPlane::updateRemoteAircraftFromSimulator(
|
||||
const QStringList &callsigns, const QDoubleList &latitudesDeg, const QDoubleList &longitudesDeg,
|
||||
const QDoubleList &elevationsMeters, const QDoubleList &verticalOffsetsMeters)
|
||||
const QDoubleList &elevationsMeters, const QBoolList &waterFlags, const QDoubleList &verticalOffsetsMeters)
|
||||
{
|
||||
const int size = callsigns.size();
|
||||
|
||||
@@ -1116,6 +1116,7 @@ namespace BlackSimPlugin
|
||||
if (CBuildConfig::isLocalDeveloperDebugBuild())
|
||||
{
|
||||
Q_ASSERT_X(elevationsMeters.size() == size, Q_FUNC_INFO, "Wrong elevations");
|
||||
Q_ASSERT_X(waterFlags.size() == size, Q_FUNC_INFO, "Wrong waterFlags");
|
||||
Q_ASSERT_X(latitudesDeg.size() == size, Q_FUNC_INFO, "Wrong latitudesDeg");
|
||||
Q_ASSERT_X(longitudesDeg.size() == size, Q_FUNC_INFO, "Wrong longitudesDeg");
|
||||
Q_ASSERT_X(verticalOffsetsMeters.size() == size, Q_FUNC_INFO, "Wrong CG");
|
||||
@@ -1152,6 +1153,7 @@ namespace BlackSimPlugin
|
||||
// with T778 we do NOT use this function for elevation here if "isSuspicious"
|
||||
const bool useElevation = this->handleProbeValue(elevation, cs, hint, true);
|
||||
this->rememberElevationAndSimulatorCG(cs, xpAircraft.getAircraftModel(), false, useElevation ? elevation : CElevationPlane::null(), cg);
|
||||
Q_UNUSED(waterFlags)
|
||||
|
||||
// loopback
|
||||
if (logCallsigns.contains(cs))
|
||||
|
||||
@@ -144,7 +144,7 @@ namespace BlackSimPlugin
|
||||
virtual void resetAircraftStatistics() override;
|
||||
virtual BlackMisc::CStatusMessageList getInterpolationMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override;
|
||||
virtual void callbackReceivedRequestedElevation(const BlackMisc::Geo::CElevationPlane &plane, const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
virtual void callbackReceivedRequestedElevation(const BlackMisc::Geo::CElevationPlane &plane, const BlackMisc::Aviation::CCallsign &callsign, bool isWater) override;
|
||||
//! @}
|
||||
|
||||
//! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation
|
||||
@@ -178,6 +178,7 @@ namespace BlackSimPlugin
|
||||
};
|
||||
|
||||
using QDoubleList = QList<double>;
|
||||
using QBoolList = QList<bool>;
|
||||
|
||||
void setAirportsInRange(const QStringList &icaoCodes, const QStringList &names, const BlackMisc::CSequence<double> &lats, const BlackMisc::CSequence<double> &lons, const BlackMisc::CSequence<double> &alts);
|
||||
void emitOwnAircraftModelChanged(const QString &path, const QString &filename, const QString &livery, const QString &icao,
|
||||
@@ -222,7 +223,7 @@ namespace BlackSimPlugin
|
||||
void onRemoteAircraftAdded(const QString &callsign);
|
||||
void onRemoteAircraftAddingFailed(const QString &callsign);
|
||||
void updateRemoteAircraftFromSimulator(const QStringList &callsigns, const QDoubleList &latitudesDeg, const QDoubleList &longitudesDeg,
|
||||
const QDoubleList &elevationsMeters, const QDoubleList &verticalOffsetsMeters);
|
||||
const QDoubleList &elevationsMeters, const QBoolList &waterFlags, const QDoubleList &verticalOffsetsMeters);
|
||||
//! @}
|
||||
|
||||
//! Disconnect from DBus
|
||||
|
||||
@@ -155,15 +155,16 @@ namespace BlackSimPlugin
|
||||
{
|
||||
std::function<void(QDBusPendingCallWatcher *)> callback = [ = ](QDBusPendingCallWatcher * watcher)
|
||||
{
|
||||
QDBusPendingReply<QStringList, QList<double>, QList<double>, QList<double>, QList<double>> reply = *watcher;
|
||||
QDBusPendingReply<QStringList, QList<double>, QList<double>, QList<double>, QList<bool>, QList<double>> reply = *watcher;
|
||||
if (!reply.isError())
|
||||
{
|
||||
const QStringList callsigns = reply.argumentAt<0>();
|
||||
const QList<double> latitudesDeg = reply.argumentAt<1>();
|
||||
const QList<double> longitudesDeg = reply.argumentAt<2>();
|
||||
const QList<double> elevationsM = reply.argumentAt<3>();
|
||||
const QList<double> verticalOffsets = reply.argumentAt<4>();
|
||||
setter(callsigns, latitudesDeg, longitudesDeg, elevationsM, verticalOffsets);
|
||||
const QList<bool> waterFlags = reply.argumentAt<4>();
|
||||
const QList<double> verticalOffsets = reply.argumentAt<5>();
|
||||
setter(callsigns, latitudesDeg, longitudesDeg, elevationsM, waterFlags, verticalOffsets);
|
||||
}
|
||||
watcher->deleteLater();
|
||||
};
|
||||
@@ -175,7 +176,7 @@ namespace BlackSimPlugin
|
||||
{
|
||||
std::function<void(QDBusPendingCallWatcher *)> callback = [ = ](QDBusPendingCallWatcher * watcher)
|
||||
{
|
||||
QDBusPendingReply<QString, double, double, double> reply = *watcher;
|
||||
QDBusPendingReply<QString, double, double, double, bool> reply = *watcher;
|
||||
if (!reply.isError())
|
||||
{
|
||||
const CCallsign cs(reply.argumentAt<0>());
|
||||
@@ -186,8 +187,9 @@ namespace BlackSimPlugin
|
||||
const CElevationPlane elevation(CLatitude(latitudeDegrees, CAngleUnit::deg()),
|
||||
CLongitude(longitudeDegrees, CAngleUnit::deg()),
|
||||
elevationAlt, CElevationPlane::singlePointRadius());
|
||||
setter(elevation, cs);
|
||||
// CLogMessage(this).debug(u"XPlane elv. response: '%1' %2 %3 %4") << cs.asString() << latitudeDeg << longitudeDeg << elevationMeters;
|
||||
const bool isWater = reply.argumentAt<4>();
|
||||
setter(elevation, cs, isWater);
|
||||
// CLogMessage(this).debug(u"XPlane elv. response: '%1' %2 %3 %4 %5") << cs.asString() << latitudeDeg << longitudeDeg << elevationMeters << isWater;
|
||||
}
|
||||
watcher->deleteLater();
|
||||
};
|
||||
|
||||
@@ -38,6 +38,9 @@ namespace BlackSimPlugin
|
||||
//! List of doubles
|
||||
using QDoubleList = QList<double>;
|
||||
|
||||
//! List of bools
|
||||
using QBoolList = QList<bool>;
|
||||
|
||||
//! Planes positions
|
||||
struct PlanesPositions
|
||||
{
|
||||
@@ -155,10 +158,10 @@ namespace BlackSimPlugin
|
||||
|
||||
public:
|
||||
//! Elevation callback
|
||||
using ElevationCallback = std::function<void (const BlackMisc::Geo::CElevationPlane &, const BlackMisc::Aviation::CCallsign &)>;
|
||||
using ElevationCallback = std::function<void (const BlackMisc::Geo::CElevationPlane &, const BlackMisc::Aviation::CCallsign &, bool)>;
|
||||
|
||||
//! Remote aircrafts data callback
|
||||
using RemoteAircraftDataCallback = std::function<void (const QStringList &, const QDoubleList &, const QDoubleList &, const QDoubleList &, const QDoubleList &)>;
|
||||
using RemoteAircraftDataCallback = std::function<void (const QStringList &, const QDoubleList &, const QDoubleList &, const QDoubleList &, const QBoolList &, const QDoubleList &)>;
|
||||
|
||||
//! Service name
|
||||
static const QString &InterfaceName()
|
||||
|
||||
Reference in New Issue
Block a user