cleaned up my fragment.num_faces hack :-) to use the STL (no need in
duplicating work.)
Tweaked fgTileMgrRender() do not calc tile matrix unless necessary.
removed some unneeded stuff from fgTileMgrCurElev()
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.