Don't recalculate perimeter points since it is not likely that they will match
exactly with the previously calculated points, which will leave an ugly gap
around the airport area.
/Simulator/Objects/fragment.hxx
Nested fgFACE inside fgFRAGMENT since its not used anywhere else.
./Simulator/Objects/material.cxx
./Simulator/Objects/material.hxx
Made fgMATERIAL and fgMATERIAL_MGR bona fide classes with private
data members - that should keep the rabble happy :)
./Simulator/Scenery/tilemgr.cxx
In viewable() delay evaluation of eye[0] and eye[1] in until they're
actually needed.
Change to fgTileMgrRender() to call fgMATERIAL_MGR::render_fragments()
method.
./Include/fg_stl_config.h
./Include/auto_ptr.hxx
Added support for g++ 2.7.
Further changes to other files are forthcoming.
Brief summary of changes required for g++ 2.7.
operator->() not supported by iterators: use (*i).x instead of i->x
default template arguments not supported,
<functional> doesn't have mem_fun_ref() needed by callbacks.
some std include files have different names.
template member functions not supported.
Fixed a serious bug caused by not-quite-correct comment/white space eating
which resulted in mismatched glBegin() glEnd() pairs, incorrect display lists,
and ugly display artifacts.
Changes contributed by Bernie Bright <bbright@c031.aone.net.au>
- The new classes in libmisc.tgz define a stream interface into zlib.
I've put these in a new directory, Lib/Misc. Feel free to rename it
to something more appropriate. However you'll have to change the
include directives in all the other files. Additionally you'll have
add the library to Lib/Makefile.am and Simulator/Main/Makefile.am.
The StopWatch class in Lib/Misc requires a HAVE_GETRUSAGE autoconf
test so I've included the required changes in config.tgz.
There are a fair few changes to Simulator/Objects as I've moved
things around. Loading tiles is quicker but thats not where the delay
is. Tile loading takes a few tenths of a second per file on a P200
but it seems to be the post-processing that leads to a noticeable
blip in framerate. I suppose its time to start profiling to see where
the delays are.
I've included a brief description of each archives contents.
Lib/Misc/
zfstream.cxx
zfstream.hxx
C++ stream interface into zlib.
Taken from zlib-1.1.3/contrib/iostream/.
Minor mods for STL compatibility.
There's no copyright associated with these so I assume they're
covered by zlib's.
fgstream.cxx
fgstream.hxx
FlightGear input stream using gz_ifstream. Tries to open the
given filename. If that fails then filename is examined and a
".gz" suffix is removed or appended and that file is opened.
stopwatch.hxx
A simple timer for benchmarking. Not used in production code.
Taken from the Blitz++ project. Covered by GPL.
strutils.cxx
strutils.hxx
Some simple string manipulation routines.
Simulator/Airports/
Load airports database using fgstream.
Changed fgAIRPORTS to use set<> instead of map<>.
Added bool fgAIRPORTS::search() as a neater way doing the lookup.
Returns true if found.
Simulator/Astro/
Modified fgStarsInit() to load stars database using fgstream.
Simulator/Objects/
Modified fgObjLoad() to use fgstream.
Modified fgMATERIAL_MGR::load_lib() to use fgstream.
Many changes to fgMATERIAL.
Some changes to fgFRAGMENT but I forget what!
curt [Sat, 29 Aug 1998 13:11:31 +0000 (13:11 +0000)]
Bernie Bright writes:
I've created some new classes to enable pointers-to-functions and
pointers-to-class-methods to be treated like objects. These objects
can be registered with fgEVENT_MGR.
File "Include/fg_callback.hxx" contains the callback class defns.
Modified fgEVENT and fgEVENT_MGR to use the callback classes. Also
some minor tweaks to STL usage.
Added file "Include/fg_stl_config.h" to deal with STL portability
issues. I've added an initial config for egcs (and probably gcc-2.8.x).
I don't have access to Visual C++ so I've left that for someone else.
This file is influenced by the stl_config.h file delivered with egcs.
Added "Include/auto_ptr.hxx" which contains an implementation of the
STL auto_ptr class which is not provided in all STL implementations
and is needed to use the callback classes.
Deleted fgLightUpdate() which was just a wrapper to call
fgLIGHT::Update().
Modified fg_init.cxx to register two method callbacks in place of the
old wrapper functions.
curt [Thu, 27 Aug 1998 17:01:55 +0000 (17:01 +0000)]
Contributions from Bernie Bright <bbright@c031.aone.net.au>
- use strings for fg_root and airport_id and added methods to return
them as strings,
- inlined all access methods,
- made the parsing functions private methods,
- deleted some unused functions.
- propogated some of these changes out a bit further.
curt [Thu, 20 Aug 1998 15:12:03 +0000 (15:12 +0000)]
Used a forward declaration of classes fgTILE and fgMATERIAL to eliminate
the need for "void" pointers and casts.
Quick hack to count the number of scenery polygons that are being drawn.
curt [Wed, 12 Aug 1998 21:13:03 +0000 (21:13 +0000)]
material.cxx: don't load textures if they are disabled
obj.cxx: optimizations from Norman Vine
tile.cxx: minor tweaks
tile.hxx: addition of num_faces
tilemgr.cxx: minor tweaks
Output position & orientation when pausing.
Eliminated libtool use.
Added options to specify initial position and orientation.
Changed default fov to 55 degrees.
Added command line option to start in paused or unpaused state.
material.cxx: whups, double method declaration with no definition.
obj.cxx: tweaks to avoid errors in SGI's CC.
tile.cxx: optimizations by Norman Vine.
tilemgr.cxx: optimizations by Norman Vine.
fg_time.cxx: Removed call to ctime() in a printf() which should be harmless
but seems to be triggering a bug.
light.cxx: Added code to adjust fog color based on sunrise/sunset effects
and view orientation. This is an attempt to match the fog color to the
sky color in the center of the screen. You see discrepancies at the
edges, but what else can be done?
sunpos.cxx: Caculate local direction to sun here. (what compass direction
do we need to face to point directly at sun)
Clear to adjusted fog color (for sunrise/sunset effects)
Make call to fog sunrise/sunset adjustment method.
Add a stdc++ library bug work around to fg_init.cxx
Added far clip plane to fragment clipping calculations and tie this to
weather->visibility. This way you can increase framerates by increasing
for and lowering visibility.
Tweaked color buffer clearing defaults. We clear the color buffer if we
are doing textures. Assumptions: If we are doing textures we have hardware
support that can clear the color buffer for "free." If we are doing software
rendering with textures, then the extra clear time gets lost in the noise.
Replace the hud rendering for loop (which linearly searches the the hud
list to find the entry with the proper position) with a simple linear
traversal using an "iterator."
"H" / "h" now control hud brightness as well with off being one of the
states.
Better checking for xmesa/fx 3dfx fullscreen/window support for deciding
whether or not to build in the feature.
Translucent menu support.
HAVE_AUDIO_SUPPORT -> ENABLE_AUDIO_SUPPORT
Use fork() / wait() for playing mp3 init music in background under unix.
Changed default tile diameter to 5.
Added ground collision detection. This involved:
- saving the entire vertex list for each tile with the tile records.
- saving the face list for each fragment with the fragment records.
- code to intersect the current vertical line with the proper face in
an efficient manner as possible.
Fixed a bug where the tiles weren't being shifted to "near" (0,0,0)
Added ground collision detection.
Did some serious horsing around to be able to "hug" the ground properly
and still be able to take off.
Set the near clip plane to 1.0 meters when less than 10 meters above the
ground.
Did some serious horsing around getting the initial airplane position to be
correct based on rendered terrain elevation.
Added a little cheat/hack that will prevent the view position from ever
dropping below the terrain, even when the flight model doesn't quite
put you as high as you'd like.
Removed some printf()'s.
Fixed the autopilot integration so it should be able to update it's control
positions every time the internal flight model loop is run, and not just
once per rendered frame.
Added a routine to do the necessary stuff to force an arbitrary altitude
change.
Gave the Navion engine just a tad more power.
Added fgFlightModelSetAltitude() to force the altitude to something
other than the current altitude. LaRCsim doesn't let you do this by just
changing FG_Altitude.