Make sure values get back to FGInterface, in case we're not trimming.
This is especially important for setting multiple values like Euler angles.
This commit is contained in:
parent
eff59b94a6
commit
64e81d1960
1 changed files with 29 additions and 1 deletions
|
@ -627,6 +627,9 @@ void FGJSBsim::set_Latitude(double lat) {
|
||||||
double alt;
|
double alt;
|
||||||
double sea_level_radius_meters, lat_geoc;
|
double sea_level_radius_meters, lat_geoc;
|
||||||
|
|
||||||
|
// In case we're not trimming
|
||||||
|
FGInterface::set_Latitude(lat);
|
||||||
|
|
||||||
if ( altitude->getDoubleValue() > -9990 ) {
|
if ( altitude->getDoubleValue() > -9990 ) {
|
||||||
alt = altitude->getDoubleValue();
|
alt = altitude->getDoubleValue();
|
||||||
} else {
|
} else {
|
||||||
|
@ -650,6 +653,10 @@ void FGJSBsim::set_Latitude(double lat) {
|
||||||
void FGJSBsim::set_Longitude(double lon) {
|
void FGJSBsim::set_Longitude(double lon) {
|
||||||
|
|
||||||
SG_LOG(SG_FLIGHT,SG_INFO,"FGJSBsim::set_Longitude: " << lon );
|
SG_LOG(SG_FLIGHT,SG_INFO,"FGJSBsim::set_Longitude: " << lon );
|
||||||
|
|
||||||
|
// In case we're not trimming
|
||||||
|
FGInterface::set_Longitude(lon);
|
||||||
|
|
||||||
update_ic();
|
update_ic();
|
||||||
fgic->SetLongitudeRadIC( lon );
|
fgic->SetLongitudeRadIC( lon );
|
||||||
_set_Runway_altitude( cur_fdm_state->get_Runway_altitude() );
|
_set_Runway_altitude( cur_fdm_state->get_Runway_altitude() );
|
||||||
|
@ -665,6 +672,9 @@ void FGJSBsim::set_Altitude(double alt) {
|
||||||
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Altitude: " << alt );
|
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Altitude: " << alt );
|
||||||
SG_LOG(SG_FLIGHT,SG_INFO, " lat (deg) = " << latitude->getDoubleValue() );
|
SG_LOG(SG_FLIGHT,SG_INFO, " lat (deg) = " << latitude->getDoubleValue() );
|
||||||
|
|
||||||
|
// In case we're not trimming
|
||||||
|
FGInterface::set_Altitude(alt);
|
||||||
|
|
||||||
update_ic();
|
update_ic();
|
||||||
sgGeodToGeoc( latitude->getDoubleValue() * SGD_DEGREES_TO_RADIANS, alt,
|
sgGeodToGeoc( latitude->getDoubleValue() * SGD_DEGREES_TO_RADIANS, alt,
|
||||||
&sea_level_radius_meters, &lat_geoc);
|
&sea_level_radius_meters, &lat_geoc);
|
||||||
|
@ -682,6 +692,9 @@ void FGJSBsim::set_Altitude(double alt) {
|
||||||
void FGJSBsim::set_V_calibrated_kts(double vc) {
|
void FGJSBsim::set_V_calibrated_kts(double vc) {
|
||||||
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_V_calibrated_kts: " << vc );
|
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_V_calibrated_kts: " << vc );
|
||||||
|
|
||||||
|
// In case we're not trimming
|
||||||
|
FGInterface::set_V_calibrated_kts(vc);
|
||||||
|
|
||||||
update_ic();
|
update_ic();
|
||||||
fgic->SetVcalibratedKtsIC(vc);
|
fgic->SetVcalibratedKtsIC(vc);
|
||||||
needTrim=true;
|
needTrim=true;
|
||||||
|
@ -690,6 +703,9 @@ void FGJSBsim::set_V_calibrated_kts(double vc) {
|
||||||
void FGJSBsim::set_Mach_number(double mach) {
|
void FGJSBsim::set_Mach_number(double mach) {
|
||||||
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Mach_number: " << mach );
|
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Mach_number: " << mach );
|
||||||
|
|
||||||
|
// In case we're not trimming
|
||||||
|
FGInterface::set_Mach_number(mach);
|
||||||
|
|
||||||
update_ic();
|
update_ic();
|
||||||
fgic->SetMachIC(mach);
|
fgic->SetMachIC(mach);
|
||||||
needTrim=true;
|
needTrim=true;
|
||||||
|
@ -699,6 +715,9 @@ void FGJSBsim::set_Velocities_Local( double north, double east, double down ){
|
||||||
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Velocities_Local: "
|
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Velocities_Local: "
|
||||||
<< north << ", " << east << ", " << down );
|
<< north << ", " << east << ", " << down );
|
||||||
|
|
||||||
|
// In case we're not trimming
|
||||||
|
FGInterface::set_Velocities_Local(north, east, down);
|
||||||
|
|
||||||
update_ic();
|
update_ic();
|
||||||
fgic->SetVnorthFpsIC(north);
|
fgic->SetVnorthFpsIC(north);
|
||||||
fgic->SetVeastFpsIC(east);
|
fgic->SetVeastFpsIC(east);
|
||||||
|
@ -710,6 +729,9 @@ void FGJSBsim::set_Velocities_Wind_Body( double u, double v, double w){
|
||||||
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Velocities_Wind_Body: "
|
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Velocities_Wind_Body: "
|
||||||
<< u << ", " << v << ", " << w );
|
<< u << ", " << v << ", " << w );
|
||||||
|
|
||||||
|
// In case we're not trimming
|
||||||
|
FGInterface::set_Velocities_Wind_Body(u, v, w);
|
||||||
|
|
||||||
update_ic();
|
update_ic();
|
||||||
fgic->SetUBodyFpsIC(u);
|
fgic->SetUBodyFpsIC(u);
|
||||||
fgic->SetVBodyFpsIC(v);
|
fgic->SetVBodyFpsIC(v);
|
||||||
|
@ -722,6 +744,9 @@ void FGJSBsim::set_Euler_Angles( double phi, double theta, double psi ) {
|
||||||
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Euler_Angles: "
|
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Euler_Angles: "
|
||||||
<< phi << ", " << theta << ", " << psi );
|
<< phi << ", " << theta << ", " << psi );
|
||||||
|
|
||||||
|
// In case we're not trimming
|
||||||
|
FGInterface::set_Euler_Angles(phi, theta, psi);
|
||||||
|
|
||||||
update_ic();
|
update_ic();
|
||||||
fgic->SetPitchAngleRadIC(theta);
|
fgic->SetPitchAngleRadIC(theta);
|
||||||
fgic->SetRollAngleRadIC(phi);
|
fgic->SetRollAngleRadIC(phi);
|
||||||
|
@ -733,6 +758,9 @@ void FGJSBsim::set_Euler_Angles( double phi, double theta, double psi ) {
|
||||||
void FGJSBsim::set_Climb_Rate( double roc) {
|
void FGJSBsim::set_Climb_Rate( double roc) {
|
||||||
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Climb_Rate: " << roc );
|
SG_LOG(SG_FLIGHT,SG_INFO, "FGJSBsim::set_Climb_Rate: " << roc );
|
||||||
|
|
||||||
|
// In case we're not trimming
|
||||||
|
FGInterface::set_Climb_Rate(roc);
|
||||||
|
|
||||||
update_ic();
|
update_ic();
|
||||||
//since both climb rate and flight path angle are set in the FG
|
//since both climb rate and flight path angle are set in the FG
|
||||||
//startup sequence, something is needed to keep one from cancelling
|
//startup sequence, something is needed to keep one from cancelling
|
||||||
|
|
Loading…
Add table
Reference in a new issue