X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fbfi.cxx;h=63687fea0d9cc513f6d956a59fd5e9543fbd1c6d;hb=7a4da944253124295957728d9e8e550ddbb913d7;hp=ca61b498c3c4fb806c790cf05930c8eba613741c;hpb=469703dd0c23931bbea6ddd8f2c1d8fd0f9071a2;p=flightgear.git diff --git a/src/Main/bfi.cxx b/src/Main/bfi.cxx index ca61b498c..63687fea0 100644 --- a/src/Main/bfi.cxx +++ b/src/Main/bfi.cxx @@ -90,13 +90,10 @@ reinit () double apHeadingMag = FGBFI::getAPHeadingMag(); bool apAltitudeLock = FGBFI::getAPAltitudeLock(); double apAltitude = FGBFI::getAPAltitude(); - const string &targetAirport = FGBFI::getTargetAirport(); bool gpsLock = FGBFI::getGPSLock(); // double gpsLatitude = FGBFI::getGPSTargetLatitude(); // double gpsLongitude = FGBFI::getGPSTargetLongitude(); - FGBFI::setTargetAirport(""); - fgReInitSubsystems(); // FIXME: this is wrong. @@ -115,7 +112,6 @@ reinit () FGBFI::setAPHeadingMag(apHeadingMag); FGBFI::setAPAltitudeLock(apAltitudeLock); FGBFI::setAPAltitude(apAltitude); - FGBFI::setTargetAirport(targetAirport); FGBFI::setGPSLock(gpsLock); _needReinit = false; @@ -123,35 +119,6 @@ reinit () FG_LOG(FG_GENERAL, FG_INFO, "Ending BFI reinit"); } -// BEGIN: kludge 2000-12-07 -// This is a kludge around a LaRCsim problem; see setAltitude() -// for details. -static int _altitude_countdown = 0; -static double _requested_altitude = -9999; -static bool _saved_freeze = false; -static inline void _check_altitude () -{ - if (_altitude_countdown > 0) { - _altitude_countdown--; - if (_altitude_countdown == 0) { - current_aircraft.fdm_state->set_Altitude(_requested_altitude); - globals->set_freeze(_saved_freeze); - } - } -} - -static int _lighting_countdown = 0; -static inline void _check_lighting () -{ - if (_lighting_countdown > 0) { - _lighting_countdown--; - if (_lighting_countdown == 0) - fgUpdateSkyAndLightingParams(); - } -} -// END: kludge - - // BEGIN: kludge // Allow the view to be set from two axes (i.e. a joystick hat) // This needs to be in FGViewer itself, somehow. @@ -210,26 +177,14 @@ void FGBFI::init () { FG_LOG(FG_GENERAL, FG_INFO, "Starting BFI init"); + // Simulation - fgTie("/sim/flight-model", getFlightModel, setFlightModel); - fgTie("/sim/aircraft", getAircraft, setAircraft); fgTie("/sim/aircraft-dir", getAircraftDir, setAircraftDir); fgTie("/sim/time/gmt", getDateString, setDateString); fgTie("/sim/time/gmt-string", getGMTString); - fgTie("/sim/hud/visibility", getHUDVisible, setHUDVisible); - - // Position - fgTie("/position/airport-id", getTargetAirport, setTargetAirport); - fgTie("/position/latitude", getLatitude, setLatitude); - fgTie("/position/longitude", getLongitude, setLongitude); - fgTie("/position/altitude", getAltitude, setAltitude); - fgTie("/position/altitude-agl", getAGL); // Orientation - fgTie("/orientation/heading", getHeading, setHeading); fgTie("/orientation/heading-magnetic", getHeadingMag); - fgTie("/orientation/pitch", getPitch, setPitch); - fgTie("/orientation/roll", getRoll, setRoll); // Engine fgTie("/engines/engine0/rpm", getRPM); @@ -237,19 +192,12 @@ FGBFI::init () fgTie("/engines/engine0/cht", getCHT); fgTie("/engines/engine0/mp", getMP); - // Velocities - fgTie("/velocities/airspeed", getAirspeed, setAirspeed); - fgTie("/velocities/side-slip", getSideSlip); - fgTie("/velocities/vertical-speed", getVerticalSpeed); - fgTie("/velocities/speed-north", getSpeedNorth); - fgTie("/velocities/speed-east", getSpeedEast); - fgTie("/velocities/speed-down", getSpeedDown); - // Autopilot fgTie("/autopilot/locks/altitude", getAPAltitudeLock, setAPAltitudeLock); fgTie("/autopilot/settings/altitude", getAPAltitude, setAPAltitude); fgTie("/autopilot/locks/heading", getAPHeadingLock, setAPHeadingLock); fgTie("/autopilot/settings/heading", getAPHeading, setAPHeading); + fgTie("/autopilot/settings/heading-dg", getAPHeadingDG, setAPHeadingDG); fgTie("/autopilot/settings/heading-magnetic", getAPHeadingMag, setAPHeadingMag); fgTie("/autopilot/locks/nav1", getAPNAV1Lock, setAPNAV1Lock); @@ -261,10 +209,10 @@ FGBFI::init () fgTie("/environment/wind-down", getWindDown, setWindDown); // View + fgTie("/sim/field-of-view", getFOV, setFOV); fgTie("/sim/view/axes/long", (double(*)())0, setViewAxisLong); fgTie("/sim/view/axes/lat", (double(*)())0, setViewAxisLat); - _altitude_countdown = 0; _needReinit = false; FG_LOG(FG_GENERAL, FG_INFO, "Ending BFI init"); @@ -282,8 +230,6 @@ FGBFI::init () void FGBFI::update () { - _check_altitude(); - _check_lighting(); _set_view_from_axes(); if (_needReinit) { reinit(); @@ -297,65 +243,13 @@ FGBFI::update () //////////////////////////////////////////////////////////////////////// -/** - * Return the flight model as an integer. - * - * TODO: use a string instead. - */ -int -FGBFI::getFlightModel () -{ - return globals->get_options()->get_flight_model(); -} - - -/** - * Return the current aircraft as a string. - */ -string -FGBFI::getAircraft () -{ - _temp = globals->get_options()->get_aircraft(); - return _temp; -} - - /** * Return the current aircraft directory (UIUC) as a string. */ string FGBFI::getAircraftDir () { - _temp = aircraft_dir; - return _temp; -} - - -/** - * Set the flight model as an integer. - * - * TODO: use a string instead. - */ -void -FGBFI::setFlightModel (int model) -{ - if (getFlightModel() != model) { - globals->get_options()->set_flight_model(model); - needReinit(); - } -} - - -/** - * Set the current aircraft. - */ -void -FGBFI::setAircraft (string aircraft) -{ - if (getAircraft() != aircraft) { - globals->get_options()->set_aircraft(aircraft); - needReinit(); - } + return aircraft_dir; } @@ -452,26 +346,6 @@ FGBFI::getGMTString () } -/** - * Return true if the HUD is visible. - */ -bool -FGBFI::getHUDVisible () -{ - return globals->get_options()->get_hud_status(); -} - - -/** - * Ensure that the HUD is visible or hidden. - */ -void -FGBFI::setHUDVisible (bool visible) -{ - globals->get_options()->set_hud_status(visible); -} - - //////////////////////////////////////////////////////////////////////// // Position @@ -495,9 +369,6 @@ void FGBFI::setLatitude (double latitude) { current_aircraft.fdm_state->set_Latitude(latitude * DEG_TO_RAD); - fgUpdateSkyAndLightingParams(); - if (_lighting_countdown <= 0) - _lighting_countdown = 5; } @@ -518,9 +389,6 @@ void FGBFI::setLongitude (double longitude) { current_aircraft.fdm_state->set_Longitude(longitude * DEG_TO_RAD); - fgUpdateSkyAndLightingParams(); - if (_lighting_countdown <= 0) - _lighting_countdown = 5; } @@ -553,22 +421,6 @@ void FGBFI::setAltitude (double altitude) { current_aircraft.fdm_state->set_Altitude(altitude); - - // 2000-12-07 - // This is an ugly kludge around a - // LaRCsim problem; if the - // requested altitude cannot be - // set right away (because it's - // below the last-calculated ground - // level), pause FGFS, wait for - // five frames, and then try again. - if (_altitude_countdown <= 0 && - fabs(getAltitude() - altitude) > 5.0) { - _altitude_countdown = 5; - _requested_altitude = altitude; - _saved_freeze = globals->get_freeze(); - globals->set_freeze(true); - } } @@ -1199,6 +1051,26 @@ FGBFI::setAPHeading (double heading) } +/** + * Get the autopilot DG target heading in degrees. + */ +double +FGBFI::getAPHeadingDG () +{ + return current_autopilot->get_DGTargetHeading(); +} + + +/** + * Set the autopilot DG target heading in degrees. + */ +void +FGBFI::setAPHeadingDG (double heading) +{ + current_autopilot->set_DGTargetHeading( heading ); +} + + /** * Get the autopilot target heading in degrees. */ @@ -1281,30 +1153,6 @@ FGBFI::setGPSLock (bool lock) } -/** - * Get the GPS target airport code. - */ -string -FGBFI::getTargetAirport () -{ - // FIXME: not thread-safe - static string out; - out = globals->get_options()->get_airport_id(); - - return out; -} - - -/** - * Set the GPS target airport code. - */ -void -FGBFI::setTargetAirport (string airportId) -{ - globals->get_options()->set_airport_id(airportId); -} - - /** * Get the GPS target latitude in degrees (negative for south). */ @@ -1442,6 +1290,18 @@ FGBFI::setWindDown (double speed) // View. //////////////////////////////////////////////////////////////////////// +double +FGBFI::getFOV () +{ + globals->get_current_view()->get_fov(); +} + +void +FGBFI::setFOV (double fov) +{ + globals->get_current_view()->set_fov( fov ); +} + void FGBFI::setViewAxisLong (double axis) {