1
0
Fork 0
Commit graph

4517 commits

Author SHA1 Message Date
mfranz
b0271d17db - add direction letter to numeric mode, too
- avoid negative sign on 0.00
2006-06-17 18:08:53 +00:00
mfranz
fb1b1d98d3 remove lon/lat string representation generating functions; this is now
done in Main/fg_props.cxx and available via /position/{long,lat}itude-string
2006-06-17 16:40:51 +00:00
mfranz
e2deb397a9 remove obsolete "lon/lat format" commands that have been labeled "deprecated"
and "will very soon be removed" since years
2006-06-17 16:37:33 +00:00
mfranz
af0ad80b51 move generation of lon/lat string representations here from cockpit.cxx.
Thanks to tied functions, this is only executed when the node is read. This
will be done by the old & new HUD code, the latter of which won't have a
special lon/lat mode at all. Instead it will be regular labels that point
to these properties for displaying lon/lat.
   I would have liked to avoid the duplication of code (lon and lat being
basically the same thing), and to avoid using static buffers and all, but
... if anyone wants to make it prettier, go ahead.
   The format is controlled by /sim/lon-lat-format (will be changed if I
find a better place).
2006-06-17 16:33:00 +00:00
mfranz
890fa81c7e - remove unused classes lat_label and lon_label (it's the instr_label
that makes the lon/lat labels)
2006-06-16 19:29:34 +00:00
curt
4fade5839e Add a flag that allows the simulator to force "radar" computations even if
AI aircraft are out of range or the piloted aircraft has no radar system.

These computation include range, bearing, and angular offset relative to the
piloted aircraft.  This gives some external script the control the behavior
of the AI aircraft relative to the piloted aircraft without requiring a radar
system, and without requiring the AI aircraft to be within radar range.
2006-06-16 19:10:20 +00:00
curt
943b7b22a7 This patch only affects aircraft (AI Models) that have no predefined
flightplan.  Such aircraft are given some initial conditions that they
fly with.  They proceed on in "freeflight" mode indefinitely.  For example,
there is a refueling demo where the tanker starts at 3000', 280 kts, and
in a 15 degree bank, and then continues to orbit indefinitely.

For these aircraft with no flightplan, I have added several control nodes in
controls/flight that allow a script or menu or external application to set
heading, altitude, bank angle, and speed.  This permits some level of interactive
or scripted control over AI aircraft.
2006-06-16 14:22:21 +00:00
fredb
c5a7267206 Compile again on Win32 platforms 2006-06-16 10:17:06 +00:00
mfranz
038e047e8f - move FloatToInt() function to simgear/math/fastmath.hxx, renamed to
float_to_int() for consistency reasons
- remove hud_opts.hxx
2006-06-16 09:31:34 +00:00
frohlich
ef52b23e3a Make more use of SGGeod 2006-06-15 19:16:21 +00:00
mfranz
d336553d75 - make function table and lookup function
- make unnamed elements explicitly "[unnamed]"
2006-06-15 18:09:15 +00:00
mfranz
ed7ee6b534 - fix two bugs
- remove yet more unused code
- cosmetics
2006-06-15 16:03:27 +00:00
frohlich
d11ec8c8e7 Don't bail out for lon == 180 or lat == 90 2006-06-15 08:55:42 +00:00
frohlich
c2d8dcc18b More use of SGGeo[dc]. 2006-06-15 08:29:43 +00:00
mfranz
7327e35020 remove the rest of the static variables (except one); cleanup 2006-06-15 00:21:06 +00:00
mfranz
4e8a89c9c0 remove readCard() and let the hud_card class read its properties 2006-06-14 23:27:55 +00:00
mfranz
9e2de090b4 remove readCard and let the gauge_instr class read its own properties 2006-06-14 20:39:10 +00:00
mfranz
b32aa5086a remove readRunway() and let the runway_instr class read the properties in
the constructor
2006-06-14 18:41:36 +00:00
mfranz
d1a9512c91 remove readTBI() and let the fgTBI_instr class read its properties 2006-06-14 16:57:38 +00:00
mfranz
ddda2c68d5 - remove hud.cxx/readLabel and let the instr_label read its properties
- remove unused copy constructor
- fix potential crash bug
2006-06-14 16:23:44 +00:00
mfranz
812275cf15 remove readLadder(const SGPropertyNode *) and make the HudLadder
constructor read its properties on its own
2006-06-14 12:49:27 +00:00
mfranz
471fecd72c indentation, trailing spaces, ... (cosmetics only); doesn't make
the coding style fully consistent yet, but it's good enough for code changes
(mixed tab/space indents, 4 space tabs etc. are a royal pain)
2006-06-14 10:30:10 +00:00
mfranz
e545c563d5 remove assignment operators: they aren't used now and won't in the future 2006-06-13 15:00:31 +00:00
mfranz
0b0c681775 indentation, trailing spaces, alignment, ... (to make further work easier) 2006-06-13 14:48:19 +00:00
mfranz
b674037a3c - fix more cases of scale tick aliasing to get smooth scale movements
- remove trailing spaces, fix indentation, unify coding style, ...
2006-06-12 23:27:55 +00:00
mfranz
365546444c fix ugly aliasing effects in moving scales (caused by integer calculation
of tick coords)
2006-06-12 22:27:10 +00:00
mfranz
9edd0a1ea4 - remove trailing spaces
- fix indentation, alignment and other formal stuff
2006-06-12 21:34:47 +00:00
mfranz
5fa474e209 - remove evil exit()
- remove "enabled". It's unused, and that's a good thing: it wasn't
  initialized.
2006-06-12 15:39:38 +00:00
mfranz
79abf11466 add Nasal/Listener hooks for adding/removing AI/MP models. Things like
MP chat or Nasal/xml based radar instruments need that. It uses fgSetString,
because this is in a very "cold path" and shouldn't clutter the AIBase.
2006-06-11 15:32:18 +00:00
mfranz
56d8181da3 remove the "ai_model" subsystem manually before the other subsystems
are taken down by the C++ runtime environment. This will later be done
with runlevels. Why would we want to run nasal code in subsystem
destructors? We don't really. But some data structures may use nasal,
which are normally created/destroyed during runtime. And these will
also be destroyed at fgfs exit. In the past things like these didn't
happen, because someone had disabled all subsystem destructors ...
2006-06-11 15:18:48 +00:00
frohlich
14fe03ba6f Modified Files:
src/AIModel/AIAircraft.cxx src/ATC/AILocalTraffic.cxx
	src/FDM/flight.cxx src/FDM/flight.hxx src/FDM/groundcache.cxx
	src/FDM/groundcache.hxx src/Main/fg_init.cxx src/Main/main.cxx
	src/Scenery/hitlist.cxx src/Scenery/hitlist.hxx
	src/Scenery/scenery.cxx src/Scenery/scenery.hxx
	Make use of the attached SGMaterial reference userdata on scenegraph
	leafs. Make the SGMaterial pointer available to the ground query
	routines.
2006-06-11 13:34:18 +00:00
mfranz
e48967cb1d fix another crash on exit by finally converting the rest of unguarded
SGPropertyNode to guarded ones. This is also done for JSBSim/JSBSim.hxx,
for which JSB had given explicit permission a while ago. I postponed that
back then, but now is the time.
2006-06-11 10:21:10 +00:00
mfranz
c4463b311c make sure the "nasal" subsystem is one of the last to be removed. That
way it can still process listener code during shutdown.
2006-06-10 22:24:05 +00:00
mfranz
00f3d1db80 - remove listener in ~FGNasalListener(), not FGNasalSys::removelistener
- delete all listeners in ~FGNasalSys()
2006-06-10 22:21:22 +00:00
mfranz
dee302354f the special line width doesn't make much sense, as it's only applied to the
arrow head marks. It was probably thought for all lines, but as those are
wide enough, I just comment that out for now.
2006-06-10 15:25:48 +00:00
mfranz
14addaab07 treat colors like the other parameters: only copy them from the palette
color group /sim/hud/palette/color[*]/ to the active group /sim/hud/color/
if they really exist. (Parameters like <antialiased> can be set in the
active group and be left alone, or set by each <palette> color group.)
2006-06-10 09:22:27 +00:00
mfranz
b2b9a32e4b consider new HUD path. It doesn't seem to make sense to put "antialiased"
into the <color> group, but that's because on HUD color changes a whole
"color" set from /sim/hud/palette/color[*] is copied to /sim/hud/color/, and
antialiasing needs to be considered with that. (I'm not entirely happy
with the property names yet.)
2006-06-10 07:23:15 +00:00
mfranz
925e1578cd - remove lots of traling spaces
- fix indendation and alignment
2006-06-09 21:29:40 +00:00
mfranz
265e411791 - add transparency option
- comment out date/time ... this needs to be added to the HUDs that need it
2006-06-09 20:37:16 +00:00
mfranz
942561d64c - remove trailing spaces
- fix many cases of broken indentation (but not all)
- unify indendation
- ...
2006-06-09 18:48:57 +00:00
mfranz
4db6e924fe Vivian MEAZZA:
" Make a couple of minor adjustments to Harald's weather radar code, make
elevation work in the radar code, and add station ident to the TACAN code"
2006-06-09 18:29:51 +00:00
mfranz
20076aa2b9 - remove obsolete definition
- make sure HUD is only initialized once
2006-06-09 10:53:48 +00:00
mfranz
782e6b82f0 - copy preset colors from <palette> to /sim/hud/color
- listen to color, alpha, alpha-clamping
- fix blend mode
2006-06-08 17:14:59 +00:00
frohlich
4fde3031eb Make use of the ground material types 2006-06-08 05:58:36 +00:00
mfranz
8369cc75f5 - don't hide HUD only because the color index is invalid
- initialize color components
2006-06-07 21:41:32 +00:00
mfranz
fe3bdf0837 boy, what a load of ... 2006-06-07 21:35:11 +00:00
mfranz
d2791fdc9d whoops ... compile (this silly #define will be removed very soon) 2006-06-07 21:28:33 +00:00
mfranz
e841b65a5a remove obsolete constants 2006-06-07 21:09:38 +00:00
mfranz
1ccacef184 - drop hardcoded color/brightness values
- let listener class watch and maintain HUD color properties, which is
  more effective and more flexible.
2006-06-07 18:01:19 +00:00
mfranz
14ab303877 remove obsolete HUD fgcommands 2006-06-07 17:59:28 +00:00
mfranz
95da0171a0 bark if the requested font isn't a texture font. A more graceful recovery
doesn't buy us much, as the font is only set at initialization time and not
changeable later. Better tell the user immediately that he goofed.
2006-06-06 19:25:33 +00:00
mfranz
675ff6fbc8 restore old default; this should probably be configurable ... 2006-06-06 18:36:34 +00:00
mfranz
c5e74d090a better always use style[0] (again). Otherise *-set.xml can't easily change
background/font
2006-06-06 17:30:49 +00:00
mfranz
88beabb2d3 use global fontcache ... this is mostly cosmetic, as the whole file will
probably die a soon as the old property picker was removed
2006-06-06 16:33:38 +00:00
mfranz
15dbbbf143 - use global fontcache
- make font/size configurable
2006-06-06 15:34:18 +00:00
mfranz
db86d15c5f use global fontcache. This hast the nice side effect that panels can now
use *any* texture (*.txf) font, not just "typewriter" and "led".
2006-06-06 12:52:45 +00:00
mfranz
355f86d6cf FGFontCache: add getter for the fntTexFont component of a cached font 2006-06-06 12:49:42 +00:00
mfranz
d8cd8f96aa read font and colors from the selected style, not always from /sim/gui/style[0] 2006-06-05 22:03:23 +00:00
mfranz
43b66ac74b don't choke on invalid nodes 2006-06-05 21:55:18 +00:00
mfranz
55903e9a07 use the global fontcache; this has the nice side-effect that the font is
now settable via /sim/gui/style/fonts/splash/{name,size,slant}
2006-06-05 20:49:35 +00:00
mfranz
067e6d56c2 use global fontcache 2006-06-05 20:25:43 +00:00
mfranz
47223b0442 make FGFontCache independent of NewGUI and allow early construction in
FGGlobals
2006-06-05 20:23:56 +00:00
mfranz
d5fd30249f make fontcache globally available 2006-06-05 20:21:45 +00:00
mfranz
4d9d907c05 whoops, sorry, I forgot to commit that. (Thanks, Fred, for fixing).
Belongs to the SGSubsystem interface functions.
2006-06-05 16:28:20 +00:00
fredb
d1d9fb8881 Declare new member functions 2006-06-05 16:19:50 +00:00
mfranz
b2d2ec2e16 make modifier keys accessible via /devices/status/keyboard/{shift,ctrl,alt} 2006-06-05 13:45:59 +00:00
mfranz
6cc4cbd696 fix the splash background color property path 2006-06-04 17:18:05 +00:00
mfranz
18d09b569f - display of SGPropertyNode flags can now be toggled per <property-list>
widget (Ctrl-click on "." entry), so we don't need a global property
  for this
- s/dotFiles/_dot_files/ for consistency reasons
2006-06-03 11:20:19 +00:00
fredb
35a8d66415 Mask error message 'Failed to find runway 28R at ...' when no runway is requested in the command line 2006-05-31 07:20:10 +00:00
frohlich
dcc77f1a7c From Olaf Flebbe: avoid iterator overruns if we delete the last list entry. 2006-05-30 17:21:50 +00:00
mfranz
4f17b48e83 - use guarded pointer for (unused) refuel_node
- comment out refuel_node->setBoolValue()  (as it was in the original patch :-)
2006-05-26 05:23:40 +00:00
mfranz
9e9d463a11 not that! 2006-05-24 21:05:48 +00:00
mfranz
68beab9fb2 s/isascii/isprint/ 2006-05-24 21:02:52 +00:00
mfranz
597298d5a7 - fix slider
- order functions like in puAuxList.cxx (plib/cvs) for easier
  back/forward-porting
2006-05-24 20:46:10 +00:00
mfranz
e7e0e84add - force multiline contents (Nasal scripts!) into one line, so that they
don't print over other entries or even leak out of the widget
- warning-- (MSVC)
2006-05-24 14:00:56 +00:00
fredb
790848b822 Compile 2006-05-24 10:51:35 +00:00
mfranz
dab5434edb Vivian MEAZZA:
"Remove unnecessary, redundant or duplicated code. Functionally, there is no
change"
2006-05-24 10:06:44 +00:00
mfranz
b08a588fb1 ok, now I know why the destructor was commented out in prop_picker.cxx:
there's a bug that I had copied: update() checks each list node: if it
has no children, then a listener is attached. Later, when freeing the
children list, it assumed again that each node without children would
have a listener attached. This caused a crash when a node had children
before, but lost them in the meantime. Now we tried to remove a listener
where there never was one.
2006-05-24 09:42:10 +00:00
mfranz
6465141ac2 - don't jump to top after bool toggling 2006-05-23 21:35:38 +00:00
mfranz
91a367379c catch non-existent nodes, too 2006-05-23 20:48:01 +00:00
mfranz
9c98766700 treat widget input correctly 2006-05-23 20:24:56 +00:00
mfranz
e0b1d12a60 don't abort fgfs only because a nasal script called a property function
with an invalid path, as in getprop("/sim/model/737") or x.getNode("f:1").
Forward sg's error message to the Nasal runtime error function instead, so
you get something like:

  Nasal runtime error: name must begin with alpha or '_'
    at /home/m/fgfs/Base.local/Nasal/props.nas, line 30

Unfortunately, the location points to the line where the ghost wrapper
sits, rather than the offending script line.
2006-05-23 18:55:38 +00:00
mfranz
fdb9e94af3 ugly "fix": the constructor was commented out in prop_picker.cxx since
*many* years, so the property browser always leaked memory. I activated
this line in property_list.cxx and ... got a crash right there. So this
was the reason for it being commented out? Doing the same for now, until
I know the exact reason and can really fix it.
2006-05-23 16:49:32 +00:00
mfranz
4c940a55f9 fix for broken plib 1.8.4 2006-05-23 16:44:10 +00:00
mfranz
d47e4ce0bd Vivian MEAZZA:
"Bug Fix - amend the code so that JSBSIm can have more than one tanker in
the environment at the same time. A nasal script has to be added to each
aar-capable JSBSim model to complete this fix."
2006-05-22 20:18:40 +00:00
mfranz
e2c195f3a6 - move the ID stuff to dialog.hxx
- add an identifier to fgPropertyList(), which is also PUCLASS_LIST based
2006-05-22 16:14:50 +00:00
mfranz
9ff339332c make new widget available as <property-list> 2006-05-22 14:35:39 +00:00
mfranz
0007098aac add property_list.[ch]xx 2006-05-22 14:34:59 +00:00
mfranz
3610680095 new property browser widget 2006-05-22 14:34:20 +00:00
mfranz
7b4238fe8c - backport plib/cvs (transparency feature; never tried that :-)
- backport submissions for plib 1.8.5:
  * set slider size correctly
  * remove slider/arrow when all entries fit into the view
  * don't allow to scroll off the list
2006-05-22 14:33:01 +00:00
mfranz
dfdb7f8107 the last patch fixed the AirportList ... and broke all other PUCLASS_LIST.;
Unfortunately, there's no simple way to distinguish them. plib has no
user defined widget classes, and getTypeString() -- which could be used
for that -- isn't virtual. Sigh. I'll discuss the problem on the plib list.
For now I can only offer an ugly workaround. (Don't look closely!)
2006-05-21 22:14:18 +00:00
mfranz
24981fd043 - replace string methods with property methods The class was originally adapted
from plib's file-picker, where it made some sense to keep the current path as
  string, and to chop off elements when leaving a dir, and adding them when
  entering. But it doesn't make the least sense in SGPropertyNode space, where
  we already have everything to move in a tree.

- add R & W flags for TRACE_READ and TRACE_WRITE. Remember: lower case letters:
  disabled (rw ... reading/writing), upper case letters: enabled (RWAUT)

- remove some verbosity & further cleanup ... to make further work easier :-)
2006-05-20 15:25:38 +00:00
fredb
d6320ad76b Create the /sim/ai node if someone has the unfortunate idea of removing it from preferences.xml 2006-05-20 13:29:31 +00:00
fredb
b55833dffb Add an option to enable ai scenarii from the command line instead of editing preferences.xml 2006-05-20 12:19:33 +00:00
mfranz
368349aa58 fix "airport list" crash: I had wrongly assumed that now all PUCLASS_LIST
would actually be an fgList class. The airport list is a PUCLASS_LIST, too,
so we have to check for that. -> Use getTypeString() for identification.
2006-05-20 11:35:28 +00:00
mfranz
53572823bc - unify several indentation and coding styles (and no, this is not my
preferred style, but the most sane of those used :-)
- remove trailing spaces
- cleanup

(all of this will make further work on the files easier)
2006-05-19 10:59:04 +00:00
mfranz
f5955a9cab Vivian MEAZZA:
"Add Air to Air TACAN and User-User refuelling over the Multiplayer Network.
With this change, your TACAN instrument can be tuned to the channel of a
Multiplayer ac. It also activates fuel flow between User and User aircraft
when they are less than 50 ft apart. To participate in multiplayer as a
tanker, all you require to do is to use the callsign MOBIL* (where * is some
number) on the net. Only MOBIL1, MOBIL2 and MOBIL3 have been assigned TACAN
channels, but any MOBIL callsign will be able to give fuel."
2006-05-18 16:59:04 +00:00
mfranz
ee0d288e32 show attributes if /sim/gui/dialogs/property-browser/show-flags == true:
r ... read protected
w ... write protected (untested; does probably not work for obvious reasons ;-)
A ... archive
U ... userarchive
T ... tied
2006-05-18 14:46:42 +00:00
mfranz
865a1c037e unselect entry after editing process has been finished 2006-05-18 13:09:34 +00:00
mfranz
7512553a9a don't reset list to top after having changed a value 2006-05-18 12:51:32 +00:00
mfranz
6d24d7496e Ctrl-Click on bool entry toggles property 2006-05-18 12:12:10 +00:00
mfranz
fa62bc3ec2 SDL 1.2.10 (released today!) doesn't report unicode on key release. Now
we have to ourselves which unicode code a key release even should fire.
(Tested with 1.2.9 and an 1.2.10. Please report any new keyboard problems.)
2006-05-17 21:21:38 +00:00
mfranz
5a38a9d071 - undefine PUCLASS_LIST, as we have our own (old_warning--)
- PropertyObject: remove additional "values" member again
- don't create entry lists for <list>, <select>, and <combo> at dialog
  creation and delete them on dialog close, but let a separate class
  fgValueList handle this. The three widgets are now subclassed and the
  derived widget lets fgValueList manage the lists
- make <select> consistent with <list>. This breaks backwards
  compatibility, but not a single dialog in fgfs uses it and did so
  since ... forever. (Shoot me!)

Rationale: now that dialogs are a bit more dynamic than they used to be
(thanks to embedded Nasal), we have to delete and recreate entry lists
during dialog use. Deleting only at dialog closing doesn't cut it anymore.
Especially list widgets that are updated several times per second would
use up a lot of memory otherwise. The route-manager doesn't update that
often, but it did already leak. One TODO less.  :-)
2006-05-16 12:45:38 +00:00
mfranz
95b6f8057a Vivian MEAZZA: check for carrier name and aircraft callsign without
creating them
2006-05-15 10:47:32 +00:00
mfranz
93f4180597 linking with the puaux lib would be recommendable, if we are using its
widgets  ;-)
2006-05-14 12:22:53 +00:00
mfranz
7ddc71dd13 fix data type (no wonder that this crashes on 64 bit systems :-) 2006-05-14 11:14:49 +00:00
fredb
b30d903a56 Use puAux widgets available in plib 1.8.4 instead of using pui deprecated widgets now removed from CVS 2006-05-14 09:03:50 +00:00
mfranz
d9ee19d6cc - remove trailing spaces
- fix ridiculous mixture of 2-space-, 3-space-, 4-space-, tab-indents,
  and ~K&R & (braindead) FSF coding style
2006-05-13 10:02:17 +00:00
mfranz
db22f457b5 Vivian MEAZZA:
"Preparations for an upgrade to Air-to-Air Refuelling to allow more than one
tanker in the environment at a time. This will only work with YASim models.
JSBSim models are unaffected by this change."
2006-05-13 09:06:57 +00:00
mfranz
6c1be4fffb - remove listener first in the destructor
- make function arg const again
2006-05-12 15:37:25 +00:00
mfranz
244547eb4c only lock AP automatically if above /autopilot/route-manager/min-lock-altitude-agl-ft
The ufo sets this to a very low value, "serious" aircraft (which don't want this
unrealistic automatism at all) set it to a very high value, and those that don't
care ... don't need to care.
2006-05-12 09:36:21 +00:00
mfranz
ef339945fd only activate heading & altitude lock when in air (and even then it should
probably be configurable?).
2006-05-11 10:01:47 +00:00
mfranz
cbddd130ec also set new target altitude if wp is appended to empty list 2006-05-10 21:46:27 +00:00
mfranz
2ff16ca93f - set target altitude if a new WP becomes active through deleting/inserting
- cosmetics
2006-05-10 09:40:08 +00:00
mfranz
43dce6a2be remove wrong comment; should be obvious, anyway 2006-05-09 21:08:01 +00:00
mfranz
641f0a8e9b - implement target altitude handling 2006-05-09 21:01:01 +00:00
mfranz
d409d5dbbe add "signals" for start and end of screenshot capturing. Like the other
signals, this is meant for attaching listeners. The ufo will use that to
hide/reveal the status line in screenshots. The following signal properties
are now available:

  /sim/signals/exit       ... set to 1 right before quitting
  /sim/signals/reinit     ... set to 1 on re-init  (Shift-Esc)
  /sim/signals/screenshot ... set to 1 before and to 0 after screenshot
  /sim/signals/click      ... set to 1 after mouse clicks at terrain, signalling
                              that the geo coords in /sim/input/click/ were updated
2006-05-09 09:39:28 +00:00
mfranz
95a97dbee4 remove obsolete menu functions 2006-05-08 15:00:10 +00:00
mfranz
30a38b2c3a remove obsolete fgcommands 2006-05-08 14:56:46 +00:00
mfranz
264edc470d ignore spaces after the colon in "@insert 3: ebase" 2006-05-08 14:53:23 +00:00
mfranz
f9959b7f2c - move auto_gui's addWaypoint to routemgr.cxx
- add command interface property (monitored by listener)
- remove all traces of auto_gui.[ch]xx
- remove some trailing spaces, fix indentation
2006-05-08 14:35:29 +00:00
curt
f9edbf3620 Dave Culp:
I've got some updates for the soaring scenario that will make for a more
realistic (and fun) experience.  They are:

1)  A cap cloud, which will sit atop each thermal
2)  A thermal scenario with wide coverage around KSFO, and using cap clouds
3)  A one-line change to AIThermal.cxx to position cap cloud properly
4)  Schweizer 2-33 set file change to match cloud coverage with thermal
heights.

files:

1)  data/Models/Geometry/thermalcap.ac
2)  data/Models/Geometry/thermalcap.xml
3)  data/Models/Geometry/thermal_cap.rgb

4)  data/AI/thermal_demo.xml

5)  data/Aircraft/sgs233/sgs233-set.xml

6)  source/src/AIModel/AIThermal.cxx
*** or, if you prefer diffs ***
7)  aimodel.diff
2006-05-02 01:19:02 +00:00
ehofman
f531203951 Add binary output support for the generic protocol. 2006-04-29 12:17:30 +00:00
mfranz
ff52ed5072 add an optional property node pointer to ObjectProperty. This is currently
only used by the <list> widget. It allows to "dialog-update" the list,
which rescans the <value> children and redraws the list widget with new
contents. The old contents are only freed at dialog close, which should
eventually get changed.
2006-04-28 15:55:41 +00:00
mfranz
5b1dd6c8ae empty names aren't names 2006-04-28 12:56:11 +00:00
mfranz
ce8e28f1f5 what about using the right variable? 2006-04-28 12:14:23 +00:00
mfranz
29ff85142b - merge FGDialog::{update,apply}Value{,s} ... there's really no need to have
two almost identical functions for these methods. It only forces to repeat
  the redundancy for every small change to either.
- abstract out generation and destruction of plib string arrays
- abstract out generation of lists from <value> children
2006-04-28 11:49:11 +00:00
mfranz
eb19c2650d newgui.[ch]xx: implement FGDialog *NewGUI::getDialog(cont string&)
fg_command.cxx: add possibility to "dialog-apply" or "dialog-update"
                an arbitrary active (= open) dialog or widget
2006-04-28 10:27:54 +00:00
mfranz
ca46e8d5d5 rename NewGUI::getDialog() to NewGUI::getDialogProperties()
getDialog wrongly implies that it returns an FGDialog, and we might later
need a real getDialog.
2006-04-28 09:59:31 +00:00
mfranz
2ae061c9c3 explain createModule()'s optional SGPropertyNode argument 2006-04-27 16:40:04 +00:00
mfranz
52306b9093 add optional SGPropertyNode* argument to NasalSys::createModule. This is
used in dialog.cxx to allow XML dialogs access to their own prop tree via
Nasal's cmdarg(). That way dialogs can generate dynamic content, such as
list entries.
2006-04-27 15:56:51 +00:00
mfranz
b64e10fceb use guarded pointers 2006-04-27 15:49:47 +00:00
mfranz
3b4e532372 working on the termination of the last hardcoded dialogs in Autopilot/auto_gui.cxx:
- move fg_init/parseWaypoints() to route_mgr/postinit()
- don't delete initial string list to keep it available for subsystem reinit
2006-04-27 15:30:42 +00:00
mfranz
4b856b508a cosmetics:
- only call globals->set_initial_waypoints() if the waypoints list address
  has actually changed, that is: if it has just been initialized
- remove trailing spaces
- fix indentation
2006-04-27 10:35:03 +00:00
mfranz
d452ad97f1 Vivian MEAZZA:
"add display values for navigation display"
2006-04-26 21:55:42 +00:00
mfranz
7eb26c4ab3 set /sim/startup/[xy]size initially again. (This was always done in the past,
but got changed so that Nasal listeners wouldn't be triggered needlessly.
Doesn't make sense, though, as Nasal will never be available before the
video size is set, and it prevents the window interface from setting the
startup size.)
2006-04-25 20:16:01 +00:00
frohlich
573fb5a50a Pigeons remaining 'crash on no sound device' fix. 2006-04-25 18:48:59 +00:00
frohlich
1aa1288620 Revert a part of the past patch. It still does not crash
but you can hear again the 737 ...
2006-04-23 18:44:22 +00:00
frohlich
aecfc1a229 Pigeon:
Avoid crashes if there is no sound device.
2006-04-23 15:29:39 +00:00
frohlich
9e61446d12 Apply multiplayer crash on exit fix from Pigeon 2006-04-23 09:03:21 +00:00
mfranz
b6cf140f98 Vivian MEAZZA:
"Add Air to Air TACAN. With this facility TACAN equipped aircraft can
measure the range and bearing of TACAN equipped AI Aircraft. ATM there is
only one assigned - callsign ESSO1 on TACAN channel 039X, but this can be
easily expanded to include other c/s channel # pairs - just ask me if you
want more."
2006-04-19 17:36:41 +00:00
fredb
30adde04bf Restore line endings after goofing 2006-04-18 21:39:59 +00:00
fredb
47de74a10b If it's a struct, it's not a class 2006-04-18 21:24:38 +00:00
mfranz
e354b810fa - work around plib bug that crashes fgfs if no airport was found (empty
list) and the arrows are clicked  (patch sent to plib; workaround it to
  be removed once fgfs officially depends on a plib version that includes
  the fix)
- fix (very unlikely) crash in case the widget is redrawn between list
  destruction and setting of the new list.
2006-04-18 15:21:19 +00:00
mfranz
6ecd221bca - make header not depend on *.cxx files (which would be wrong :-P ) 2006-04-17 17:17:21 +00:00
mfranz
15a8e965f3 - use guarded property pointers
- reduce header usage
- make headers not depend on *.cxx files
2006-04-17 17:08:58 +00:00
mfranz
2e7cab820b make headers include headers they depend on, don't rely on the c(xx)
file to do that. (This is a requirement for header precompiling.)
2006-04-17 13:40:20 +00:00
mfranz
d41e86e0c6 make headers include headers they depend on, don't rely on the c(xx)
file to do that. (This is a requirement for header precompiling.)
2006-04-17 13:19:53 +00:00
mfranz
2b2b4fa8a3 make headers include headers they depend on, don't rely on the c(xx)
file to do that. (This is a requirement for header precompiling.)
2006-04-17 12:59:35 +00:00
mfranz
c0c9d51c09 aircraft are often in several state lists at the same time, and they can
even be more than once in the same list. We need to remove all such instances,
or the a pointer to TowerPlaneRec may become invalid and cause crashes.

The proper fix would, of course, be to be careful with state changes and
to prevent *any* duplication of entries.   [OK'ed by David]
2006-04-15 18:48:59 +00:00
mfranz
ec5ea9f344 rename OBJECT_TAXI_SIGN to OBJECT_SIGN. This isn't about taxi signs any
more, but all sorts of signs. Now is the best time to get rid of a
misleading name.
2006-04-14 14:50:11 +00:00
mfranz
fe78690623 allow to not only set a general widget <color>, but also specific element
colors:  <color-{{back,fore}ground,highlight,label,legend,misc,editfield}>
<input-misc>, for example, sets the input field cursor color, <input-legend>
the input field text color. (This feature was always planned as part of the
'theming' capabilities, and most code is already in place. Only this line
was apparently fogotten. :-)
2006-04-14 10:17:09 +00:00
mfranz
9512ba5ff7 defer occluder registration until the shadows subsytem is initialized.
That way models that are loaded early during startup get their shadows, too.
2006-04-12 22:21:02 +00:00
mfranz
189896a7ab only call occluder if the shadows were already initialized. This lead to
a crash when using the model manager from XML files (which apparently
nobody does, anyway ;-)  Now those models work (again), but have no
shadows. Those placed at runtime (e.g. via ufo) still have a shadow.
2006-04-12 11:12:36 +00:00
ehofman
1fc105582e Make some variables accessable (public) so MIPSpro can compile it. 2006-04-09 09:46:05 +00:00
fredb
63eec99347 Pigeon : save about 110Mb when the UIUC FDM is not used 2006-04-09 09:22:15 +00:00
mfranz
86d606f87a <input> elements that are <live> always update their input field from the
<property>, except if they are activated, in which case the user input
should, of course, not get overwritten. But if such an input was active and
the user selected a different widget, then its contents were dropped.
Fix that by setting the "DownCallback" for live input fields.
2006-04-03 15:00:33 +00:00
fredb
23e2efd5e3 Revert last change 2006-04-02 08:42:36 +00:00
fredb
e126e12fbc Under Windows, set fg-home to My Documents, or whatever localized name this folder has. 2006-04-01 11:07:45 +00:00
frohlich
2cc4b3fbc6 Modified Files:
src/Main/renderer.cxx: Remove some more unused variables
2006-04-01 10:50:52 +00:00
mfranz
885f3f9b3a - use proper error output method
- warnings--
2006-03-31 16:56:14 +00:00
mfranz
bff4c3fe22 support filtering to show only a subset of entries 2006-03-31 10:17:43 +00:00
mfranz
18a342b624 dialog-apply only applies (use dialog-update if you want to update) 2006-03-31 10:15:55 +00:00
mfranz
c5c5411d07 - reduce timeout
- stop trying to connect after first failed attempt
2006-03-31 10:12:00 +00:00
fredb
0abca6be34 Don't restore initial screen geometry because there is nothing in fg_os* to resize an existing window.
Old behavior was to just resize the GL viewport, which doesn't necessarily match the fg window size.
2006-03-30 20:37:34 +00:00
mfranz
a5b42c7201 add shadows to FGModelMgr managed models 2006-03-30 14:34:16 +00:00
durk
6f7a9a5b1b Fix for an AIFlightPlan initialization problem in the traffic manager. 2006-03-29 18:36:21 +00:00
curt
6d17cb8002 Marc Frajola:
Here is one patch that to make FlightGear run without floating point
exceptions on FreeBSD.  Apparently, if we do not ignore floating point
exceptions per this patch, there is some occasional condition where the
nvidia driver is involved in delivering spurious floating point exceptions
to the fgfs process, causing it to core-dump occasionally without the patch.

With only this patch, FlightGear will compile and run properly on
FreeBSD 6.X as long as the nvidia accelerated driver is installed,
modulo proper switches to the SimGear and FlightGear configure script
executions.

Again, kudos to your team for the great work on the big release
push; it is super to see things come together like this!
2006-03-28 21:18:32 +00:00
durk
d33c748485 Fix for a misplaced boolean assignment that caused erratic runway selection. 2006-03-28 06:14:02 +00:00
durk
ad7a6736d7 Just commenting out a few error print statements, which I had overlooked. 2006-03-26 21:42:47 +00:00
durk
3c738b5cee Bugfix in the ai initialization randomization procedure. Randomly
removing waypoints could cause the AIFlightPlan to run out of waypoints.
This patch prevents that by retaining at least two waypoints.
2006-03-26 21:40:35 +00:00
mfranz
b906a06be7 ever heard of SG_LOG? 2006-03-26 08:11:40 +00:00
frohlich
798e3c505c Remove unused variables 2006-03-25 19:11:33 +00:00
frohlich
443bfd62bb Make the bo105 appear correct for multiplayers. 2006-03-25 19:10:32 +00:00
mfranz
8d9f8e5761 - don't crash if user clicked "Apply" but hasn't selected an airport
- re-order information from  "LOXT  Tulln"  to  "Tulln  (LOXT)".
  The list is sorted by airport name and columns aren't aligned, so this
  looks way cleaner.
2006-03-25 08:47:53 +00:00
mfranz
651db1845b - make aircraft list no longer stick out from its dialog box
- cosmetics: consistent coding style (and "if" is not a function :-)
2006-03-25 07:45:50 +00:00
curt
c712c35d1d Initial revision. 2006-03-24 19:11:08 +00:00
mfranz
bf53d2b117 - set size, otherwise the widget doesn't expand to the size that the layouter
found desirable
- set slider width default correctly (parentHeight? Huh?)
2006-03-23 23:02:48 +00:00
mfranz
b650e86e74 - implement setSize(): We can't just use puObject::setSize() -- we do, of
course, have to re-layout all sub-widgets on resizing
- make slider size configurable, like it's done for the close relative
  puLargeInput
2006-03-23 23:00:31 +00:00
curt
0c85cdbd7e Additional fixes for new DME type codes. 2006-03-23 21:42:25 +00:00
mfranz
d6af5da0a8 - abstract out box slider width (should probably be settable)
- reduce it to 20 (30 is excessive and didn't match the property brower look)
- call puSlider with this size explicitly (otherwise its size is derived
  from the font size, unlike the arrow buttons!)
2006-03-23 19:51:38 +00:00
mfranz
2726cda057 make puList actually useful: call back on list entry selection.
(again: I'll submit all the changes to plib's puaList as soon as
possibe. Just needs a few more fixes first ... :-)
2006-03-23 19:03:31 +00:00
mfranz
a7bab83cc8 make puListBox inherit puList colors (otherwise the GUI style isn't
respected, and black text on dark grey is a bit hard to read).
TODO: - submit that for inclusion in plib's puAuxList
      - drop custom version and use plib's (after 0.9.10)
2006-03-23 17:44:10 +00:00
mfranz
6317faf376 Vassilii KHACHATUROV: read rain settings from property node (preferences.xml) 2006-03-23 16:48:45 +00:00
mfranz
1aa274e7cb make sure node pointers remain valid 2006-03-23 15:13:19 +00:00
mfranz
ff32e30390 don't crash if model contains personality branch (sgLoad3DModel doesn't
care for that -- SGModelLib::load_model does)
2006-03-22 13:46:10 +00:00
ehofman
746fe74838 Jon Berndt:
I had inadvertently terminated a data line when reaching a tab character after
initial data was supplied. I tested the lightning file and it now appears to
read in correctly.
2006-03-22 13:32:32 +00:00
mfranz
a04aad7a99 puList.cxx: _list_box->getIntegerValue() returns -1 as long as no list
entry was selected. Return 0 in this case, not an invalid string address
  (causing segfaults).
dialogs.cxx: don't set property if no list entry was chosen.
2006-03-22 10:56:49 +00:00
daveluff
71c8889cbf This innocuous looking typo was crashing the sim whenever an AI plane was asked to follow the user whilst the user was flying a circuit (non straight-in) approach 2006-03-21 23:33:54 +00:00
curt
d5e57b8c1f Preparations for first v0.9.10 prerelease. 2006-03-21 18:52:19 +00:00
curt
00efc0960f Add fuel pressure. 2006-03-21 18:51:57 +00:00
mfranz
0f68e8dc1f better name for listener property 2006-03-21 17:35:30 +00:00
mfranz
6cfdb3e4b3 raise signal to listeners when a whole coordinate set was written 2006-03-21 17:33:54 +00:00
fredb
69dc912333 More sanity checks 2006-03-21 14:53:38 +00:00
fredb
1e032d35e0 Add sanity check on option parameter 2006-03-21 14:43:38 +00:00
ehofman
01d85464be Fix 3d tables. 2006-03-20 20:19:16 +00:00
frohlich
292ad8f5af Remove unused variable 2006-03-20 18:16:09 +00:00
mfranz
60745d4db1 fix old bug: remove the models from where they were added (the model branch
is nowhere set)
2006-03-20 17:45:50 +00:00
mfranz
3b977ee40e - remove unused ssgSelector
- add function to remove models
2006-03-20 17:32:56 +00:00
mfranz
f3cdd7d44a allow to add models at runtime 2006-03-20 16:38:31 +00:00
mfranz
d1e247beb0 don't abort() only because one model wasn't found. Just print an error
message and continue.
2006-03-20 16:00:26 +00:00
mfranz
dfc79a8035 use guarded pointers 2006-03-20 15:45:53 +00:00
mfranz
40f2294539 extract loop body into separate function to later allow model addition
at runtime; remove Nasal support for now (the model loader is currently
initialized before the Nasal subsystem is available)
2006-03-20 12:10:20 +00:00
mfranz
7845f33c74 a bool isn't safe enough here, but a mutex shouldn't be necessary 2006-03-20 11:01:16 +00:00
mfranz
4c5e96f730 - disallow listener re-entry to prevent crash/runaway process
- move FGNasalListener function bodies to NasalSys.cxx (has become too big)
2006-03-20 07:13:10 +00:00
durk
101ca14a6d Bugfixes and feature improvements related to AI auto flightplan generation.
When AIFlightPlanCreateTaxi() function is called with the firstFlight
argument set to true, this is supposed to handle situations where the
the aircraft's timetable indicates it should have left between about 5 to
20 minutes earlier. In the previous version, all these aircraft started
taxiing from the first parking location available in the network, due
to the fact that the variable gateId was not assigned a value. In this
patch, route tracing starts from an assigned gate and the network node
following code is fast forwarded to a random location along the taxiways
to give a more realistic and natural distribution of taxiing aircraft
after startup.
    This patch further addresses some weird ballet-dancing behavior that
aircraft were showing just prior to/right after parking and which was
related to a number of more or less duplicate waypoints in the transition
from createTaxi() to createParking() to createPushBack() to createTaxi().
    Finally, a blatant typing error in the getParking() function was fixed.
2006-03-19 07:41:48 +00:00
mfranz
9604277484 create /sim/gui if it doesn't exist 2006-03-19 07:10:10 +00:00
mfranz
0c92519754 Vivian MEAZZA & Mathias FROEHLICH:
"Add new code for animating JBDs. Tidy up code for animating flightdeck
elevators."  (JBD ... Jet Blast Deflectors, but everyone knows that :-)
2006-03-18 16:31:09 +00:00
curt
abe6fe4787 Small gcc-4.1 patch. 2006-03-18 13:10:59 +00:00
frohlich
85056a31b8 Initialize uninitialized variable 2006-03-18 07:16:18 +00:00
andy
8ca3e913ad Add a (commented out) line enabling the "bits" library for testing. 2006-03-15 19:43:09 +00:00
andy
a9ea522388 Add the I/O library, but comment it out until we figure out how to do this securely 2006-03-15 18:10:29 +00:00
mfranz
537a1149a1 only evaluate click-on-terrain on left mouse button clicks 2006-03-15 07:31:57 +00:00
mfranz
6b501169a5 add missing break :-) 2006-03-14 15:30:35 +00:00
mfranz
f82a8fba52 close Aircraft/ dir after scanning for *-set.xml files 2006-03-14 15:28:29 +00:00
daveluff
a243a24393 Implement the settable timer on the CAL3 page 2006-03-13 23:01:48 +00:00
daveluff
9b67f1e0f0 Typo in the comments 2006-03-13 22:55:55 +00:00
curt
ca38ab41bd Add a comment to explain the exported glide slope value. 2006-03-13 20:20:27 +00:00
mfranz
5f339a4e83 close Nasal/ dir after reading *.nas files 2006-03-13 19:47:22 +00:00
andy
14bad84d6d Missing initializer. Kraehe's machine was crashing on the Cub;
presumably this is why.
2006-03-13 18:57:10 +00:00
ehofman
28eb9c81e9 Sync. w. JSBSim CVS. 2006-03-13 15:21:57 +00:00
daveluff
771fbd680a Helipads don't have a number per end, so don't attempt to return a (broken) reverse rwy number 2006-03-12 21:10:34 +00:00
durk
f8eb3d4309 Bugfix: Non-existent AIModels could trigger a request to load scenery tiles
at (lon, lat) coordinates -1000,0. This patch fixes the AIModels/Traffic
Manager side of things. The AIModels subsystems allowed the creation of
AIAircraft with non-existent 3D models. If such a model didn't exist, the
aip class didn't get initialized, resulting in the above-mentioned bogus
position information. Here I circumvent this problem by a) only interacting
with the tile loader if the model is visible (and hence has succesfully been
initialized) and b) by disallowing the traffic manager to create AIAircraft
objects if the path to the 3D model doesn't exist.
2006-03-11 18:14:48 +00:00
mfranz
9aaac1e352 don't allow others to delete our property node 2006-03-11 12:19:43 +00:00
mfranz
330154263e make max speed configurable (/engines/engine/speed-max-mps);
default: 2000 meter/second
2006-03-11 09:23:51 +00:00
andy
6ed0ece57c While I had the valgrind rig set up, I took the opportunity to plug a
bunch of memory leaks that had accumulated over the years.  FlightGear
doesn't currently bother to destroy and recreate a YASim context, but
at least it can do so now without worry.
2006-03-10 22:21:42 +00:00
fredb
5128578f59 MSVC fix : Compile again 2006-03-10 21:26:44 +00:00
andy
d47eefb00c Fix an uninitialized data condition that crept in during the recent
groundcache addition -- the ground callback doesn't do anything at
solution time, so the ground plane was unset.  Valgrind was whining
about this; it's not clear that it was actually causing a problem.
2006-03-10 19:47:23 +00:00
andy
91c024ebec When we are asked to produce no force on a Surface (e.g. a weight that
is "off"), make sure the force is actually zero.  Kind of a hack -- a
better idea would be flag to set at a higher level.
2006-03-10 19:46:16 +00:00
mfranz
1dae811546 always make some property string values upper case 2006-03-10 11:46:03 +00:00
frohlich
dc958d6e8e We need to flush all pending mouse move events past a mouse warp to avoid
a race condition ending in warping twice and having huge increments for the
second warp.
I am not aware of such a flush function in glut. So we emulate that by
ignoring mouse move events between a warp mouse and the next frame.
That should make glut behavour aequivalent to sdl behavour.
2006-03-10 07:13:59 +00:00
david
c486dc0589 Recognize standalone DMEs (type 13 in Robin's list). 2006-03-10 03:46:50 +00:00
mfranz
e4f08637f7 move gui styles from /sim/gui[n] to /sim/gui/style[n] to make /sim/gui
free for other gui related properties
2006-03-09 23:04:41 +00:00
mfranz
e8c2b8c9f4 --warnings 2006-03-09 21:41:51 +00:00
mfranz
31d3fd0209 add alert message 2006-03-09 17:32:24 +00:00
mfranz
b9d3c3ccb6 check if the "nasal" subsystem is still there, and only call <unload> then.
This isn't the case if the model is destroyed on fgfs exit. To make <unload>
work under these circumstances, one would have to reorder subsystem removal,
but this doesn't seem overly useful, so we'll do it when we really need it.
2006-03-09 13:30:28 +00:00
mfranz
c386f00312 I take that back. This doesn't work yet. :-) 2006-03-09 11:23:15 +00:00
mfranz
5ebd1a18f3 add <load>/<unload> support to AI models, including aircraft models. For
aircraft models this is only called if they are loaded as AI, not if they
are the model flown by the human pilot. This has technical reasons (too
soon for Nasal/fg), but is useful to distinguish AI and non-AI use, for
example to set a different livery for AI models, or to set different
animation properties.
2006-03-09 11:14:16 +00:00
mfranz
83b64b0140 remove leftover #include; changed comment 2006-03-09 11:05:32 +00:00
mfranz
2796f3f4a5 NasalSys.[ch]xx:
implement FGNasalModelData class for execution of XML <load> and <unload>
  scripts. modelLoaded() is called by the model loader, and the destructor
  on branch removal.

modelmgr.cxx:
tilemgr.cxx:
tileentry.[ch]xx:
  make scenery and custom objects run their Nasal scripts on loading
  and unloading. Let OBJECT_STATIC object not be cached.
2006-03-09 09:04:03 +00:00
mfranz
b0b5c2dda9 remove useless test 2006-03-08 20:23:31 +00:00
mfranz
6867462210 crashfix: handleCommand() is called from other modules (input callbacks,
fgcommands from C++ or GUI), so we need a separate context here. (See
also solution in FGNasalListener::valueChanged)
2006-03-08 16:06:32 +00:00
ehofman
b7ef6d8cef Add the builddir to the list of include directories to be able to include Include/version.h 2006-03-08 12:01:45 +00:00
mfranz
2de4fd5d8e add support for <nasal> blocks <open> and <close> in XML dialogs:
<nasal>
      <open>print("I'm called on dialog open")</open>
      <close>print("I'm called on dialog close")</close>
  </nasal>

All Nasal runs in a dialog namespace, so that variables and functions
defined in the <open> block can be used in <binding>s, etc. This is
especially useful for <radio> button handling. See "location-in-air.xml".
2006-03-08 10:44:46 +00:00
mfranz
77de0c8e09 add deleteModule() method 2006-03-08 10:35:20 +00:00
mfranz
ed9e16d001 Jean-Yves Lefort: fix "crash" on exit
mf:
pthread_cancel doesn't seem to work correctly on all supported platforms.
It apparently causes SGBlockingQueue::pop() to correctly leave the thread on
the cancellation point pthread_wait(), but the SGGuard() destructor isn't
called, so the queue mutex remains locked. This triggered an assert() on
pthread_join(). This patch uses an empty ICAO request as signal for the
thread to terminate itself.
2006-03-07 10:26:25 +00:00
curt
8676df6856 LFS Glass cockpit interface (allows development independent of the opengc
interface which is somewhat stagnant.)
2006-03-06 18:49:57 +00:00
daveluff
bd4072e0c7 Selecting an approach from the active waypoint page was broken - should now be fixed 2006-03-05 16:56:08 +00:00
daveluff
89bdd4fa99 Reduce console output 2006-03-05 16:53:06 +00:00
daveluff
015ead9fcc Add the MAXNI IAF to the C83 approach, and add a few guards against not finding the fixes in the data. I realise that tweaking a hard-coded approach seems daft when loading approach data from file is high on the TODO, but I'm using C83 as an example for a readme so it may as well match the published chart properly... 2006-03-05 16:49:20 +00:00