Fixes from David Megginson for save/restore.
This commit is contained in:
parent
48ba484257
commit
2f22748275
1 changed files with 37 additions and 8 deletions
|
@ -42,7 +42,10 @@
|
||||||
#include <Scenery/scenery.hxx>
|
#include <Scenery/scenery.hxx>
|
||||||
#include <Time/fg_time.hxx>
|
#include <Time/fg_time.hxx>
|
||||||
#include <Time/light.hxx>
|
#include <Time/light.hxx>
|
||||||
|
#include <Time/event.hxx>
|
||||||
|
#include <Time/sunpos.hxx>
|
||||||
#include <Cockpit/radiostack.hxx>
|
#include <Cockpit/radiostack.hxx>
|
||||||
|
#include <Ephemeris/ephemeris.hxx>
|
||||||
#ifndef FG_OLD_WEATHER
|
#ifndef FG_OLD_WEATHER
|
||||||
# include <WeatherCM/FGLocalWeatherDatabase.h>
|
# include <WeatherCM/FGLocalWeatherDatabase.h>
|
||||||
#else
|
#else
|
||||||
|
@ -55,12 +58,6 @@
|
||||||
|
|
||||||
FG_USING_NAMESPACE(std);
|
FG_USING_NAMESPACE(std);
|
||||||
|
|
||||||
// FIXME: these are not part of the
|
|
||||||
// published interface!!!
|
|
||||||
// extern fgAPDataPtr APDataGlobal;
|
|
||||||
// extern void fgAPAltitudeSet (double new_altitude);
|
|
||||||
// extern void fgAPHeadingSet (double new_heading);
|
|
||||||
|
|
||||||
|
|
||||||
#include "bfi.hxx"
|
#include "bfi.hxx"
|
||||||
|
|
||||||
|
@ -117,7 +114,7 @@ FGBFI::reinit ()
|
||||||
setLatitude(getLatitude());
|
setLatitude(getLatitude());
|
||||||
setLongitude(getLongitude());
|
setLongitude(getLongitude());
|
||||||
setAltitude(getAltitude());
|
setAltitude(getAltitude());
|
||||||
setTargetAirport("");
|
|
||||||
// TODO: add more AP stuff
|
// TODO: add more AP stuff
|
||||||
double elevator = getElevator();
|
double elevator = getElevator();
|
||||||
double aileron = getAileron();
|
double aileron = getAileron();
|
||||||
|
@ -135,9 +132,20 @@ FGBFI::reinit ()
|
||||||
double gpsLatitude = getGPSTargetLatitude();
|
double gpsLatitude = getGPSTargetLatitude();
|
||||||
double gpsLongitude = getGPSTargetLongitude();
|
double gpsLongitude = getGPSTargetLongitude();
|
||||||
|
|
||||||
|
setTargetAirport("");
|
||||||
|
cout << "Target airport is " << current_options.get_airport_id() << endl;
|
||||||
fgReInitSubsystems();
|
fgReInitSubsystems();
|
||||||
// solarSystemRebuild();
|
|
||||||
|
// FIXME: this is wrong.
|
||||||
|
// All of these are scheduled events,
|
||||||
|
// and it should be possible to force
|
||||||
|
// them all to run once.
|
||||||
|
fgUpdateSunPos();
|
||||||
|
fgUpdateMoonPos();
|
||||||
cur_light_params.Update();
|
cur_light_params.Update();
|
||||||
|
FGTime::cur_time_params->updateLocal();
|
||||||
|
fgUpdateWeatherDatabase();
|
||||||
|
fgRadioSearch();
|
||||||
|
|
||||||
// Restore all of the old states.
|
// Restore all of the old states.
|
||||||
setElevator(elevator);
|
setElevator(elevator);
|
||||||
|
@ -331,6 +339,7 @@ void
|
||||||
FGBFI::setLatitude (double latitude)
|
FGBFI::setLatitude (double latitude)
|
||||||
{
|
{
|
||||||
current_options.set_lat(latitude);
|
current_options.set_lat(latitude);
|
||||||
|
current_aircraft.fdm_state->set_Latitude(latitude * DEG_TO_RAD);
|
||||||
needReinit();
|
needReinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -352,6 +361,7 @@ void
|
||||||
FGBFI::setLongitude (double longitude)
|
FGBFI::setLongitude (double longitude)
|
||||||
{
|
{
|
||||||
current_options.set_lon(longitude);
|
current_options.set_lon(longitude);
|
||||||
|
current_aircraft.fdm_state->set_Longitude(longitude * DEG_TO_RAD);
|
||||||
needReinit();
|
needReinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -385,6 +395,7 @@ void
|
||||||
FGBFI::setAltitude (double altitude)
|
FGBFI::setAltitude (double altitude)
|
||||||
{
|
{
|
||||||
current_options.set_altitude(altitude * FEET_TO_METER);
|
current_options.set_altitude(altitude * FEET_TO_METER);
|
||||||
|
current_aircraft.fdm_state->set_Altitude(altitude);
|
||||||
needReinit();
|
needReinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -422,6 +433,9 @@ void
|
||||||
FGBFI::setHeading (double heading)
|
FGBFI::setHeading (double heading)
|
||||||
{
|
{
|
||||||
current_options.set_heading(heading);
|
current_options.set_heading(heading);
|
||||||
|
current_aircraft.fdm_state->set_Euler_Angles(getRoll() * DEG_TO_RAD,
|
||||||
|
getPitch() * DEG_TO_RAD,
|
||||||
|
heading * DEG_TO_RAD);
|
||||||
needReinit();
|
needReinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -444,6 +458,9 @@ FGBFI::setPitch (double pitch)
|
||||||
{
|
{
|
||||||
|
|
||||||
current_options.set_pitch(pitch);
|
current_options.set_pitch(pitch);
|
||||||
|
current_aircraft.fdm_state->set_Euler_Angles(getRoll() * DEG_TO_RAD,
|
||||||
|
pitch * DEG_TO_RAD,
|
||||||
|
getHeading() * DEG_TO_RAD);
|
||||||
needReinit();
|
needReinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -465,6 +482,9 @@ void
|
||||||
FGBFI::setRoll (double roll)
|
FGBFI::setRoll (double roll)
|
||||||
{
|
{
|
||||||
current_options.set_roll(roll);
|
current_options.set_roll(roll);
|
||||||
|
current_aircraft.fdm_state->set_Euler_Angles(roll * DEG_TO_RAD,
|
||||||
|
getPitch() * DEG_TO_RAD,
|
||||||
|
getHeading() * DEG_TO_RAD);
|
||||||
needReinit();
|
needReinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -524,6 +544,9 @@ void
|
||||||
FGBFI::setSpeedNorth (double speed)
|
FGBFI::setSpeedNorth (double speed)
|
||||||
{
|
{
|
||||||
current_options.set_uBody(speed);
|
current_options.set_uBody(speed);
|
||||||
|
current_aircraft.fdm_state->set_Velocities_Local(speed,
|
||||||
|
getSpeedEast(),
|
||||||
|
getSpeedDown());
|
||||||
needReinit();
|
needReinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -545,6 +568,9 @@ void
|
||||||
FGBFI::setSpeedEast (double speed)
|
FGBFI::setSpeedEast (double speed)
|
||||||
{
|
{
|
||||||
current_options.set_vBody(speed);
|
current_options.set_vBody(speed);
|
||||||
|
current_aircraft.fdm_state->set_Velocities_Local(getSpeedNorth(),
|
||||||
|
speed,
|
||||||
|
getSpeedDown());
|
||||||
needReinit();
|
needReinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -566,6 +592,9 @@ void
|
||||||
FGBFI::setSpeedDown (double speed)
|
FGBFI::setSpeedDown (double speed)
|
||||||
{
|
{
|
||||||
current_options.set_wBody(speed);
|
current_options.set_wBody(speed);
|
||||||
|
current_aircraft.fdm_state->set_Velocities_Local(getSpeedNorth(),
|
||||||
|
getSpeedEast(),
|
||||||
|
speed);
|
||||||
needReinit();
|
needReinit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue