-// kludge
-static double
-getAPRudderControl ()
-{
- if (getAPHeadingLock())
- return current_autopilot->get_TargetHeading();
- else
- return globals->get_controls()->get_rudder();
-}
-
-// kludge
-static void
-setAPRudderControl (double value)
-{
- if (getAPHeadingLock()) {
- SG_LOG(SG_GENERAL, SG_DEBUG, "setAPRudderControl " << value );
- value -= current_autopilot->get_TargetHeading();
- current_autopilot->HeadingAdjust(value < 0.0 ? -1.0 : 1.0);
- } else {
- globals->get_controls()->set_rudder(value);
- }
-}
-
-// kludge
-static double
-getAPElevatorControl ()
-{
- if (getAPAltitudeLock())
- return current_autopilot->get_TargetAltitude();
- else
- return globals->get_controls()->get_elevator();
-}
-
-// kludge
-static void
-setAPElevatorControl (double value)
-{
- if (value != 0 && getAPAltitudeLock()) {
- SG_LOG(SG_GENERAL, SG_DEBUG, "setAPElevatorControl " << value );
- value -= current_autopilot->get_TargetAltitude();
- current_autopilot->AltitudeAdjust(value < 0.0 ? 100.0 : -100.0);
- } else {
- globals->get_controls()->set_elevator(value);
- }
-}
-
-// kludge
-static double
-getAPThrottleControl ()
-{
- if (getAPAutoThrottleLock())
- return 0.0; // always resets
- else
- return globals->get_controls()->get_throttle(0);
-}
-
-// kludge
-static void
-setAPThrottleControl (double value)
-{
- if (getAPAutoThrottleLock())
- current_autopilot->AutoThrottleAdjust(value < 0.0 ? -0.01 : 0.01);
- else
- globals->get_controls()->set_throttle(FGControls::ALL_ENGINES, value);
-}
-
-
-/**
- * Get the current visibility (meters).
- */
-static double
-getVisibility ()
-{
-#ifndef FG_OLD_WEATHER
- return WeatherDatabase->getWeatherVisibility();
-#else
- return current_weather.get_visibility();
-#endif
-}
-
-
-/**
- * Set the current visibility (meters).
- */
-static void
-setVisibility (double visibility)
-{
-#ifndef FG_OLD_WEATHER
- WeatherDatabase->setWeatherVisibility(visibility);
-#else
- current_weather.set_visibility(visibility);
-#endif
-}
-
-/**
- * Get the current wind north velocity (feet/second).
- */
-static double
-getWindNorth ()
-{
- return current_aircraft.fdm_state->get_V_north_airmass();
-}
-
-
-/**
- * Set the current wind north velocity (feet/second).
- */
-static void
-setWindNorth (double speed)
-{
- current_aircraft.fdm_state
- ->set_Velocities_Local_Airmass(speed, getWindEast(), getWindDown());
-}
-
-
-/**
- * Get the current wind east velocity (feet/second).
- */
-static double
-getWindEast ()
-{
- return current_aircraft.fdm_state->get_V_east_airmass();
-}
-
-
-/**
- * Set the current wind east velocity (feet/second).
- */
-static void
-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).
- */
-static double
-getWindDown ()
-{
- return current_aircraft.fdm_state->get_V_down_airmass();
-}
-
-
-/**
- * Set the current wind down velocity (feet/second).
- */
-static void
-setWindDown (double speed)
-{
- current_aircraft.fdm_state->set_Velocities_Local_Airmass(getWindNorth(),
- getWindEast(),
- speed);
-}
-
-/*
- * Set the current engine0 running flag.
- */
-static void
-setRunningFlag (bool flag)
-{
- if ( current_aircraft.fdm_state->get_num_engines() > 0 ) {
- current_aircraft.fdm_state->get_engine(0)->set_Running_Flag( flag );
- }
-}
-
-/*
- * Set the current engine0 cranking flag.
- */
-//Although there is no real reason to want to tell the engine that it is cranking,
-//this is currently necessary to avoid the cranking sound being played
-//before the engine inits.
-static void
-setCrankingFlag (bool flag)
-{
- if ( current_aircraft.fdm_state->get_num_engines() > 0 ) {
- current_aircraft.fdm_state->get_engine(0)->set_Cranking_Flag( flag );
- }
-}
-
-static double
-getFOV ()
-{
- return globals->get_current_view()->get_fov();
-}
-
-static void
-setFOV (double fov)
-{
- if ( fov < 180 ) {
- globals->get_current_view()->set_fov( fov );
- }
-}
-
-static long
-getWarp ()
-{
- return globals->get_warp();
-}
-
-static void
-setWarp (long warp)
-{
- globals->set_warp(warp);
-}
-
-static long
-getWarpDelta ()
-{
- return globals->get_warp_delta();
-}
-
-static void
-setWarpDelta (long delta)
-{
- globals->set_warp_delta(delta);
-}
-
-static void
-setViewAxisLong (double axis)
-{
- axisLong = axis;
-}
-
-static void
-setViewAxisLat (double axis)
-{
- axisLat = axis;
-}
-
-static bool
-getWindingCCW ()
-{
- return winding_ccw;
-}
-
-static void
-setWindingCCW (bool state)
-{
- winding_ccw = state;
- if ( winding_ccw )
- glFrontFace ( GL_CCW );
- else
- glFrontFace ( GL_CW );
-}
-
-static bool
-getFullScreen ()
-{
-#if defined(FX) && !defined(WIN32)
- return globals->get_fullscreen();
-#else
- return false;
-#endif
-}
-
-static void
-setFullScreen (bool state)
-{
-#if defined(FX) && !defined(WIN32)
- globals->set_fullscreen(state);
-# if defined(XMESA_FX_FULLSCREEN) && defined(XMESA_FX_WINDOW)
- XMesaSetFXmode( state ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW );
-# endif
-#endif
-}
-
-static bool
-getFDMDataLogging ()
-{
- return fdm_data_logging;
-}
-
-static void
-setFDMDataLogging (bool state)
-{
- // kludge; no getter or setter available
- if (state != fdm_data_logging) {
- fgToggleFDMdataLogging();
- fdm_data_logging = state;
- }
-}
-
-\f
-////////////////////////////////////////////////////////////////////////
-// Tie the properties.
-////////////////////////////////////////////////////////////////////////
-
-void
-fgInitProps ()
-{
- // Simulation
- fgTie("/sim/logging/priority", getLoggingPriority, setLoggingPriority);
- fgTie("/sim/logging/classes", getLoggingClasses, setLoggingClasses);
- fgTie("/sim/freeze", getFreeze, setFreeze);
- fgTie("/sim/aircraft-dir", getAircraftDir, setAircraftDir);
- fgTie("/sim/view/offset-deg", getViewOffset, setViewOffset, false);
- fgSetArchivable("/sim/view/offset-deg");
- fgTie("/sim/view/goal-offset-deg", getGoalViewOffset, setGoalViewOffset, false);
- fgSetArchivable("/sim/view/goal-offset-deg");
- fgTie("/sim/view/pilot/x-offset-m",
- getPilotPositionXOffset, setPilotPositionXOffset);
- fgSetArchivable("/sim/view/pilot/x-offset-m");
- fgTie("/sim/view/pilot/y-offset-m",
- getPilotPositionYOffset, setPilotPositionYOffset);
- fgSetArchivable("/sim/view/pilot/y-offset-m");
- fgTie("/sim/view/pilot/z-offset-m",
- getPilotPositionZOffset, setPilotPositionZOffset);
- fgSetArchivable("/sim/view/pilot/z-offset-m");
- fgTie("/sim/time/gmt", getDateString, setDateString);
- fgSetArchivable("/sim/time/gmt");
- fgTie("/sim/time/gmt-string", getGMTString);
- fgTie("/sim/rendering/textures", getTextures, setTextures);
-
- // Orientation
- fgTie("/orientation/heading-magnetic-deg", getHeadingMag);
-
- //consumables
- fgTie("/consumables/fuel/tank[0]/level-gal_us",
- getTank1Fuel, setTank1Fuel, false);
- fgSetArchivable("/consumables/fuel/tank[0]/level-gal_us");
- fgTie("/consumables/fuel/tank[1]/level-gal_us",
- getTank2Fuel, setTank2Fuel, false);
- fgSetArchivable("/consumables/fuel/tank[1]/level-gal_us");
-
- // Autopilot
- fgTie("/autopilot/locks/altitude", getAPAltitudeLock, setAPAltitudeLock);
- fgSetArchivable("/autopilot/locks/altitude");
- fgTie("/autopilot/settings/altitude-ft", getAPAltitude, setAPAltitude);
- fgSetArchivable("/autopilot/settings/altitude-ft");
- fgTie("/autopilot/locks/glide-slope", getAPGSLock, setAPGSLock);
- fgSetArchivable("/autopilot/locks/glide-slope");
- fgTie("/autopilot/locks/terrain", getAPTerrainLock, setAPTerrainLock);
- fgSetArchivable("/autopilot/locks/terrain");
- fgTie("/autopilot/settings/climb-rate-fpm", getAPClimb, setAPClimb, false);
- fgSetArchivable("/autopilot/settings/climb-rate-fpm");
- fgTie("/autopilot/locks/heading", getAPHeadingLock, setAPHeadingLock);
- fgSetArchivable("/autopilot/locks/heading");
- fgTie("/autopilot/settings/heading-bug-deg",
- getAPHeadingBug, setAPHeadingBug);
- fgSetArchivable("/autopilot/settings/heading-bug-deg");
- fgTie("/autopilot/locks/wing-leveler", getAPWingLeveler, setAPWingLeveler);
- fgSetArchivable("/autopilot/locks/wing-leveler");
- fgTie("/autopilot/locks/nav[0]", getAPNAV1Lock, setAPNAV1Lock);
- fgSetArchivable("/autopilot/locks/nav[0]");
- fgTie("/autopilot/locks/auto-throttle",
- getAPAutoThrottleLock, setAPAutoThrottleLock);
- fgSetArchivable("/autopilot/locks/auto-throttle");
- fgTie("/autopilot/control-overrides/rudder",
- getAPRudderControl, setAPRudderControl);
- fgSetArchivable("/autopilot/control-overrides/rudder");
- fgTie("/autopilot/control-overrides/elevator",
- getAPElevatorControl, setAPElevatorControl);
- fgSetArchivable("/autopilot/control-overrides/elevator");
- fgTie("/autopilot/control-overrides/throttle",
- getAPThrottleControl, setAPThrottleControl);
- fgSetArchivable("/autopilot/control-overrides/throttle");
-
- // Environment
- fgTie("/environment/visibility-m", getVisibility, setVisibility);
- fgSetArchivable("/environment/visibility-m");
- fgTie("/environment/wind-north-fps", getWindNorth, setWindNorth);
- fgSetArchivable("/environment/wind-north-fps");
- fgTie("/environment/wind-east-fps", getWindEast, setWindEast);
- fgSetArchivable("/environment/wind-east-fps");
- fgTie("/environment/wind-down-fps", getWindDown, setWindDown);
- fgSetArchivable("/environment/wind-down-fps");
-
- fgTie("/environment/magnetic-variation-deg", getMagVar);
- fgTie("/environment/magnetic-dip-deg", getMagDip);
-
- // View
- fgTie("/sim/field-of-view", getFOV, setFOV);
- fgSetArchivable("/sim/field-of-view");
- fgTie("/sim/time/warp", getWarp, setWarp, false);
- fgTie("/sim/time/warp-delta", getWarpDelta, setWarpDelta);
- fgTie("/sim/view/axes/long", (double(*)())0, setViewAxisLong);
- fgTie("/sim/view/axes/lat", (double(*)())0, setViewAxisLat);
-
- // Misc. Temporary junk.
- fgTie("/sim/temp/winding-ccw", getWindingCCW, setWindingCCW, false);
- fgTie("/sim/temp/full-screen", getFullScreen, setFullScreen);
- fgTie("/sim/temp/fdm-data-logging", getFDMDataLogging, setFDMDataLogging);
-
-}
-
-
-void
-fgUpdateProps ()
-{
- _set_view_from_axes();
-}
-
-
-\f
-////////////////////////////////////////////////////////////////////////
-// Save and restore.
-////////////////////////////////////////////////////////////////////////
-
-
-/**
- * Save the current state of the simulator to a stream.
- */
-bool
-fgSaveFlight (ostream &output)
-{