mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-23 07:15:35 +08:00
refs #873, better guessing of parts (clients without aircraft config)
This commit is contained in:
committed by
Mathew Sutcliffe
parent
f0cbe3b332
commit
01b79a76a6
@@ -191,6 +191,27 @@ namespace BlackSimPlugin
|
||||
rhs.engine1Combustion, rhs.engine2Combustion, rhs.engine3Combustion, rhs.engine4Combustion);
|
||||
}
|
||||
|
||||
void DataDefinitionRemoteAircraftParts::setAllEngines(bool on)
|
||||
{
|
||||
engine1Combustion = on ? 1 : 0;
|
||||
engine2Combustion = on ? 1 : 0;
|
||||
engine3Combustion = on ? 1 : 0;
|
||||
engine4Combustion = on ? 1 : 0;
|
||||
}
|
||||
|
||||
void DataDefinitionRemoteAircraftParts::resetAllFlaps()
|
||||
{
|
||||
flapsLeadingEdgeLeftPercent = 0;
|
||||
flapsLeadingEdgeRightPercent = 0;
|
||||
flapsTrailingEdgeLeftPercent = 0;
|
||||
flapsTrailingEdgeRightPercent = 0;
|
||||
}
|
||||
|
||||
void DataDefinitionRemoteAircraftParts::resetSpoilers()
|
||||
{
|
||||
spoilersHandlePosition = 0;
|
||||
}
|
||||
|
||||
CAircraftLights DataDefinitionRemoteAircraftLights::toLights() const
|
||||
{
|
||||
return CAircraftLights(lightStrobe, lightLanding, lightTaxi, lightBeacon, lightNav, lightLogo);
|
||||
|
||||
@@ -90,6 +90,15 @@ namespace BlackSimPlugin
|
||||
|
||||
//! Equal to other parts
|
||||
bool operator==(const DataDefinitionRemoteAircraftParts &rhs) const;
|
||||
|
||||
//! All engines on/off
|
||||
void setAllEngines(bool on);
|
||||
|
||||
//! Reset all flaps
|
||||
void resetAllFlaps();
|
||||
|
||||
//! Reset spoilers
|
||||
void resetSpoilers();
|
||||
};
|
||||
|
||||
//! Data for aircraft lighs
|
||||
|
||||
@@ -954,26 +954,27 @@ namespace BlackSimPlugin
|
||||
if (!simObj.hasValidRequestAndObjectId()) { return false; }
|
||||
if (!interpolationStatus.didInterpolationSucceed()) { return false; }
|
||||
|
||||
CAircraftLights lights;
|
||||
DataDefinitionRemoteAircraftParts ddRemoteAircraftParts = {}; // init members
|
||||
const bool isOnGround = interpolatedSituation.isOnGround() == CAircraftSituation::OnGround;
|
||||
ddRemoteAircraftParts.gearHandlePosition = isOnGround ? 1 : 0;
|
||||
CAircraftLights lights;
|
||||
const double gsKts = interpolatedSituation.getGroundSpeed().value(CSpeedUnit::kts());
|
||||
ddRemoteAircraftParts.setAllEngines(true);
|
||||
|
||||
// when first detected moving, lights on
|
||||
if (isOnGround)
|
||||
{
|
||||
ddRemoteAircraftParts.gearHandlePosition = 1;
|
||||
lights.setTaxiOn(true);
|
||||
lights.setBeaconOn(true);
|
||||
lights.setNavOn(true);
|
||||
|
||||
double gskmh = interpolatedSituation.getGroundSpeed().value(CSpeedUnit::km_h());
|
||||
if (gskmh > 7.5)
|
||||
if (gsKts > 5)
|
||||
{
|
||||
// mode taxi
|
||||
lights.setTaxiOn(true);
|
||||
lights.setLandingOn(false);
|
||||
}
|
||||
else if (gskmh > 40)
|
||||
else if (gsKts > 30)
|
||||
{
|
||||
// mode accelaration for takeoff
|
||||
lights.setTaxiOn(false);
|
||||
@@ -984,15 +985,34 @@ namespace BlackSimPlugin
|
||||
// slow movements or parking
|
||||
lights.setTaxiOn(false);
|
||||
lights.setLandingOn(false);
|
||||
ddRemoteAircraftParts.setAllEngines(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// not on ground
|
||||
ddRemoteAircraftParts.gearHandlePosition = 0;
|
||||
lights.setTaxiOn(false);
|
||||
lights.setBeaconOn(true);
|
||||
lights.setNavOn(true);
|
||||
// landing lights for < 10000ft (normally MSL, here ignored)
|
||||
lights.setLandingOn(interpolatedSituation.getAltitude().value(CLengthUnit::ft()) < 10000);
|
||||
|
||||
if (!simObj.isVtol() && interpolatedSituation.hasGroundElevation())
|
||||
{
|
||||
if (interpolatedSituation.getHeightAboveGround().value(CLengthUnit::ft()) < 1000)
|
||||
{
|
||||
ddRemoteAircraftParts.gearHandlePosition = 1;
|
||||
ddRemoteAircraftParts.flapsTrailingEdgeRightPercent = 25;
|
||||
ddRemoteAircraftParts.flapsTrailingEdgeLeftPercent = 25;
|
||||
}
|
||||
else if (interpolatedSituation.getHeightAboveGround().value(CLengthUnit::ft()) < 2000)
|
||||
{
|
||||
ddRemoteAircraftParts.gearHandlePosition = 1;
|
||||
ddRemoteAircraftParts.flapsTrailingEdgeRightPercent = 10;
|
||||
ddRemoteAircraftParts.flapsTrailingEdgeLeftPercent = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return this->sendRemoteAircraftPartsToSimulator(simObj, ddRemoteAircraftParts, lights);
|
||||
|
||||
Reference in New Issue
Block a user