Ref T275, utility functions in simulated aircraft, sim object ..

This commit is contained in:
Klaus Basan
2018-06-28 01:26:08 +02:00
parent 6bcded9264
commit c168262159
8 changed files with 44 additions and 3 deletions

View File

@@ -94,6 +94,12 @@ namespace BlackMisc
//! Constructor, value as CAltitude::MeanSeaLevel
CAltitude(double value, const PhysicalQuantities::CLengthUnit &unit) : CLength(value, unit), m_datum(MeanSeaLevel) {}
//! Constructor, value as CAltitude::MeanSeaLevel
CAltitude(double value, const PhysicalQuantities::CLengthUnit &unit, const PhysicalQuantities::CLengthUnit &switchUnit) : CLength(value, unit), m_datum(MeanSeaLevel)
{
this->switchUnit(switchUnit);
}
//! Altitude as string
CAltitude(const QString &altitudeAsString, PhysicalQuantities::CPqString::SeparatorMode mode = PhysicalQuantities::CPqString::SeparatorsLocale);

View File

@@ -56,6 +56,12 @@ namespace BlackMisc
Q_ASSERT_X(!std::isnan(altitudeMSLft), Q_FUNC_INFO, "elv.nan");
}
CElevationPlane::CElevationPlane(const CLatitude &lat, const CLongitude &lng, const CAltitude &altitude, const CLength &radius) :
CCoordinateGeodetic(lat, lng, altitude), m_radius(radius)
{
Q_ASSERT_X(altitude.isMeanSeaLevel(), Q_FUNC_INFO, "Need MSL");
}
void CElevationPlane::setRadiusOrMinimum(const CLength &radius)
{
m_radius = ((radius.isNull() || radius < CElevationPlane::singlePointRadius())) ? CElevationPlane::singlePointRadius() : radius;

View File

@@ -48,6 +48,9 @@ namespace BlackMisc
//! Plane at given coordinates with radius and altitude
CElevationPlane(double latDeg, double lngDeg, double altitudeMSLft, const PhysicalQuantities::CLength &radius);
//! Plane at given coordinates with radius and altitude
CElevationPlane(const CLatitude &lat, const CLongitude &lng, const Aviation::CAltitude &altitude, const PhysicalQuantities::CLength &radius);
//! Constructors from CCoordinateGeodetic
using CCoordinateGeodetic::CCoordinateGeodetic;

View File

@@ -29,6 +29,12 @@ namespace BlackMisc
//! Init by double value
CLength(double value, const CLengthUnit &unit) : CPhysicalQuantity(value, unit) {}
//! Init by double value and switch unit
CLength(double value, const CLengthUnit &unit, const CLengthUnit &switchUnit) : CPhysicalQuantity(value, unit)
{
this->switchUnit(switchUnit);
}
//! \copydoc CPhysicalQuantity(const QString &unitString)
CLength(const QString &unitString) : CPhysicalQuantity(unitString) {}
};

View File

@@ -479,9 +479,11 @@ namespace BlackMisc
m_models[NetworkModel] = model;
}
void CSimulatedAircraft::setCG(const CLength &cg)
bool CSimulatedAircraft::setCG(const CLength &cg)
{
m_models.setCG(cg);
if (cg.isNull()) { return false; }
const int c = m_models.setCG(cg);
return c > 0;
}
void CSimulatedAircraft::setModelString(const QString &modelString)

View File

@@ -388,7 +388,7 @@ namespace BlackMisc
void setNetworkModel(const CAircraftModel &model);
//! Set the center of gravity
void setCG(const PhysicalQuantities::CLength &cg);
bool setCG(const PhysicalQuantities::CLength &cg);
//! Set callsign
void setCallsign(const Aviation::CCallsign &callsign);

View File

@@ -53,6 +53,18 @@ namespace BlackSimPlugin
m_callsignByteArray = aircraft.getCallsignAsString().toLatin1();
}
void CSimConnectObject::setAircraftModelString(const QString &modelString)
{
if (modelString.isEmpty()) { return; }
m_aircraft.setModelString(modelString);
}
void CSimConnectObject::setAircraftCG(const PhysicalQuantities::CLength &cg)
{
if (cg.isNull()) { return; }
m_aircraft.setCG(cg);
}
void CSimConnectObject::setRequestId(DWORD id)
{
m_requestId = id;

View File

@@ -68,6 +68,12 @@ namespace BlackSimPlugin
//! Set the aircraft
void setAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraft);
//! Set model string
void setAircraftModelString(const QString &modelString);
//! Set CG
void setAircraftCG(const BlackMisc::PhysicalQuantities::CLength &cg);
//! Get current lights (requested from simulator)
const BlackMisc::Aviation::CAircraftLights &getCurrentLightsInSimulator() const { return m_currentLightsInSim; }