1
0
Fork 0
Commit graph

108 commits

Author SHA1 Message Date
andy
7ceb85d454 Changes to get FlightGear (well, the src directory at least) to
configure and compile out-of-the-box on a MinGW target:

Use -lSDL instead of -lglut32 on windows builds when --enable-sdl
is set.

Link against alut.dll in addition to openal32.dll.

Replace BSD bcopy() with ANSI C memmove() in a few places.  This is
simpler than trying to abstract it out as a platform dependency in a
header file; bcopy() has never been standard.

The ENABLE_THREADS handling has changed to be set to 0 when threads
are not in use.  This breaks expressions like #ifdef ENABLE_THREADS.
Replace with a slightly more complicated expression.  It might have
been better to fix the configure.ac script, but I didn't know how and
this whole setting is likely to go away soon anyway.

The MinGW C runtime actually does include snprintf, so only MSVC
builds (and not all WIN32 ones) need _snprintf in JSBSim/FGState.cpp

Building on a platform with no glut at all exposed some spots where
plib/pu.h was being included without a toolkit setting (it defaults to
glut).  Include fg_os.hxx first.

And when still using glut, glut.h has a bizarre dependency on a
_WCHAR_T_DEFINED symbol.  It it's not defined, it tries to redefine
(!!) wchar_t to disasterous effect.
2004-04-30 00:52:11 +00:00
ehofman
deccb6c9a7 Fix a problem where the windspeed could be negative in the property tree. Animations relying on this property could become stressed because of that. 2004-03-21 10:57:44 +00:00
curt
d8000569ea Investigating some wierd behavior where the threaded metar fetcher would
occasionally cause a large number of valid stations to be flagged as invalid.
This *seemed* like a "race condition" type problem because there were some
assumptions in the communication between the main process and the threaded
loader which if they broke down could lead to this problem.

In the process of removing this ambiguity, I restructured the threaded
(and non-threaded) metar fetching code a bit.  Some of the top level logic
(which Erik politely left untouched) didn't make nearly as much sense in the
context of a threaded metar loader and could have contributed to some of the
wierdness I was seeing.
2004-02-28 19:52:17 +00:00
ehofman
feb9f16410 Revert the previous patch, wind-heading-from is part of a range, not a direction itself. 2004-02-28 12:08:01 +00:00
ehofman
2c6c83ce9b Fix a misunderstanding between wind-from and wind-heading 2004-02-28 11:03:59 +00:00
curt
8d44c8cecc For weather fetching from the noaa.gov site: If the closest station hasn't
changed, wait 15 minutes before grabbing it's weather data again.
2004-02-26 18:21:11 +00:00
ehofman
061f1688c3 Add support for a proxy server when retreiving metar data. 2004-02-26 10:23:48 +00:00
ehofman
bca8c29795 Add threading to metar data fetching where available. 2004-02-25 15:31:01 +00:00
ehofman
69d67d7478 only airports with four-letter codes can have metar stations 2004-02-23 09:49:02 +00:00
curt
11e0b75bc3 Oops, call *re*init() so that the weather conditions (not just clouds)
are actually updated.
2004-02-23 02:22:49 +00:00
curt
a8be680c43 Enhance the FGMetarEnvironmentCtrl class to also do on the fly weather
updates based on the "closest" airport with metar data available.  Note that
the web based query is in the main loop and causes brief sim pauses.  Update
rate (once per minute) needs to be tweaked with, but is a good value for
testing.
2004-02-23 01:39:12 +00:00
curt
969fbe4601 Updates so clouds, temp, and dewpoint can be set correctly using weather
station base elevation.
2004-02-22 14:21:37 +00:00
curt
b464703a6f For metar, correctly update visibility and pressure/altimeter. Temp and
clouds need to be implimented (and adjusted for station elevation.)
2004-02-22 02:06:05 +00:00
ehofman
3dd9b14190 ignore resets for now because every z/Z key press would trigger a call to NOAA. We need a better approach. 2004-02-21 15:20:41 +00:00
ehofman
cb77391d43 Catch exceptions when no metar data is available (e.g. KUFO) 2004-02-21 15:00:49 +00:00
ehofman
897f295988 Encapsulate the interpolstion version of FGEnvironment and fix some bugs 2004-02-21 14:04:40 +00:00
ehofman
84e4b1be2e Add support for retreiving metar data from the internet 2004-02-21 12:56:16 +00:00
ehofman
7ffce3ac6a Move the new metar class from FlightGear to SimGear 2004-02-02 10:14:20 +00:00
ehofman
f845aa9b2a Add Melchior FRANZ's metar class. It is not yet used anywhere (but in the resulting metar executable), but it makes adding live weather quite easy. 2004-01-24 10:38:39 +00:00
curt
41920268a6 I had made a change on 6/24/2003 relating to temperature interpolation.
Upon further review, I was very misguided, and unfortunately no one slapped
my hand at the time.

Factoring in the environment manager's interpolation scheme, it makes complete
sense to specify the sea level temperature at each boundary and aloft layer.
In fact, this is the only way that allows the temperature interpolation to
make sense, especially around the boundary layer.  This is confusing stuff,
but it now works perfectly. :-)
2003-11-10 21:55:49 +00:00
ehofman
cd4263f333 Fix some compiler warnings 2003-10-16 12:53:10 +00:00
ehofman
980012e168 Move FGEventMgr and FGSubsystemMgr over to SimGear, add SGEventMgr to FlightGear's globals structre and some small code cleanups 2003-09-24 17:20:55 +00:00
ehofman
32cb0df98e Add support for moving cloud layers 2003-08-19 13:06:51 +00:00
ehofman
5ae096b225 Reorganization of main.cxx 2003-08-17 09:54:41 +00:00
curt
429a5067d8 Make the property tree reading slightly more robust. 2003-07-31 01:43:57 +00:00
david
b8a8d2194a More turbulence tweaks and fixes.
Skip turbulence calculations with magnitude is 0.
2003-07-14 22:34:08 +00:00
david
1691d3ba19 Add the ability to control turbulence rate as well as magnitude.
Square the normalized direction acceleration for the y and z axes, so
that turbulence predominantly affects pitch.

Bind to the /environment/turbulence/magnitude-norm and
/environment/turbulence/rate-hz properties in FlightGear.
2003-07-13 20:13:18 +00:00
curt
1a8fe25cf4 Previously the weather dialog box and environment system had some confusion
between temperature at altitude vs. temperature at sea level.  The dialog
box asked for temperature at altitude which makes sense, but all the
internal crunching expected temperature at sea level.  However, it makes no
logical sense to specify the sea level temperature for different layers so
I changed the internal processing to work with temperature at altitude and
then derive an approximate sea level temperature at the end.

If you know the ground temperature, you can just enter this temperature
for the first boundary layer and the system should do the right thing.
2003-06-24 20:04:29 +00:00
ehofman
ee806b50a1 MSVC fix 2003-06-10 12:03:07 +00:00
ehofman
3c93039bc3 density_slugft3 is used before its initialization 2003-06-10 11:59:17 +00:00
ehofman
414b4ada11 Irix/MipsPro compiler fixes 2003-06-09 08:44:59 +00:00
david
e588cbadd8 Removed FGEnvironmentMgr as a special case in globals, initialization,
etc.

Improved the weather system to interpolate between different
elevations and deal with boundary-layer conditions.  The configuration
properties are now different (see $FG_ROOT/preferences.xml).
2003-06-08 14:47:03 +00:00
curt
21b317ff21 Move simgear/sky/ to simgear/scene/sky as part of the consolodation of
graphics code.
2003-05-30 15:16:57 +00:00
david
27d5965703 Use "coverage" instead of "type".
Rename "mostly-cloudy" to "broken" and "mostly-sunny" to "scattered",
to follow standard weather terminology.

Add "few".
2003-04-05 03:33:01 +00:00
david
eff59b94a6 Do not allow the dewpoint to be higher than the temperature. 2003-04-04 22:38:55 +00:00
david
21b46469ee Make sure the gust wind speed is never less than the base wind speed. 2003-01-20 13:02:18 +00:00
david
cf3e79ee46 Cleanup from Norman Vine to prevent compiler warnings. He also writes:
Note I believe there was a 'missing comma' in the next to last row also
2002-12-30 22:21:31 +00:00
david
f0195b564d Made temperature, dew-point, and pressure at altitude read-only, so
that they won't get messed up during a reset if there are reassigned
before the altitude.
2002-09-07 13:00:20 +00:00
curt
4f00d9a959 Tidy up the autoconf/automake configuration a bit.
- Removed some old cruft.

- Removed some support for older versions of automake which technically was
  correct, but caused the newer automakes to squawk warnings during an
  initial sanity check (which isn't done very intelligently.)

  NOTE: this fix is technically not correct for older version of automake.
  These older version use the variable "INCLUDES" internally and could have
  them already set to an important value.  That is why we were appending
  our values to them.  However, newer versions of automake don't set this
  value themselves so it is an error to append to a non-existant variable.
  We seem to "get away" with overwriting the value on older versions of
  automake, but if you have problems, consider upgrading to at least
  automake-1.5.
2002-08-25 19:40:04 +00:00
david
0d48bae1ef Patch from Cameron Moore:
The patch fixes the uninitialized values by explicitly starting
everything at sea_level values.
2002-06-28 17:41:18 +00:00
david
d982efc4c4 Fix two problems:
1. Typo where /environment/density-inhg instead of
   /environment/density-slugft3 was flagged as archivable.

2. Density should no longer be archivable anyway, since it is
   calculated internally and not directly settable by the user.
2002-06-07 14:23:09 +00:00
david
a08d92e142 Correct temperature value passed to FDM. 2002-06-07 00:15:21 +00:00
david
56642901b5 Air density is now calculated automatically from air pressure,
temperature, and dewpoint.  The /environment/density-sea-level-slugft3
property has been removed, and the /environment/density-slugft3
property is read-only.
2002-06-06 00:21:23 +00:00
david
2df334378f Use factors instead of offset in atmosphere model. The troposphere is
hard-coded for 38,000ft.
2002-06-05 22:30:07 +00:00
david
890c26a9ee Move initial setup of cloud layers to Main/main.cxx to ensure that
they are done only once, and ensure that all properties are untied in
unbind().
2002-06-05 17:45:42 +00:00
david
384c3c254a Initialize default SLP to 29.92inHG. 2002-06-05 14:44:30 +00:00
david
b091433cf6 Added support for initializing and maintaining up to five cloud
layers.  The properties controlling each layer are inside
/environment/clouds/layer[n], and the available properties are type
("clear", "overcast", "mostly-cloudy", "mostly-sunny", or "cirrus"),
span-m (should be about 40000), elevation-ft, thickness-ft, and
transition-ft.
2002-05-17 19:02:24 +00:00
david
b112e72510 Actively manage the static temperature, static pressure, and density
values in the FDM if requested by the
/environment/params/control-fdm-atmosphere property.
2002-05-15 12:04:25 +00:00
david
663dc4b545 Minor tweaks and additional comments. 2002-05-15 12:03:41 +00:00
david
8a5cdbdbc6 Finished off the atmosphere model (Troposphere and lower
Stratosphere).  The atmospheric properties are as follow:

/environment/temperature-sea-level-degc
/environment/temperature-degc
/environment/pressure-sea-level-inhg
/environment/pressure-inhg
/environment/density-sea-level-slugft3
/environment/density-slugft3

Setting either the sea-level or altitude value automatically sets the
other value appropriate, except for temperature at altitude above the
Troposphere (where there's no reliable way to back-calculate it).  The
atmosphere model appears in the atmosphere_data array in
environment.cxx, and can easily be extended into the upper
stratosphere and beyond.

These are not yet tied into the FDMs or steam module.
2002-05-15 03:00:41 +00:00
david
49bb3306d9 Environment manager overhaul -- return a copy of an FGEnvironment
object rather than a pointer.

FGEnvironment now has the beginning of an atmospheric model, and will
recalculate temperature (not pressure or density, yet) based on
elevation.

FGEnvironment has a copy constructor.
2002-05-11 23:23:42 +00:00
david
5a849b66e8 Major overhaul:
- changed FGSubsystem::update(int) to
  FGSubsystem::update(delta_time_sec); the argument is now delta time
  in seconds rather than milliseconds

- added FGSubsystem::suspend(), FGSubsystem::suspend(bool),
  FGSubsystem::resume(), and FGSubsystem::is_suspended(), all with
  default implementations; is_suspended takes account of the master
  freeze as well as the subsystem's individual suspended state

- the FDMs now use the delta time argument the same as the rest of
  FlightGear; formerly, main.cxx made a special case and passed a
  multiloop argument

- FDMs now calculate multiloop internally instead of relying on
  main.cxx

There are probably some problems -- I've done basic testing with the
major FDMs and subsystems, but we'll probably need a few weeks to
sniff out bugs.
2002-05-11 16:28:50 +00:00
david
ce69eb8e79 Added an interface for an environment controller, together with a
default implementation that uses user-supplied params.  Currently, the
only parameters are

  /environment/params/base-wind-speed-kt
  /environment/params/gust-wind-speed-kt

but others will show up soon (i.e. sheer, variable direction, variable
visibility, etc.).  To activate these properties, you have to
configure --with-new-environment.

The gusting function is simplistic and needs to be replaced with
something better, though it doesn't feel too far off.
2002-05-07 00:03:54 +00:00
david
d2344cbabb Removed dependency on viewmgr.hxx from globals.hxx, so that changes to
the viewer code do not require most of FlightGear to be rebuilt.
Added some now-required includes to environment.cxx.
2002-04-05 18:46:47 +00:00
david
2e4f836a98 General cleanups to cut cross-dependencies and speed up compilation.
Added two new properties:

  /environment/temperature-sea-level-degc
  /environment/pressure-sea-level-inhg

These are now supported in FGEnvironment as well, though they always
have the same value for now.  They need to be hooked up to the FDMs.
2002-02-22 23:37:45 +00:00
david
eaf9fa7621 Added FGEnvironmentMgr to provide information on the environment in
different locations, and hitched it into FGGlobals.  FGEnvironmentMgr
has taken over as the subsystem, while FGEnvironment is simple the
information that it returns.  I've removed current_environment
completely -- everything now uses properties or goes through
FGGlobals.  FGGlobals itself has a couple of useful methods:

  const FGEnvironment * get_environment ();
  const FGEnvironment * get_environment (double lat, double lon, double alt);

The first one returns the environment data for the plane's current
position, while the second returns the environment data for any
arbitrary location.  Currently, they both return the same information,
but that will change soon.
2002-02-22 22:51:34 +00:00
david
254de7695d Further tweaks for the new environment subsystem. 2002-02-19 16:25:38 +00:00
david
ac20cb7768 Initial take of new environment subsystem. Configure with
--use-new-environment to active it.
2002-02-19 14:21:19 +00:00