X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fbfi.cxx;h=63687fea0d9cc513f6d956a59fd5e9543fbd1c6d;hb=7a4da944253124295957728d9e8e550ddbb913d7;hp=8ab72ac792a041d85e110986c8ccc9fc3391d7da;hpb=6574e8f4f639d627902dc16f149e9024a0c31c6e;p=flightgear.git diff --git a/src/Main/bfi.cxx b/src/Main/bfi.cxx index 8ab72ac79..63687fea0 100644 --- a/src/Main/bfi.cxx +++ b/src/Main/bfi.cxx @@ -4,6 +4,8 @@ // // Copyright (C) 2000 David Megginson - david@megginson.com // +// THIS CLASS IS DEPRECATED; USE THE PROPERTY MANAGER INSTEAD. +// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as // published by the Free Software Foundation; either version 2 of the @@ -20,16 +22,7 @@ // // $Id$ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#if defined( FG_HAVE_NATIVE_SGI_COMPILERS ) -# include -#else -# include -#endif +#include "fgfs.hxx" #include #include @@ -56,9 +49,8 @@ #endif #include "globals.hxx" -#include "save.hxx" #include "fg_init.hxx" -#include +#include "fg_props.hxx" FG_USING_NAMESPACE(std); @@ -91,28 +83,17 @@ reinit () // that's going to get clobbered // when we reinit the subsystems. - cout << "BFI: start reinit\n"; + FG_LOG(FG_GENERAL, FG_INFO, "Starting BFI reinit"); // TODO: add more AP stuff - double elevator = FGBFI::getElevator(); - double aileron = FGBFI::getAileron(); - double rudder = FGBFI::getRudder(); - double throttle = FGBFI::getThrottle(); - double elevator_trim = FGBFI::getElevatorTrim(); - double flaps = FGBFI::getFlaps(); - double brake = FGBFI::getBrakes(); bool apHeadingLock = FGBFI::getAPHeadingLock(); 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(""); - cout << "Target airport is " << globals->get_options()->get_airport_id() << endl; - fgReInitSubsystems(); // FIXME: this is wrong. @@ -124,35 +105,68 @@ reinit () cur_light_params.Update(); fgUpdateLocalTime(); fgUpdateWeatherDatabase(); - fgRadioSearch(); + current_radiostack->search(); // Restore all of the old states. - FGBFI::setElevator(elevator); - FGBFI::setAileron(aileron); - FGBFI::setRudder(rudder); - FGBFI::setThrottle(throttle); - FGBFI::setElevatorTrim(elevator_trim); - FGBFI::setFlaps(flaps); - FGBFI::setBrakes(brake); FGBFI::setAPHeadingLock(apHeadingLock); FGBFI::setAPHeadingMag(apHeadingMag); FGBFI::setAPAltitudeLock(apAltitudeLock); FGBFI::setAPAltitude(apAltitude); - FGBFI::setTargetAirport(targetAirport); FGBFI::setGPSLock(gpsLock); _needReinit = false; - cout << "BFI: end reinit\n"; + FG_LOG(FG_GENERAL, FG_INFO, "Ending BFI reinit"); +} + +// BEGIN: kludge +// Allow the view to be set from two axes (i.e. a joystick hat) +// This needs to be in FGViewer itself, somehow. +static double axisLong = 0.0; +static double axisLat = 0.0; + +static inline void +_set_view_from_axes () +{ + // Take no action when hat is centered + if (axisLong == 0 && axisLat == 0) + return; + + double viewDir = 0; + + if (axisLong < 0) { // Longitudinal axis forward + if (axisLat < 0) + viewDir = 45; + else if (axisLat > 0) + viewDir = 315; + else + viewDir = 0; + } else if (axisLong > 0) { // Longitudinal axis backward + if (axisLat < 0) + viewDir = 135; + else if (axisLat > 0) + viewDir = 225; + else + viewDir = 180; + } else { // Longitudinal axis neutral + if (axisLat < 0) + viewDir = 90; + else + viewDir = 270; + } + + globals->get_current_view()->set_goal_view_offset(viewDir*DEG_TO_RAD); +// globals->get_current_view()->set_view_offset(viewDir*DEG_TO_RAD); } +// END: kludge + //////////////////////////////////////////////////////////////////////// // Local functions //////////////////////////////////////////////////////////////////////// - /** * Initialize the BFI by binding its functions to properties. * @@ -163,162 +177,41 @@ void FGBFI::init () { FG_LOG(FG_GENERAL, FG_INFO, "Starting BFI init"); + // Simulation - current_properties.tieInt("/sim/flight-model", - getFlightModel, setFlightModel); - current_properties.tieString("/sim/aircraft", - getAircraft, setAircraft); - current_properties.tieString("/sim/aircraft-dir", - getAircraftDir, setAircraftDir); - // TODO: timeGMT - current_properties.tieString("/sim/time/gmt", - getDateString, setDateString); - current_properties.tieString("/sim/time/gmt-string", - getGMTString, 0); - current_properties.tieBool("/sim/hud/visibility", - getHUDVisible, setHUDVisible); - current_properties.tieBool("/sim/panel/visibility", - getPanelVisible, setPanelVisible); - current_properties.tieInt("/sim/panel/x-offset", - getPanelXOffset, setPanelXOffset); - current_properties.tieInt("/sim/panel/y-offset", - getPanelYOffset, setPanelYOffset); - - // Position - current_properties.tieString("/position/airport-id", - getTargetAirport, setTargetAirport); - current_properties.tieDouble("/position/latitude", - getLatitude, setLatitude); - current_properties.tieDouble("/position/longitude", - getLongitude, setLongitude); - current_properties.tieDouble("/position/altitude", - getAltitude, setAltitude); -// getAltitude, setAltitude, false); - current_properties.tieDouble("/position/altitude-agl", - getAGL, 0); + fgTie("/sim/aircraft-dir", getAircraftDir, setAircraftDir); + fgTie("/sim/time/gmt", getDateString, setDateString); + fgTie("/sim/time/gmt-string", getGMTString); // Orientation - current_properties.tieDouble("/orientation/heading", - getHeading, setHeading); - current_properties.tieDouble("/orientation/heading-magnetic", - getHeadingMag, 0); - current_properties.tieDouble("/orientation/pitch", - getPitch, setPitch); - current_properties.tieDouble("/orientation/roll", - getRoll, setRoll); + fgTie("/orientation/heading-magnetic", getHeadingMag); // Engine - current_properties.tieDouble("/engines/engine0/rpm", - getRPM, 0); - current_properties.tieDouble("/engines/engine0/egt", - getEGT, 0); - current_properties.tieDouble("/engines/engine0/cht", - getCHT, 0); - current_properties.tieDouble("/engines/engine0/mp", - getMP, 0); - - // Velocities - current_properties.tieDouble("/velocities/airspeed", - getAirspeed, setAirspeed); - current_properties.tieDouble("/velocities/side-slip", - getSideSlip, 0); - current_properties.tieDouble("/velocities/vertical-speed", - getVerticalSpeed, 0); - current_properties.tieDouble("/velocities/speed-north", - getSpeedNorth, 0); - current_properties.tieDouble("/velocities/speed-east", - getSpeedEast, 0); - current_properties.tieDouble("/velocities/speed-down", - getSpeedDown, 0); - - // Controls - current_properties.tieDouble("/controls/throttle", - getThrottle, setThrottle); - current_properties.tieDouble("/controls/mixture", - getMixture, setMixture); - current_properties.tieDouble("/controls/propellor-pitch", - getPropAdvance, setPropAdvance); - current_properties.tieDouble("/controls/flaps", - getFlaps, setFlaps); - current_properties.tieDouble("/controls/aileron", - getAileron, setAileron); - current_properties.tieDouble("/controls/rudder", - getRudder, setRudder); - current_properties.tieDouble("/controls/elevator", - getElevator, setElevator); - current_properties.tieDouble("/controls/elevator-trim", - getElevatorTrim, setElevatorTrim); - current_properties.tieDouble("/controls/brakes/all", - getBrakes, setBrakes); - current_properties.tieDouble("/controls/brakes/left", - getLeftBrake, setLeftBrake); - current_properties.tieDouble("/controls/brakes/right", - getRightBrake, setRightBrake); - current_properties.tieDouble("/controls/brakes/center", - getRightBrake, setCenterBrake); + fgTie("/engines/engine0/rpm", getRPM); + fgTie("/engines/engine0/egt", getEGT); + fgTie("/engines/engine0/cht", getCHT); + fgTie("/engines/engine0/mp", getMP); // Autopilot - current_properties.tieBool("/autopilot/locks/altitude", - getAPAltitudeLock, setAPAltitudeLock); - current_properties.tieDouble("/autopilot/settings/altitude", - getAPAltitude, setAPAltitude); - current_properties.tieBool("/autopilot/locks/heading", - getAPHeadingLock, setAPHeadingLock); - current_properties.tieDouble("/autopilot/settings/heading", - getAPHeading, setAPHeading); - current_properties.tieDouble("/autopilot/settings/heading-magnetic", - getAPHeadingMag, setAPHeadingMag); - current_properties.tieBool("/autopilot/locks/nav1", - getAPNAV1Lock, setAPNAV1Lock); - - // Radio navigation - current_properties.tieDouble("/radios/nav1/frequencies/selected", - getNAV1Freq, setNAV1Freq); - current_properties.tieDouble("/radios/nav1/frequencies/standby", - getNAV1AltFreq, setNAV1AltFreq); - current_properties.tieDouble("/radios/nav1/radials/actual", - getNAV1Radial, 0); - current_properties.tieDouble("/radios/nav1/radials/selected", - getNAV1SelRadial, setNAV1SelRadial); - current_properties.tieDouble("/radios/nav1/dme/distance", - getNAV1DistDME, 0); - current_properties.tieBool("/radios/nav1/to-flag", - getNAV1TO, 0); - current_properties.tieBool("/radios/nav1/from-flag", - getNAV1FROM, 0); - current_properties.tieBool("/radios/nav1/in-range", - getNAV1InRange, 0); - current_properties.tieBool("/radios/nav1/dme/in-range", - getNAV1DMEInRange, 0); - - current_properties.tieDouble("/radios/nav2/frequencies/selected", - getNAV2Freq, setNAV2Freq); - current_properties.tieDouble("/radios/nav2/frequencies/standby", - getNAV2AltFreq, setNAV2AltFreq); - current_properties.tieDouble("/radios/nav2/radials/actual", - getNAV2Radial, 0); - current_properties.tieDouble("/radios/nav2/radials/selected", - getNAV2SelRadial, setNAV2SelRadial); - current_properties.tieDouble("/radios/nav2/dme/distance", - getNAV2DistDME, 0); - current_properties.tieBool("/radios/nav2/to-flag", - getNAV2TO, 0); - current_properties.tieBool("/radios/nav2/from-flag", - getNAV2FROM, 0); - current_properties.tieBool("/radios/nav2/in-range", - getNAV2InRange, 0); - current_properties.tieBool("/radios/nav2/dme/in-range", - getNAV2DMEInRange, 0); - - current_properties.tieDouble("/radios/adf/frequencies/selected", - getADFFreq, setADFFreq); - current_properties.tieDouble("/radios/adf/frequencies/standby", - getADFAltFreq, setADFAltFreq); - current_properties.tieDouble("/radios/adf/rotation", - getADFRotation, setADFRotation); - - current_properties.tieDouble("/environment/visibility", - getVisibility, setVisibility); + 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); + + // Weather + fgTie("/environment/visibility", getVisibility, setVisibility); + fgTie("/environment/wind-north", getWindNorth, setWindNorth); + fgTie("/environment/wind-east", getWindEast, setWindEast); + 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); _needReinit = false; @@ -337,6 +230,7 @@ FGBFI::init () void FGBFI::update () { + _set_view_from_axes(); if (_needReinit) { reinit(); } @@ -349,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. - */ -const string & -FGBFI::getAircraft () -{ - _temp = globals->get_options()->get_aircraft(); - return _temp; -} - - /** * Return the current aircraft directory (UIUC) as a string. */ -const 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 (const string &aircraft) -{ - if (getAircraft() != aircraft) { - globals->get_options()->set_aircraft(aircraft); - needReinit(); - } + return aircraft_dir; } @@ -415,7 +257,7 @@ FGBFI::setAircraft (const string &aircraft) * Set the current aircraft directory (UIUC). */ void -FGBFI::setAircraftDir (const string &dir) +FGBFI::setAircraftDir (string dir) { if (getAircraftDir() != dir) { aircraft_dir = dir; @@ -427,10 +269,10 @@ FGBFI::setAircraftDir (const string &dir) /** * Return the current Zulu time. */ -const string & +string FGBFI::getDateString () { - static string out; // FIXME: not thread-safe + string out; char buf[64]; struct tm * t = globals->get_time_params()->getGmt(); sprintf(buf, "%.4d-%.2d-%.2dT%.2d:%.2d:%.2d", @@ -445,7 +287,7 @@ FGBFI::getDateString () * Set the current Zulu time. */ void -FGBFI::setDateString (const string &date_string) +FGBFI::setDateString (string date_string) // FGBFI::setTimeGMT (time_t time) { SGTime * st = globals->get_time_params(); @@ -491,10 +333,10 @@ FGBFI::setDateString (const string &date_string) /** * Return the GMT as a string. */ -const string & +string FGBFI::getGMTString () { - static string out; // FIXME: not thread-safe + string out; char buf[16]; struct tm * t = globals->get_time_params()->getGmt(); sprintf(buf, " %.2d:%.2d:%.2d", @@ -504,98 +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); -} - - -/** - * Return true if the 2D panel is visible. - */ -bool -FGBFI::getPanelVisible () -{ - return globals->get_options()->get_panel_status(); -} - - -/** - * Ensure that the 2D panel is visible or hidden. - */ -void -FGBFI::setPanelVisible (bool visible) -{ - if (globals->get_options()->get_panel_status() != visible) { - globals->get_options()->toggle_panel(); - } -} - - -/** - * Get the panel's current x-shift. - */ -int -FGBFI::getPanelXOffset () -{ - if (current_panel != 0) - return current_panel->getXOffset(); - else - return 0; -} - - -/** - * Set the panel's current x-shift. - */ -void -FGBFI::setPanelXOffset (int offset) -{ - if (current_panel != 0) - current_panel->setXOffset(offset); -} - - -/** - * Get the panel's current y-shift. - */ -int -FGBFI::getPanelYOffset () -{ - if (current_panel != 0) - return current_panel->getYOffset(); - else - return 0; -} - - -/** - * Set the panel's current y-shift. - */ -void -FGBFI::setPanelYOffset (int offset) -{ - if (current_panel != 0) - current_panel->setYOffset(offset); -} - - - - //////////////////////////////////////////////////////////////////////// // Position @@ -619,7 +369,6 @@ void FGBFI::setLatitude (double latitude) { current_aircraft.fdm_state->set_Latitude(latitude * DEG_TO_RAD); - fgUpdateSkyAndLightingParams(); } @@ -640,7 +389,6 @@ void FGBFI::setLongitude (double longitude) { current_aircraft.fdm_state->set_Longitude(longitude * DEG_TO_RAD); - fgUpdateSkyAndLightingParams(); } @@ -673,7 +421,6 @@ void FGBFI::setAltitude (double altitude) { current_aircraft.fdm_state->set_Altitude(altitude); - fgUpdateSkyAndLightingParams(); } @@ -943,6 +690,7 @@ FGBFI::getSpeedDown () // Controls //////////////////////////////////////////////////////////////////////// +#if 0 /** * Get the throttle setting, from 0.0 (none) to 1.0 (full). @@ -1200,7 +948,7 @@ FGBFI::setRightBrake (double brake) } - +#endif //////////////////////////////////////////////////////////////////////// @@ -1303,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. */ @@ -1351,251 +1119,6 @@ FGBFI::setAPNAV1Lock (bool lock) } - -//////////////////////////////////////////////////////////////////////// -// Radio navigation. -//////////////////////////////////////////////////////////////////////// - -double -FGBFI::getNAV1Freq () -{ - return current_radiostack->get_nav1_freq(); -} - -double -FGBFI::getNAV1AltFreq () -{ - return current_radiostack->get_nav1_alt_freq(); -} - -double -FGBFI::getNAV1Radial () -{ - return current_radiostack->get_nav1_radial(); -} - -double -FGBFI::getNAV1SelRadial () -{ - return current_radiostack->get_nav1_sel_radial(); -} - -double -FGBFI::getNAV1DistDME () -{ - return current_radiostack->get_nav1_dme_dist(); -} - -bool -FGBFI::getNAV1TO () -{ - if (current_radiostack->get_nav1_inrange()) { - double heading = current_radiostack->get_nav1_heading(); - double radial = current_radiostack->get_nav1_radial(); - double var = FGBFI::getMagVar(); - if (current_radiostack->get_nav1_loc()) { - double offset = fabs(heading - radial); - return (offset<= 8.0 || offset >= 352.0); - } else { - double offset = - fabs(heading - var - radial); - return (offset <= 20.0 || offset >= 340.0); - } - } else { - return false; - } -} - -bool -FGBFI::getNAV1FROM () -{ - if (current_radiostack->get_nav1_inrange()) { - double heading = current_radiostack->get_nav1_heading(); - double radial = current_radiostack->get_nav1_radial(); - double var = FGBFI::getMagVar(); - if (current_radiostack->get_nav1_loc()) { - double offset = fabs(heading - radial); - return (offset >= 172.0 && offset<= 188.0); - } else { - double offset = - fabs(heading - var - radial); - return (offset >= 160.0 && offset <= 200.0); - } - } else { - return false; - } -} - -bool -FGBFI::getNAV1InRange () -{ - return current_radiostack->get_nav1_inrange(); -} - -bool -FGBFI::getNAV1DMEInRange () -{ - return (current_radiostack->get_nav1_inrange() && - current_radiostack->get_nav1_has_dme()); -} - -double -FGBFI::getNAV2Freq () -{ - return current_radiostack->get_nav2_freq(); -} - -double -FGBFI::getNAV2AltFreq () -{ - return current_radiostack->get_nav2_alt_freq(); -} - -double -FGBFI::getNAV2Radial () -{ - return current_radiostack->get_nav2_radial(); -} - -double -FGBFI::getNAV2SelRadial () -{ - return current_radiostack->get_nav2_sel_radial(); -} - -double -FGBFI::getNAV2DistDME () -{ - return current_radiostack->get_nav2_dme_dist(); -} - -bool -FGBFI::getNAV2TO () -{ - if (current_radiostack->get_nav2_inrange()) { - double heading = current_radiostack->get_nav2_heading(); - double radial = current_radiostack->get_nav2_radial(); - double var = FGBFI::getMagVar(); - if (current_radiostack->get_nav2_loc()) { - double offset = fabs(heading - radial); - return (offset<= 8.0 || offset >= 352.0); - } else { - double offset = - fabs(heading - var - radial); - return (offset <= 20.0 || offset >= 340.0); - } - } else { - return false; - } -} - -bool -FGBFI::getNAV2FROM () -{ - if (current_radiostack->get_nav2_inrange()) { - double heading = current_radiostack->get_nav2_heading(); - double radial = current_radiostack->get_nav2_radial(); - double var = FGBFI::getMagVar(); - if (current_radiostack->get_nav2_loc()) { - double offset = fabs(heading - radial); - return (offset >= 172.0 && offset<= 188.0); - } else { - double offset = - fabs(heading - var - radial); - return (offset >= 160.0 && offset <= 200.0); - } - } else { - return false; - } -} - - -bool -FGBFI::getNAV2InRange () -{ - return current_radiostack->get_nav2_inrange(); -} - -bool -FGBFI::getNAV2DMEInRange () -{ - return (current_radiostack->get_nav2_inrange() && - current_radiostack->get_nav2_has_dme()); -} - -double -FGBFI::getADFFreq () -{ - return current_radiostack->get_adf_freq(); -} - -double -FGBFI::getADFAltFreq () -{ - return current_radiostack->get_adf_alt_freq(); -} - -double -FGBFI::getADFRotation () -{ - return current_radiostack->get_adf_rotation(); -} - -void -FGBFI::setNAV1Freq (double freq) -{ - current_radiostack->set_nav1_freq(freq); -} - -void -FGBFI::setNAV1AltFreq (double freq) -{ - current_radiostack->set_nav1_alt_freq(freq); -} - -void -FGBFI::setNAV1SelRadial (double radial) -{ - current_radiostack->set_nav1_sel_radial(radial); -} - -void -FGBFI::setNAV2Freq (double freq) -{ - current_radiostack->set_nav2_freq(freq); -} - -void -FGBFI::setNAV2AltFreq (double freq) -{ - current_radiostack->set_nav2_alt_freq(freq); -} - -void -FGBFI::setNAV2SelRadial (double radial) -{ - current_radiostack->set_nav2_sel_radial(radial); -} - -void -FGBFI::setADFFreq (double freq) -{ - current_radiostack->set_adf_freq(freq); -} - -void -FGBFI::setADFAltFreq (double freq) -{ - current_radiostack->set_adf_alt_freq(freq); -} - -void -FGBFI::setADFRotation (double rot) -{ - current_radiostack->set_adf_rotation(rot); -} - - //////////////////////////////////////////////////////////////////////// // GPS @@ -1630,31 +1153,6 @@ FGBFI::setGPSLock (bool lock) } -/** - * Get the GPS target airport code. - */ -const 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 (const string &airportId) -{ - // cout << "setting target airport id = " << airportId << endl; - globals->get_options()->set_airport_id(airportId); -} - - /** * Get the GPS target latitude in degrees (negative for south). */ @@ -1693,7 +1191,7 @@ FGBFI::setGPSTargetLongitude (double longitude) /** - * Get the current visible (units??). + * Get the current visibility (meters). */ double FGBFI::getVisibility () @@ -1707,7 +1205,7 @@ FGBFI::getVisibility () /** - * Set the current visibility (units??). + * Set the current visibility (meters). */ void FGBFI::setVisibility (double visibility) @@ -1720,6 +1218,102 @@ FGBFI::setVisibility (double visibility) } +/** + * Get the current wind north velocity (feet/second). + */ +double +FGBFI::getWindNorth () +{ + return current_aircraft.fdm_state->get_V_north_airmass(); +} + + +/** + * Set the current wind north velocity (feet/second). + */ +void +FGBFI::setWindNorth (double speed) +{ + current_aircraft.fdm_state->set_Velocities_Local_Airmass(speed, + getWindEast(), + getWindDown()); +} + + +/** + * Get the current wind east velocity (feet/second). + */ +double +FGBFI::getWindEast () +{ + return current_aircraft.fdm_state->get_V_east_airmass(); +} + + +/** + * Set the current wind east velocity (feet/second). + */ +void +FGBFI::setWindEast (double speed) +{ + cout << "Set wind-east to " << speed << endl; + current_aircraft.fdm_state->set_Velocities_Local_Airmass(getWindNorth(), + speed, + getWindDown()); +} + + +/** + * Get the current wind down velocity (feet/second). + */ +double +FGBFI::getWindDown () +{ + return current_aircraft.fdm_state->get_V_down_airmass(); +} + + +/** + * Set the current wind down velocity (feet/second). + */ +void +FGBFI::setWindDown (double speed) +{ + current_aircraft.fdm_state->set_Velocities_Local_Airmass(getWindNorth(), + getWindEast(), + 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) +{ + axisLong = axis; +} + +void +FGBFI::setViewAxisLat (double axis) +{ + axisLat = axis; +} + //////////////////////////////////////////////////////////////////////// // Time