#include STL_IOSTREAM
#include <ATC/ATCdisplay.hxx>
-#include <Autopilot/newauto.hxx>
#include <Aircraft/aircraft.hxx>
#include <Time/tmp.hxx>
#include <FDM/UIUCModel/uiuc_aircraftdir.h>
-#ifndef FG_OLD_WEATHER
+#ifndef FG_NEW_ENVIRONMENT
# include <WeatherCM/FGLocalWeatherDatabase.h>
#else
-# include <Weather/weather.hxx>
-#endif
+# include <Environment/environment.hxx>
+#endif // FG_NEW_ENVIRONMENT
#include <Objects/matlib.hxx>
#include <GUI/gui.h>
SG_USING_STD(ostream);
#endif
+#if !defined(FG_NEW_ENVIRONMENT)
static double getWindNorth ();
static double getWindEast ();
static double getWindDown ();
+#endif // FG_NEW_ENVIRONMENT
// Allow the view to be set from two axes (i.e. a joystick hat)
// This needs to be in FGViewer itself, somehow.
}
+/**
+ * Return the number of milliseconds elapsed since simulation started.
+ */
+static long
+getElapsedTime_ms ()
+{
+ return globals->get_elapsed_time_ms();
+}
+
+
/**
* Return the current Zulu time.
*/
static void
setDateString (string date_string)
{
+ static const SGPropertyNode *cur_time_override
+ = fgGetNode("/sim/time/cur-time-override", true);
+
SGTime * st = globals->get_time_params();
struct tm * current_time = st->getGmt();
struct tm new_time;
double lon = current_aircraft.fdm_state->get_Longitude();
double lat = current_aircraft.fdm_state->get_Latitude();
globals->set_warp(warp);
- st->update(lon, lat, warp);
+ st->update(lon, lat, cur_time_override->getLongValue(), warp);
fgUpdateSkyAndLightingParams();
}
{
string out;
char buf[16];
- struct tm * t = globals->get_time_params()->getGmt();
+ struct tm *t = globals->get_time_params()->getGmt();
sprintf(buf, " %.2d:%.2d:%.2d",
t->tm_hour, t->tm_min, t->tm_sec);
+ // cout << t << " " << buf << endl;
out = buf;
return out;
}
}
-/**
- * Get the autopilot altitude lock (true=on).
- */
-static bool
-getAPAltitudeLock ()
-{
- return (current_autopilot->get_AltitudeEnabled() &&
- current_autopilot->get_AltitudeMode()
- == FGAutopilot::FG_ALTITUDE_LOCK);
-}
-
-
-/**
- * Set the autopilot altitude lock (true=on).
- */
-static void
-setAPAltitudeLock (bool lock)
-{
- if (lock)
- current_autopilot->set_AltitudeMode(FGAutopilot::FG_ALTITUDE_LOCK);
- if (current_autopilot->get_AltitudeMode() == FGAutopilot::FG_ALTITUDE_LOCK)
- current_autopilot->set_AltitudeEnabled(lock);
-}
-
-
-/**
- * Get the autopilot target altitude in feet.
- */
-static double
-getAPAltitude ()
-{
- return current_autopilot->get_TargetAltitude() * SG_METER_TO_FEET;
-}
-
-
-/**
- * Set the autopilot target altitude in feet.
- */
-static void
-setAPAltitude (double altitude)
-{
- current_autopilot->set_TargetAltitude( altitude * SG_FEET_TO_METER );
-}
-
-/**
- * Get the autopilot altitude lock (true=on).
- */
-static bool
-getAPGSLock ()
-{
- return (current_autopilot->get_AltitudeEnabled() &&
- (current_autopilot->get_AltitudeMode()
- == FGAutopilot::FG_ALTITUDE_GS1));
-}
-
-
-/**
- * Set the autopilot altitude lock (true=on).
- */
-static void
-setAPGSLock (bool lock)
-{
- if (lock)
- current_autopilot->set_AltitudeMode(FGAutopilot::FG_ALTITUDE_GS1);
- if (current_autopilot->get_AltitudeMode() == FGAutopilot::FG_ALTITUDE_GS1)
- current_autopilot->set_AltitudeEnabled(lock);
-}
-
-
-/**
- * Get the autopilot terrain lock (true=on).
- */
-static bool
-getAPTerrainLock ()
-{
- return (current_autopilot->get_AltitudeEnabled() &&
- (current_autopilot->get_AltitudeMode()
- == FGAutopilot::FG_ALTITUDE_TERRAIN));
-}
-
-
-/**
- * Set the autopilot terrain lock (true=on).
- */
-static void
-setAPTerrainLock (bool lock)
-{
- if (lock) {
- current_autopilot->set_AltitudeMode(FGAutopilot::FG_ALTITUDE_TERRAIN);
- current_autopilot
- ->set_TargetAGL(current_aircraft.fdm_state->get_Altitude_AGL() *
- SG_FEET_TO_METER);
- cout << "Target AGL = "
- << current_aircraft.fdm_state->get_Altitude_AGL() * SG_FEET_TO_METER
- << endl;
- }
- if (current_autopilot->get_AltitudeMode() == FGAutopilot::FG_ALTITUDE_TERRAIN)
- current_autopilot->set_AltitudeEnabled(lock);
-}
-
-
-/**
- * Get the autopilot target altitude in feet.
- */
-static double
-getAPClimb ()
-{
- return current_autopilot->get_TargetClimbRate() * SG_METER_TO_FEET;
-}
-
-
-/**
- * Set the autopilot target altitude in feet.
- */
-static void
-setAPClimb (double rate)
-{
- current_autopilot->set_TargetClimbRate( rate * SG_FEET_TO_METER );
-}
-
-
-/**
- * Get the autopilot heading lock (true=on).
- */
-static bool
-getAPHeadingLock ()
-{
- return
- (current_autopilot->get_HeadingEnabled() &&
- current_autopilot->get_HeadingMode() == DEFAULT_AP_HEADING_LOCK);
-}
-
-
-/**
- * Set the autopilot heading lock (true=on).
- */
-static void
-setAPHeadingLock (bool lock)
-{
- if (lock)
- current_autopilot->set_HeadingMode(DEFAULT_AP_HEADING_LOCK);
- if (current_autopilot->get_HeadingMode() == DEFAULT_AP_HEADING_LOCK)
- current_autopilot->set_HeadingEnabled(lock);
-}
-
-
-/**
- * Get the autopilot heading bug in degrees.
- */
-static double
-getAPHeadingBug ()
-{
- return current_autopilot->get_DGTargetHeading();
-}
-
-
-/**
- * Set the autopilot heading bug in degrees.
- */
-static void
-setAPHeadingBug (double heading)
-{
- current_autopilot->set_DGTargetHeading( heading );
-}
-
-
-/**
- * Get the autopilot wing leveler lock (true=on).
- */
-static bool
-getAPWingLeveler ()
-{
- return
- (current_autopilot->get_HeadingEnabled() &&
- current_autopilot->get_HeadingMode() == FGAutopilot::FG_TC_HEADING_LOCK);
-}
-
-
-/**
- * Set the autopilot wing leveler lock (true=on).
- */
-static void
-setAPWingLeveler (bool lock)
-{
- if (lock)
- current_autopilot->set_HeadingMode(FGAutopilot::FG_TC_HEADING_LOCK);
- if (current_autopilot->get_HeadingMode() == FGAutopilot::FG_TC_HEADING_LOCK)
- current_autopilot->set_HeadingEnabled(lock);
-}
-
-/**
- * Return true if the autopilot is locked to NAV1.
- */
-static bool
-getAPNAV1Lock ()
-{
- return
- (current_autopilot->get_HeadingEnabled() &&
- current_autopilot->get_HeadingMode() == FGAutopilot::FG_HEADING_NAV1);
-}
-
-
-/**
- * Set the autopilot NAV1 lock.
- */
-static void
-setAPNAV1Lock (bool lock)
-{
- if (lock)
- current_autopilot->set_HeadingMode(FGAutopilot::FG_HEADING_NAV1);
- if (current_autopilot->get_HeadingMode() == FGAutopilot::FG_HEADING_NAV1)
- current_autopilot->set_HeadingEnabled(lock);
-}
-
-/**
- * Get the autopilot autothrottle lock.
- */
-static bool
-getAPAutoThrottleLock ()
-{
- return current_autopilot->get_AutoThrottleEnabled();
-}
-
-
-/**
- * Set the autothrottle lock.
- */
-static void
-setAPAutoThrottleLock (bool lock)
-{
- current_autopilot->set_AutoThrottleEnabled(lock);
-}
-
-
-// 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);
-}
-
+#if !defined(FG_NEW_ENVIRONMENT)
/**
* Get the current visibility (meters).
static double
getVisibility ()
{
-#ifndef FG_OLD_WEATHER
return WeatherDatabase->getWeatherVisibility();
-#else
- return current_weather.get_visibility();
-#endif
}
static void
setVisibility (double visibility)
{
-#ifndef FG_OLD_WEATHER
WeatherDatabase->setWeatherVisibility(visibility);
-#else
- current_weather.set_visibility(visibility);
-#endif
}
/**
speed);
}
+#endif // FG_NEW_ENVIRONMENT
+
static double
getFOV ()
{
fgTie("/sim/view/pilot/z-offset-m",
getPilotPositionZOffset, setPilotPositionZOffset);
fgSetArchivable("/sim/view/pilot/z-offset-m");
+ fgTie("/sim/time/elapsed-ms", getElapsedTime_ms);
fgTie("/sim/time/gmt", getDateString, setDateString);
fgSetArchivable("/sim/time/gmt");
fgTie("/sim/time/gmt-string", getGMTString);
// Orientation
fgTie("/orientation/heading-magnetic-deg", getHeadingMag);
- // 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
+#if !defined(FG_NEW_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/wind-from-north-fps", getWindNorth, setWindNorth);
+ fgSetArchivable("/environment/wind-from-north-fps");
+ fgTie("/environment/wind-from-east-fps", getWindEast, setWindEast);
+ fgSetArchivable("/environment/wind-from-east-fps");
+ fgTie("/environment/wind-from-down-fps", getWindDown, setWindDown);
+ fgSetArchivable("/environment/wind-from-down-fps");
+#endif
fgTie("/environment/magnetic-variation-deg", getMagVar);
fgTie("/environment/magnetic-dip-deg", getMagDip);
* Save the current state of the simulator to a stream.
*/
bool
-fgSaveFlight (ostream &output)
+fgSaveFlight (ostream &output, bool write_all)
{
try {
- writeProperties(output, globals->get_props());
+ writeProperties(output, globals->get_props(), write_all);
} catch (const sg_exception &e) {
guiErrorMessage("Error saving flight: ", e);
return false;