Crystal Space detailed change log.
http://www.crystalspace3d.org/ 

The overall history is in reverse (descending) chronological order, so that
each new day's entries apears before the previous day's entries.  The
individual changes for each given day, however, are in normal (ascending)
chronological order.

10-Jul-2006
	- Jorrit fixed a fundamental problem with the engine sequence
	  manager and timed operations. This problem would cause timed
	  operations to remain in memory even after the sequence was
	  destroyed. The result was crashes when unloading maps using
	  these kinds of sequences. Fixed it by using the unique sequence_id
	  that is already assigned to engine sequences and attaching
	  that id to every timed operation in the engine sequence manager.
	  When the sequence wrapper is destroyed it will then remove
	  the timed operations.
9-Jul-2006
        - res disabled RTLD_GLOBAL for unix plugin loading again, since it has
          undesireable side effects; for one, static libraries are suddenly
          not static anymore, as e.g. symbols may be taken from other plugins.
          Approached the original reason for adding this (DRI drivers failing
	  to load otherwise) by a workaround in glx2d: it now manually loads 
	  libGL.so with the RTLD_GLOBAL flag. This is sufficient to make DRI
	  drivers happy.
	- res fixed a crash in the GL driver db when it was closed without
	  being opened.
	- res fixed XK_MISCELLANY redefined warnings.
8-Jul-2006
	- res changed the event handler ID registration. Since the handler
	  registry keeps a reference to registered handlers, handlers have to
	  be unregistered properly to ensure none are leaking. Changed GetID()
	  to not auto-register handlers; instead, RegisterID() has to be used
	  (where each call must be balanced with a call to ReleaseID() for
	  proper housekeeping).
	- res fixed some errors to not cause crashes any more.
	- res fixed apparently incorrect handling of the removal of a
	  currently called event handler.
7-Jul-2006
	- res fixed the engine default shader loading to not reuse the same
	  document, but create a new one instead. Fixes some crashing.
6-Jul-2006
	- res added the ability to override the default and portal shader with
	  config file settings (instead of being purely hardcoded in the 
	  engine).
	- mdmkolbe converted the following plugins to the new SCF:
	    - plugins/csparser/prshtgen.cpp (other parts of csparser remain)
	    - plugins/console/
	    - plugins/bugplug/
	    - plugins/cssaver/
	    - plugins/collide/
	- res worked around a gcc 3.4 bug where __attribute__((always_inline))
	  is not always supported.
	- res augmented the CS python module building to also split debug info
	  off.
5-Jul-2006
	- Fossi made a small bugfix to the sequence manager header
	- res re-enabled the ATI "hidden NPOTS" support as it seems to be
	  supported properly with the latest drivers.
	- res added a gcc version of CS_FORCEINLINE.
	- res declared the overridden operator new etc. as forced inline.
	  This also seems to fix some issues with ptmalloc for external
	  projects.
	- res changed the aligned alloc functions to use ptmemalign if
	  ptmalloc is enabled.
4-Jul-2006
	- res fixed an issue in ptmalloc where one of dlmalloc's internal
	  structures would not be always initialized properly.
	- res completely converted engseq to new SCF.
3-Jul-2006
	- caedes corrected an error in the swig list wrapper extensions 
	  that would make them unusable for wrapping interfaces in cel.
	- Philip Wyett fixed eliminated error when using 'alt-r' to start
          recording a movie with the movie recorder plugin. Plugin was
          starting and stopping and only recording one frame.
	- caedes added swig wrapper helper for csSet template, it allows
	  using len(set), set.append(id), a in set (test only), del set[id].
	  This introduces a new %define for extending csSet in language 
	  specific ways. Only implemented for python but other languages can
	  implement their own extensions.
	- caedes declared csSet<csStringID> for wrapping in cspace.i.
	- mdmkolbe fixed a mistake in his previous commit.
	- res fixed the binutils version detection to also work with the
	  latest version (which reports "2.17").
	- res added a detection for __attribute__((visibility("hidden"))) to
	  configure (to complement the detection for default visibility).
	- res updated the doxygen stylesheets for doxygen 1.4.7.
2-Jul-2006
	- caedes added wrappers so cspace Lists (like iMeshList) can be used 
	  as python lists where applicable. Allows search by index and name by
	  using [], also can iterate normally over their contents, and use 
	  len(list) and list.append.
	- caedes added dummy templates for list wrapping to the java and perl
	  interface files.
	- caedes fixed or silenced most warnings on generation of python
          interfaces (tested on linux_x86, swig .24, and from .27 to .29):
	    - removed reference to cspoint.h (deprecated).
	    - silenced scfImplementation* warnings, now we can wrap this but
	      should not be done in all situations, the silenced warnings can
	      be controlled at include/ivaria/scf.i.
	    - declared csShaderVariable and csSprite2DVertex necessary array
	      templates.
	    - made some workaround for the situation where swig would need
	      directives in the middle of csutil/array.h to understand the
	      templated class hierachy.
	    - declare iSCF::SCF as immutable.
29-Jun-2006
	- res split csFixedSizeAllocator off csBlockAllocator, which only
	  allocates blocks of fixed size. csBlockAllocator now builds upon
	  csFixedSizeAllocator; handling of unfreed objects is now handled
	  via a template parameter.
	- Vincent fixed build error with gcc about extra semicolon.
	- Marten fixed some compilation errors introdu9ced by res recent
	  split of csBlockAllocator.
	- mdmkolbe fixed some of the event handlers in plugins/mesh so they
	  the listeners are only removed if they have already been added.
27-Jun-2006
        - Arianna fixed other warnings: size_t/int issues, mainly.
	- res took another jab at the operator new issues:
	    - Removed "static" again since that makes gcc complain (and wasn't
	      very clean either).
	    - Pragmatically implemented the platform-specific new by using
	      platform_malloc() instead of trying to employ trickery to use the 
	      platform's default operator new.
	- caedes added initial interface code for the scfImplementation macros
	  to the swig wrappers (file ivaria/scf.i).
	- caedes made a workaround in cspace.i so python bindings can also be
	  generated using swig 1.3.28.
	- res renamed timemeasure.h to measuretime.h.
	- res split the CS::MeasureTime time printing code out into a separate
	  source file to avoid a warning in -ansi -pedantic.
25-Jun-2006
        - Piotr Obrzut added setting color feature for flare halo components.
	- res made CS' own overriding operator new/delete static to avoid
	  having them used by other object files.
	- res added operator new overloads to call the platform-specific
	  operator new.
	- res fixed sprcal3d to use those new overloads.
24-Jun-2006
	- Peter Amstutz deleted the vos plugin from the Crystal Space tree,
	  as it will now be maintained directly as part of the VOS tree.
	- Peter Amstutz modified the cs-config script to search for the
	  CS link libraries under several different possible names, so
	  as to support finding and linking with the shared library 
	  version of libcrystalspace.
23-Jun-2006
	- res fixed spinlock.h compilation for Intel Macs.
	- res (blindly) fixed the core audio driver reinterpreting pointers 
	  to 32bit values as strings which is problematic since quite a bit
	  of random data may appear before the saving null terminator.
	- res converted csconout to new SCF.
	- res changed csconout to use RGBA instead of RGB colors for 
	  foreground/background/shadows.
	- caedes added floor operation to shader expressions.
	- Jorrit fixed csQuaternion::SetMatrix() so that gmeshskelanim2
	  again works correctly.
	- Marten reverted jorrits change to csQuaternion as it is wrong.
	  csQuaternion::SetMatrix was correct as it is, it must be 
	  gmeshskelanim2 that is buggy. Please people, do not change the
	  basic math classes unless you know the maths there.
	- caedes fixed skeleton and gmeshskelanim2 to work again correctly
	  with the good quaternion math.
	- caedes added a more finished version of the ambient with additive
	  layer (pulse is still not handled totally correctly though).
	- caedes removed glow from parallax.xml and related files as its now
	  handled in a more general way in ambient.
	- caedes removed ambient2.xml and specifyambient.xml files as they 
	  don't seem to have any useful difference with ambient.xml.
22-Jun-2006
        - Philip Wyett eliminated _POSIX_C_SOURCE redefinition warning in
          python plugin on GNU Linux with Python 2.3.
        - Philip Wyett continued changes to docs.
	- Jorrit fixed handling of the ':' in path names with viewmesh.
	- Jorrit fixed several problems in the genmeshanim2 plugin related
	  to the recent convertion to new SCF. The problem is that it is
	  unsafe to do this in a header:
	    virtual iBla* GetBla ()
	    {
	      return (iBla*) bla;
	    }
	  When the definition of 'bla' is not known this will cause the
	  cast to go wrong with bad results. To avoid this problem better
	  use static_cast<iBla*> so that the compiler can catch this.
	  The correct fix is then to not inline that method and put the
	  implementation in the cpp file instead.
20-Jun-2006
	- mdmkolbe converted the following plugins to the new SCF:
	    - plugins/mesh/lghtng/
	    - plugins/mesh/particles/
	    - plugins/mesh/genmesh/
	    - plugins/mesh/haze/
	    - plugins/mesh/terrain/
	- mdmkolbe made a few messages more informative.
	- mdmkolbe changed iEventHandlerRegistry so it doesn't
	  use csStrings in the interface.
        - Philip Wyett corrected a copy and paste error he made in documents.
        - Philip Wyett edited Jorrits genesis for the youngsters to let
          them know that comp.graphics.algoritms is a newsgroup.
	- mdmkolbe tweaked the previous message change for compatibility with
	  dialog boxes.
	- David H. Bronke fixed an error in libs/csutil/eventhandlers.cpp
	  where a const char* was being used as a csString.
	- David H. Bronke committed a patch by lindquist to fix the CEGUI plugin
	  for the latest SVN version of CEGUI.
	- David H. Bronke added a missing #include to include/iengine/sector.h.
	- res merged the ptmalloc branch.
	  The main change is that an implementation of ptmalloc3 is used as 
	  the default memory allocator throughout CS (and also external 
	  projects).
	  Use of ptmalloc can be disabled for the whole project by passing 
	  --enable-ptmalloc=no to configure, or defining CS_NO_PTMALLOC in 
	  include/csutil/win32/csconfig.h for MSVC.
	  The platform-default memory allocation can be access by using the
	  platform_malloc() etc. functions. CS' default allocator - ptmalloc3,
	  or the platform's default, depending on the users choice - can be
	  accessed by using cs_malloc() etc. All memory allocations in CS
	  itself should use the cs_ functions.
	  By default, malloc() etc. are overridden with the cs_malloc() etc.
	  functions. To disable that for individual source files, define 
	  CS_NO_MALLOC_OVERRIDE	before including cssysdef.h.
	  Likewise, new and delete are overridden to use cs_malloc()/cs_free()
	  by default, this can be disabled by defining CS_NO_NEW_OVERRIDE
	  before including cssysdef.h. This is useful to interface with some
	  3rd party libraries that take ownership of pointers passed into the
	  library (and later attempt to free it with the default allocator).
19-Jun-2006
	- Philip Wyett made Quick Start more explanatory for the CS newcomers.
	- res changed csRectRegion to use a csArray<> for rectangle storage.
	- res fixed fallout from the csRectRegion change.
	- mdmkolbe converted the following plugins to the new SCF:
	    - plugins/mesh/bezier/
	    - plugins/mesh/fountain/
	    - plugins/mesh/skeleton/
	    - plugins/mesh/fire/
	    - plugins/mesh/snow/
	    - plugins/mesh/explo/
	    - plugins/mesh/rain/
	    - plugins/mesh/instmesh/
	    - plugins/mesh/spiral/
	    - plugins/mesh/spr2d/
	    - plugins/mesh/emit/
	- Jorrit fixed compilation of csGradient.
        - Philip Wyett continued docs cleanup.
        - Philip Wyett began adding more of the bundled CS applications with
          basic descriptions to the application overview section of the
          documentation.
	- res changed the configure optimization flag detection to try
	  -march=prescott before -march=i686 on Intel Macs.
	- res excluded the custom new enabling/disabling headers from the
	  master headers.
18-Jun-2006
        - Arianna fixed some warnings: size_t/uint conversions and some
          deprecated method.
	- mdmkolbe converted the remainder of of apps/ to the new SCF.
	- Eric Sunshine performed project-wide spelling corrections:
	    conveniance --> convenience
	    conveniant	--> convenient
	- res fixed spr2d's SetColor() to actually do something again.
	- res added convenience includes to disable/enable CS' 'new' and 
	    'delete' overrides when the memtracker is enabled.
	- res added some missing custom new re-enablings.
	- res augmented the scfArray* classes with constructors that also take
	  and SCF parent argument.
	- res made an interface version iGradient of csGradient, so you can
	  pass them across plugins.
	- Philip Wyett changed his email address in docs. Changed 'written by'
	  to 'originally written by' for Windows related documentation as I
	  will no longer being working with the Windows codebase daily (as I
	  have not done for a long time) and will be concentrating on Linux.
	- Philip Wyett starts some maintenance work and changes to
	  documentation.
17-Jun-2006
        - Piotr Obrzut fixed phystut crash on exit problem (when running
          with bullet plugin)
        - Piotr Obrzut fixes bullet plugin unused parameter/variable warnings
	- mdmkolbe converted libs/csplugincommon/opengl to the new SCF.
16-Jun-2006
	- AndyDude fixed the MacOSX menu bug and launching in background bug.
	- AndyDude changed the non-error CoreAudio messages to be not so 
	  'loud'. The two CoreAudio messages that I changed were Report()'d 
	  at very high severity levels, when it wasn't really that severe.
	- res fixed msvcgen.jam to use the "common" directory to generate
	  the relative path for icon resources, not the version-specific one.
	- mdmkolbe fixed a few unused parameter warnings.
15-Jun-2006
	- thebolt fixed a bug in csQuaternion which caused matrix to
	  quaternion to go wrong.
	- Jorrit fixed a bug in genmesh GetRadius() function. This would
	  return the correct radius but an incorrect center (i.e. center
	  was always 0,0,0).
	- Jorrit (with the help of Erroroman) fixed
	  flat_ppl_attenuation.avp so that bumpmapping no longer flickers.
	  This fixes at least light_bumpmap technique 220. Not sure
	  about the others. The bug still appears present in case glow
	  is used however.
	- mdmkolbe brought the Java SWIG bindings a little closer to working.
14-Jun-2006
	- caedes fixed cspace.i for changes in spr2d.
	- caedes fixed cspython.cpp for dissaparition of evenhandler.h.
	- res fixed an apparent typo in aws2's gradient code.
	- res changed wxtest to also include wx.rc.
	- Jorrit did the following to csEngineTools::FindShortestDistance().
	    - It now returns the result in a csShortestDistanceResult
	      structure.
	    - In addition to the squared distance it now also returns
	      the direction to follow (starting from the source position)
	      which would make you end up at the destination. Usually
	      that will be equal to 'destination-source' but if there are
	      space warping portals involved then this can be different.
	    - Added an optional 'accurate' parameter so that the calculation
	      of the distance between the start point and the portal is
	      more accurate.
	    - Cleaned up the code considerably and also optimized it
	      slightly by using a csSet for visited sectors.
13-Jun-2006
	- Jorrit slightly optimized iEngine->GetNearbyMeshes() and related
	  by using a csSet for visited sectors instead of an array.
	- Jorrit removed the ugly sector iterator pool in the engine.
	  Also cleaned up the other iterators that are implemented
	  internally in engine.cpp.
	- Jorrit removed the unused csLightIt in the engine.
	- Jorrit implemented iEngine->GetNearbySectors().
	- Jorrit added a new version of iEngine->GetNearbySectors() that
	  accepts a box instead of a sphere.
	- Jorrit changed the csBox3 version of GetNearbyMeshes() and
	  GetNearbySectors() so that it actually tests if the portal
	  intersects with the given box. That way it makes the routine
	  more optimal by not traversing useless portals.
	- Jorrit cleaned up the GetNearbyBla() code in the engine a lot.
12-Jun-2006
	- Jorrit fixed the handling of 'ww' and 'wv' in space warping
	  portals. If 'ww' was specified before 'wv' then 'wv' would
	  overwrite whatever the user specified in 'ww'. This no longer
	  happens. If you don't specify 'ww' then 'wv' will still set
	  'ww' equal to 'wv' but not when 'ww' is already specified.
	- Jorrit converted iCameraSectorListener to new scf.
	- res changed the assert-in-assert handling to print the assert using
	  the runtime functions as opposed to CS functions again. Also
	  debug-break on first nested assert.
	- res updated spr2d to use new SCF.
	- res changed configure to apply -fvisibility=hidden not only to C++
	  but also to C sources.
	- res changed the spr2d to use an iArray instead of a csArray for the 
	  "colored vertices".
	- res changed csShaderVariable::GetType() to call the accessor if a
	  value has not yet been set.
	- res converted iPortalCallback implementations to new SCF.
	- res fixed fixed cleaning of separate debug info.
11-Jun-2006
	- mdmkolbe factored into separate files parts of
	  plugins/video/render3d/software/pixspecifica.cpp that were
	  causing GCC to exhaust memory and crash.
	- mdmkolbe reduced header dependencies and fixed several warnings.
	- res converted csjoylin to new SCF.
	- res changed csShaderVarStack& to iShaderVarStack* in interfaces.
	- dfryer fixed a free() in glosx2d that made ptmalloc sad.  Also
	  fixed some OS X components with bad headers.
	- mdmkolbe fixed a few warnings and some SWIG errors.
10-Jun-2006
	- res added SCF interfaces for arrays.
	- Adam fixed a node-deletion bug in csPartialOrder, and added more
	  unit tests to boot.
9-Jun-2006
	- mdmkolbe fixed the following:
	  - several unused parameter warnings
	  - the CS_DEPRECATED_METHOD tag on iString::Clear()
	  - CS_PRId64 vs PRId64 in include/csutil/timemeasure.h
	    (Use the first for csPrintf and the second for printf.)
	- mdmkolbe fixed a suspected variable name typo.
	- Jorrit added support for strings to iSharedVariable.
	- Jorrit added std_rloop_standard.xml which corresponds to the
	  standard default renderloop as created internally by the engine.
	- Jorrit added support for conditional renderloops in a map file.
	  You can now say something like this:
		<renderloop variable="quality">
		    <condition value="low">std_rloop_standard</condition>
		    <condition value="high">std_rloop_shadowmap</condition>
		    <default>std_rloop_diffuse</default>
		</renderloop>
	  It will use the shared variable 'quality' to determine which
	  renderloop to select.
	- Jorrit fixed the engine renderloop commandline option so
	  that it actually works. Previously it would set a default
	  renderloop and later on it would be overwritten again by
	  the usual default renderloop.
	- mdmkolbe fixed overload ambiguity error in picView.
	- mdmkolbe removed unneeded includes from:
	  - include/csgeom/math3d.h
	  - include/iutil/event.h
	  - include/csutil/comparator.h
	  - include/csutil/sysfunc.h
	  Files that assumed these headers included things such as csstring.h
	  and util.h were corrected.
	- Jorrit fixed a compile error in tinypars.cpp after the removal
	  of several includes.
8-Jun-2006
	- Andres added a stupid filter to the annotation facility to filter
	  obvious spam.
	- Jorrit added new versions of iSector->HitBeamPortals() and
	  iSector->HitBeam() which return their results in a
	  csSectorHitBeamResult class instead of through their parameters.
	  That is more friendly for python, java, perl, ...
	- Jorrit extended iSector->HitBeamPortals() so that it also returns
	  the last sector we entered.
	- Jorrit fixed a bug in the new iSector->HitBeamPortals() with
	  regards to the final_sector.
	- Jorrit added updated ambient shader from Erroroman/caedes which
	  adds support for glow.
	- Jorrit added new parallaxAtt shader from Erroroman.
	- res changed "CS_STRICT_ALIGNMENT" from being defined on all but x86
	  processors to be only defined on Sparc (where it was originally 
	  needed).
	- res fixed the GL renderer to repack csRGBcolor to an RGB bytestream
	  on platforms that need it.
	- Rhad added more robust error handling to the ALSA sound driver.
	  This should correct some cases where the sound device was entering
	  a bad state and never coming out when an underbuffer condition
	  occurred.
	- AndyDude fixed the url to demodata.zip to be the recent one.
7-Jun-2006
	- mdmkolbe made "separate debug info" default to disabled by default
	  on Cygwin.  All released binutils to date have a bug in them which
	  corrupts the output files when using separate debug info on Cygwin.
	  See <http://www.mail-archive.com/bug-binutils@gnu.org/msg00687.html>.
6-Jun-2006
	- Vincent fixed leak-guard enabled build.
	- Eric Sunshine added missing #include <new> to csutil/radixsort.h.
5-Jun-2006
	- res fixed createproject.sh to not copy cs_check_host.m4 any more
	  (since it has moved).
	- res fixed the Jam project template to utilize include custom.cslib.
	- res changed the "separate debug info" and "optimize mode debug info"
	  configure options to more appropriately use --enable-... instead of
	  --with-...
	- Marten fixed the interface and scfImplementation lines for sound
	  sources.
	- AndyDude fixed further spelling mistakes in (xmlfmt.txi).
4-Jun-2006
	- Marten made another fix to the quaternion class. Matrix->Quat->
	  Matrix seems to yield the original matrix (within tolerable
	  errors) for all tested matrices now.
	- DaveG fixed csKeyEventHelper to initialize passed csKeyModifiers&
	  to 0 when converting from a bit mask, to prevent undefined mods.
	- iceeey worked more on the 'ice' CEGUI skin. It should be fairly
	  complete now.
	- Rhad changed csLoader::LoadSoundSysData() so that it creates the
	  iSndSysData object with the filename as the description.
	- mdmkolbe fixed Java detection under Cygwin.
3-Jun-2006
	- iceeey made some more changes to 'ice' CEGUI skin.
	- Rhad updated the windows software sound driver (directsound)
	  so that it should better detect and respond to underbuffer
	  conditions.
2-Jun-2006
	- res fixed compilation of glshader_ps1 on gcc 3.3.
	- Jorrit fixed two errors in the documentation as reported
	  by schorsch_76 on the forums.
	- iceeey added example of handling a CEGUI event to ceguitest.
	- iceeey made various changes to the 'ice' CEGUI skin -- work
	  in progress.
	- AndyDude fixed the 'glosx2d' plugin to get proper bit-depth info.
1-Jun-2006
	- Jorrit fixed a bug in csMeshOnTexture where it would add the
	  begindraw flags from the engine and this would prevent the
	  persistent flag from working.
	- res fixed building with gcc 4.1.1 on AMD64 by adding utilizing
	  the -fPIC flag when testing for -shared.
	- AndyDude fixed spelling mistakes in my additions (xmlfmt.txi).
31-May-2006
	- res tweaked the Thing lightmap loader to use a block allocator
	  instead of a pool for the lightmap buffers.
	- Marten fixed the quaternion class. The woman in flarge now looks
	  normal, or at least as normal as before.
30-May-2006
	- res improved the debug facilities for the ATI_fragment_shader 
	  support in glshader_ps1.
	- res changed glshader_ps1 to use a plugin namespace.
	- res fixed the software canvases to properly flip alpha component
	  of colors again before before doing alpha-blended 2D ops.
	- res changed the Thing lightmap loading to do somewhat less memory
	  allocations.
29-May-2006
	- Jorrit mentioned the new location of Cal3d (gna.org) in the
	  manual.
	- Jorrit fixed a big performance problem in the opcode plugin.
	  In some cases (i.e. flat surfaces) it would fall into a very
	  bad loop when initialization colliders. This badly affected
	  terrain since that is now initialization colliders constantly.
	  Performance when moving on one particular spot in a test
	  level I got went up from 0.2 to 23 fps.
	- res fixed the software canvases to not strip the alpha component
	  off colors before before doing alpha-blended 2D ops.
	- res changed the Win32 custom cursor code to only create cursors with
	  an alpha channel when the color depth is at least 24bpp.
	- res tweaked dsplex to not recursively use itself in all cases.
	- res tweaked the TGA loader to reject unusually large images. (TGAs
	  don't have a "magic" file identifier, so it can happen that some
	  random file is interpreted as a TGA image. So some heuristics to
	  reject bogus "images" are needed.)
	- res fixed a crash in the ddraw2d plugin when switching the double
	  buffer mode while in a BeginDraw()/EndDraw().
	- res changed fontplex to also use any available font server 
	  automatically and not just those explicitly specified by the user.
	  This behaviour is more like the other multiplexers.
	- res changed picview so it really starts on the first file on startup
	  and also skips over directories properly when seeking the next/prev
	  image.
	- res added a picview.cfg.
	- res removed support for per-pass SVs from xmlshader.
28-May-2006
	- Jorrit copied some documentation out of the wiki into CS.
	  Documentation contributed by 'adu'. He added the 'sounds'
	  and 'variables' section to the XML map format documentation.
	- Jorrit made stdrep more robust so it no longer crashes
	  with empty lines. Apparently a SplitString() can return 0
	  strings.
	- Jorrit fixed bugplug so that it no longer outputs a useless
	  empty string.
	- Jorrit updated the features section in the manual a bit.
	- res added material emission support to glshader_fixed. Closes bug
	  (should've really been an RFE) #1396182.
	- res reworded, reordered and somewhat compacted the feature list.
	- Jorrit completed the portal container documentation.
	- res changed iSyntaxService to let the various Write*() methods take
	  const refs instead of pointers of the values to write.
	- res moved cssynldr to new SCF.
27-May-2006
	- res fixed the delimIgnoreDifferent mode for 
	  csStringArray::SplitString() to work as it should.
	- res changed dsplex to new SCF.
	- res changed dsplex to try each document system only once when
	  parsing a document. This fixes the redundancy in error messages.
	- res changed stdrep to show alert windows before splitting a message
	  into multiple lines (so only one alert is visible per message and 
	  not one per line of the message).
	- res changed csVariant to store strings in iString*s rather than
	  char*s, as outlined in bug #1388079.
26-May-2006
        - dfryer rearranged bitarray.h to avoid an ICE in Apple's gcc 3.3 
          build
25-May-2006
	- res removed the now-useless WinCVS tutorial from the manual.
	- res changed some references to CVS in the manual to SVN and also
	  updated some CVS-specific parts.
	- res changed the jobber config to pass the 'quiet' flags to svn 
	  invocations.
	- res changed the Win32 -[no]console stuff to respect user-specified
	  redirects of the standard handles.
24-May-2006
	- res changed the memory tracking to record function names, not
	  file names.
	- res changed csHash<> so that it truly takes no memory when it's
	  empty.
	- res changed a couple of interfaces in shader.h to use virtual
	  inheritance.
	- res renamed csBitArrayHashComputer<> to csHashComputerBitArray<>.
	- res added csBlockAllocator<>::FreeUninit() as a counterpart to
	  csBlockAllocator<>::AllocUninit().
	- res added CS::Memory::Heap which implements a separate memory heap
	  (based on dlmalloc). If used properly, a separate heap can 
	  significantly reduce fragmentation of the main application heap in 
	  case a lot of temporary mixed with non-temporary data is allocated.
	- res made xmlshader more memory-friendly for shaders with lots of
	  different variants.
	- Jorrit fixed csHash so it compiles again.
	- Jorrit did an optimization in genmesh lighting in case
	  --fullbright is selected.	
	- Marten made a whole bunch of changes:
	    - Added methods to csOBB to access the base matrix.
	    - Rewrote csQuaternion a bit to make it more efficient and easier
	      to use.
	    - Added a "UnitAxisClamped" which returns an unit-length
	      axis-clamped version of a vector.
	    - Added currentFrame number to iMeshObject::NextFrame and updated
	      all mesh objects for the change.
	    - Force csQsqrt/csQisqrt to be inlined.
	    - Added one more version of CS::ForEach to work on normal arrays 
	      instead of iterators.
	    - Added a number of public typedefs to the standard containers to
	      allow easier access of template parameters.
	    - Added a csRandomVectorGen which generates a spherically uniform
	      unit-length random vector.
	    - Small bugfix in GL-renderer buffer handling.
	- Jorrit fixed particles so that it compiles again after the
	  changes of Marten.
	- res fixed xmlshader to compile on gcc again.
	- res fixed the xmlshader bug where programs in auxiliary files (ie
	  included via a file attribute) did not work properly in some cases.
	  The problem was that conditions in that file did not contribute to
	  the main condition tree, ie a appeared that condition in an 
	  auxiliary file but not the main shader file would not lead to more
	  variants. Fixed by also parsing auxiliary files for conditions and
	  adding those to the main condition tree.
	- res fixed the double-typedefintion of csArray<>::ElementHandler et 
	  al.
        - acraig re-added the changes to the sprcal3d plugin to fix the 
          flipping of left and right on models.
23-May-2006
	- res fixed bugplug to properly accept commands via keys again.
        - acraig made iGenMeshAnimationControl virtually inherrit from iBase.
22-May-2006
	- res fixed SubDir rules in the aws & aws2 Jamfiles after their move
	  to plugins/gui/.
	- Jorrit added a new iMissingLoaderData interface. Applications can
	  implement this and give it to the loader. The loader will then
	  call functions in case it can't find some sector, light, texture,
	  shader, material, sector, mesh, or factory. This can be used for
	  loader managing purposes.
21-May-2006
        - res changed the unresolved symbol reporting to (just) warnings.
        - res fixed the xwin linking issues.
	- res updated bindoc to use new SCF.
	- res augmented bugplug to allow programmatic command execution (and
	  not just via user input). Added new "bugplugcmd" command to 
	  walktest.
	- res renamed csMeasureTime to CS::MeasureTime and changed it to use 
	  csGetMicroTicks().
	- res augmented csHash to allow specification of an allocator.
	- res changed Memory::LocalBufferAllocator to have a templated 
	  fallback allocator. Also improved detection of errorneous usage.
	- res added a csArray constructor that allows custom initialization of 
	  the allocator.
	- res fixed gcc 3.4 compile errors after the array.h change.
	- res fixed some gcc compile warnings.
	- res moved AWS and AWS2 to plugins/gui/.
19-May-2006
        - res made the separate debug info and optimize mode debug info 
          features toggleable via configure switches.
	- res changed separate debug info only to be enabled by default 
	  when binutils >= 2.16 are present.
	- res changed the optimize mode debug info to only be enabled by
	  default when separate debug info is enabled (since otherwise
	  optimize mode binaries would get undesireably large).
17-May-2006
	- res fixed a couple of bindoc endianness bloopers, with the help of
	  dfryer, who acted as the remote debugger.
	- res augmented the memory tracker to also count the number of
	  allocation/deallocation calls.
	- res made a couple of look-up tables and generally read-only values
	  'const'.
16-May-2006
	- caedes added gmeshskelanim2 plugin and related shaders from
	  Erroroman. Also goes with some updates for skeleton code.
	- caedes added Jam files for the shadowmap shader folder.
	- Christopher added a Vfs object to AWS2, added several widgets,
	  finalizers for all native objects, clipping for child objects,
	  fixed the two layout mechanisms currently extant, fixed all
	  widgets to compile properly when created directly or through XML,
	  added a ListBox, a FileChooser widget, and is working on a ComboBox
	  widget.
	  He also added several icons to the AWS data file to help make the 
	  FileChooser pretty.
	- Fossi also added terrainp to the vfs template as pointed out by eric
15-May-2006
	- Jorrit got a new bush from Jason Bonham and added it to
	  terrainf. Also made the lib files more standalone.
14-May-2006
	- Piotr Obrzut added support for pseudo instancing.
	- Piotr Obrzut fixes compile warning/errors related to 
          pseudo-instancing.
	- Piotr Obrzut aplies patch from Lak_Moore: added check for 
          valid references to 3D and 2D graphics plugins to 
          csReporterListener::HandleEvent before trying to use them.  
          Useful for console applications using the Standard Reporter 
          plugin. 
	- Philip Wyett added entries for Cal3D and lib3ds to external
	  libraries section of manual.
	- res fixed building of aws and the CEGUI stuff with memtracker 
	  enabled.
	- res changed csBlockAllocator to disallow assignments and copy-
	  constructing.
	- res added a proper copy ctor for csSubRectangles.
	- res removed some static variables from csEngine.
	- res fixed shared lib linking on unix.
	- res added stripping of debug info to separate files when building
	  with a GNU toolchain.
	- res enabled debug info for optimized builds when building with a
	  GNU toolchain.
13-May-2006
	- Fossi added new compile output to .cvsignore.
	- Fossi added new paging terrain version and 'terrainp' testlevel.
	- res fixed a cut'n'paste error in the GLU check.
	- res fixed some missing symbol issues with Win32 shared lib builds.
	- res unified the allocators for classes that support custom memory
	  allocation (csArray, csBitArray, csBlockAllocator, csCowWrapper).
	  As a collateral, moved some functionality from the array memory
	  handler to the array element handler which more correctly belong
	  to the latter.
	- Adam updated the signpost event handlers to force full order even
	  when they are only partially instantiated.  Also added by-name 
          GetID interface to iEventHandlerRegistry.
	- Adam added a method to csPartialOrder to query an edge's presence.
	- Adam added code to enforce ":pre"-then-":post" metahandler ordering
	  and cleaned up some debug output blocks.
	- Adam implemented an (incomplete) unit test for csEventQueue.
	- Adam converted bugplug to (partially) use a signpost event handler.
12-May-2006
	- Adam implemented an (incomplete) unit test for csPartialOrder.
9-May-2006
	- Jorrit fixed a bug in walktest with the 'doSave' variable.
	  First the 'doSave' variable was not initialized. Secondly
	  in the function that reads the config and commandline a local
	  'doSave' variable was used so that the real 'doSave' was
	  never set.
	- Jorrit changed the genmesh loader so that it now tests if
	  the number of vertices and triangles given matches the actual
	  number of vertices and triangles. This test shows that
	  blender2crystal occasionally doubles the number of vertices
	  in <numvt> without actually giving that many vertices.
	- Jorrit fixed the genmeshes in terrainf so that the number
	  of vertices is correct.
	- Jorrit fixed the haze mesh so that the
	  iMeshObject->SetMaterialWrapper() now works correctly. This
	  fixes a problem in partsys level.
	- Jorrit fixed instmesh in a similar way as a recent genmesh
	  fix with relation to GetFactory() from the mesh object.
8-May-2006
	- Jorrit restored the genmesh version of terrainf since that one
	  works better.
	- Jorrit fixed alpha fading in meshgen.
	- Jorrit reverted an optimization which only recalculates
	  the foliage density when the camera moves on x/z plane.
	- caedes uploaded correct bump.cgvp for light_spec_bumpamp from 
	  Erroroman.
	- Jorrit added a forest to terrainf.
	- Jorrit fixed the mesh generator so that it correctly fades
	  hierarchical meshes.
7-May-2006
        - Reed updated csvosa3dl for CS API changes, tweaked some log messages,
          added some useful accessors.
	- Jorrit added a missing %ignore for iGraphics3D::PerformExtensionV()
	  so that the python plugin builds properly on 64-bit machines.
	- Eric Sunshine applied more fixes to the new jobber-svn.pl and
	  jobber-svn.cfg.
	- res made updates for the new cs-win32libs.
	- res augmented the cube map loader to also allow side image
	  specification via "posx", "negx" etc. tags, which might be more
	  intuitive than "north", "south" etc. tags in some cases.
	- res fixed some VC warnings.
	- res simplified and prettified some code in the shadowmap render
	  step.
6-May-2006
	- Eric Sunshine fixed several problems and issues with jobber-svn.pl
	  and jobber-svn.cfg; and also re-generalized them a bit
	- Eric Sunshine fixed resource leak in AWS2.
	- Jorrit fixed several mesh loaders so that they better test for
	  error conditions: genmesh, haze, instmesh, nullmesh, particles,
	  protomesh, spr2d, and terrain.
	- Errroman fixed a small bug in render to cubemap face.
	- Erroroman added another rendering tehnique in shadowmap.xml.
	- Erroroman added abillity light shadervars to override shader manager
	  shadervars in generic render step.
	- Erroroman fixed light_spec_bumpamp shader and added attenuation 
	  support in it.
	- Erroroman added r3dsmtest in vfs.cfg.template.
5-May-2006
	- Jorrit started work on more detailed mesh object documentation.
	- Jorrit updated the genmesh documentation a bit more.
	- Jorrit replaced several @@@ tags in the public headers with
	  proper \todo tags.
	- Jorrit removed the unused csPoly2DEdges class.
	- Jorrit changed csArray::DeleteRange() to return false in case
	  of invalid arguments.
	- Jorrit removed iSector->RegisterPortalMesh() and
	  UnregisterPortalMesh() from the public api.
	- Jorrit removed a few unneeded '@@@' in the sources.
	- Jorrit added iMeshObjectFactory->SetMaterialWrapper(),
	  GetMaterialWrapper(), GetMixMode(), and SetMixMode().
	- Jorrit removed SetMaterialWrapper(), SetMixMode() and related from:
	    - iGeneralFactoryState
	    - iHazeFactoryState 
	    - iInstancingFactoryState
	    - iLightningFactoryState
	    - iSprite2DFactoryState
	    - iSprite3DFactoryState
	    - iThingFactoryState (only mixmode stuff)
	  Added a note about this to the apimod document.
	- Jorrit removed the above functions also from iRainState.
	- Jorrit fixed the very ad-hoc code in the loader to set the
	  material on a factory in a generic way. This code only worked
	  for 3D sprites. Now it works for all factories that support
	  SetMaterialWrapper().
	- Jorrit fixed cssaver for latest changes.
	- res fixed configure to check for GLU again (needed by some 3rd party
	  libs).
	- JTarbox fixed the copy constructor for csEvents
	- JTarbox fix for the fix to the copy ctor of csEvents
	- Jorrit fixed a few apps for the latest changes.
	- Christopher changed the API of iAwsScriptObject to be a little easier
	  to use (I hope), and added an Exec() call.  He also moved picview
	  over to AWS2.
	- Christopher enhanced picview by having it actually tell you what it's
	  doing.  While some may feel that this is a radical paradigm shift, he
	  felt that taking the plunge was really worthwhile, and that everyone
	  will be better off for it eventually.	
4-May-2006
	- Erroroman made the following:
	    - Generic render step now handles light shader variables.
	    - Lightiter render step shader variable for light world 
	      inverse transform.
	    - Added param "subtexture" to iGraphics3D->SetRenderTarget, 
	      that is used if texture is cubemap.
	    - Added crystalspace.renderloop.step.shadowmap interface. It
	      renders each direction to cubemap face. This is very usefull 
	      for point lights. In future it will provide rendering to 2D 
	      (depth) texture for spot lights. There are problems when 
	      rendering from light position - sometimes vis culler doesn't
	      render some objects and their shadows are not visible/correct.
	    - Added distance and shadowmap Cg shaders. At the moment there 
	      is no depth texture support and depth coding/encoding is 
	      made by fragment shaders, so fragment program support is 
	      neccessary.
	    - Added r3dsmtest level.
	    - Added std_rloop_shadowmap.xml renderloop.
	- Jorrit fixed the new parameter in SetRenderTarget() so that it
	  comes at the end. This is more compatible with CEL and
	  other external projects and also fixes several cases in CS
	  where the new parameter was not accounted for.
3-May-2006
        - res removed the CS_*_CAST macros. It is unlikely that a compiler
          can grok CS' use of templates but does not get the cast operators
          right.
	- res fixed some more "no virtual dtor" warnings.
	- Peter Amstutz added a try/catch block in material setup
	  in the VOS plugin to handle some exceptional conditions that 
	  would cause meshes to not be assigned any material at all.
	- Jorrit did some small improvements to the engine API ref
	  documentation.
	- Jorrit removed the old and unmaintained map2cs. You can still
	  retrieve it using the PRE_MAP2CS_REMOVAL tag. To convert map files
	  there is now a better alternative at:
	      http://www-poleia.lip6.fr/~degris/converter/
	- Jorrit updated the SCF documentation so that it at least talks
	  about new scf and concepts.
2-May-2006
	- Eric Sunshine fixed csPoolEvent::DecRef() to set up recycled data
	  members the same way as they are set up by csPoolEvent constructor.
	  Reported by Jonathan Tarbox.
	- Jorrit fixed genmesh loader for the removal of SetMeshWrapper,
	  SetColor, and SetMixMode from iGeneralMeshState.
	- Jorrit fixed bugplug for the removal of SetMeshWrapper,
	  SetColor, and SetMixMode from iGeneralMeshState.
	- Jorrit fixed instmesh and lightning mesh for the removal of
	  SetMeshWrapper, SetColor, and SetMixMode from iGeneralMeshState.
	- Jorrit fixed a stray SCF_DECLARE_IBASE in genmesh. Still not
	  working though.
	- res re-added a SCF_IMPLEMENT_FACTORY to genmesh that somehow got
	  lost.
	- res fixed a gcc 4.1 compile fix to also work on Win32 with shared 
	  libs.
	- Jorrit fixed a cast error in genmesh which caused everything
	  to crash.
	- Christopher changed the script event system to use a functor instead
	  of the function-based notification mechanism.
	- res consolidated the various 1.0 API modifications somewhat to have
	  less "Table of Contents spam".
	- res fixed csbench, mazing and startme for the removal of some 
	  methods from iGeneralMeshState.
1-May-2006
        - Arianna fixed some warning for MSVC 7.1 and some deprecated 
          function.
	- Jorrit removed the simple output console in favor of the
	  standard output console. There is no need to keep two consoles
	  with nearly the same functionality.
	- Jorrit documented the removal of the stars mesh.
	- Jorrit documented the removal of the simple console.
	- Jorrit reordered the nodes in the apimod100 document in a
	  more logical fashion.
	- Jorrit fixed simpvs so that it no longer crashes at startup.
	- Jorrit fixed frustvis and dynavis so that they no longer
	  crash when iGraphics2D is not present. This fixes a crash
	  in unittest.
	- Jorrit fixed the renderloop loader so that it no longer
	  crashes if the loader context is not given to the function.
	  This fixes a crash in csbench.
	- res tweaked the devapi doxygen settings a bit.
	- res removed the "no virtual destructor" warning suppression on GCC4 
	- res re-activated the iBase virtual dtor.
	- res changed a couple of meshes to not implement iPolygonMesh as an
	  embedded interface but allocate it from the heap, to fix "abstract
	  virtual method called" errors experienced after an iBase dtor was
	  added last time.
	- res also updated those meshes to new SCF.
	- res changed some plugin namespaces to use the CS_PLUGIN_NAMESPACE_*
	  macros.
	- res fixed some more strict-aliasing warnings.
30-Apr-2006
	- Jorrit fixed spr3d object bounding box calculation. It now
	  calculates the bounding box of all frames instead of only
	  frame 0.
	- Jorrit fixed the following in csdemo:
	    - Made sure the sequences are now kept in memory. Due to
	      a change to the sequence manager the sequence manager
	      itself only keeps weak references to sequences. This change
	      broke csdemo. Now it is fixed.
	    - Fixed the 'show mesh' and 'hide mesh' operation so that
	      they show or hide the entire mesh hierarchy. That way
	      the particle trail is no longer kept visible when the
	      spaceship is made invisible.
	    - Added engine->PrecacheDraw(). This greatly improves the
	      smoothness of the animation when new objects come into view.
	    - Fixed demodata.zip (new version can be found at: http://www.
	      crystalspace3d.org/support/release/cs099/maps/demodata.zip)
	      for the removal of the ball mesh and the removal of the
	      generic render priority system.
	    - Update the message about where to download demodata.zip
	      from.
	- Rhad made the following changes to the Windows csGetMicroTicks():
	    - Changed the calculation logic into whole and fractional second
	      parts to avoid overflow. This fixes a problem where time
	      would appear to move backwards after about an hour on a 2.4
	      ghz CPU. (shorter on faster CPUs, longer on slower CPUs)
	    - Added an assertion when the time reported by the OS moves
	      backwards. This can happen with some AMD X2 processors
	      and requires OS level workarounds.
	- Jorrit removed the broken and not very useful 'stars' mesh.
	  Fixed demodata.zip for this removal.
29-Apr-2006
	- Jorrit added an example staticlod usage so that it is easier
	  to debug problems with it.
	- Jorrit fixed all three versions of iEngine->GetNearbyMeshes() so
	  that they will work correctly with static lod and also return
	  one of the lodded meshes (the correct one depending on the
	  distance between the intersection object and the mesh).
	  This fixed collision detection for static lod meshes and it
	  partially fixes dynamic lighting. It only partially fixes
	  dynamic lighting since when the camera is far away from an object
	  but the light is close to it then the light will only affect the
	  high detail version of the object but the camera can see the
	  low detail version.
	- res attempted to tweak the configure "code generation flags" to
	  work on Intel Macs. The minimum "-march=i586" conflicts with a 
	  default setting of the compiler there, so use "-march=i686" on
	  Apples.
28-Apr-2006
	- Eric Sunshine repaired a bunch of Texinfo problems in the new AWS2
	  documentation.
	- Jorrit fixed csMeshOnTexture::ScaleCamera.
	- Jorrit moved the new csQueryRegistryOrLoad() function to
	  iutil/plugin.h and then removed the old CS_QUERY_REGISTRY_PLUGIN.
	- Jorrit added a version of csLoadPlugin() that accepts an
	  object registry instead of the plugin manager.
	- Jorrit added a new csLoadPluginCheck() function that implements
	  the common idiom of first doing a csQueryPluginClass, optionally
	  followed by a csLoadPlugin. There are two versions: one which
	  accepts a plugin manager, and one which accepts an object
	  registry.
	- Jorrit fixed several cases in CS where the above functions
	  are used but where in case of error there was no check (i.e.
	  a crash would result).
	- Jorrit fixed csMeshOnTexture::ScaleTexture() so that it more
	  accurately matches the object box. It now fits the mesh nicely
	  on the texture.
	- Jorrit fixed a bug in iMaterial->GetTexture(). It would crash
	  in case the material had no texture instead of returning 0.
	- Jorrit fixed xmlread and tinyxml parser so that they no longer
	  accept attributes without quotes. Attributes without quotes are
	  not valid XML and both tinyxml and xmlread actually caused
	  memory corruption when those attributes where used (in the case
	  of xmlread it was pretty hard to avoid).
	- Jorrit increased speed of mouselook in walktest.
	- Jorrit documented the removal of CS_QUERY_REGISTRY_PLUGIN and
	  also changed the 0.98 -> 1.00 document to use a menu (it
	  was becoming to big).
	- Christopher made a lot of updates in AWS2, including expanding the
	  Native/Script interface.
27-Apr-2006
	- Jorrit did a few more fixes to csMeshOnTexture. It finally starts
	  to work now.
	- Jorrit added a new convenience method: csQueryRegistryOrLoad().
	  This method will first look for an interface in the object registry.
	  If it is not there it will try to load the plugin and register
	  that to the object registry.
	- Jorrit fixed the distance calculation in csMeshOnTexture.
	  Started work on the auto-fit version of ScaleCamera() too.
26-Apr-2006
	- Jorrit fixed a small bug in the csMeshOnTexture class.
	- Jorrit fixed another small bug in the csMeshOnTexture class.	
	- Christopher began adding documentation for Aws2.  He also added
	  the XML to Widget conversion function so that you can make interfaces
	  in XML.  Also, he added the partedit2 data resources for Aws2.
25-Apr-2006
	- Jorrit committed a patch from Adam to implement the signpost
	  changes in simple1 tutorial. Note that this is not perfect yet
	  as it breaks bugplug fps printing.
	- Christopher made partedit2 use csApplicationFramework, and removed
	  the iaws2.h file.
	- Christopher add two layouts: Horizontal and Vertical to the AWS2
          kit.  He also fixed a bug in the widget drawing code where widgets
 	  with no pen would not draw children.
24-Apr-2006
	- Eric Sunshine added msvc_deprecated_warn_{on,off}.h to
	  CS_MASTER_HEADER_REJECTS.
	- Jorrit modified sprcal3d.cfg and made the default animation
	  LOD distances a bit larger to reduce the appearance of 'choppy'
	  animation (but at the cost of some performance).
	- Jorrit added a new csMeshOnTexture class. This class makes it
	  easier to render a mesh on a texture.
	- Jorrit extended the light_ambient shader variable from the
	  generic renderloop so that it also returns the static ambient
	  from the engine (in addition to dynamic ambient from the
	  sector).
	- Jorrit fixed a major bug in iRenderView->GetEngine(). The
	  engine pointer that was returned there was totally bogus.
	  This fixed (among other possible problems) bogus ambient values
	  from the engine in the generic renderstep plugin.
	- res fixed cspace.i to also ignore the _MSG deprecation macros.
	- Christopher renamed iAws to iAws2 for AWS2 interfaces.  This fixes 
	  a problem where the <crystalspace.h> include would die when including
	  both sets of interfaces.
23-Apr-2006
	- res worked around the overzealous emission of deprecation warnings
	  by MSVC.
	- res added a new macro to deprecate methods with a message (as
	  supported by MSVC).
22-Apr-2006
	- Jorrit added an optional mesh parameter to iView->Draw and
	  iEngine->Draw. If this mesh is given then this is the only
	  mesh that will be rendered. Otherwise rendering occurs
	  as usual.
21-Apr-2006
	- Jorrit fixed a typo in the fat renderloop.
	- Jorrit added a lit of supported shader variables to the (otherwise
	  empty) shader documentation.
	- Jorrit added a new technique to light_bumpmap.xml with priority 220
	  (thanks to Marten to help with this). This technique is similar to
	  the priority 250 technique except that it only requires 2 texture
	  units instead of 3. It does this by calculating the binormal
	  in the vertex program as a product of the normal and the tangent.
	- Jorrit fixed the arb shader plugin to only produce errors about
	  vertex programs in verbose mode. Otherwise you would get a huge
	  (two page long) error on top of the display when starting terrain
	  on some systems.
	- Christopher fixed a bug in AWS2 compositing, with help from res. He
	  also committed a small change to the opengl screenshot mechanism 
	  that inlcudes alpha values.  I'm sure this doesn't affect most 
	  situations where screenshot is used, but it's VERY handy for 
	  procedural textures.
	- Christopher added a new tool, partedit2.  Since he volunteered to 
	  fix this app for AWS2, and since he wants to make sure that AWS2 
	  works well with complicated applications needing sophisticated GUI 
	  support, he has decided to start building this application now.  
	  This will let him make sure that he's making something that will be 
	  useful and reasonably simple to use.  This app compiles but 
	  currently does nothing at all useful.
20-Apr-2006
	- Jorrit added a patch from Frank which fixes the issue with an
	  CG program failing but the technique using that CG program was
	  still succeeding. This caused rendering errors in some
	  situations.
	- Christopher added SetMixMode to csPen and csMemoryPen.  He also 
	  added SetMixMode to Pen in AWS2, and added several mixmodes as 
	  constants.  This basically makes up the compositing functions in 
	  AWS2.
	- res fixed some doxygen comments.
	- res fixed missing DLL exporting for some SndSys classes.
        - dfryer added a patch from Simon Mihevc (G0thic) to enable mouse 
          wheel events in the wxgl canvas
19-Apr-2006
	- Piotr Obrzut fixed moving instances in instmesh.
	- res fixed some more gcc 4.1 warnings.
	- Jorrit again reverted the change to std_lighting.cscg because
	  it breaks lightmapped polygons on mingw. Even after recompiling
	  xmlshader.
18-Apr-2006
	- Jorrit restored the ambient to a dark value after iceeey changed
	  it to a very bright value some time ago.
	- Piotr Obrzut reverts his changes to instmeshes since they are bad 
	  when someone deletes instances.
	- res fixed res' inability to count bits as well as res' lack of cut-
	  and-paste skill. Also reinstantiated caedes' fix for the point size
	  in std_lighting.cscg since the rendering issues where due now-fixed 
	  xmlshader bugs.
17-Apr-2006
	- res removed the now-obsolete sounddrivers and soundrenderers compile
	  groups.
	- res changed the doxygen configs to expand the 
	  CS_EVENTHANDLER_NIL_CONSTRAINTS macro as defined.
	- res fixed missing GUID_NULL symbols with Win32 shared library 
	  builds.
	- res fixed csjoywin issues with Win32 shared library builds.
	- res fixed csArray to allow the compiler to not reserve dummy memory
	  for empty allocator classes.
	- res changed csArray so that the threshold logic is templated as 
	  well.
	- res made csBitArray more tweakable (csBitArray now inherits from a
	  templated class csBitArrayTweakable that essentially contains the 
	  logic).
	- res added some methods to csBlockAllocator to allocate an object but
	  don't construct it, free an object without destructing it, and a 
	  free method that does not assert on memory not from the allocator.
	- res added a simple template "copy-on-write" variables.
	- res changed the way the csHash<> internal arrays are declared a bit.
	- res simplified SndSysBasicData::SetDescription().
	- res tweaked the "VFS not found" message for OS/X.
	- res corrected some statements in glfontcache.cpp.
	- res changed the static class variable macros to not require the 
	  member to be public.
	- res added a MsvcExtraFile jamfile statement. Useful for e.g. adding
	  .tok files to VC projects.
	- res fixed the static plugin lib generation to properly include
	  defines and cflags from dependencies.
	- res augmented the syntax services to parse/write the upgraded mix
	  modes (with blend ops and alpha test flags).
	- res removed superfluous definitions of CS_USE_ODE_EXTERN_C.
	- res changed the sound system wav loader to utilize the function from
	  csendian.h for endiannes handling. Also enclosed everything into a 
	  plugin namespace.
	- res moved the "pooled SCF class" support over to a templated, 
	  new SCF style implementation.
	- res made various optimizations in xmlshader.
        - Arianna fixed some warnings found compiling with MSVC 7.1 in 64-bits 
          mode.
	- res attempted to fix some gcc4.1 warnings.
15-Apr-2006
	- Piotr Obrzut fixed small bug in adding positions from map in meshgen.   
	- Piotr Obrzut did some optimizations to meshgen.
	- Adam added missing newlines (silences a gcc warning).
	- Peter Amstutz fixed a bug in the csvosa3dl plugin whereby an object
	  that was already loaded into the engine wouldn't be moved from
	  one sector to another
14-Apr-2006
	- caedes changed comment formatting on some shaders to be more parser
	  friendly (specially some <?! !> to <!-- --> in std_lighting.xml).
	- caedes changed <? include ?> to <? Include ?> at parallax.xml as 
	  the first seems deprecated.
	- caedes fixed an error at std_lighting.cscg where state.point.size
	  was incorrectly assigned to a variable.
	- Piotr Obrzut added quad to cs primitives and instmesh.
	- Piotr Obrzut added feature to add positions from map in meshgenerator
	  (still there are some problems with resolution probably).
13-Apr-2006
	- Piotr Obrzut added method for direct adding position for meshgen 
	  geometry.
12-Apr-2006
	- Piotr Obrzut changed instmesh mixmode to alpha test (should be done 
          from xml somehow).
	- Peter Amstutz updated the VOS plugin to take out a useless scaling
	  check in voscube, and changed vospolygonmesh to load vertex normals
	  from a3dl
	- Rhad fixed the Ogg Vorbis sndsys element to correctly calculate the
	  number of frames in the source data.
	- Jorrit fixed the configure check for GLCg so that it uses C++
	  to run the test program. That way CG can again be compiled on
	  linux.
	- Christopher fixed csGradient as per res, and also fixed procedural
	  textures in AWS2 to work as intended.  He discovered the cause of the
	  rolling texture on the slider, and fixed that too.
	- Piotr Obrzut fixed bug with instmesh ligtning.
	- Marten did some general warning fixes and formating cleanup. Please
	  people, remember the CS code guidelines. Thhere's more to be done 
	  later, be sure of that.
11-Apr-2006 
        - Piotr Obrzut fixed meshgen to delete instmeshes instances 
          when needed.
9-Apr-2006
	- Rhad renamed CS::Sound namespace to CS::SndSys for all SndSys
	  sound system components. This naming is consistant with the
	  rest of the newer sound system and distinguishes components of
	  the new system from the old system.
	- Rhad added the components in csplugincommon/sndsys/ to the 
	  CS::SndSys namespace.
	- Rhad commented and cleaned up the CS::SndSys::Queue class.
	- Marten did some more work on the lighter.
	- Marten fixed a few do-not-compile-on-vc8 bugs.
	- Marten made some improvements to csBox3 and csString.
8-Apr-2006
	- Rhad removed erroneous CS_PURE_METHOD specifier on 
	  csMouseEventHelper::GetEventData.
	- Rhad made more updates to the sound system:
	  - Cleaned up excess useless comments in iSndSysSoftwareDriver
	  - Promoted RegisterCallback() and UnregisterCallback() interface
	    functions from iSndSysRendererSoftware to iSndSysRenderer.
	  - iSndSysSoftwareRendererCallback renamed to
	    iSndSysRendererCallback.
	  - Bumped version on iSndSysRenderer due to interface change.
	  - Changed %llu format specifier to PRIu64 in event recorder.
	  - Moved threadsafe queue implimentation from plugins path to
	    libs/csplugincommon/sndsys/queue.h
	  - Added ClearFilterList() function to SndSysOutputFilterQueue.
	  - Added iSndSysStreamCallback.  This interface will allow for
	    callback notification of interesting sound stream events.
	  - Bumped the version of iSndSysStream.
	  - Added libs/csplugincommon/sndsys/ snddata.cpp and sndstream.cpp
	    Simple sound system stream and data classes can build off of
	    the base classes defined here.
	  - Converted Ogg and Wav elements to make use of the streamd and
	    data base classes.
	  - Fixed gcc4.1 reported warnings in the sound system.
	- Fossi reverted the remove of polymesh from brute because it is
	  still used by ODE. So this will need to wait until a new 
	  collidertype for heightmaps is added.
	- Fossi added backup of paging former. Should work, but with 
          severe artifacts. No test level yet.
	- Piotr Obrzut changed instmesh vertices transforms to look right.
	- Piotr Obrzut optimized moving instances for instmesh.
	- Piotr Obrzut replaced genmeshes with instmeshes in terrainf
7-Apr-2006
	- caedes fixed a bug in cs-config generation scripts that would
	  prevent it from finding optional libraries if cs is installed and
	  CRYSTAL variable is not set.
	- caedes fixed a bug in cspython Jamfile that would make it not install
	  the _cspace.so file.
	- Fossi fixed some minor bugs in bruteblock and added material
	  (alpha)map support and raw heightmap loader to paging former
	- Fossi removed the polymesh from bruteblock that was used for old CD
6-Apr-2006
	- Daniel Fryer fixed the sndsyscoreaudio to work with the new
	  sound renderer.  There are likely to still be issues.  Also modified
	  configure.ac to add "-framework AudioToolbox" when linking with Core
	  Audio.
	- Magodra fixed a crash where csReporterListener::WriteLine crashed
	  because int length = strrchr(str,' ')-str; could case invalid
	  positive length if str is located in uper 1/2 of memory.
	- Vincent removed GLX_VERSION_1_4 test from wxgl canvas so that
	  glXGetProcAddressARB() is always used, instead of
	  glXGetProcAddress(). This corrects his previous bad fix from
	  11-Dec-2005, as well as unknown symbol runtime error with nvidia
	  driver.
	- acraig updated sprcal3d for changes in Cal3d that fixes orientation
	  issues when loading a model.  Also updated the configure.ac file for
	  the more recent check on cal3d.
5-Apr-2006      
	- Piotr Obrzut changed terrain collider to be more optimized for
	  smaller 'other' colliders. Terrain colliders are now on.
	- Luca added the csHashReversible::PutUnique method, so that the
	  reverse hash table is updated also on that method. In fact this
	  method overrides the one in the csHash class.
	- Christopher removed csGradient4, and added all the stuff into
	  csGradient.  That class now supports both csColor and csColor4,
	  csRGBcolor, and csRGBpixel.  csColor4 is now the native type,
	  so it will be somewhat more efficient (no translation layer.)
	  He also changed a lot of the visual functionality of the default
	  widgets so that they are more attractive and faster.
	- Christopher added GaugeLevel, an analog gauge that can serve
	  a variety of purposes.  He also added several functions into
	  widget and the window manager, fixed drawing and input so that
	  they occur in order.  Added a simple FPS counter to watch
	  performance.  Added functionality to the dock so that certain
	  events are forwarded to widgets in certain dock locations.
	- Christopher made pens able to render into a texture for AWS2.
	  He also added a Level widget, which currently has some 
	  problems due to the procedural texture bug.
29-Mar-2006
	- Fossi fixed bruteblock's SetMaterial(Alpha)Map to work as 
	  previously. But since handling of materials is done in the
	  Formers now, their methods should be preferred over bruteblocks.
	- Christopher Nelson fixed the bug where text was appearing in the 
	  wrong place.  He also fixed the problem with one of the test
	  windows not having filled shapes.
	- Fossi made the samplers actually return the right resolution for
	  requested integermaps and made some documentation fixes.
  	- Christopher Nelson added a texture object to AWS2, and turned the
	  texturing option on in csPen.  He also fixed some texture-related
	  bugs.  Now any shape that csPen can draw can also be textured.
        - Piotr Obrzut updated terrain formers cd test (works but it is very 
          slow) - not active by default 
        - Christopher Nelson made linear gradients render into a texture.
        - Christopher Nelson added csGradient4, which handles alphas and
	  csColor4's and renders into csRGBpixel.  He also made AWS2 use this
	  for it's Gradient object, instead of csGradient.
28-Mar-2006
	- Christopher Nelson made *major* changes to the csPen object.  He
	  removed the fill and swap_colors parameters, and added the
	  ClearFlag and SetFlag functions, along with SetTexture.  The two
	  previous functions allow the user to turn swap colors and fill on
	  and off, along with other flags like texturing.  He also turned off
	  CS_FX_FLAT so now per-vertex colors are possible, which lets the
	  user make very simple linear gradients by setting the current and
	  alternate colors.  csPen now has the ability to texture map a
	  given shape.  Texture coordinates are automatically generated for
	  all shapes.  There is currently no way to specify custom texture
	  coordinates.  Textures mapped to a triangle shape will probably
	  not look right.  He also added csMemoryPen, which is the AWS2
	  caching layer for drawing.  AWS2 now subclasses from this pen.  
	  The current skin was updated for the changes to the drawing layer.  
	  A Gradient object was added to AWS2, but it's currently not much
	  use.  Eventually the gradient object will be used to create a
	  texture which can be mapped to a shape for more complex gradients.
27-Mar-2006
	- Eric Sunshine fixed outdated information in CS/INSTALL document.
26-Mar-2006
	- Piotr Obrzut makes his changes to cs cd system silent. He also 
	  adds code for real fix of the problem (not yet finished).
	- caedes made the following changes to cspace.i:
	    - Added includes to be able to access shader variables.
	    - Added particles mesh related interfaces and includes.
	    - Removed old iSndSysSoftwareFilterOutput interface from binding.
25-Mar-2006
	- Fossi fixed hitbeam with distance culled bruteblock
24-Mar-2006
	- Rhad cleaned up and updated the OSS sound driver to use the new
	  template based SCF and better buffering logic.
23-Mar-2006
	- Rhad cleaned up the Windows (directsound) driver and changed it to
	  use the new template based SCF.
	- Rhad changed the ALSA driver to use the new template based SCF and
	  changed the logic to more aggressively seek to lower latency while
	  accounting for under buffer conditions.
	- Piotr Obrzut added terra former collider collision queries handling
22-Mar-2006
	- Rhad performed numerous sound system enhancements:
	    - Changed all sound system components over to the new SCF format.
	    - Added iSndSysSoftwareOutputFilter interface and sound system
	      calls to attach implementing objects.
	    - The windows (directsound) driver should now behave much better.
	    - Cleaned up member variable naming conventions on most components
	      and added more comments.
	    - The sound system now 'keeps time' internally in frame count
	      instead of milliseconds.  This should simplify the flow and 
	      reduce/eliminate drift.
	    - Added a 'compressor' class (unused for now) to ultimately
	      contain the logic for sound buffer normalization.
21-Mar-2006
	- res added the MsvcIncDirs rule to specify include dirs for
	  generated VC projects.
	- res moved the CS-specific defines for VC projects out of the
	  project templates into the template customization code.
	- Fossi moved the material and alphamap handling from bruteblock 
	  into the formers. 
	- res added a "nomanifest" option for applications to inhibit
	  manifest generation on Win32/for VC projects.
	- res changed the msvcgen well-known compile group setup to only
	  add groups as needed, e.g. the "plugins" group is only added
	  if there is at least one plugin.
20-Mar-2006
	- iceeey committed small optimization to parallax shader from
	  sueastside: "move the 2 normalize() functions for eyevec and
	  lightdir from the frag to the vertex shader."
	- Adam updated apimod100.txi to include a quick primer on attaching
	  event handlers to the six csevFrame phases.
	- Jorrit fixed a crash bug in the particles mesh.
	- res fixed cspace.i to define an empty CS_COMPILE_ASSERT macro.
19-Mar-2006
	- Vincent added 'shared' option to cs.spec for RPM using shared lib.
	- Vincent added missing 'partsys' parameter to startme.cfg.
	- Anders added PerformExtension support for 3d renderers, and 
	  backface culling control to shaders.
16-Mar-2006
	- Fossi added support for non-square regions to terrain formers.
	  This required changing of the iTerraFormer interface.
	- Fossi also uploaded a newer version of the paging terrain.
	- Adam checked in the new "signpost" event handlers and helper
	  macros, and migrated the four ProcessFrameEventDispatcher flavors
	  to schedule themselves around the signposts instead of each other.
15-Mar-2006
	- Piotr Obrzut added float4x4 array maping with arrays of csVector4 
	  arrays to cg shader plugin.
	- Fossi added some more interface changes for the new terrain CD.
14-Mar-2006
	- Jorrit added a GetFlags() method to iMeshFactoryWrapper. In that
	  method you can add defaults for flags for all the meshes created
	  from that factory. This only works for meshes created from
	  factories either through iMeshFactoryWrapper->CreateMeshWrapper()
	  or the loader will also do it if you create meshobjects
	  from factories from XML.
	- Piotr Obrzut changed his previous float4x4 maping to be more 
	  intuitive.
13-Mar-2006
	- Vincent fixed 'jam install' so that it also installs terrainf *.lib,
	  AWS2 *.js files and CS/data/aws/widgets/ directory.
	- caedes added iSceneNode to cspace.i.
	- res wrapped some often-used configure command sequences into their
	  own commands.
	- Adam fixed a bug in csjoylin that prevented multiple joysticks from
	  being detected correctly.
12-Mar-2006
	- Marten added support for some more ANSI control sequences in
	  csPrintf on windows (where they are emulated).
	- Marten fixed an ambiguous function call in pagingformer.
	- res changed the CS_ANSI_COLOR_ defines back to their old CS_ANSI_
	  names.
11-Mar-2006
	- Vincent changed sound drivers to use namespaces.
	- Piotr Obrzut added float4x4 maping with 4 csVector4's in cg 
          shader plugin
	- Peter Amstutz changed the way the VOS plugin synchronized
	  network updates to object in the CS engine.  This should fix some
	  race conditions.
	- Rhad added csGetMicroTicks() function which returns elapsed time
	  in microseconds.
	- Rhad updated SndSysEventRecorder to use microsecond time values
	  for events.
10-Mar-2006
	- Dan changed M_PI to PI in pen.cpp since it msvc 7.0 didn't like
	  it. Also fixed a typo in pen.h in a function declaration, and 
	  fixed a truncation warning from double to float.
	- Christopher added the parent property and Broadcast function 
	  to Widgets, and the CheckBox, RadioButton, Window, ResizeKnob,
	  StatusBar, and ToolTip widgets.
9-Mar-2006
	- Jorrit made the alsa sound driver default on linux because it
	  is a LOT better.
	- res made updates for the new cs-win32libs release:
	    - Obligatory docs update.
	    - Augmented msvcgen to allow per-version project options.
	    - Adjusted the VC project options for the new naming scheme of
	      libs that need to be compiled for a specific VC version.
	    - Removed the SpiderMonkey code from AWS2, it's an external
	      dependency now.
	    - Fixed the bullet plugin to compile.
	- Piotr Obrzut did fixes after update to newer bullet version
	- Christopher added SetPenWidth to csPen, and also changed the
	  stepping metric to be a simple constant of two degrees.
	- res committed a change to the splatting_scattering_base shader by
	  Xotic that gives better control about the scattering parameters.
8-Mar-2006
	- Reed make the VOS/A3DL plugin actually set the ambient light color
	  from the a3dl:ambient-light property, rather than a constant color :)
	- Christopher renamed the "Autom" object to "Sys" because he felt that
	  it made more sense.  He also added a "Print" function to the Sys
	  object so that scripts can send output to the console.  The
	  ScrollBar is essentially complete, the only thing lacking is
	  proportional scrolling, and handling correct redraw when the range
	  is something other than (min>0,max<infinity).   
7-Mar-2006
	- Christopher added the basic event system to AWS2, and completed the
	  required features for the Pen object.  Christopher also added a 
	  clock widget and started to implement mouse events for widgets. He
	  also corrected a silly bug in the widget::Contains function that
	  would cause children to never be resolved as the mouse container.
	- Jorrit changed walktest over to the standard output console
	  as opposed to the simple console. The standard console has more
	  features and it doesn't really make sense to support three
	  different output consoles. So in the end the simple output
	  console will be removed (once all needed features from it are
	  transferred to standard console).
	- Rhad made some spelling fixes to isndsys/ss_stream.h and
	  put in a test fix for a common underbuffering problem in the
	  software sound renderer.
6-Mar-2006
	- Christopher made numerous updates to AWS2, notably the Margins and
	  Font object.  He also fixed csPen so that the text translation vector
	  is properly stored and cleared with the rest of the transforms.
	- Rhad fixed an infinite loop in the ALSA sound driver that could
	  occur if the call to retrieve the sound frames available for filling
	  returned a negative number.
	- Fossi updated the paging terrain former which now actually
	  works for vertices
	- Peter Amstutz improved the wxgl canvas so that it emits
	  focus gained / focus lost events when the mouse enters or exits
	  the window
	- Rhad fixed the ginormous memory leaks in 3d sound sources for
	  real this time.  Also added more debug messages to the software
	  sound renderer and fixed a couple asserts on exit.
5-Mar-2006
	- Rhad cleaned up memory leaks in the sound system:
	    - SndSysOggSoundData has been cleaned up to use local variables
	      where appropriate.  Member variables have been renamed to be more
	      consistant.  Memory leak in IsOgg() corrected.
	    - SndSysSourceSoftware3D should now clean up its filter chains on
	      destruction.  This was causing rather large memory leaks due to
	      the sizable sound buffers some filters use.
	    - SndSysRendererSoftware will now properly cleanup stopped sources
	      and streams within about 500ms of their release.  This fixes a
	      memory leak that occurred when using AutoUnregister streams. As a
	      side effect, RemoveSource() and RemoveStream() will no longer
	      block waiting for the background thread to acknowledge.
	- Rhad added a new interface: iSndSysEventRecorder.  This interface
	  will allow for enhanced debugging of sound events without cluttering
	  the console with reporter messages.
	    - A new plugin - sndsyseventrecorder has been created at
	      plugins/sndsys/utility/eventrecorder/ This plugin is not loaded
	      by default.  To specify enhanced sound system event recording,
	      add -soundeventlog=/this/sound.log (example) to the command line.
	    - queue.h, the sound system's threadsafe queue implementation has
	      been moved from renderer/software into utility/ .
	    - Not all sound system components use the event log (yet).
	- Rhad added an ALSA software sound driver.  This driver needs more
	  adjustments, but seems to work well. Tested only on x86 Linux
	  so far.
4-Mar-2006
	- Jorrit added a feature to csColliderActor so that you can get
	  the meshes that were hit with in the last call to Move().
3-Mar-2006
	- Christopher fixed bugs in csRect and csPen.  Christopher also
	  submitted a large change to AWS2.  He fixed awstest to be able
	  to load AWS2 again, and added some test files to the data portion
	  of the repository.  To see the new changes, uncomment the define in
	  awstest_config.h
	- res revamped the Win32 shared library Jam code to handle the 
	  massive amount of object files libcrystalspace contains.
	- res fixed some classes for proper DLL exporting.
	- res made shared libs install properly.
	- Vincent applied res' fixes for undefined symbols with shared libs on
	  GNU/Linux, gcc 3.4.4.
	- res fixed a couple of shared lib issues.
2-Mar-2006
	- Fossi commited another backup of the paging terrain.
	- Fossi copied priority 50 to terrain_fixed_base, so that terrain
	  does at least show on old hardware.
	- Jorrit fixed iObjectRegistryIterator so that it doesn't skip the
	  first element.
	- Jorrit fixed keyboard autorepeat on linux.
	- iceeey made parallax shader use add mixmode by default and
	  destalphaadd only if using projection.
	- iceeey again changed parallax shader mixmode to be srcalphaadd
	  mixmode by default so it supports transparency.
	- iceeey added autoRegions flag to the loader. This makes the loader
	  create a new region for the contents of each library file it loads
	  with the name of the filename. Set it using
	  iLoader::SetAutoRegions(true).
	- iceeey added iSaverFile which stores the filename and filetype
	  (world, library, etc) of a file.
	- iceeey added iSaver::SaveAllRegions() function to save all loaded
	  regions to their respective files. It will look for the iSaverFile
	  attached to each iRegion's iObject. If the saveable flag is set,
	  these will be created automatically by the loader.
	- iceeey implemented saving regions in cssaver. SaveRegionFile() will
	  save the contents of a region to a file.
	- iceeey removed saving renderpriorities from cssaver since they are no
	  longer supported in world files.
	- iceeey made cssaver save the priority for mesh objects and also save
	  sector ambient.
	- iceeey implemented terrain mesh factory and object savers.
	- iceeey made terrain object store materialmap info for the saver.
	  Alphamaps are not supported.
	- iceeey added a special case in cssaver for saving bruteblock meshes
	  to use the crystalspace...terrain.saver rather than the
	  crystalspace...terrain.bruteblock.saver which does not exist.
	- iceeey added iLibraryReference and iAddonReference interfaces.
	  These store references to libraries (<library>somelibrary</library>)
	  and addons respectively.
	  Addons can now be saved if they implement the iSaverPlugin interface.
	  The plugin name of the saver corresponds to the plugin name of the
	  loader but instead of ending in .loader, ends in .saver
	  (crystalspace.renderloop.loop.loader is saved with
	  crystalspace.renderloop.loop.saver).
	- iceeey made terraformers implement iObject. This is so the object
	  name can be accessed easily and so they can be associated with
	  iRegions for use in the saver.
	- iceeey converted pagingformer to new SCF.
1-Mar-2006
	- res added a memory handler for csArray<> that keeps a local buffer.
	  So if the array is small enough and fits into that buffer, a heap
	  allocation is saved.
	- res fixed the csAnsiParse color code checks.
	- res added csPtrWrap, a wrapper to initialize pointers with 0.
	- res took the Python-related plugins out of the MSVC static plugins
	  library.
	- res made some optimizations to xmlshader.
28-Feb-2006
	- Jorrit fixed csStringArray::SplitString() with option delimIgnore
	  so that it actually does what it is advertized to do.
	- Jorrit commited the workarounds for CG related problems on some
	  3d cards. This should fix disco effects on terrainf, incorrect
	  point sprites and incorrect portals. Note that these are
	  workarounds! We need real fixes.
        - Daniel Fryer committed fixes for Mac mouse events (using wrong
          constants for buttons) and for OSXGetDirs.cpp (missing a slash in
          path names).  Mouse fixes required moving mouse button enum from 
          event.h to evdefs.h
27-Feb-2006
	- Erroroman added new iSkeleton interface (still not usable).
	- Peter Amstutz fixed a bug in csInputDefinition::Compare where
	  it didn't convert between cooked/uncooked keyboard codes
	  correctly, which broke csInputBinder
	- Jorrit converted iConsoleExecCallback to new SCF.
26-Feb-2006
	- Reed fixed typo in libs/csutil/radixsort.cpp that affected OSX
	  (it was using #if instead of #ifdef to check a preprocessor symbol
	  definition)
	- Jorrit enhanced eventtest to also show mouse move events.
	- Jorrit fixed csInputDefinition::IsValid() so that it no longer
	  crashes with an assert in case you pass an invalid key
	  specification to ParseOther. That shouldn't crash but just
	  return false so you can test for it in calling code.
25-Feb-2006
	- Fossi added a first version of the pagingterrain. It's still
	  under heavy development and no testlevel is provided yet.
24-Feb-2006
	- Jorrit fixed bugplug so it no longer crashes if there is no
	  engine.
	- Jorrit disabled point sprites globally for now since it appears
	  to work incorrectly on all cards found so far.
	- Jorrit fixed csInputDefinition::GetOtherString() so that it works
	  for mouse events too.
	- Jorrit added a new eventtest app. It prints out all mouse and
	  keyboard events (except for mousemove).
	- res made a crash fix to SR.
	- res made the fixed terrain shaders work with SR again.
	- res changed the Win32 keyboard code to only set the autoRepeat flag
	  on key down events.
	- res renamed CSKEY_MODIFIER_COMPARE to CSKEY_MODIFIER_COMPARE and
	  added a CSKEY_MODIFIER_COMPARE macro to aid in comparison of
	  modifier key codes.
	- res submitted a patch from rhohr with some small improvements of
	  the python tutorial apps.
	- Marten removed the old lighter.
	- Marten worked some more on lighter2. Begins to approach usable state.
	- Marten added a const iteartor to csArray.
	- Marten added another version of ForEach function.
	- Marten added some getters to csBox.
	- res enabled generation of Python-related VC projects. (Not in any 
	  workspace by default.)
	- res fixed an issue in the Python bindings where _csWrapPtr_to_Python
	  would store the iBase pointer and and not the queried interface 
	  pointer. Later, the store pointer would be statically cast to the
	  desired interface pointer, which does not work with the iBase*.
	- res added csApplicationFramework::OnCommandLineHelp().
	- res modernized pysimp.
23-Feb-2006
	- caedes commited a patch he prepared with rhohr that fixes the python 
	  SetupEventHandler, the python event handler itself and the python 
	  tutorials. All this was broken since last event system changes. Now 
	  python only cs apps can again be made.
22-Feb-2006
	- Jorrit added a version of iEngine->GetNearbyMeshes() that works
	  with a beam (i.e. finds all meshes that intersect with the beam).
	- Jorrit fixed sprcal3d so it compiles again after the changes
	  with iObjectModel.
	- Jorrit removed 'Some' and 'may' from the iDocument->Parse()
	  documentation which gives it a completely different meaning.
21-Feb-2006
	- Jorrit added GF 7800 to the driver database so that it doesn't
	  use point sprites.
	- Fossi fixed a c&p error in priority 50 in std_lighting_fixed
	- Fossi added GetTerraFormerColldet() to iObjectModel and
	  implementations for terrain CD
20-Feb-2006
	- res fixed xmlshader to not throw an assertion on external programs.
	- Jorrit added GF 6600 to the driver database so that it doesn't
	  use point sprites.
	- Fossi moved iObjectModel from igeom to imesh and changed 
	  includes accordingly to prepare for the terrain CD.
	- Fossi missed some includes in the first try...
	- Peter Amstutz fixed a longstanding (but elusive) bug in 
	  csKDTree where the static allocators could sometimes 
	  themselves be destructed in the wrong order, causing a 
	  crash when the program exits.
19-Feb-2006
	- Piotr Obrzut removed unecesery and wrong conditions checks while 
	  seting autodisable params in ode dynamics system.
	- res changed the image loaders to employ the CS_PLUGIN_NAMESPACE_*
	  macros for namespaces.
	- res converted imgplex to new SCF.
	- res changed the VC templates to use /O2 instead of /Ox. Also fixed
	  the whole program optimization setting to work in VC8. 
18-Feb-2006
	- res fixed xmlshader so nested conditions and logic expressions
	  actually work.
	- res un-enabled the global Cg position invariance option.
17-Feb-2006
	- res beautified some shader snippet code.
	- res made the following changes to csDirtyAccessArray<>:
	    - Add element handler template parameter.
	    - Split contents reference counting into separate class,
	      csDirtyAccessArrayRefCounted<>.
	- res added support to the Cg shader plugin to specify Cg compiler
	  arguments from the configuration.
	- res enabled position invariance for Cg vertex programs.
16-Feb-2006
	- iceeey made several changes related to ambient light:
	    - Added "light ambient" shadervar to generic renderstep that tracks
	      the sector dynamic ambient light.
	    - Changed the default ambient value in engine.cfg to a dark value
	      of 0.2, 0.2, 0.2.
	    - Added support for setting sector ambient light in world files.
	      Just add <ambient red="1.0" green="1.0" blue="1.0"/> inside the
	      <sector> tag.
	    - Modified most of the ambient shaders to use the shadervar.
	- Jorrit fixed a bug in the parser for meshgen. It was doing a global
	  mesh finding instead of one local to the sector alone with the
	  result that if you had objects with same name in different sectors
	  it would sometimes fail to place the objects on the right position.
	- Jorrit changed the parser so that it no longer sets the world
	  ambient as the default for sector dynamic ambient (as iceeey changed
	  in his earlier commit). World ambient is ADDED to sector dynamic
	  ambient already. So setting dynamic ambient to world ambient
	  basically doubles ambient.
	- res fixed consoletest on Win32 to properly output non-ASCII again -
	  apparently the recently added setlocale() call to do proper output
	  on other platforms causes harm on Win32...
	- res worked a bit on the snippet-based std_lighting. Also sprinkled
	  some comments/explanation throughout the snippets.
	- res added functions to csString to append wchar_t strings.
	- res added overloads for iGraphics2D::Write(), iNativeWindowManager
	  and iNativeWindow methods that take wchar_t strings.
	- res fixed VC8 warnings in simpleformer and converted it to new SCF.
	- res fixed some VC8 warnings in csRadixSorter.
	- res added a method to csStringArray to add multiple strings by
	  splitting a given string at given delimiters.
	- res fixed stdrep to properly handle newlines in messages to report.
	- res converted stdrep to new SCF.
	- res simplified the condition culling code in xmlshader.
	- res changed the "template", "endtemplate" and "include" shader 
	  processing instructions to "Template", "Endtemplate" and "Include".
	  The idea is to distinguish them visually from "if" etc (which have
	  somewhat different instructions).
	- res fixed radixsort for 64bit.
	- res fixed cspace.i for CS_GNUC_WPRINTF macro(s).
	- res fixed a bug in xmlshader where the overlap of two value sets
	  was computed wrong.
15-Feb-2006
	- Erroroman added support for 'checkelementcount' option in genmesh 
	  factory loader (omits a warning when the element count of a 
	  custom buffer does not match the vertex count).
	- res fixed csFinite() compilation on MinGW with -ansi -pedantic.
	- Jorrit fixed a bug in csSector and meshgen. It was casting
	  csMeshGenerator to iMeshGenerator without even knowing the
	  right inheritance structure. This caused meshgen's to not
	  destruct properly (i.e. crash).
14-Feb-2006
	- Piotr Obrzut fixes bugs he left after adding support for different 
	  sized maps in simple terraformer.
	- Jorrit fixed compile errors in simpleformer.
	- res added a csFinite() function to wrap the platform-dependent
	  way to check for the finiteness of a floating point value.
	- res worked around an issue in xmlshader where the condition 
	  result check failed to work (ultimatively leading to consumption of
	  huge amounts of memory). The issue was caused by gcc apparently
	  performing an unexpected cast.
	- Jorrit fixed compilation of radixsort on 64-bit.
	- res made a condition check in xmlshader sharper.
	- iceeey moved the projection pass into snippets/projection-pass.inc.
	- iceeey added projection support to parallax.
13-Feb-2006
	- Marten started cleaning up the namespace mess. Not finished yet.
	- Eric Sunshine fixed 'jam install' so that it also installs the
	  CS/data/flarge/factories directory.
	- res tweaked the softrenderer & softshader to more appropriately use 
	  "bool"s instead of "int"s for some template parameters.
	- res fixed some VC8 warnings occuring with enabled memtracker.
	- res added macros to reduce typing for plugin namespaces.
	- res changed the way XMLshader detects redundant conditions. 
	  Basically, for each possible outcome of some condition, the ranges
	  of values a shader variable can take is stored, and a condition is
	  checked whether it is definitely true or definitely false, based on
	  the known possible range of values. If a definite result can be
	  obtained, the condition will not be checked later when a variation
	  is determined; less conditions to be checked mean less variations of
	  a shader.
	- res renamed CS_PLUGIN_PRIVATE_NAMESPACE_* to CS_PLUGIN_NAMESPACE_*,
	  suggested by Marten.
	- res did a small bit of reorganization in xmlshader.
11-Feb-2006
	- Jorrit fixed a bug in setting a parent on a mesh that was already
	  in a sector. The bug is fixed by automatically clearing the
	  list of sectors of the child mesh as soon as it gets another
	  parent.
9-Feb-2006
	- Piotr Obrzut added density map to mesh generator
	- Piotr Obrzut changed simple terraformer to work with different
	  sized intmaps and floatmaps than heightmap.
	- Jorrit added parameters to iMeshWrapper->HitBeam() so that it
	  can now also fetch the material that was hit.
	- Jorrit fixed the mesh generator so that it now works correctly
	  even if it sits on a mesh (terrain) that is not positioned
	  at 0,0,0.
8-Feb-2006
	- iceeey moved the renderloop from the terrain level to
	  std_rloop_terrain.xml. Also added support to it for regular
	  diffuse shaders (before it only had steps for terrain).
	- caedes changed the name of terrain_splat shader type in new
	  std_rloop_terrain to "terrain splat" so it is more consistent
	  with std_rloop_terrainfixed renderloop.
        - Daniel Fryer fixed compile error in cursor plugin
7-Feb-2006 
	- Piotr Obrzut fixed a bug in dynamics system colliders reported
	  by CAOZANE. Setting offset for sphere collider wasn't working right
	  when collider was attached to body.
	- Erroroman added shader variables to light.
	- Erroroman added support for light shader variables in loader.
        - Daniel Fryer fixed compile error in CoreAudio driver
6-Feb-2006
	- Piotr Obrzut reverts back his changes in protomesh related to index 
	  buffer creation as previous resolution was right.
	- Erroroman fixed creating quaterion from matrix
	- res committed a patch from Andres to annotate.php, to make it work
	  on crystalspace3d.org (it was actually broken since the move from
	  SF).
	- res changed the GL state manager to allow a more fine-grained
	  control about the texture state. The idea is to ease supporting
	  differing maximum numbers of texture coordinate sets and texture
	  image units.
5-Feb-2006
	- Marten fixed the lighter2 after last refactoring. Running lighter2 
	  on cornell level should now work out-of-the-box. Still work to do to
	  make it work on other levels and more features.
	- res added routines to get descriptions for DirectX error codes to
	  crystalspace_directx.
	- res converted csjoywin to new SCF.
	- res changed lighter2 to not write out a <filter> texture attribute
	  (since it is enabled by default).
	- Jorrit did a small fix to the documentation with regards
	  to the removed iThingState->GetFactory().
4-Feb-2006
	- Piotr fixed small bug in protmesh when index_buffer is created 
	  (csTriangle attributes are stored as int not unsigned int)
	- Jorrit changed the driver database to disable point sprites
	  for ATI on Linux. The particles are miniscule.
	- Jorrit restructured mazing so that the game logic is now seperated
	  in a new Game class. Continued working on the tutorial itself.
3-Feb-2006
	- iceeey made CEGUI wrapper inject time pulses into CEGUI. These are
	  used in CEGUI for things like tooltip timers.
	- Jorrit fixed the jam project template so that the generated program
	  actually compiles.
	- Jorrit did some documentation updates:
	    - Fixed the user object documentation to use new SCF.
	    - Added some more info to the tutorial section.
	- Jorrit added a mazing tutorial. This is a more or less full but
	  small game. Soon I will write a section in the manual dedicated
	  to explaining this tutorial step by step.
	- Jorrit added the first version of the mazing tutorial to the
	  documentation. Not yet finished.
	- Jorrit continued on the mazing tutorial. Still not finished.
2-Feb-2006
	- Jorrit did the following documentation updates:
	    - Reorganized the 'The Basics' and 'Quick Overview' sections
	      in the 'Using Crystal Space' chapter of the manual so that
	      it becomes clearer.
	    - Updated the landscape mesh documentation.
	    - Updated the sound documentation.
	    - Extended the documentation about engine concepts.
	    - Removed the section about the ball mesh.
	    - Added a stub for shader documentation.
	    - Added a stub for renderloop documentation.
	    - Many other small updates.
1-Feb-2006
	- res converted protomesh to new SCF.
	- res fixed std_lighting_detail to work with per-vertex lighting.
	- res fixed a closing of an invalid handle in the Win32 memory mapping
	  code.
31-Jan-2006
	- Jorrit fixed csMeshObject::GetRadius() so that it calculates the
	  radius instead of double the radius.
	- Jorrit fixed a big bug in portal container introduced yesterday.
	  The problem was an uninitialized radius variable causing havoc
	  in portal culling.
	- rvl_ removed logical bug in his code (that was trying to clear 
	  stencil in ClosePortal() on hardware where stencil is not available)
	  Portal flags coversion was added to make renderer portal code 
	  independent of engine stuff.
	- res fixed a VC7 compile error in Marten's static typechecking.
	- res made the VC _byteswap_* functions intrinsic.
30-Jan-2006
	- Jorrit changed iObjectModel->GetRadius() to return the radius as
	  a single float instead of a vector. It was always used as a single
	  sphere and not an ellipsoid.
	- Jorrit changed all mesh objects for the above change.
	- Jorrit changed many mesh objects to correctly set the center as
	  returned by GetRadius() to the actual center of the model and not
	  to (0,0,0). The radius is calculated accordingly.
	- Jorrit fixed the generic renderstep so that it uses the model center
	  to check if an object is affected by the light (instead of object
	  origin).
	- res updated some code to use new-style endian conversions.
	- res deprecated old-style endian conversions.
	- res added support for optimized byte swapping, when supported by
	  the compiler.
	- res removed support for MD2 conversions from md22spr (since MD2s
	  can now be loaded via the spr3md2 plugin). Also renamed md22spr to
	  mdl2spr.
	- res changed wxtest to use RequestPlugins() to load the WX canvas.
29-Jan-2006
	- rvl_ corrected portal logic of opengl renderer to handle 
	  rendering to target correctly. Some code logic/style was 
	  changed as advised by res.
	  Removed dependence on engine headers (portal.h) from opengl &
	  software renderers. Version of iGraphics3D was bumped up 
	  according to past OpenPortal/ClosePortal changes.
	- Marten added some static type-checking to SCF.
	- Marten fixed VC8 compatibility for rvl_s latest commit.
	- Marten added render buffer saving to genmesh factory saver.
	- Marten fixed some random warnings and errors in comments.
28-Jan-2006
	- Jorrit changed walktest to use the new sound renderer.
	- Jorrit completely removed the old sound system from CS.
27-Jan-2006
	- rvl_ changed portal code (mainly for floating portals) inside
	  opengl renderer to fix the bugs #1411948, #1398043
	- res updated the memory mapping support in VFS for the not so recent
	  memory mapping changes.
	- res fixed the memory mapping code to properly support mapping ranges
	  including the end of the file.
	- res added support for specular lighting to vproc_std.
	- res added support for color sum to softshader.
	- res changed the fatloop to use new SCF.
	- res changed lights to have their specular color the same as the 
	  diffuse color by default.
	- res revived csVertexListWalker<>, albeit with a slightly different
	  purpose: it now converts the data inside a render buffer to some
	  user-specified type.
26-Jan-2006
	- Peter Amstutz updated the VOS plugin to remove the crossbuilder code
	  and use the new, much cleaner iLoader interface instead.
	- Peter Amstutz fixed the csvosa3dl plugin to use GenerateSphere()
	  and genmesh in place of the old "ball" plugin
	- Jorrit fixed a few more cases in opcode plugin where it was using
	  dangerous floating point comparisons.
	- Jorrit added a better description of terrainf (mentioning
	  foliage generator) to startme.cfg.
	- Jorrit fixed terrainf so that the skybox no longer casts a shadow.
	- Jorrit decreased density of foliage in terrainf slightly to get
	  somewhat better performance.
	- Jorrit updated the screenshot of terrainf for the startme app.
	- Jorrit removed a few asserts in waterdemo which caused it to crash.
	- res fixed the Win32 and (blindly) OS/X port to set the correct
	  event info on FocusGained/FocusLost events.
	- res restored the waterdemo asserts (since the real cause is fixed 
	  now).
	- res worked around a crash on exit that occured when the csVFS
	  object gets released before all VFS files get.
	- res added a missing SCF_INTERFACE to iDebugGraph. Absence of 
	  SCF_INTERFACE in an interface causes weirdness at runtime.
	- res made csColliderActor::InitializeColliders() tolerate a 0 mesh.
25-Jan-2006
	- Jorrit added support for cylindrical mapping, half-sphere
	  generation, and reversed triangle generation to
	  csPrimitives::GenerateSphere().
	- Jorrit added support to genmesh for these flags. You can specify
	  them in a map file by using the attributes 'cylindrical',
	  'toponly', and 'reversed' in the <sphere> statement.
	- Jorrit fixed a bug in normal generation of GenerateSphere() in
	  case the center of the sphere was not the origin.
	- Jorrit changed the csSphere in GenerateSphere() to be a
	  csEllipsoid instead. That way one can create ellipsoids.
	- Jorrit added support to the genmesh loader for using an ellipsoid.
	  It works by having radius as a child node instead of an attribute:
	      <sphere>
	          <radius x="1" y=".5" z=".5" />
	      </sphere>
	- Jorrit fixed the XML test in the loader so that it also recognizes
	  XML comments.
	- Jorrit fixed csLoadPlugin and csQueryPluginClass so that they no
	  longer leave a dangling reference in case the plugin actually
	  loaded but didn't implement the requested interface.
	- Jorrit added support for '1' and '0' in the ParseBool implementation
	  of syntax services.
	- Jorrit added a new iSyntaxService->ParseBoolAttribute() to make it
	  easier to parse boolean attributes.
	- Jorrit fixed the new attributes for genmesh/sphere in the loader so
	  that they properly parse as booleans now (so you can say:
	  reversed="false").
	- Jorrit removed some dependencies from csparser to the removed
	  crossbuilder.
	- Jorrit fixed odedynam plugin for the api change in
	  iGeneralFactoryState->GenerateSphere().
	- Jorrit changed all levels to use genmesh instead of ball mesh.
	- Jorrit changed phystut to use genmesh instead of ball mesh.
	- Jorrit removed the ball mesh. It is now obsolete.
	- Jorrit added a new 'zsort' option to the particles mesh. Previously
	  the particles mesh always sorted particles from back to front. But
	  this is slow and only needed if you use alpha. For add and multiply
	  you don't need this. So by default zsorting is now disabled which
	  gives a great boost on performance. This no-sorting option is
	  implemented in the simple and the ode particle physics plugins.
	- Jorrit did some optimizations to the simple physics plugin for the
	  particles mesh.
	- Jorrit fixed instmesh and instmeshldr so they work again. In addition
	  they now support ellipsoids too (like GenerateSphere for genmesh).
	- Jorrit added support for 'direction variation' to the particles mesh.
	  That way it becomes easier to make things like fountains.
	- Jorrit also implemented this for the ODE physics particles plugin.
	- Jorrit fixed animation speed in md2 loader.
	- res fixed a bug in the font plexer where a font was not properly
	  removed from the "loaded font cache" upon deletion.
	- res fixed consoletest to utilize the proper output charset on
	  non-Win32 platforms.
	- Jorrit fixed a serious bug in opcode plugin. It turned out that
	  it was using dangerous tricks to do floating point comparisons.
	  These tricks don't work very well in optimize mode. This caused
	  TraceBeam to fail sometimes and this also caused startme to not
	  work properly.
	- res fixed the software renderer to handle shader-desired but unbound
	  buffers correctly.
	- res fixed some SR-related shader techniques for the recent buffer
	  changes.
24-Jan-2006
	- mdmkolbe removed a VC6 workaround from SCF.
	- mdmkolbe fixed a few more dirent.h issues with the Perl 5 bindings.
	- Jorrit fixed a bad bug in the gmesh 3ds loader plugin which basically
	  prevented it from loading more then one model without crashing.
	- Jorrit fixed a big memory leak in the loader. Every time the loader
	  parsed a plugins section with a plugin it previously encountered
	  the plugin would be loaded again which caused big leaks.
	- Jorrit fixed a leak with portals in the engine when portals were
	  loaded the old way (embedded in the thing plugin). The problem was
	  that the thing loader forgot to register the created portal
	  container mesh to the current region.
	- Jorrit added a patch from Lak_Moore to add support for returning
	  sector information to csColliderHelper::TraceBeam.
	- Jorrit added iModelLoader->Load() version that accepts an iDataBuffer
	  instead of a filename. Fixed gmesh3ds and spr3md2 to support this.
	- Jorrit added iModelLoader->IsRecognized() so that the model loader
	  plugin can check if some model is recognized.
	- Jorrit added a version of iLoader->Load() that accepts an
	  iDataBuffer.
	- Jorrit extended iLoader->Load() so that it will now also try the
	  3ds or md2 model loader if the file is not an XML file. That
	  way iLoader->Load() has become a very flexible method to load
	  any kind of model (CS library files, factories, 3ds, md2, ...).
	- mdmkolbe did a blind commit of a patch from Razor that fixes
	  receiving keyboard events from numpad5 when numlock is off.
	- Jorrit removed the old model importing system (crossbuilder
	  and similar). If you need it for some reason then you can get
	  it back by checking out with the tag PRE_CROSSBUILD_REMOVAL.
	- Jorrit fixed the walktest loadmesh command to use the new
	  iLoader->Load(). That way it can load a lot more models and it
	  is no longer tied to 3D sprites.
	- Jorrit added a new feature to 'meshfact' in world files so that
	  you can now do:
	    <meshfact name="bla" file="/lib/data/model.md2" />
	  That way you can now create mesh factories easily from meshfact
	  files. This works for md2, 3ds, and normal CS XML files like
	  mesh factories and libraries.
	- Jorrit fixed the walktest_static target by removing 'crossbld'
	  target.
	- res changed csparser to not have a hardcoded model loader list.
	- res made some warning fixes.
	- res fixed a gl3d crash when no canvas is present.
	- res fixed gl3d to properly activate buffers from a holder bound to 
	  the secondary color.
	- res changed the xmlshader plugin to not have buffer mappings for
	  the color, normal and texcoord buffers by default. While convenient,
	  it could also result in subtle performance issues, e.g. when a
	  buffer is autobound that has to be calculated relatively expensively
	  by a buffer getter, yet is not used in the actual shader (e.g. Thing
	  vertex colors, which are often not used). In this context, requiring 
	  an explicit mapping of all buffers seems the better approach - you
	  can see if you forgot a mapping, but may never notice if you waste
	  cycles because of an autobound buffer you don't need.
	- mdmkolbe documented in apimod the recent function removals
	  from iParticleState.
23-Jan-2006
	- Jorrit changed the sequence manager to have support for removing
	  sequences. This is done by optionally allowing to assing
	  a unique id to sequence operations.
	- Jorrit changed the engine sequence manager to use the above new
	  sequence manager feature so that every sequence wrapper gets
	  a unique id. That way, at destruction time, the sequence wrapper
	  can discard its own operations from the sequence manager.
	- Jorrit added some (default disabled) test code to print out all
	  objects that didn't manage to get deleted by a region deletion.
	- Jorrit cleaned up some reference use and introduced a few weak
	  references in the engine sequence manager in order to attempt
	  to fix a leak with triggers that are referenced in other sequences.
	  So far the leak is not gone though.
	- Jorrit fixed a memory leak in the engine sequence manager.
	  Triggers were sometimes put in two ref counting arrays causing
	  them to be leaking.
	- Jorrit fixed memory leaks with the material and texture in case
	  a checkerboard was made on request from some mesh object. The
	  problem was that the texture was added to the region but not the
	  material. Extended iLoader->LoadTexture() with an optional region
	  parameter to fix this.
	- Jorrit changed the csloader plugin to use csString for strings
	  instead of char*. That cleans up the code a bit (eliminated a lot of
	  goto's) and it also eliminates a few memory leaks.
	- Jorrit fixed a walktest crash. The texture loading plugins
	  returned csPtr but didn't increase the ref count first.
	- Jorrit fixed another leak in the engine sequence manager by
	  adding iEngineSequenceManager->AddOperationRunSequence(). This
	  should be used instead of the normal
	  iSequenceManager->AddRunSequence() so that the clean up works
	  properly.
	- Jorrit fixed the sequence manager conditional functions
	  (AddRunSequence(), AddCondition(), and AddLoop()) so that they
	  actually perform as documented. Which means that they don't
	  increase the ref count on the sequence. This fixes a number
	  of memory leaks and makes the above change to the engine
	  sequence manager obsolete (hence it has been removed).
	- Jorrit added memory tracker protection to the clipper in the
	  software renderer so that it compiles again with the memory
	  tracker enabled.
	- res added support for secondary color and color sum to the GL
	  renderer and fixed function plugin.
	- res moved the "lazy unload" from the Win32 library loading code
	  to SCF (seems it is also needed for other platforms).
22-Jan-2006
	- Jorrit fixed an accidental commit in the standard renderloop.
	- Jorrit rewrote csMaterialWrapper to use new SCF. For some reason
	  this fixed engine->RemoveObject() for material wrappers. Not
	  sure why.
	- Jorrit removed iMaterialWrapper->Clone().
	- mdmkolbe removed the following functions from iParticleState as they
	  conflict with functions in iMeshObject:
	    - SetColor(),
	    - GetColor(),
	    - SetMaterialWrapper() and
	    - GetMaterialWrapper().
        - mdmkolbe converted some classes in CS/libs to the new SCF.
	- mdmkolbe fixed some copy constructor issues in scfImplementation.
	- Rhad added basic thread priority adjustment to the csThread interface
	  and implementations.
21-Jan-2006
	- rvl_ changed iGraphics3D::OpenPortal(...) to give a render 
	  plugin more information about portal's properties (flags). 
	  Portal flags are stored in 'clipportal_stack' member of 
	  render plugins (opengl, soft3d). iGraphics3D::ClosePortal() 
	  is called without parameters now. 
	  Corresponding changes were made in engine code (portalcontainer, 
	  fat renderloop) and render plugins code (null, opengl, soft3d).
	- Jorrit fixed a very big memory leak in the engine. All objects
	  that would use software dynamic lighting (like genmesh by
	  default) would leak as soon as they were rendered once.
	- Jorrit fixed a big memory leak in thing. Once a thing was
	  rendered it would never release the render meshes at destruction.
	- res added an option to the GM loader to omit a warning when the
	  element count of a custom buffer does not match the vertex count
	  (there is the odd legitimate use for that).
	- res added support for index buffers to 
	  csTextSyntaxService->ParseBuffer().
	- res took the "no texture mappings" warning out of xmlshader.
20-Jan-2006
	- Jorrit did the following documentation updates:
	    - Removed everything about the soon-to-be-removed model
	      importing system.
	    - Added mention of this to the apimod doc.
	    - Added mention of the changed render priorities to the
	      apimod doc.
	- Jorrit temporarily removed the deprecation warnings for
	  the csevProcess and similar events. We don't want these warnings
	  present in the new pseudo-stable. After release of that we can
	  put the warnings back in.
	- Jorrit added support for scfImplementationExt6.
	- Jorrit added a new iSelfDestruct interface. This will be used
	  by engine->RemoveObject() so that it will become:
	    - Faster (only one scfQueryInterface).
	    - Cleaner (no dependencies on non-engine stuff).
	    - Extensible (everyone can implement iSelfDestruct).
	- Jorrit implemented iSelfDestruct in csMeshWrapper.
	- Jorrit clarified the render priority documentation with regards
	  to alpha and keycolor.
	- Jorrit converted csSequenceWrapper and csSequenceTrigger to new SCF.
	- Jorrit implemented iSelfDestruct in various engine objects.
	- Jorrit implemented iSelfDestruct in iSndSysWrapper. By doing that
	  this removes a dependency from engine to the new sound system
	  and it also enables engine->RemoveObject() to work on sounds.
	- Jorrit implemented iSelfDestruct in iSequenceWrapper and
	  iSequenceTrigger. By doing that this removes one dependency from
	  engine to the engine sequence manager and it also enables
	  engine->RemoveObject() to work on sequence wrappers and triggers.
	- Jorrit implemented iSelfDestruct in csNullShader and csXMLShader.
	  This removes the dependency from the engine to the shader manager
	  and enables engine->RemoveObject() to work on shaders.
	- Jorrit added a new iEngineFrameCallback interface. This can be
	  implemented if you want to know whenever the engine starts drawing
	  a new frame.
	- Jorrit announces:
	  For long and dark years a fierce creature roamed in the gloomy
	  corners of BugPlug. Taking the shape of a big Spider it wove its
	  web of deceit and catched many careless wanderers. But no more! The
	  age of the darkness is over and light shines over the land again.
	  The Spider has been defeated. But not by a great warrior, oh no!
	  A small and innocent creature has given Spider a bitter defeat and
	  from now on BugPlug shall be a safer place for everyone.
	- Jorrit completely removed the dependency from engine to engine
	  sequence manager. The engine sequence manager will now use the new
	  iEngineFrameCallback interface to find out the current camera.
	- Jorrit changed csRenderLoop to inherit from csObject. By doing
	  that renderloops can now be added to regions too.
	- Jorrit implemented iSelfDestruct in csRenderLoop.
	- Jorrit changed the renderloop loader addon so that it also
	  respects regions and it will now add the new renderloop to the
	  current region from the loader context.
	- res removed the VC6-related docs and updated the VC7-related docs
	  for the fact that they basically apply to VC7.1 and 8 as well.
	- res made a small optimization in SR clipping.
	- res fixed a crash-on-exit with SR.
	- Jorrit fixed csBlockAllocator so it actually compiles with
	  the memory tracker enabled.
	- res fixed memtracker linking issues for namespaced plugins.
	- Jorrit fixed the memory tracker version of the block allocator
	  so that it is 64-bit clean.
	- Jorrit added a work around for the placement new as used in
	  the GL renderer so that it compiles with the memory tracker
	  enabled.
	- Jorrit fixed an infinite loop in csarray which is triggered with
	  the memory tracker because it was using cs_snprintf. Rewrote to
	  use strcpy/strcat instead.
	- Jorrit fixed another 64-bit issue in the memory tracker.
19-Jan-2006
	- Jorrit fixed gmesh3ds for Frank's latest refactor.
	- Jorrit fixed a bug in spr3d. If the factory had no material but
	  the mesh had one then it would still complain that the material was
	  missing. Now the factory material is really optional.
	- Jorrit added a new md2 loader for spr3d. This will help replace
	  the model importing system.
	- Jorrit added a new iModelLoader interface. This is a convenience
	  interface that some loading plugins can implement. This makes it
	  easier to create a mesh factory from a model file. Currently
	  this is implemented by the new gmesh3ds and spr3md2 plugins.
	  Loading a model is now as simple as:
	    csRef<iPluginManager> plugin_mgr = csQueryRegistry<
		    iPluginManager> (object_reg);
	    csRef<iModelLoader> l = csLoadPlugin<iModelLoader> (plugin_mgr,
		    "crystalspace.mesh.loader.factory.genmesh.3ds");
	    iMeshFactoryWrapper* ff = l->Load ("model", "/lib/model.3ds");
	- Jorrit updated the documentation to document the new way to load
	  models.
	- res changed some code to use csLittleEndian::Convert() for endian
	  conversions.
	- res fixed the broken SWIG post-processing sed expression.
	- Jorrit changed the render priority system in CS:
	    - Giving an unknown priority to a mesh or factory will now
	      result in an error.
	    - It is no longer possible to define render priorities in a
	      world file. It is now only possible to define them from code.
	    - The standard render priorities are now:
		- init
		- sky
		- sky2
		- portal
		- wall
		- wall2
		- object
		- object2
		- transp
		- alpha (only one with back2front sorting)
		- final
	- res toned down file-not-found warnings when using the font plexer.
18-Jan-2006
	- Jorrit fixed a bug as reported by rvl_ involving a memory leak
	  when looking at space warping portals.
	- Jorrit added a size parameter to iBinaryLoaderPlugin->Parse.
	- Jorrit added a new 3DS loader for genmesh. Supports multiple
	  submeshes (different materials).
	- Jorrit fixed genmesh so that it ignores the request for Compress()
	  if submeshes are used. Compress() should be called before adding
	  submeshes or else Compress() should not be called at all.
	- res made the following changes:
	    - Fixed a VC warning in collider.cpp.
	    - Added scfImplementation::operator=() which does nothing. The 
	      compiler-generated operator would be unsuitable.
	    - Copy constructor for scfImplementation which triggers an 
	      assertion. The compiler-generated constructor would be 
	      unsuitable.
	    - Changed iBinaryLoaderPlugin::Parse() to take an iDataBuffer*
	      instead of a pointer and a size.
	    - The scfImplementation::operator=() addition allows the removal
	      of the less than beautiful "scfRefCount = 1" in 
	      csCamera::Clone().
	- Peter Amstutz added support for setting gravity and collision
	  detection policies for sectors in the csvosa3dl plugin.
17-Jan-2006
	- Jorrit fixed bruteblock->HitBeamObject() so that it correctly
	  returns the resulting material.
	- Jorrit changed csIntersect3::SegmentTriangle() to also detect a
	  hit on triangle boundaries.
	- Jorrit fixed bruteblock->HitBeamObject() so that it works on
	  triangle boundaries too.
	- Jorrit implemented material specific density modifications
	  in the mesh generator. So you can now disable generation of
	  a specific type of mesh depending on a material.
	- Jorrit added a elapsed time cap to csColliderActor to prevent
	  falling through terrain in case of very slow fps.
	- res added csStringBase& csStringBase::operator= (const 
	  csStringBase&) to allow assignment of a csStringBase& to another
	  csStringBase&.
	- mdmkolbe fixed multiple declarations of 'struct dirent' in the
	  Swig Perl interfaces under Cygwin.
16-Jan-2006
	- Jorrit did some documentation enhancements.
	- Jorrit updated the xml format document with a bit more information
	  about textures and materials.
	- res dropped the unused CS_TEXTURE_DITHER flag.
	- res added an assertion to csBaseEventHandler to ensure it's properly
	  initialized.
	- mdmkolbe fixed some compile errors in the Swig bindings
	  that happen when compiling with a separate build directory.
15-Jan-2006
	- rhad added two missing interface declarations for software sound 
	  source types. The lack of these could cause SCF_QUERY_INTERFACE 
	  to return a non-null pointer cast as an incorrect interface.
	- rhad made some updates to the oss software sound driver so
	  that it respects byte order requests from the renderer.
	- rhad made some updates to the mac coreaudio software sound driver
	  so that it respects byte order requests from the renderer. 
	  (and shouldn't crash now).  Mac changes are untested even for
	  compilation as I don't own a Mac, sorry! :(
14-Jan-2006
	- res improved the wxgl keyboard handling somewhat.
13-Jan-2006
	- res changed gl3d to also utilize an iGraphics2D from the object
	  registry, if present (to allow canvas specification from
	  RequestPlugins()).
	- res fixed the wxgl canvas to only call wxGLCanvas->SetContext() on
	  initialization when it's actually visible.
	- res ditched the csavi (and related), cssgiimg and cswalimg plugins.
12-Jan-2006
	- Jorrit added iLoader->LoadShader() to load a shader from a file.
	- res made more tweaks to static plugin linking.
11-Jan-2006
        - res changed the VC project generation to put files that can be shared
          between different VC project versions into the mk/msvc directory.
	- res changed the VC project generation to regenerate the "common"
	  files only when needed (the idea is to speed up the process by
	  avoiding redundant generation of those files by every msvcXgen).
	- res tweaked the VC8 projects to include the manifest file among the
	  "normal" project files (so it gets picked up by the manifest tool).
	- res fixed msvcgen to also work when no msvc "common" directory was
	  specified.
	- res made the static plugins jam file "common", too.
	- res made some fixes to MSVC static plugins support.
10-Jan-2006
	- res tweaked the VC7 project templates a bit to avoid VC8 modifying
	  them when doing "Save all".
9-Jan-2006
        - res dropped the VC project generation for VC6 and added generation
          for VC7.1 and VC8.
	- res dropped the "ExtensiveMemDebug" VC project build configuration, 
	  but added they (probably more useful) MemoryTracker and RefTracker
	  configurations.
	- res changed the MemoryTracker and RefTracker VC project build
	  configuration to use the out/debug directory again (since this is
	  probably easier to utilize for external projects).
	- res moved the generated manifest for apps into a separate file.
	- res applied a fix from Xordan to fix (old sound) .wav loading on
	  64bit systems.
	- res converted the image loaders to new SCF.
8-Jan-2006
	- res fixed some spurious text drawing issues.
	- res removed the 'extern "C"' functions from the ODE plugin (since
	  they aren't used any more).
	- res made Win32 thread error reporting more verbose.
	- res fixed an uninitialized var in viewmesh (which caused display
	  issues).
	- res added dependencies for .tok files where used.
	- res fixed VC warnings in tritri.cpp.
7-Jan-2006
	- Jorrit did some more work on integrating instmesh with meshgen.
	  Still not 100% functional.
6-Jan-2006
	- mdmkolbe made some more warning fixes.
	- Marten removed some warning-disable #pragmas for VC, and
	  cleaned up the warnins instead.
5-Jan-2006
        - Arianna fixed some warnings in MSVC 7.1 (64bits) related to 
          size_t int conversions.
4-Jan-2006
	- res updated the driver DB tweak against terrainf corruption on ATIs
	  to also include older drivers (Cat 4.8, as reported by Vasily 
	  Rudnikov).
	- mdmkolbe fixed some more unused parameter warnings.
3-Jan-2006
	- mdmkolbe fixed build errors in the new event system and a typo
	  that used button instead of buttonState.
	- mdmkolbe fixed several warnings including:
	    - Copy constructors not calling constructors of virtual parrents,
	    - String formats not matching argument types,
	    - Missing size_t cast before a -1, and
	    - Missing #if's around uncalled functions on some configurations.
	- mdmkolbe fixed some unused parameter warnings.
	- Jorrit fixed a bug in the engine: when a mesh or light is
	  deleted it will now automatically unlink whatever children it
	  might have. This fixes crashes when regions are unloaded that
	  contain hierarchical objects.
	- Adam marked csevPreProcess, csevProcess, csevPostProcess, and
	  csevFinalProcess as deprecated.
	- mdmkolbe removed an unused parameter from
	  csEventTree::UnsubscribeInternal
	- mdmkolbe fixed warnings about enum vs non-enum in conditionals.
2-Jan-2006
	- Jorrit fixed a bug in the with lights as children of meshes
	  (reported with bug #1394869).
	- Jorrit started work on support for instmesh in the mesh generator.
	  Doesn't work yet.
	- Jorrit fixed a bug in mesh generator with high radius.
	- res fixed some warnings and issues reported by mdmkolbe.
        - Magodra fixed some warnings
	- Peter Amstutz fixed csInputBinder to work correctly with mouse events
30-Dec-2005
	- Jorrit enabled the new AFP workaround for walktest terrainf so
	  that it also kicks on in Linux.
	- Jorrit sanitized genmesh so that you can now also set the geometry
	  by calling AddVertex/AddTriangle (like instmesh) instead of the
	  clumsy SetVertexCount() followed by GetVertices() and others.
	- Jorrit also changed the genmesh loader so that it accepts the same
	  syntax as instmesh loader. This means that numvt and numtri are
	  now obsolete and you can specify the normals and colors directly
	  in the same <v .../> statement (but only if you don't specify
	  'numvt'!).
	- Jorrit added a new csNormalCalculator class which is used by
	  instmesh and genmesh to calculate normals.
	- Jorrit added a feature to genmesh and instmesh so that the
	  auto calculation of normals doesn't compress vertices anymore. Use
	  <normalnocompress/> to enable this.
	- Jorrit added a new csPrimitives class which can be used to easily
	  generate primitive meshes (boxes and spheres right now). Changed
	  genmesh and instmesh to use csPrimitives.
	- Jorrit fixed bounding volume calculation for instmesh in case
	  of box and sphere generation.
	- res fixed some valgrind errors reported by Jorrit.
29-Dec-2005
	- Jorrit fixed a bug with lighting of instmesh.
	- Jorrit implemented the automatic box generation of instmesh.
	- res worked around a bug in the latest ATI driver causing text and
	  CS logo get corrupted in walktest terrainf.
28-Dec-2005
	- Jorrit finished the basic implementation of instmesh. Still some
	  optimizations to do and then the mesh generator has to be modified
	  to work with it.
	- Oktal fixed compilation on Cygwin.
	- res fixed the "darkness" of the std_lighting_detail_alpha and 
	  std_lighting_detail_alpha_scroll shaders, inspired by a different
	  fix from Vasily Rudnikov.
27-Dec-2005
	- Jorrit made the mesh_tri_normals in genmesh a local array for
	  CalculateNormals(). For some reason it was stored in the factory
	  class which means a waste of memory since the array was
	  used nowhere.
	- Jorrit fixed a leak in genmesh. For every genmesh object an
	  instance of a shader variable accessor was leaking.
	- Jorrit added the first version of the new 'instmesh'. This is
	  a mesh that is specifically designed to allow for multiple
	  instances of the same geometry. Currently it doesn't work yet.
26-Dec-2005
        - res added support for separate specular and some specular-related
          parameters to glshader_fixed.
        - res added (partial) support for specular lighting to the vproc_fixed
          shader.
	- res added loading of the light specular color to csparser.
	- res fixed XMLshader to always expect the shader-global <shadervar>s
	  in a <shadervars> block. (One code path expected them outside such a
	  block.)
	- res fixed the fat RL to propagate the light specular color.
	- res added some specularity to simplelights.zip. Shiiiney!
25-Dec-2005
        - res fixed a crash in xmlshader when retrieving metadata from a 
          fallback shader that itself did not have validated techniques.
	- res updated the DDS plugin to use new SCF.
	- res added a SR technique for the "lighting_vproc" shader.
24-Dec-2005
	- Jorrit optimized meshgen lod handling considerably.
	- Jorrit optimized meshgen alpha handling considerably.
	- res added support to gl3d for uploading DXT-compressed textures even
	  if the S3TC ext is not present (since some DRI drivers support that, 
	  but don't expose the ext since their implmentation is not conformant
	  in other aspects).
23-Dec-2005
	- Jorrit fixed a bug reported by Andrew Craig. csSector was
	  doing a delete on the light sector influence structures but
	  this is a ref counted thing.
	- Jorrit fixed a bug in csThing::SetMixMode(). It would not update
	  the mixmode in the already created render meshes so in many cases
	  this method had no effect.
	- Jorrit fixed the engine so that children of a mesh are now also
	  added to the main mesh list. This already happened in a few cases
	  but not all.
	- Jorrit fixed the main loader so that it uses the loader context
	  correctly to find the mesh factory in case of 'meshref' (as
	  opposed to directly trying to find the factory from the engine).
	- Jorrit fixed the main loader so that in case of 'meshref' the
	  child mesh objects (or lights and cameras) of the just created
	  mesh are also added to the current region.
	- Jorrit added a nice skybox to terrainf with moving clouds.
	- Jorrit did the following meshgen changes:
	    - Added a check and error in case the number of needed
	      blocks (in one frame) is more then the total number.
	    - Fixed a bug where blocks were not properly taken from
	      other blocks already in use. This bug manifested easily
	      if a big radius was used.
	    - Jorrit added method calls so that you can change the
	      number of cells and blocks.
	- Jorrit refixed the bug with adding children to regions too so
	  that it will now also add children of children.
	- Jorrit fixed the handling of CAMERA objects so that they don't
	  call UpdateMove() in case the position didn't change. That
	  optimizes rendering a bit in case the camera stands still.
	- Jorrit did a rather significant fix to csKDTree. In the past,
	  whenever an object moves, is deleted, or added CS will try
	  to do a new distribute of the kdtree. However, this is an
	  expensive operation so instead we now do it only after
	  20 such tree operations.
	- Jorrit optimized csKDTree::MoveObject() so that it will now
	  test if the bounding box of the object actually changes before
	  doing more expensive operations.
	- res changed the Unix csLoadLibrary() to pass RTLD_GLOBAL to dlopen().
	  That seems to fix issues were only indirect GL rendering was
	  available to CS ("export LIBGL_DEBUG=1" revealed a symbol not being
	  found by the DRI driver).
	- res rearranged some code in glx2d to make things work for him.
	- res fixed the X canvases to properly set the default window title.
	- res ported the xwin plugin to new SCF.
	- res fixed softshader to use the same alpha test enabling logic as
	  gl3d.
22-Dec-2005
	- Jorrit added SetMixMode() and GetMixMode() to iMeshObject. This is
	  supported by most meshes.
	- Jorrit fixed a bug in the CS_FX_SETALPHA and CS_FX_SETALPHA_INT
	  macros. They were not putting parenthesis around the macro argument
	  which means that things like CS_FX_SETALPHA (1-factor) simply
	  didn't work correctly.
	- Jorrit did the following meshgen changes:
	    - Optimized it so that meshes are better reused by setting
	      them aside first so that they can be reused in the same frame.
	      That way we avoid removing the meshes from the sector only to
	      put them back later again. Removing a mesh from a sector is an
	      expensive operation.
	    - Implemented density scaling. That way you can have a high density
	      for objects close to the camera and less density for objects that
	      are further away.
	    - Implemented alpha scaling for objects in the distance.
	    - Implemented random rotation for the generated objects (rotation
	      around y axis).
	- Jorrit fixed the lightning mesh object for the mixmode change.
	- res unborked software DXT3 decompression in the DDS plugin.
21-Dec-2005
	- Jorrit improved mesh cache usage by first removing the meshes
	  that are no longer needed for out of range cells before trying
	  to allocate new ones.
	- Jorrit did the following mesh generator changes:
	    - Density now works correctly. Still have to implement density map
	      and material based density.
	    - LOD is working correctly.
	- Jorrit added support for getting the hit material with iMeshWrapper
	  and iMeshObject->HitBeamObject() function. This is implemented for
	  ball, proto, spr2d, spr3d, thing, bruteblock, and genmesh. All others
	  will return 0 for the material. For genmesh submeshes are not yet
	  supported.
	- sueastside contributed some grass for the terrain.
	- Jorrit started an optimization in bruteblock which detects that the
	  beam passed to HitBeamObject() is vertical in which case it will
	  resort to simpler calculations. Not totally finished though. There
	  are still plenty of ways to optimize this further. Also the current
	  optimization is not working correctly. So it is disabled for now.
	- Jorrit finished the optimization of HitBeamObject() in bruteblock
	  for vertical beams. The speed difference is very big and it speeds
	  up mesh generation on terrain considerably.
20-Dec-2005
	- res fixed support for SR "smaller" rendering.
	- res made the SR properly support the canvas clipping rect (which is
	  supposed to effect 3D drawing as well).
	- res clarified some docs for iGraphics3D methods which claimed to
	  take coords in screen space but in fact take coordinates with Y
	  inverted in relation to screen space.
	- res fixed some uninitialized csEvent members.
	- res fixed a coordinate inversion in gl3d.
	- Jorrit implemented the mesh generator loader and fixed a
	  bug in meshgen. Added a test meshgen to terrainf but the engine
	  doesn't yet show the generated meshes (still todo).
	- Adam implemented a unit test for csInputDefinition and fixed a
	  couple of bugs in the parser/constructor.
	- Adam removed an unnecessary resolution layer from static
	  csEventNameRegistry methods.
	- Jorrit changed region removal so that it uses engine->RemoveObject()
	  first. This means that adding support for removal of some object
	  to RemoveObject() is sufficient to support regions.
	- Jorrit added early exit to region removal so that it stops scanning
	  the list as soon as it is totally empty.
	- Jorrit changed the test for a successfully cleaned up region so
	  that it also operates in optimize mode.
	- Jorrit changed RemoveObject() to first check on meshes, factories,
	  textures, and materials since there will be more of those.
	- Jorrit added support for iSharedVariable and iMeshGenerator to
	  RemoveObject().
	- Jorrit fixed the loader so that mesh generators are added to the
	  region if needed.
	- Jorrit fixed a few bugs in the mesh generator.
	- Jorrit changed the engine so that it is actually generating the
	  meshes now. Still not correct though. Density is ignored. The
	  height of the meshes is ignored and meshes are not properly cleaned
	  up when you go away from them.
	- res added SR support to the terrain_fixed_* shaders.
	- res augmented the SR to support index buffers with data types other
	  than 'uint'.
	- Jorrit fixed cleaning up of blocks when they are out of range.
	  Meshes don't yet appear correctly though.
	- Jorrit did the following mesh generator changes:
	    - Fixed a crash at cleanup in the mesh generator.
	    - Meshes are now properly cleaned up when out of reach in a cell.
	    - Distance based generation is now working properly.
	    - The generated meshes now correctly follow whatever meshes
	      they are supposed to follow.
	- BigG Removed unused variable axdata[] from Cajoywin.cpp.
	  Touched code to meet coding standards.
19-Dec-2005
	- Jorrit did more work on the mesh generator.
	- Jorrit fixed a memory leak in md32spr as reported by Anuj Goyal
	  (agoyal@coverty.com).
	- Jorrit fixed a potential overwrite bug in the fixed shader
	  plugin as reported by Anuj Goyal.
	- Jorrit fixed the engine from handling the resize event again.
	- Jorrit fixed csInputDefinition::ParseOther() so that it again
	  parses keyboard events.
	- Jorrit did some code reformatting in csutil.
	- res attempted to merge Adam's and Jorrit's respective tries to fix
	  csInputDefinition.
	- res updated the GL driver DB to extend the GF5 VBO tweaks to all
	  NVIDIA hardware - means that VBO disabling for NV is now only
	  dependent on the driver version.
	- Jorrit did a lot of work on the mesh generator. In principle it
	  is nearly testable now (although the object placement is not correct
	  yet). I can't test it yet because the loader for it is lacking.
18-Dec-2005
	- Jorrit added new functions to csBox2/csBox3 to calculate the
	  squared distance between a point and a box. These new functions
	  complement the already existing SquaredOriginDist() functions.
	  The new functions are called SquaredPosDist() and
	  SquaredPosMaxDist().
	- Jorrit did more mesh generator work.
        - Magodra fixed a typo in inputdef.cpp where Caps and Scroll lock where
          mixed up.
	- Eric Sunshine fixed an unlikely, though potential crasher in
	  csVariant::SetString() which could occur with an expression such as
	  variant.SetString(variant.GetString()).
	- Peter Amstutz updates the csvosa3dl plugin to compile with the
	  latest VOS CVS.
	- Peter Amstutz committed an initial fix for csInputBinder to
	  work with the new event system.  Needs more work though.
17-Dec-2005
        - res reactivated (and slightly improved) "-ilace" support for the
          software renderer.
	- Adam really, really fixed csInputDefinition this time.  Really.
	- Adam csString-ified more csEventNameRegistry and
	  csEventHandlerRegistry internals.
        - BigG Removed unnecessary call to Texture Manager in sndtest.cpp
        - BigG modified g2d.cpp - csGraphics2DDDraw3::PerformExtensionV to
          meet code standards. Removed unused variables.
	- caedes commited changes to pysimp script, as he forgot after fixing
	  it on 15-Dec-2005.
	- Jorrit continued work on the mesh generator. Still not functional.
	  Removed the iMeshGeneratorMapping interface.
	- Eric Sunshine removed a bogus test in CMapEntity::Read() which was
	  added on 2004-06-09. Reported by:
	  http://community.crystalspace3d.org/forum/index.php?topic=624.0
	  The test would fail on valid input because CMapParser had already
	  advanced the line count before it was snagged by CMapEntity::Read()
	  if the closing string quote was the last character on the line.
16-Dec-2005
	- Oktal fixed null pointer dereference in csEngine when iGraphics2D/3D
	  are not available.
	- dfryer fixed OS X specific stuff for event changes.  Some
	  canvas-hidden events aren't generated, but the rest of it seems to
	  work.
	- Adam changed csEventNameRegistry::GetID to use csString internally
	  (fixes a MSVC7.1 crash)
	- Adam fixed csInputDefinition to parse "0" correctly
	- Adam fixed a corner case of event subscription inside of a related
	  event handler.  This should fix runtime-loaded bugplug.
	- Adam fixed a bug in in successor-bound handling when a successor ID
	  had not yet been instantiated in the partialorder graph.
	- Adam exchanged some NULLs for 0's.
	- BigG fixed bug in lighter.cpp that used wrong variable to query mesh.
	- Eric Sunshine renamed the OPCODE plugin from 'opcode' to 'csopcode'
	  in order to avoid clash with Python's 'opcode' module where, if the
	  CS opcode.dll was found in PYTHONPATH or PATH, then Python would
	  complain that the Python-specific initopcode() function was missing
	  from the DLL. This should resolve problem where py2app and py2exe
	  failed when wrapping a pure-Python CS application.
	- res made the SR DrawMesh() work again when no shader was activated
	  previously.
	- res fixed the Win32 callstack generation to not chop off the top
	  entry.
15-Dec-2005
	- res fixed the printf formatter to properly handle very very large
	  floats as well.
	- res made some VC8 warning fixes to wxgl and wxtest.
	- res made csPtr<>'s CS_VOIDED_PTR more 64-bit friendly.
	- Adam added debug-mode sanity checks to partialorder.h
	- caedes did the following fixes and additions to python bindings
	  (fixes most problems, but SetupEventHandler does not work yet):
	    - Fixed cspython to build again after event system changes.
	    - Fixed pysimp example (it used GetFactory from iThingState).
	    - Added iEventNameRegistry and iThingFactoryState to cspace.i.
	    - Added some of the new event macros (csev*(reg)) to cspace.i.
	    - Removed all CSMASK* values from pythpost.i.
	- Adam fixed a crasher in csPartialOrder::Delete().
	- res improved the software rendering of certain polys in a sharp
	  angle to the camera.
	- res fixed some umlauts in the contributors list.
	- Jorrit fixed crash (or potential crash) at exit in isotest,
	  joystest, vostest, simpcd, partedit, pathtut, waterdemo,
	  lightningtest (crashes were indirectly caused by the new event
	  system).
	- caedes removed previous additions to cspace.i that where giving swig
	  errors (bad fix for SetupEventHandler brokeness).
	- caedes added ss_driver.h and changed quaterni.h to quaternion.h in
	  cspace.i to remove some swig warnings.
	- caedes fixed the pysimp2 example.
	- acraig fixed an issue in csMeshWrapper::SetParent when parent is set
	  to 0.  Need to unprepare the mesh.
14-Dec-2005
	- Jorrit did various documentation updates:
	    - Fixed the link to the related projects on the CS page.
	    - Removed mention of the 'new renderer' in the feedback page.
	    - Added mention of using -verbose for more output.
	    - Fixed the link to the bug tracker.
	    - Added Adam Bradley, Michael D. Adams, Piotr Obrzut,
	      Mike Handverger, Mike Gist, iceeey, caedes, Christian Van
	      Brussel, Hristo Hristov, and swedishcoder to the contributor
	      documentation.
	    - Added some extra information to the entries for
	      Marten Svanfeldt, Vincent Knecht, and Andrew Mann.
	    - Updated the directory hierarchy slightly.
	    - Updated the outdated entry about OpenGL needing 2*SRC*DST.
	      Replaced it with an explanation about how to fix slow
	      OpenGL rendering.
	    - Mentioned the need for -relight in rundemo.txi.
	    - Removed several obsolete options from the walktest
	      documentation. Added documentation for -fullbright.
	    - Removed a few obsolete programs from the application
	      overview.
	    - Fixed a csQueryInterface -> scfQueryInterface.
	    - Replaced all deprecated CS_QUERY_REGISTRY with csQueryRegistry.
	    - Replaced all deprecated SCF_QUERY_INTERFACE with
	      scfQueryInterface.
	    - Replaced all deprecated CS_LOAD_PLUGIN with csLoadPlugin.
	    - Updated the simple tutorials for the latest event changes.
13-Dec-2005
	- res fixed render-to-texture support in the software renderer.
	- res fixed pixmap drawing in the software renderer.
	- res fixed some miscellaneous new event stuff fallout.
	- Jorrit added a note about Cg 1.4 requirement to the
	  documentation.
12-Dec-2005
        - res fixed some issues with mouse events.
	- Adam fixed a bug in csInputDefinition::ParseOther().
	  Also fixed a type warning.
	- Jorrit added a few clarifications to the apimod doc about the
	  recent event changes and GetFactory() removal.
	- Jorrit worked further on the mesh generator. No real functionality
	  yet but all classes are there with stub implementations.
11-Dec-2005
	- Vincent Knecht fixed wxgl plugin for platforms using GLX by
	  reversing GLX_VERSION_1_4 test.
	- Vincent Knecht updated sdl2d canvas for the recent event change.
	  Only works in software mode for me though, crashes with OpenGL.
	- Vincent Knecht fixed keyboard handling in phystut. It still crashes
	  on exit though.
10-Dec-2005
	- res updated the apps for the iThingState::GetFactory() removal.
	- res updated and reworded the simple1 tutorial for the
	  iThingState::GetFactory() removal.
	- Vincent Knecht made the following changes:
	  - Updated wxtest and vostest for the recent event changes.
	  - Updated wxtest for the iThingState::GetFactory() removal.
	- Adam fixed the csMouseButton enumeration to be basis-0
	- Adam removed deletedList from csEventTree.  This makes event
	  dispatch slightly less efficient when unsubscribing from an
	  event name currently in-delivery, but makes the code much more
	  understandable.
	- Adam removed some debugging code and cleaned up some
	  coding style violations.
9-Dec-2005
	- Jorrit changed csInputDefinition class to use normal pointers
	  as parameters for iEventNameRegistry instead of csRef.
	- Jorrit fixed a few coding style issues: don't go over 78 chars
	  per line and put curly braces on their own lines.
	- res fixed the Win32 "lazy dll unloading" when ref tracking is
	  enabled.
	- res made the Win32 callstack creation via exception VC-debuggable.
	- res changed csBaseEventHandler to put the iEventHandler
	  implementation into an embedded class. This was done to allow
	  csBaseEventHandler to be co-inherited with classes that are not
	  refcounted (like csApplicationFramework).
	- res fixed some leaks in the new event stuff.
	- res added support for dynamic ambient/PD lights to the Thing vertex
	  color support (ie those work in SR now).
	- res removed the non-vital iThingState::GetFactory() (since the same
	  functionality can be achieved by querying interfaces).
	- res converted the thing and thingldr plugins to new SCF.
8-Dec-2005
	- res made some VC7 and Win32-related new event stuff fixes.
	- res did some slight reformatting.
	- res changed the Win32 platform support code to not assume a single
	  global Win32Assistant any more.
	- Adam made some changes to apimod100.txi to reflect last night's
	  csBaseEventHandler re-factor.
7-Dec-2005
	- Adam Bradley checked in a massive event system overhaul.
	    - The pre-overhaul code is tagged as PRE_EVENT_OVERHAUL_2005
	    - Replace constant event types/masks with string event names.
	    - Add constraint-driven event subscription and scheduling
	    - Change event handler interface to define its own event
	      delivery constraints
	    - Change all input, axis, and button enumerations from
	      basis-1 to basis-0
	- Adam fixed a memory leak in csGraphics2D shutdown
	- Adam refactored csBaseEventHandler to allow co-inheritance
	  along with csApplicationFramework.  A lot of the tutorial
	  apps and tools are now much closer to their pre-overhaul form.
5-Dec-2005
        - res fixed the generic csInstallationPathsHelper::GetAppPath() to
          treat an empty entry in PATH like ".".
	- res made compile fixes for spr3d and sprcal3d.
2-Dec-2005
	- res fixed a bug in flushing of text with the OpenGL renderer.
1-Dec-2005
	- Jorrit added a new iMeshGenerator interface. This will be used
	  for a new feature in the engine which can be used to do things
	  like foliage or other situations where you have to populate a
	  level with lots of objects.
	- res changed csVirtualClock to support suspend and return a current
	  time of 0 (instead ~0) in case it was not advanced yet (the latter
	  valued confused at least spr3d. 0 seems much saner in the context as
	  well.)
	- res converted spr3d, its loaders and the sprcal3d loader to new SCF.
	- res removed some methods from iSprite3DState that can be found in
	  iMeshObject as well.
30-Nov-2005
	- res added mipmapping to the software renderer.
	- res converted some more classes in the renderers implementations to
	  new SCF.
	- res made some small documentation tweaks.
29-Nov-2005
	- Jorrit fixed a bug caused by a recent optimization which freed
	  images directly when they are being loaded. The bug was that
	  the 'keepimage' flag was not respected.
	- res made the following changes:
	    - Removed the now-unneeded scfstrset.cpp and path.cpp files.
	    - Tweaked the driver DB to have the GeForce rules not match the
	      beginning of the GL renderer string (on Macs, this string starts
	      with "NVIDIA GeForce...").
	    - Converted sprcal3d to new SCF and made some smaller tweaks.
	    - Fixed some VC8 warnings.
	    - Fixed a subtle bug in csRenderBuffer that caused the last lock
	      type to be stored incorrectly.
	    - Tweaked csFrameDataHolder<> so it now releases memory after a
	      while as well.
28-Nov-2005
        - Andrew Craig fixed sprcal3d so that the following items are
          supported again:
            - Using attach="n" in the .cal3d file to have meshes that are not
	      attached by default.
            - DetachCoreMesh()
          This patch is a mix of my own work and res2k's patch.
25-Nov-2005
	- Jorrit removed an unneeded call to wview->Draw() in awstest.
	  Improves performance slightly.
	- Jorrit added a new iLight->GetFullCenter() method that gets the
	  real center of the light (taking care to look at parent objects
	  too). Fixed a few places in the engine where GetCenter() was called
	  and GetFullCenter() should be called. This fixes dynamic lighting
	  moving correctly when the light is parented on some object.
	  Note that at this time it is still needed to manually call
	  light->Setup() for dynamic software based lighting.
	- Jorrit fixed halos to use light->GetFullCenter() too.
	- Jorrit reverted the unix timing function because it appears to
	  break things for some reason.
24-Nov-2005
	- Jorrit made the unix implementation of csGetTicks() consistent
	  while still avoiding wrap arround by normalizing the time with a big
	  constant. That means csGetTicks() will (on unix) return consistent
	  values accross all plugins.
23-Nov-2005
	- Jorrit added bruteblock, terrainldr, and glshader_cg to
	  'walkall' target.
	- Jorrit changed the trigger system in AWS to have an additional
	  function. That means that every callback that is registered with
	  RegisterTrigger() now needs to conform to the following
	  prototype:
	      static void Func (unsigned long, intptr_t, iAwsSource*)
	  This extra parameter was added so that you can discover the
	  name of the trigger from the callback function (you can do that
	  by comparing the id from the name as returned by the standard
	  stringset: crystalspace.shared.stringset).
22-Nov-2005
	- Jorrit added LoadLibrary() to sanity.inc to avoid the define
	  of LoadLibrary() to LoadLibraryA() on windows. This seems to be
	  needed for external projects using CS. I don't know why apps
	  within CS itself work fine though (even without this line
	  in sanity.inc).
	- Jorrit reverted the sanity.inc change since it breaks CS. However
	  this means that iLoader->LoadLibrary() remains unusable for
	  external projects for now.
	- res made the haze plugin a bit SR-friendlier.
	- res tweaked the Cg plugin to report slightly more information on the
	  used profile.
	- res fixed an SR clipping issue.
	- res changed walktest to store the camera position with higher
	  precision.
	- Jorrit disabled VBO globally for the ATI/Linux combination.
	  Jorrit disabled VBO for GeForce4 440 Go.
	  Jorrit otherwise enabled VBO again by default.
	- res limited "GF5 Slow VBO" tweak to only certain driver versions.
	- res also annotated some of the tweaks, the idea being to be later
	  able to determine whether a tweak may still be needed.
	- Jorrit fixed a bug in sprcal3d. It was using csGetTicks() instead
	  of the virtual clock to get the current time. As such this wouldn't
	  be that bad except that it seems that on linux the csGetTicks()
	  of every plugin can possibly return slightly different values
	  depending on when csGetTicks() is first called in that plugin
	  (because of a static variable used to normalize the time so it
	  always starts at 0 or 1 and that static variable is repeated
	  for every plugin).
	- res fixed vertex attributes when used in conjunction with Cg shaders.
	- res disabled VBO on GF5/Linux ForceWare below 76.67.
	- res made the following changes to the driver db code:
	    - More sensible syntax. You can now nest <conditions> nodes
	      instead of counter-intuitively having to use <match> to nest
	      conditions.
	    - Version number comparator is more tolerant; notably, an
	      arbitrary number of non-digits can appear between version parts
	      (GL versions are often in the format "1.2.3 Vendor 4.5", those
	      can be correctly compared now as well.)
20-Nov-2005
        - Piotr Obrzut added missing method for creating/deleting hinge2
	- Jorrit fixed awstest to compile again after changing the Broadcast
	  prototype.
	- Jorrit fixed a bug in the Engine View of AWS. Apparently the clip
	  rect must be set inverted in y direction (relative to height
	  of display) if used for 3D rendering as opposed to 2D rendering.
	  This may actually be a bug in the renderer/canvas. Worked around
	  it in AWS for now.
19-Nov-2005
        - Piotr Obrzut added cs interface to ode hinge 2 joint
18-Nov-2005
	- Jorrit changed the default for register in iLoader->LoadTexture()
	  from false to true. That means that all loaded textures are now
	  automatically registered unless you specifically set that option
	  to false.
	- Jorrit added a new 'free_image' flag to iLoader->LoadTexture().
	  If that flag is true (default) then the loaded image will be
	  removed after registration of the texture. This save up a lot of
	  memory during loading of big maps.
	- Jorrit changed the map loader to also immediatelly register and
	  free images when loading textures.
	- Jorrit changed awstut to use OpenGL by default.
	- Jorrit fixed a bug in AWS Popup Menu. It was using 'sink' before
	  it was setup.
	- Jorrit fixed a 64-bit issue in AWS: Broadcast was using an
	  unsigned long. Should be an uint32. unsigned long caused
	  signalComponentCreated messages to fail.
17-Nov-2005
	- Jorrit removed the OR specific csRenderQueueSet class from the
	  engine.
	- Jorrit increased the default capacity and thresshold for the
	  following arrays (should improve performance slightly):
	    - Temporary array in csRegion implementation.
	    - Temporary array in fat renderloop implementation.
	    - csStencilPolygonMesh->AddPolys().
	    - csPolygonMeshTools->CloseMesh().
	    - shadowMeshes in csStencilShadowStep (bigger thresshold).
	- Jorrit added csArray::SetMinimalCapacity(). This version of
	  SetCapacity() will never shrink the capacity. Only enlarge it.
	- Jorrit changed csPolygonMeshTools->CloseMesh() and
	  csStencilPolygonMesh->AddPolys() so that they are slightly
	  more optimal with setting the capacity. Also fixed a bug
	  in the latter function.
	- Jorrit further increased the default capacity and thresshold for
	  the following arrays:
	    - face_normals in csStencil2PolygonMesh.
	    - csStencil2PolygonMesh->CalculateEdges().
	    - csStencil2PolygonMesh->AddPolys().
	    - A great number of arrays in
	      csStencil2ShadowCachEntry::GetShadow().
	    - projected_points in csStencil2ShadowStep::Perform().
	    - Temporary 'lightList' in the light iterator step.
	    - csMeshList capacity for engine goes to 256 and thresshold to 256.
	    - csMeshList capacity for sector goes to 64 and thresshold to 128.
	    - csMeshFactoryList capacity goes to 64 and thresshold to 64.
	    - csDynavis visible object arrays now have initial capacity of
	      256 and thresshold of 256. occluder_info array is now 128,128.
	    - csFrustumVis visible object arrays now have initial capacity of
	      256 and thresshold of 256.
	- Jorrit cleaned up the stencil2 code a bit. Removed a bit of
	  duplicated code.
	- Jorrit fixed the engine to no longer make a copy of the shader
	  array when trying to find a shader.
	- Jorrit removed support for software shadows for dynamic lights.
	  This was only used by bezier mesh and it was not even enabled.
	  This cleans up the engine a bit more.
	- Jorrit fixed the engine to no longer make a copy of the shader
	  variable array when trying to render a portal (portalcontainer).
	- Jorrit fixed the fat renderloop to no longer make a copy of the
	  shader variable array when trying to render a portal.
	- Jorrit removed the obsolete CS_LIGHT_THINGSHADOWS flag. Also
	  removed the obsolete iFrustumView->ThingShadowsEnabled().
	- Jorrit replaced several occurances of csArray->DeleteAll() with
	  Empty() where this is more optimal (DeleteAll() cleans the array
	  completely while Empty() leaves the allocated items so it can
	  be reused later).
	    - csEngine::ControlMeshes().
	    - csSector::CleanupLSI().
	    - csLight::CleanupLSI().
	    - csLight::CalculateLighting().
	    - csMovable::ClearSectors().
	    - csShaderVariableList::RemoveAll().
	    - csStencil2PolygonMesh::CalculateEdges().
	    - csDynaVis::VisTest().
	    - csFrustumVis::VisTest().
	    - csGenmeshSkelAnimationControl::StopAll().
	- Jorrit increased the default capacity and thresshold of the
	  update_queue set used in Dynavis and Frustvis.
16-Nov-2005
	- res made the following changes:
	    - Shuffled some code around in the software renderer, made some
	      speedups here and there.
	    - Removed a bit of unneeded code from xmlshader.
	    - Tweaked VC7 projects Release mode optimization to use "Full"
	      instead of "Custom" and all settings set explicitly.
	    - Simplified csGLScreenShot::SetData().
	    - Fixed CS_ASSERT to not cause "empty statement" warnings under
	      some circumstances.
	- Jorrit fixed a small warning.
	- res made some tiny optimizations to SR.
	- res added flags to control the direction into which a renderer
	  resizes the dimensions of a texture (if that should be necessary).
	- res worked around buggy GL drivers that crash when copying the whole
	  framebuffer to a texture larger than that.
	- res fixed the SR to properly support alpha modes. Includes addition
	  of binary alpha support.
15-Nov-2005
	- Jorrit fixed a bug in HardTransform() of genmesh. It didn't
	  transform the normals which would give bad results on lighting.
	- Jorrit added new csVertexCompressor class to compress vertex
	  table with texels, normals, and colors too.
	- Jorrit added iGeneralFactoryState->Compress() to compress the
	  vertex table (including texels, normals, and colors) of a genmesh.
	  Also added <compress> keyword to do it from a map file.
	- Jorrit optimized software lighting in genmesh slightly.
14-Nov-2005
	- Jorrit fixed a bug in the new LSI algos so that they
	  don't crash in case there is a portal that can't resolve
	  (i.e. destination sector is missing).
	- Jorrit added 'addmbot' and 'delmbot' commands to walktest.
	  These are the same as 'addbot' and 'delbot' except that
	  the bots don't move.
	- Jorrit fixed a bug in portal container. If the portal world
	  plane was used before the portal was first used for rendering
	  it would return wrong results. This caused functions like
	  GetNearbyMeshes() and the new LSI to fail.
	- Jorrit added a new version of csIntersect3::BoxFrustum() that
	  works directly on a csFrustum.
	- Jorrit fixed iMeshWrapper->GetRelevantLights() so that it now
	  checks the frustum of the LSI.
	- Jorrit fixed the new generic/appfilename.cpp so that it compiles
	  on linux. Every file must include cssysdef.h and also the
	  syspath.h include was forgotten.
	- Jorrit added a new function csLight::GetLuminanceAtSquaredDistance()
	  which calculates the real contribution to the brightness of
	  an object at a given distance.
	- Jorrit fixed a bug in GetRelevantLights() in mesh object in case
	  always update was set.
	- Jorrit changed the GetRelevantLights() in mesh object so that
	  they now sort based on real contribution of the light intensity.
	- Jorrit added an optimization to GetRelevantLights() so that
	  calculation of intensity is now only done when there is a chance
	  that sorting is required.
	- Jorrit fixed some very bad code in the genmesh GenerateSphere()
	  code. First it uses hardcoded array sizes which is bad as such.
	  Secondly it even called delete[] on statically allocated
	  arrays!
13-Nov-2005
	- Jorrit started work on structures to keep track of which
	  lights influence which sectors. The basic algorithm is there
	  but it is not used yet and there is also no auto-updating.
	- Jorrit fixed the LSI algorithms in the engine so that they
	  no longer crash. Also whenever the light moves the LSI is
	  now updated.
	- Jorrit added iLightSectorInfluence interface so that this
	  can now be accessed from outside the engine.
	- Jorrit changed iLightManager->GetRelevantLights() so that it
	  now returns an array of iLightSectorInfluence references instead
	  of iLights. That allows meshes and other systems requiring
	  lighting (fat renderloop) to use lights from neighbouring
	  sectors and also with additional frustum information.
	  Currently this frustum information is not yet used though.
	- evought split getAppFilename() out into its own module to avoid
	  multiple defines on OS X. UNIX build now includes the generic
	  appfilename.cpp.
11-Nov-2005
	- Vincent Knecht made the following changes:
	    - Fixed 'unused parameters' gcc warnings.
	    - Replaced mentions of aalib by libcaca in the manual.
	    - Hopefully fixed height obtained from
	      csRainMeshObject::GetDropSize().
	- Jorrit fixed an initialization error in xmlshader which could
	  case xmlshader to take a VERY long time in some situations.
	- Jorrit fixed genmesh so that it once again updates software
	  vertex colors automatically if the object moved.
10-Nov-2005
	- Jorrit fixed SimpleRoom.java for a recent change in
	  LoadMeshObjectFactory.
	- res made the following changes:
	    - Added a clarifying comment to gl_txtmgr.cpp.
	    - Made some msvcgen adjustments to have VC7 projects work with
	      VC8 nicely.
	    - Fixed some not quite correct size counting in unix/loadlib.cpp.
	    - Removed need for CS_24BIT_PIXEL_LAYOUT.
9-Nov-2005
	- Jorrit changed the way cache filenames (lightmaps and such) are
	  generated for thing, genmesh, bezier, and bruteblock terrain.
	  All floating point values are now avoided because there was no
	  way to generate a unique MD5 from those that is guaranteed to
	  give the same result on all platforms. This would cause failure
	  to load lightmaps. This changes means that ALL lightmap and
	  other CS caches are now invalid so you'll have to use -relight
	  on all maps! This change also means that objects REALLY need
	  unique names now. The MD5 is now calculated from the name,
	  the name of the parent sector, the number of vertices, and
	  the number of polygons only.
	- Jorrit silenced a few valgrind warnings in odedynam.
	- Eric Sunshine renamed texinfo/usingcs/plugin_overview.txi to
	  pluginoverview.txi to work-around TeX shortcoming where it barfs on
	  underscores in filenames.
8-Nov-2005
	- Piotr Obrzut fixed orientation  getters in bullet plugin (reported
	  by Erwin Coumans)
	- Piotr Obrzut changed updating position for rigid bodies to be valid
	  for static bodies too (it is possible to change static body position
 	  and in some situations it makes sense to do so)
	- iceeey added the ability to specify a glow texture to the parallax
	  shader.
	- iceeey merged the specular parallax shader into the single main
	  parallax shader using conditionals.
7-Nov-2005
	- res changed simple1 from using CS_QUERY_REGISTRY to
	  csQueryRegistry<>.
	- res fixed an issue were text was not correctly drawn when output
	  just before iGraphics3D->FinishDraw().
	- res fixed a crash in TinyXML when querying attributes from certain
	  elements,
	- Adam Bradley <artdodge@cs.bu.edu> added the buttonMask attribute
	  to mouse and joystick events, with corresponding helper functions.
6-Nov-2005
	- Vincent Knecht made the following changes:
	    - Added a csInstallationPathsHelper::GetAppFilename() method which
	      returns a native executable filename given a basename.
	    - Modified 'startme' to read demos and star settings from its
	      configuration file.
5-Nov-2005
	- res reinstantiated the forcing of the minimum Cg vertex program
	  profile to be ARB_v_p since NV vertex programs require some extra
	  support from code we don't provide atm.
4-Nov-2005
	- Jorrit improved error reporting in the physics loader in case a
	  body for a joint could not be found.
	- Jorrit added a new shader from Raymond Geerts. This shader is
	  std_lighting_nofog and it can be used to disable fog for a specific
	  material. This is useful in case you want to disable fog for a
	  skybox.
	- Piotr Obrzut fixed BoxShape setting in bullet plugin (it was using
	  box size when it needed half extents)
	- Piotr Obrzut changed phystut to work with bullet and ode
 	  engines. To use bullet just run it with '-phys_engine=bullet'
	  parameter.
	- res fixed some buffer activation/deactivation issues.
	- res enabled the Cg version of std_lighting.
3-Nov-2005
	- Jorrit added a <sphere> keyword to the genmesh loader so that you
	  can now generate genmesh spheres from map files too.
2-Nov-2005
	- res augmented the shader conditionals to also allow access to shader
	  variable vector value components.
	- res augmented the shader expression to allow quoted strings (since
	  spaces in shadervar names are somewhat common).
	- res fixed "accumulator register" allocation being borked in the
	  shader expression make-vector op support.
	- res added fog support to the Cg std_lighting.
	- Jorrit fixed the xwin plugin so that the alert function works
	  properly on 64-bit machines.
	- Jorrit improved error reporting and code style in the physics
	  loader.
	- Jorrit improved the plane parser in syntax services so that
	  a, b, c, and d are now also recognized if you use them as
	  attributes instead of child nodes.
	- Jorrit improved the physics loader so that you don't have to
	  specify the attributes 'friction', 'elasticity', and 'softness'
	  for all the colliders. Friction now has a default of 1.0 and
	  the others 0.0.
	- Jorrit changed the physics loader so that the system node now
	  supports an additional 'name' attribute. If that attribute is
	  not given then it behaves as it used to behave: i.e. a new
	  system is created. If the 'name' attribute is given then it
	  will first try to find a system with that name. If none exists
	  then a new system is created and the new system will get the
	  given name.
	- Piotr Obrzut fixed orientation getters, and added debuging feature
	  for displaying box colliders in bullet plugin.
	- Anders (hopefully) fixed bugs related to render to texture
	  functionality. Render backend needs to flush text drawing to avoid
	  conflicts with text drawing states. Also viewport adjustments
	  weren't applied correctly in all cases.
	- res removed some static class vars from csShaderExpression.
	- res updated the Cg recency check.
1-Nov-2005
	- Jorrit fixed the wav loader of the new sound system so that it
	  works properly on 64-bit.
31-Oct-2005
	- res changed the cs-win32libs configure check so it is only performed
	  on Windows hosts.
	- res added a configure check to determine whether "no virtual
	  destructor" warnings should be silenced.
	- Piotr Obrzut added bullet plugin. Still there are many missing
	  features like joints, some colliders shapes etc.
30-Oct-2005
	- res made the following changes:
	    - Added support for buffer destination resolution by a shader
	      program.
	    - Added support for Cg program parameter names as buffer
	      destinations.
	    - Improved mapping of buffers to generic vertex attributes.
	    - Improved nesting of shader conditional templates a bit.
	    - Files included via a shader conditional <?include?> must now
	      have an <include> node to better comply with the XML spec.
	    - Fixed some VC7 warnings.
	    - Took SR-related projects out of the VC6 workspaces.
	    - Added a workaround for timing problems on Win32 on multiprocessor
	      machines.
	    - Made some reftracker-related tweaks.
	    - Added a (incomplete and still disabled) Cg-based implementation
	      of the std_lighting shader.
	- res fixed shader fallbacks in the (common) case that the variants
	  of the shader and its fallback differ.
	- Eric Sunshine eliminated a number of compilation warnings throughout
	  the project.
        - res made the ref tracker activateable via configure.
28-Oct-2005
	- Jorrit fixed lighter, simpcd, and viewmesh so that they work after
	  yesterday's changes.
	- Jorrit optimized thing, genmesh, and bruteblock mesh objects slightly
	  by avoiding the unneeded SCF_QUERY_INTERFACE for getting an
	  iMeshWrapper from an iMeshWrapper.
	- Jorrit fixed the movable so that InSector() considers parent
	  movables too. So the movable will be in a sector if the root movable
	  is in a sector.
	- Jorrit did some attempts to fix lighting issues with the new
	  hierarchical meshes. Not yet successful.
	- Jorrit fixed lighting and culling for hierarchical meshes again.
27-Oct-2005
	- Jorrit did a big change to the way hierarchical objects are managed
	  in the engine. Meshes and lights can now properly be used as
	  hierarchical objects with the same API. For cameras some preparation
	  work has been done but it is not ready yet. Here is how it works:
	  meshes, lights, and camera implement the new iSceneNode interface.
	  You can do QuerySceneNode() to get the scene object from the mesh,
	  light, or camera without having to do SCF_QUERY_INTERFACE. To
	  make some object a child of another you simply do:
	      object_child->QuerySceneNode ()->SetParent (
	    	  object_parent->QuerySceneNode ());
	  To remove some object from a parent you do:
	      object_child->QuerySceneNode ()->SetParent (0);
	  You can also get the children by calling iSceneNode->GetChildren().
	  The following methods have been removed:
	      - iMeshWrapper->GetChildren()
	      - iMeshWrapper->GetParentContainer()
	      - iMeshWrapper->SetParentContainer()
	      - iMovable->GetParent()
	      - iMovable->SetParent()
	- Jorrit fixed the saver so it compiles again.
26-Oct-2005
	- Jorrit made autoresolve for portals default now. It is still possible
	  to disable autoresolve by using <autoresolve>no</autoresolve>.
	  The autoresolve flag is important in case of dynamic loading so it
	  is best to have it default on.
25-Oct-2005
	- caedes added a jack driver for the new sound system in cs. it is
	  called jackasyn as it uses a wrapper library called libjackasyn that
	  has the same interface as oss.
	- caedes added configure test for libjackasyn to configure.ac.
	- caedes added commented example to sound.cfg about how to change
	  sound driver.
	- res split the blending out of the SR scanline rendering.
23-Oct-2005
	- Eric Sunshine fixed some serious brokeness in the libode checks in
	  configure.ac which resulted from the 22-Oct-2005 re-ordering of those
	  checks.
	- Eric Sunshine eliminated several compilation warnings.
	- Eric Sunshine clarified the GPL-OKAY documentation in embed.m4.
	- Eric Sunshine updated jamtemplate/createproject.sh so that it now
	  informs the user about CS's relatively new ELF-based plugin
	  meta-information reader which is preferred over the older
	  GPL-licensed libbfd-based reader.
	- Marten did some more work on lighter, which soon begins to enter the
	  realms of usable software.
	- Eric Sunshine worked around problem with -fvisibility-inlines-hidden
	  causing link errors for external projects on MacOS/X. This should
	  resolve problems where clients of CS experienced errors such as:
	    /usr/bin/ld: libcrystalspace.a(scf.o) malformed object, illegal
	        reference for -dynamic code (reference to a coalesced section
	        (__TEXT,__textcoal_nt) from section (__TEXT,__text) relocation
	        entry (1))
	- Eric Sunshine updated the simple map tutorial (simpmap.txi), which
	  had become pretty well bonked and failed to reflect present-day
	  reality.
	- Eric Sunshine fixed crasher in csMeshWrapper::RemoveFromSectors(0) if
	  the mesh wrapper did not reside in any sectors. (bug #1325410)
22-Oct-2005
        - Philip Wyett changed the order configure deals with libode and if it
	  has/has not been built with OPCODE support. In this order it is more
	  apparent why the lib you have is usable or not.
21-Oct-2005
	- Jorrit fixed some huge reference leaks in the odedynam plugin.
	  It was storing all information (meshes, callbacks, bodies,
	  colliders, ...) in csRef's or csRefArray's but it was also doing
	  IncRef() on the objects manually AND in many cases forgetting
	  to do the DecRef()'s. Fixed by removing all manual IncRef/DecRef
	  calls.
	- Jorrit added support to odedynam to also attach lights and
	  cameras to bodies. The iDynamicsMoveCallback interface has
	  been extended for this too.
	- caedes added scripting bindings for the new sound system to cspace.i.
20-Oct-2005
	- Jorrit changed a lot of code in CS to use
	  light->GetMovable()->GetFullPosition() instead of light->GetCenter().
	  That means that parenting lights to meshes will work better now.
	  Still not perfect as with software lighting a manual Setup() is
	  needed on the light after moving it.
19-Oct-2005
	- Jorrit did a big optimization to the generic renderloop plugin
	  in combination with the lightiter step. Now the list of visible
	  meshes will be intersected with the influence radius of the
	  light (only for point light at this moment). This gives a big
	  speedup on levels that use the diffuse or shadowed renderloops
	  and also makes it possible to use a lot more smaller lights in the
	  same level without big performance degradation.
	- Jorrit changed the optimization in the generic renderloop plugin
	  so that it tests for cutoff radius also for spot and directional
	  lights. A better test for spot light still has to be written
	  though (one that also takes direction and cone of spot light
	  into account).
	- Jorrit removed direction support from lights. A spot or directional
	  light will now point to 0,0,1 by default. Use a transform (<move>
	  in xml) to rotate the light. This means iLight->SetDirection() and
	  iLight->GetDirection() are gone and also it means that it is now
	  possible to use the <move> keyword in light (just like for meshes).
	- Jorrit added support for using <lookat> in parsing of matrices. It
	  works like this:
	    <move>
	      <matrix>
	        <lookat>
		  <to x="0" y="2" z="1" />
		  <up x="0" y="1" z="0" />
		</lookat>
	      </matrix>
	    </move>
	  The default 'up' is 0,1,0.
	- Jorrit fixed the fat renderloop so that it compiles following
	  the above changes but wasn't able to test if the change is
	  actually correct.
18-Oct-2005
	- res updated the new SCF to support the ref tracker.
	- res fixed the console on Win32 disappearing to soon under some
	  circumstances.
	- Christian Van Brussel fixed csSpriteCal3DMeshObject::GetActiveAnims
	  in the cal3d plugin. It left uninitialized the last allocated
	  csSpriteCal3DActiveAnim buffer.
17-Oct-2005
	- res removed some now-outdated code from softrender3d.
	- res made a small importkit documentation tweak.
	- res fixed some SR Z buffer issues.
16-Oct-2005
	- Eric Sunshine increased robustness of the ceguitest + VFS interaction
	  by adding an actual mount point for ceguitest rather than having it
	  rely upon an underlying physical directory structure (which might
	  differ between source and installation locations).
	- Piotr Obrzut did another fix to cs ode colliders, allownig to do
	  mass correction only having all needed paramters.
15-Oct-2005
	- DeSigna made the following changes:
	    - Fixed several minor style issues in shaderexpressions.
	    - Wrote prelim s-expression parser for shader expressions. Only
	      minimally tested.
	- Jorrit added a <radius> to the light in the parallaxtest map.  That
	  works around (hides) the bug where the parallax effect disappears if
	  the light is too far away.
14-Oct-2005
	- Jorrit fixed a bug in the odedynam plugin. Auto-disable for
	  inactive objects is enabled. However the odedynam plugin didn't
	  enable physics again when you called AddForce() or similar.
	- Jorrit did the same physics fix for linear and angular velocity.
	- Eric Sunshine added a Jamfile to CS/data/shader/specular to ensure
	  that the new specular shader gets installed by 'jam install'.
	- Jorrit added a replica of the cornell box to CS to make testing
	  radiosity easier.
	- Jorrit fixed the xml in light_spec_bumpmap.xml.
	- Jorrit added proper error reporting to the loader in case a shader
	  file is malformed.
	- Jorrit added std_rloop_shadowed2 which is a variant of
	  std_rloop_shadowed that uses the stencil2 plugin.
	- res reduced the number of template instantiations in softshader
	  somewhat.
	- res added support for the alpha part of the mixmode to SR.
13-Oct-2005
	- Jorrit added a new specular shader which he got from
	  Erroroman.
	- res converted the shader-related plugins to use new SCF.
	- res replaced cgSetErrorCallback() in the Cg plugin with
	  cgSetErrorHandler().
	- res made some small doxygen fixes to graph3d.h.
	- res updated the doxygen.css from the one from 1.4.5 and updated the
	  doxygen header fragment to support 1.4.5.
	- res added cpu specific flags for x86_64 from Mike Gist to configure.
	- res made the software text writer cleanly return on 0 strings (like
	  the GL one).
	- res removed a superfluous x86_64 codegen check.
	- res made some more doxygen css tweaks.
	- Jorrit fixed a few bugs in the new specular shader.
12-Oct-2005
	- res enhanced the mixmode abilities a bit.
	- res added blending support to SR.
        - res fixed some walkall issues (notably, not all needed canvas
          plugins were always compiled).
        - res added the softrenderer and openglrenderer compile groups.
        - res worked around a gcc SR optimize mode crash. Needs more
          investigation though.
11-Oct-2005
	- Piotr Obrzut fixed ode colliders that they work now when we are
	  changing geometry after body is attached and added mehtod getting
	  local transform
	- Eric Sunshine fixed a bunch of compilation errors reported by gcc 3.x
	  in the recently templatized csBoxClipper and csPolygonClipper
	  innards.
10-Oct-2005
	- Vincent Knecht made a few changes:
	    - Silenced gcc warnings about initialization order in xmltiny.cpp.
	    - Added a doxygen comment about valid arguments for iVFS::Mount().
	    - Removed $@data mount in ceguitest and use /data/ceguitest/ for
	      ChDir(). This is more correct since $@ matches
	      $prefix/etc/crystalspace when CS is installed, at least on Unix.
	- Vincent Knecht fixed a few AWS apps to not crash when invoked with
	  -help.
9-Oct-2005
	- swedishcoder changed the cegui entry in the manual again,
	  the required version of cegui is 0.4.0 nor less or higher.
	- Marten almost completed conversion of libcrystalspace to new SCF at
	  least on win32.  There are a few hard cases left, most notable SCF
	  itself and particle systems basecode. Pooled SCF-classes also needs
	  to be solved.
	- Marten fixed a few warnings about "x previously seen using class,
	  now using struct".
	- Marten fixed a bug introduced in Erics latest fix to his previous
	  commit.
	- res changed csBoxClipper and csPolygonClipper to reuse code via
	  templates instead of macros and #includes.
	- res fixed some SR clipping issues.
	- res removed the now-pointless databuf.cpp and scfstringarray.cpp
	  files.
	- res made a couple of VC7 warning fixes.
	- res fixed some more SR clipping issues.
8-Oct-2005
	- res renamed csgeom/quaterni.h to the more verbose
	  csgeom/quaternion.h.
	- res fixed walktests load camera feature to correctly restore the
	  rotation of the collider actor.
	- swedishcoder renamed cegui.h to icegui.h to distinguish it from
	  CEGUI.h that comes with CEGUI. Also changed ceguitest for this fix.
	- swedishcoder added a note to the manual, that version 0.4.0 of CEGUI
	  is needed.
	- Reed Hedges added a check in plugins/net/vos/vosobject3d.cpp for the
	  case a mesh does not support collision detection (such as
	  billboard)... crash otherwise.  Also added some more diagnostic
	  output and comments to the vostest application.
7-Oct-2005
	- Eric Sunshine pacified autoheader by using three-argument form of
	  AC_DEFINE() for __CARBONSOUND__ work-around in cs_check_host.m4.
	- Piotr Obrzut did another fix against ODE error messages
5-Oct-2005
	- res removed the superfluous CS_ZBUF_FILLONLY Z buffer mode.
	- res moved csFog out to iengine/sector.h since ivideo/graph3d.h does
	  not seem appropriate any more.
	- res fixed wrong coordinate transformations in the SR.
	- res removed csutil/bintree.h.
	- Eric Sunshine made some Texinfo mark-up corrections in the AWS/FVG
	  documentation.
	- Eric Sunshine added `typename_qualifier' support to cspace.i.  This
	  fixes problem with Swig bombing on scf_interface.h in which this
	  CS-specific portability "keyword" now appears.
	- Piotr Obrzut added comments after his last commit, and change
	  odedynam colliders to be dynamic when they will be attached to body.
	- res fixed the std_detail shader mistakenly utilizing the vertex
	  colors as well as lightmap (resulting in a perceived darkness of the
	  walls in flarge).
	- res made the detail shaders fall back to std_lighting (instead of
	  having explicit fallback techniques).
	- res fixed an issue in the SR where not all textures were properly
	  prepared.
	- res fixed the bezier plugin to specify a more correct vertex index
	  range on index buffer creation.
	- Piotr Obrzut added check for sphere colliders in odedynam if given
	  radius is greater than 0 (if it is lower ODE will send his nasty 'bad
	  argument' error notification, stopping all app)
	- res changed the renderers to use new SCF.
	- res moved the SR scanline rendering code into the softshader plugin.
	- res fixed the software techniques of the reflect* shaders.
	- res added flat shading support for the software shader.
	- res added support for variable color scaling to the software shader.
4-Oct-2005
	- Jorrit renamed -nolightmapping to -fullbright and also implemented
	  it in the bruteblock terrain engine and in genmesh (in addition
	  to thing where it already worked before).
	- res removed a specialization for scfFakeInterface<> which VC7 could
	  not handle; also, to have scfFakeInterface<> work, the Interface
	  type to cast to is provided by scfInterfaceTraits<>.
	- Piotr Obrzut change odedynam collision detection to not check
	  collisions between 2 static colliders by default (but allowing user
	  to decide if he want that collision to be checked) .
3-Oct-2005
	- Jorrit fixed odedynam so the default true is REALLY set.
	- res slightly tweaked the wxWidgets check to also support a case
	  where both WX' own GL libs and the standard OpenGL libs are needed
	  on certain platforms.
	- res fixed some SR clipping issues.
	- res fixed a wrong computation in the Thing vertex color logic.
	- res scraped a few bytes off csRenderBuffer by using bitfields.
2-Oct-2005
	- Eric Sunshine fixed protection-related compilation errors in csThing.
	- Eric Sunshine fixed bug in awsImageView::Setup() where its invocation
	  of iAwsPrefManager::GetString("Image") would fail every time,
	  unconditionally. Reported by manolopm@cip.es.
	- Eric Sunshine removed some code from awsImageView::Setup() which was
	  obsoleted by ancient 25-Apr-2002 changes to AWS.
	- res fixed the VC projects to really create PDBs named like
	  "simple1.pdb" instead of "simple1.exe.pdb".
	- Jorrit changed the default for auto-disable in the ODE dynamics
	  plugin to true.
	- Eric Sunshine upgraded devapi.dox to bring it in line with recent
	  changes to pubapi.dox.
	- Eric Sunshine added 'dot' check to jamtemplate/configure.template
	  since 'dot' is now used by doxygen.jam, if present.
	- Eric Sunshine fixed csDefaultsConfig for MacOS/X to be more robust
	  when dealing with inputs the user may have entered via the
	  command-line 'defaults' utility.  In particular, boolean, integers,
	  and floats should now be interpreted correctly. Also, parsing of
	  booleans is now more broad: it accepts any first-letter 'y', 't', '1'
	  (case-insensitive) as meaning true.
1-Oct-2005
	- res changed the engine to only try to load the engseq plugin once.
	- res improved the csFixed* docs somewhat.
	- res optimized SR interpolation to do less interpolations.
	- res changed the VC projects to create .pdb files with the target and
	  not project name (e.g. now simple1.pdb instead of appsimple1.pdb),
	  since some tools seem to like that more.
	- res did some more voodoo in the SR which seems to bump up FPS a
	  notch.
	- res (re)added initial support for vertex colors to the SR.
	- res added support for Thing vertex colors (simply by taking the
	  lumel at the vertex' position).
30-Sep-2005
	- caedes added <rotatelight> sequence to loader, and added support for
	  lights in sequence manager rotate operations. This works exactly as
	  the rotate sequence for meshes, but specifying a light instead.
	- Eric Sunshine fixed a bunch of Texinfo mark-up problems in AWS FVG
	  documentation and corrected a number of navigation problems. Also
	  improved some of the actual content.
	- Eric Sunshine worked around a problem where the CS configure script
	  could mistake a MacOS/X installation for a Darwin-only installation.
	  In particular, the QuickTime 7.0 installer removes
	  <CarbonSound/CarbonSound.h>, which causes #include <Carbon/Carbon.h>
	  in the configure script to fail unconditionally. Re-installing the
	  QuickTime SDK should restore the header, however not all developers
	  know to do this.
	- caedes changed the projectortest map so the spot light now uses the
	  rotatelight sequence for real disco effect.
	- res made the SR scanline interpolation use fixed point maths.
	- Vincent Knecht removed '.exe' occurences in 'startme' app.
	- Eric Sunshine updated the Mingw/Msys instructions to mention the
	  actual Mingw download location since the download list on the Mingw
	  site is incomplete, and this incompleteness can confuse new users.
	- Eric Sunshine fixed bugs in csendian.h following 25-Sep-2005 changes
	  where csGetLittleEndianShort() and csGetLittleEndianLong() failed to
	  perform any endian conversion at all. This manifested often as
	  crashes and other related problems on big-endian hardware.
	- res reordered some data structures in the SR for some performance
	  improvements.
29-Sep-2005
	- Eric Sunshine fixed the CoreAudio plugin so that it once again builds
	  cleanly. Also reduced namespace pollution a bit.
	- Eric Sunshine worked around complaints from gcc 3.3 in objects which
	  have been converted to the new SCF design. In particular, the
	  compiler dislike seeing a private destructor when the class had no
	  friends.  To fix, made the destructor public. The public destructor
	  should not be a problem since these implementations are themselves
	  entirely private to their respective modules.
	- Eric Sunshine eliminated compilation warnings in the bruteblock
	  plugin.
	- Eric Sunshine added %ignore to cspace.i for deprecated csRect method.
	- Eric Sunshine worked around (possibly gcc 3.3) issue where the
	  singleton `cspluginSoft3d::Scan' symbol was unresolved at link time.
	- Eric Sunshine added some aliases to bugplug.key for MacOS/X since
	  bare F9, F10, F11, and F12 are used by OSX itself by default.
	- Eric Sunshine eliminated some additional compilation warnings.
	- Jorrit did some more cleanups.
	- Jorrit removed the pvs culler as it is not really useful and would
	  need further development to make useful. It can be retrieved from
	  the attic with the PRE_PVSVIS_REMOVAL tag.
	- Jorrit removed the foliage mesh as it is not really useful and would
	  need further development to make useful. It can be retrieved from
	  the attic with the PRE_FOLIAGE_REMOVAL tag.
	- mdmkolbe fixed a build error due to integer-size ambiguity.
	- res added some protections against IncRef()ing objects from the
	  destructor or excess DecRef()ing objects to scfImplementation<>.
	- res cleaned up the generic csplugincommon/render3d texture-related
	  classes.
	- res added initial support (again) for perspective-correct rendering
	  to SR.
	- Piotr Obrzut fixed bug while attaching existing placable collider
	  to body.
	- res templatized csVector4.
	- mdmkolbe fixed some unused parameter warnings in CS/libs/csutil/.
28-Sep-2005
	- Jorrit caused much wailing and gnashing of teeth as everyone will
	  have to rebuild CS and everyone will get a new set of auto-generated
	  documentation.
	- Eric Sunshine resolved a bunch of Doxygen warnings.
	- Erroroman made the following:
	   - added light type SV in generic render loop.
	   - added projection and texture3d mapping in gl fixed shader.
	   - added projectortest (r3dtest + small changes).
	   - added light_projection_bumpmap.xml shader.
	   These things are working with lots of ugly fixes. We need
	   light transform definition in world xml and trigger for light
	   rotation. Also every light must hold projection/attenuation texture
	   (now i can't add another spot light with different projection
	   texture).
	- Jorrit did more cleanups. People try to keep to the 78 char per line
	  limit and follow the indent=2 space rule.
	- Eric Sunshine fixed numerous compilations warnings and errors in
	  AWS2.
27-Sep-2005
	- Jorrit added csTransform::GetUp(), GetFront(), and GetRight().
	  These three convenience functions get the up, front, and right
	  vectors in 'other' space. They are very efficient.
	- Jorrit fixed the loader so it is no longer an error if the
	  sound loader is not present. Sounds will simply be ignored then.
	- Marten fixed the handling of casting for scfFakeInterface.
	- Erroroman made a lot of bug fixes in genmesh skeleton animation:
	    - All euler angles operations are replace with quaternions.
	    - Added offset transform when rigid body is attached to the
	      bone and that fixed lots of problems in ragdoll.
	    - Added 3 methods for faces/verts normals recalculating:
	        - Disabled method - nothing recalculates.
	        - Fast method - fast, but not accurate.
	        - Accurate method - accurate, but slower than fast method.
	          (<calcnorms>fast</calcnorms> can be defined in animation
	          xml).
	    - Added methods to get normals and their count.
	    - Fixed problems arround animation looping and frames that have
	      limited loops.
	    - Added "duration" attrib in frame tag, that can force animation
	      duration.
	    - Added SetSpeed, GetSpeed functions in animation script, that
	      can control animation duration (similar to SetTime/GetTime).
	    - Fixed lots of problems in time related operations, that makes
	      animation to run differently on different frame rates.
	    - Passed iMeshObject to the animation plugins for future
	      sharing of skeleton between parent and child object.
	- Jorrit added an error to the sprite mesh loader in case the action
	  couldn't be set.
	- Eric Sunshine made run_command() in jobber.pl even more robust for
	  some of the complex expressions passed to it, such as the $configure
	  commands in CS's jobber.cfg.
	- Erroroman added light transform in lightsvcache
	- caedes added iMapNode and iMovieRecorder interfaces to cspace.i.
	- Erroroman added light transform shader var in ligtiter step plugin.
	- Christopher added csTriangulate2, a 2-dimensional arbitrary polygon
	  triangulation algorithm.  This triangulator does NOT handle holes,
	  but it should handle concavities.  I haven't tested the code yet, but
	  it does compile fine.
	- Eric Sunshine eliminated some Swig warnings.
	- Eric Sunshine worked around problem where <perl.h> #defines Pause,
	  thus borking the output of Swig for iMovieRecorder::Pause().
26-Sep-2005
	- Eric Sunshine resolved some additional Doxygen warnings.
	- Eric Sunshine improved the robustness of jobber.pl's run_command()
	  function in the face of shell expressions involving && and ||.  This
	  fixes problem where it failed to catch error messages generated by
	  Doxygen following recent changes to CS's jobber.cfg where the Doxygen
	  task became `jam apihtml && rm foo'.
	- res changed iSndSysLoader::LoadSound() to load from an iDataBuffer*
	  and not a pointer and size.
	- iceeey reverted the CEGUI updates requiring CEGUI CVS. The 0.4.0
	  CEGUI release is now required instead.
	- res tweaked the CEGUI plugin to be less greedy about character
	  events.
	- res made a computation in simpleformerldr a bit clearer.
25-Sep-2005
	- res did a couple of Doxygen fixes. Mostly adding \file to files.
	- res did some more SR code shuffling.
	- res merged ivideo/polyrender.h into Thing.
	- iceeey removed the width and height parameters from
	  iCEGUI::Initialize() as Doxygen complains and they are not needed.
	- Jorrit extended the iObjectWatcher with the possibility to watch
	  arrival/removal of new meshes in sectors in addition to light
	  and movable changes in general.
	- Jorrit changed a few more engine interfaces to new SCF.
	- res fixed the simple former loader to properly read heightmap32
	  again after the recent raw format additions. Also compiles on gcc
	  again.
	- mdmkolbe fixed some initializer order warnings.
	- res reorganized the endian conversion stuff a bit; the routines are
	  now wrapped into classes. Also, they are now named to reflect that
	  specifically sized types are converted. Last but not least,
	  encourage use of IEEE floats instead of a custom floating-point
	  representation.
	- res fixed csRGBcolor comparison. Previously, it could happen that
	  when comparing a, b and b, a in both cases "first greater than
	  second" was reported.
	- res removed iImageVector and csImageVector.
	- res merged csVertexListWalker<> into csRenderBufferLock<>.
	- res worked around breakage due bogus pointers when casting to
	  scfFakeInterface<If> by having scfFakeInterface<> inherit from If,
	  to make things work again until Marten can take a look.
	- res removed csDataStream since it overlapped with csMemFile; the
	  convenience functions have been moved to csFileReadHelper.
	- res moved csVideoPreferences into the simpvs app.
	- mdmkolbe fixed some inheritance ambiguity warnings due to virtual
	  inheritance from iBase.
24-Sep-2005
	- Jorrit fixed dependencies in the loader. It now also depends on
	  new sound loader and renderer.
	- Jorrit fixed the sound manager so that it actually compiles.
	- iceeey updated the CEGUI recent check to require CEGUI CVS.
        - res changed the API documentation generation to use dot, if present.
	- Marten finished converting csengine to new SCF syntax. Only a single
	  issue is left (iMaterialEngine) but it needs some more investigation
	  and discussion.
	- res augmented the simple former loader to also support heightmaps in
	  a selection of raw formats.
	- res removed the unused csRGBVector.
23-Sep-2005
	- Jorrit fixed the sound renderer csplugin file so that it works
	  again.
	- Jorrit fixed the general sound loader plugin so it no longer tries
	  to load the wav and ogg loaders with the 'planeshift' prefix.
	- Jorrit changed the iSndSysRenderer prototypes to accept normal
	  pointer arguments instead of csRef's.
	- Jorrit finished the sndtest app. It now plays a sound and constantly
	  rotates it around the camera. The position of the sound is
	  represented by a simple mesh as well.
	- Jorrit fixed a leak to the reporter in the OSS driver for the new
	  sound system.
	- Jorrit fixed a leak to the reporter in the CoreAudio driver for
	  the new sound system.
	- Jorrit fixed a circular reference in the windows directsound driver.
	  It was holding a ref to a csThread that in turn held a ref to the
	  csRunnable (which was implemented by the driver itself). Solved this
	  by making the csRunnable a separate class.
	- Jorrit did a similar circular-leak fix to the OSS driver (untested).
	- swedishcoder added some CEGUI documentation.
	- Jorrit added a new system to the engine so that you can optionally
	  include lights in the culling system as well. This can be useful
	  for shadow plugins (like the stencil plugins) so that they can
	  be notified when a light is visible. To enable this you need to call
	  iSector->SetLightCulling(true). Note that this is completely and
	  utterly untested!
	- Eric Sunshine fixed numerous Texinfo mark-up problems in the new
	  cegui.txi.
	- res fixed some CEGUI blurriness; in screen space mode,
	  DrawSimpleMesh() does not like vertices with Z != 0.
	- res extended the CEGUI event handling to support more CS keys. Also
	  made it use the iKeyComposer for character input.
	- res tweaked the CEGUI texture parameters a bit.
	- res improved PAD key handling in the Win32 composer.
	- Jorrit added a few functions to iLoader to support the new sound
	  system.
	- res made the SCF implementation class generation macro magic header
	  being filtered by the C++ preprocessor. This way, scfImplementationN
	  and scfImplementationExtN are now documented, and implementation
	  classes utilizing those helpers show unherited documentation again.
	- Jorrit added support for loading sounds for the new sound system
	  through world and library files. To use this you just have to add
	  the 'mode3d' attribute for the <sound> keyword with one of the values
	  'disable', 'relative', 'or 'absolute'.
	- Jorrit allowed sound filename to be specified with 'file' attribute
	  in addition to the old syntax of using a <file> child node.
	- Jorrit allowed texture filename to be specified with 'file' attribute
	  in addition to the old syntax of using a <file> child node.
	- res renamed iGLDriverDatabase to iOpenGLDriverDatabase for
	  consistency.
	- res did some more misc tweaks of the recently changed Doxygen stuff.
	- iceeey fixed constructor, and removed deletion of resource provider
	  in CEGUI to match CVS changes. Also added renderer identification.
	- iceeey updated CEGUI skin and layout files for CEGUI CVS changes.
22-Sep-2005
	- Jorrit started working on better integration of the new sound
	  stuff into CS. First the loader now also optionally loads the new
	  sound loaders. Secondly there is a new sound manager which will
	  be responsible for keeping track of the sounds. In the old system
	  this was done by making the sounds children of the engine object
	  but this is a bit clumsy and there was also no proper region support.
	  This is all work in progress.
	- Jorrit added support for the new sound wrappers in regions.
	- Jorrit changed the loader so that it tries to find the sound manager.
	  If not present the loader will load the sound manager plugin.
	- Jorrit fixed the new sound renderer to use the correct sound driver
	  for the OS by default.
	- Jorrit added a test app for the sound system. Still not functional
	  (work in progress).
	- res fixed some 64bit warnings in sndsys.
	- res added a paragraph about documentation for inherited members to
	  the coding guidelines.
	- res augmented csInitializer to generate a default app ID from the
	  executable name (if possible). Also made csApplicationFramework use
	  this default ID when the user did not set one.
21-Sep-2005
	- res fixed a few warnings in the new sndsys stuff, did some
	  reformatting to better follow the CS coding guidelines (reading
	  recommended) and reduced namespace pollution.
	- Eric Sunshine fixed bug in PCMSampleConverter::ReadFullSample16()
	  caused by unintended multiple evaluation of macro argument during
	  macro expansion.
	- Jorrit replaced a number of 'NULL' usages with '0'.
	- Jorrit cleaned up formatting in the new sound system api docs.
	- Eric Sunshine fixed some additional Jamfile issues in the sndsys
	  hierarchy.
	- Eric Sunshine fixed build errors in the new CoreAudio sndsys driver.
	- res templatized csQint() and csQround().
	- res generasimplifilized SR a wee bit more.
	- res did more namespace pollution reduction of the sndsys stuff.
20-Sep-2005
	- Eric Sunshine resolved a few build-system glitches related to the
	  new sound system (sndsys).
	- Eric Sunshine added a DirectX v8 check to configure.ac.
	- res made some tweaks to configure to detect DirectX 9 properly.
	- res made sndsyswin depend on crystalspace_directx.
	- res fixed odedynam to also support ODE compiled in "double" mode.
	- res fixed some VC double truncation warnings in startme.
	- res further tweaked the configure DirectX check.
	- res did a bit of soft3d simplification.
	- res updated the manual for the new cs-win32libs version.
19-Sep-2005
	- Rhad added initial files for new sound system (SndSys).
	  Jamfiles will be committed this evening.
	- res made a few tweaks to lighter2 to have it work nicely when invoked
	  with .zip files from the command line.
19-Sep-2005
	- Jorrit added iStreamSource interface. This will be used as
	  a generic way to provide faster methods for getting buffers for
	  meshes.
	- Jorrit extended iLoaderPlugin, iBinaryLoaderPlugin, iSaverPlugin,
	  and iBinarySaverPlugin with a parameter for the iStreamSource.
	  None of the mesh loaders currently implement this.
	- Jorrit extended various functions in iLoader with the possibility
	  to give an iStreamSource as a parameter.
	- Jorrit changed iStreamSource to use a callback system for getting
	  the data. This allows for asynchronious reading.
19-Sep-2005
	- Eric Sunshine fixed compilation error in startme.cpp. (bug# 1294906)
	- Adam Bradley added partialorder.h, a generic partial-order graph
	  implementation.  This will be used by the new event scheduler.
	- Adam Bradley re-introduced tree.h.
18-Sep-2005
	- res tweaked "lightmap" & "lookup" texture classes to not do mip
	  sharpening.
	- res fixed the cswinCallStackHelper docs to document 'fast'.
	- res shuffled some more code around in the software renderer.
	- Marten made some more enhancements in the new lighter.
16-Sep-2005
	- Jorrit added a new feature to the terrain engine. Instead of
	  specifying one materialmap to tell the engine what material
	  from the palette to use on a specific spot in the terrain you
	  can now also specify n-1 alpha maps with n equal to the size
	  of the palette. The last alpha map will be automatically
	  calculated so that the alpha's add up to 100%. This technique
	  is a bit more flexible because you can now mix textures
	  on the same spot. Added a new 'terraina' level in CS which
	  demonstrates this feature.
	- Jorrit made the check if a material is used in the bruteblock
	  terrain engine a bit more robust and optimal.
	- Jorrit made thing a bit more robust in pathological polygon
	  cases.
	- res added a "Search" field to the online manual.
15-Sep-2005
	- Jorrit made the infinite maze rooms a bit bigger. That makes
	  collision detection works again so you can walk to the next
	  room. The only thing that remains broken for now is the
	  actual infinite maze generation. The maze is not infinite
	  as it should be.
	- Piotr Obrzut added getters for dynamics system colliders geometry
	- Piotr Obrzut fixed attaching dynamics system colliders to bodies to
	  work better with planes.
	- res added a "Search" field to the online API docs.
14-Sep-2005
	- res made the software renderer support interleaved arrays.
	- mdmkolbe fixed missing CS_REQUEST_PLUGIN in Python Swig bindings
	  reported by Vincent Knecht.
	- mdmkolbe converted CS/plugins/filesys to new SCF.
	- Jorrit removed the obsolete SetDynamicAmbientLight() method in
	  iLightingInfo.
	- Jorrit sanitized the confusing lighting options in genmesh.
	  It is now better documented how exactly the lighting calculation
	  is supposed to take place and it now actually works as documented.
	  The behaviour has changed slightly as compared to before.
	  Here is how it now works:
	    - In all cases the color array from the factory will be added
	      to the colors calculated below.
	    - If manualcolors is enabled then only the optional animation
	      control still matters. No other lighting values are processed.
	    - Otherwise if lighting is disabled then the base color of the
	      mesh will be added to the factory colors.
	    - If lighting is enabled and localshadows is disabled then
	      lighting is calculated as follows:
	        factory colors + base color + static ambient + dynamic
		ambient + lighting as calculated from nearby/relevant lights.
	    - If both lighting and localshadows are enabled then
	      lighting is calculated as follows:
	        factory colors + base color + static ambient + dynamic
		ambient + lighting as precalculated during static lighting +
		dynamic lights
	  This also fixes a bug with genmesh->SetColor() which was not
	  correctly forcing an update of the lighting.
	- Jorrit fixed genmesh so that the color array in the factory is now
	  also initialized to zero (black).
	- Jorrit added a new startme app that is a tool to guide the new
	  CS user through all the demos we have.
	- Jorrit added a binding for 'esc' to walktest so that esc now
	  quits walktest too.
	- Jorrit fixed zbuf issue in walktest -infinite.
	- mdmkolbe converted libs/csgfx to the new SCF.
	- mdmkolbe added in SCF_INTERFACE a check that the interface name is
	  really a type to help catch typos
	- mdmkolbe fixed some arguments to SCF_INTERFACE that weren't types.
13-Sep-2005
        - res reverted the embed.m4 comma removal since it was likely not
          correct.
12-Sep-2005
	- Jorrit fixed the thing plugin so that modification of a thing
	  factory will now immediatelly affect the instances.
	- Jorrit changed cal3d so that iSpriteCal3DSocket inherits from
	  iSpriteSocket now.
	- mdmkolbe fixed a build failure in the Perl Swig bindings.
	- Philip Wyett allowed access to /cache/tmp for lightmap precalc data
	  to be stored and eliminating warning dialog.
	- Philip Wyett updated his email address.
	- Vincent Knecht fixed vfs.cfg.template so that /lev/isomap mount is
	  valid when CS is installed.
	- iceeey fixed a problem with the configure check for embedding of
	  meta information. If elf.h was detected, then the libbfd check would
	  be skipped due to an extra comma in embed.m4.
11-Sep-2005
	- Eric Sunshine fixed problem introduced with recent configure script
	  changes where ELF plugin meta-data reader was not being linked into
	  targets on Unix.
	- Eric Sunshine changed configure.ac so that it only runs the
	  traceback-related libbfd check on Windows since it is only need on
	  that platform for tracebacks. (On Linux, the backtrace() function is
	  used instead.)
	- Eric Sunshine fixed problem where results of multiple invocations of
	  CS_CHECK_LIBBFD() with different contexts could have undefined
	  results.  This fixes problem where libbfd was not considered usable
	  on Windows for backtraces.
	- Vincent Knecht fixed csbench so that shader snippets inclusions
	  work.
	- Vincent Knecht corrected filename extension for python module in
	  python.txi.
	- Piotr Obrzut added method for removing all systems in iDynamics
	- res changed the call stack to at least print the hex address if no
	  symbol name could be resolved for an instruction.
	- Marten converted a few more bits of plgengine to use new SCF syntax.
	- Marten fixed a few typos in applighter2.
10-Sep-2005
	- Philip Wyett fixed some returns in non-void functions.
	- res added file+line numbers for MinGW call stacks.
	- res moved the custom assert into its own source file.
	- Philip Wyett added some experimental gcc 3 and 4 mmx compilation
	  problems fixes for the movierecorder plugin.
9-Sep-2005
	- Jorrit fixed a missing 'break' in the particles loader. This caused
	  using 'mixmode' to give an error even though it worked fine.
	  Also added lots of missing 'return 0' and 'return false' lines
	  after reporting an error.
	- Jorrit fixed a bug in many particle systems. They would 'explode'
	  or behave badly in case the elapsed time was very large. That
	  could happen if you dragged around the CS window for example.
	  The fix is to artifically cap the elapsed time to 200ms.
	- Jorrit fixed addbot command in walktest so that the dynamic light
	  moves with the bot again.
	- Jorrit added csColliderActor->SetCamera() to change the camera.
	- Jorrit fixed split_view in walktest so that it is again possible
	  to toggle keyboard/movement between the two views.
	- Jorrit fixed the explosion particles in walktest so that they
	  are visible again.
	- Jorrit fixed a crash in the engine with some object right on top
	  of a light. This would cause GetBrightnessAtDistance() to be
	  called with distance equal to 0 -> divide by zero!
	- res fixed consoletest to use CS_IMPLEMENT_APPLICATION instead of
	  CS_IMPLEMENT_PLATFORM_APPLICATION (which is really just a subset of
	  what CS_IMPLEMENT_APPLICATION does).
	- res updated include/csutil/win32/.cvsignore.
	- res removed th BFD external lib addition from
	  libs/csutil/win32/Jamfile (since the Win32 part does not really
	  use bfd directly itself).
        - res worked around GCC4 breakage in movierecorder plugin.
	- Eric Sunshine fixed some icky-poo brokeness in embed.m4 which was
	  introduced along with the elf.h handling. It was accessing
	  non-existent shell variables and generally behaving badly.
	- Eric Sunshine removed CS-specific goop from embed.m4 which was
	  introduced with the elf.h handling. In particular,
	  CS_META_INFO_EMBED() had been changed to emit header properties
	  despite the fact that it was not documented as doing so, and had no
	  way of doing so generically. This broke the generality of
	  CS_META_INFO_EMBED() for external projects which do not necessarily
	  need to generate a project header at configuration time.
	- Eric Sunshine refactored embed.m4 a bit so that the exhaustive libbfd
	  check can be re-used by other modules rather than being specific to
	  embedding. It is now named CS_CHECK_LIBBFD().
	- Eric Sunshine removed the recently added libbfd check from
	  configure.ac and replaced it with an invocation of the much more
	  exhaustive and capable CS_CHECK_LIBBFD().
	- Eric Sunshine relocated the user-presented libbfd GPL warning so that
	  it appears after all other output from the configure script in order
	  to ensure that it does not get lost amidst all the other verbosity.
8-Sep-2005
	- res added a libbfd test to configure. bfd is used for some
	  development and debugging aids. Since bfd is GPLed, which can be
	  problematic for external projects, libbfd is only used for debug
	  builds. Also, a message is emitted at the end of configure to inform
	  the user about the fact that bfd is used.
	- res added a (mostly working) libbfd symbol name resolver for Win32.
	  This means that callstacks on MinGW are now actually useful.
	- Jorrit fixed dynavis and frustvis so that they update their internal
	  data structures when the screen is resized. This doesn't fix the
	  culling problems however so there most likely is another place
	  somewhere in the engine where the original size is remembered.
	- Jorrit made the event handler in the engine an internal class
	  of csEngine. This prevents the engine leaking when the engine
	  plugin is going to be removed before the entire system is removed.
	  The reason for the leak is that the engine registered itself in
	  the event queue. This caused an additional ref to it. The leak
	  was not present in normal system shutdown since then the event
	  queue will also be emptied. General rule: ALWAYS make event handlers
	  a separate object.
	- Jorrit fixed a bug in the engine handling of cscmdContextResize.
	  It was only setting 'resize' to true in case the event data was
	  equal to G2D but that didn't appear to be the case. I don't know
	  why that test is there so I simply removed it and now things are
	  working properly.
	- Jorrit added a new method to csKDTree so that the kdtree can ask
	  the user of the kdtree a description of the object. This is used
	  to improve diagnostics when weird things occur in the KDTree.
	  Both in debug and in optimize mode the KDTree will now dump
	  information about what object it is trying to process when something
	  goes wrong. Nearly all CS_ASSERT's have been replaced with custom
	  code that uses the new descriptor. This change should help people
	  who have problems with mysterious asserts in the KDTree code and
	  don't know what object is causing it.
	- res fixed the bfd/win32 symbol resolver to properly support relocated
	  modules.
	- Jorrit changed CS_ASSERT so that it will now show a callstack
	  if available.
7-Sep-2005
	- res added a "callstack" command to walktest. Mainly useful to check
	  whether the callstack facility is working.
	- res fixed a ressource waste in the Thing poly renderer were the
	  normal buffer was recomputed every time needed. This change also
	  works around recent crashes in that module.
	- res fixed a possible crash in engseq.
	- res improved Win32 call stack generation.
	- res added a small helper to measure the time the execution of a
	  block takes.
        - res modularized the implementation of callstack creation.
	- Andrew Dai changed the sliding algorithm to be bounceback based in
	  actor collisions.
	- res changed the docs to point to cs-win32libs 016.
	- res made some small tweaks to the callstack stuff.
	- res made an object registry warning more colorful.
        - res added demangling to the backtrace symbol name resolver.
	- swedishcoder fixed a bug, where an unitilialized variable could
	  cause cegui render to crash at destruction.
6-Sep-2005
	- res fixed a bug in glshader_fixed were the constant color was not set
	  to black when the SV was not found.
	- res fixed compile errors in particles.
	- res made a small iDocument documentation enhancement.
	- res applied some Opcode VC6 compile fixes from Raymond.
	- Jorrit fixed the documentation about efficient textures so that
	  you can actually read the subsections easily.
	- Jorrit added a note to the api docs about the rename of
	  SetLogicalParent().
	- mdmkolbe eliminated some inheritance ambiguity warnings due to
	  inconsistent virtual inheritance from iBase.
	- Eric Sunshine patched cstypes.h so that it looks for int64_t and
	  cousins in <inttypes.h> on platforms which do not have <stdint.h>
5-Sep-2005
	- iceeey fixed memory leak in CEGUI plugin as reported by Eric.
	- iceeey cleaned iCEGUI interface by removing all Get functions
	  returning a reference, as recommended by Eric.
	- iceeey completed CEGUI memory leak fix by making sure all quads were
	  freed in the render list. Also removed duplicate deletion of
	  CEGUI::System singleton in csCEGUIEventHandler::OnUnhandledEvent().
	- Jorrit renamed iMeshObject->SetLogicalParent to SetMeshWrapper
	  (similar for GetLogicalParent). The meshes now store an iMeshWrapper
	  instead of iBase. That avoids a few ugly casts and the need
	  for query interface.
	- Jorrit renamed iMeshObjectFactory->SetLogicalParent to
	  SetMeshFactoryWrapper (similar for GetLogicalParent).
	- iceeey added script support to CEGUI for any language through iScript
	  interface. Some parts are missing.
        - res moved the "polygon renderer" into Thing.
	- iceeey changed license information for CEGUI plugin from GPL to LGPL.
	  Licensing it as GPL was unintentional.
4-Sep-2005
	- Marten fixed master header problem after cegui addition.
	- Piotr Obrzut fixed bug in ODE dynamic system collider when user
	  wanted to add not specyfied collider to space
	- Piotr Obrzut added dynamics system collision callback
	- Piotr Obrzut fixed bug in colliders surface paramters setting
	  (reported by Pablo)
	- Piotr Obrzut fixed bug in trimesh colliders  (reported by Pablo)
	- iceeey activated the CEGUI plugin and ceguitest targets.
	- caedes corrected some issues in the odedynam plugin:
	    - corrected segfault on cleanup: odecolliders ibase was not
	      initialized in constructor and destructor.
	    - added global templates for cs to ode and backrotation matrix
	      assignment, please use them instead of ad-hoc assignments.
	    - moved dGeomTransformSetGeom function to
	      csODECollider::AddTransformToSpace as geoms should not both be
	      added to a transform and to a space.
	    - changed triangle indices order in CreateMeshGeometry (c,b,a to
	      a,b,c).
	    - added transposition to world box colliders as somehow this
	      special case seems to fail. this must be looked into.
	- caedes added some tokens to physldr plugin:
	    - <simulationmode> in <system>, options: worldstep,quickstep,
	    	stepfast
	    - <autodisable> in <system>, bool.
	    - 'cfm' and 'erp' attributes in <system>, float, only for
	      csODEDynamicSystems
	    - 'enabled' attribute in <body>, bool.
	- iceeey added a recent check for CEGUI to the configure script: You
	  must have the latest CEGUI CVS to use the plugin.
	- caedes added ode.h reference and csODE* interfaces to cspace.i.
	- res enabled VC7 project generation for CEGUI (since it will be in
	  next cs-win32libs).
	- res enabled VC project generation for the VOS projects as a
	  convenience - they are not added to any workspace, though.
	- res fixed a csHash<> compile problem on 64bit systems.
3-Sep-2005
	- res removed an #include from tokenlist.h which caused compile errors
	  for some people (since tokenlist.h is intended to be included in
	  places e.g. inside classes).
	- Marten added some more documentation to DocumentHelper namespace.
	- Marten made a few cleanups in csPoly3D.
	- Marten worked a bit more on the new lighter. It can now produce its
	  first output.
	- res fixed xmlread to not crash when an attribute is queried from a
	  non-element node.
	- res fixed a crash when removing meshes from the engine due calling a
	  method of an possibly already deleted object.
	- res fixed a circular reference in fatloop.
	- res changed the shader expressions to take a stack of shader
	  variables at evaluation time, as opposed to a shader var context at
	  parsing time.
	- res made the shader expression SV accessor use the shader manager's
	  "rendering shader variable stack". This means that expressions in
	  SVs can now utilize the variables as at render time.
	- res enhanced vproc_std with the ability to disable select lights.
	- res fixed non-float shader conditional constants to actually work.
	- res changed the shader conditional parser to use isspace() for
	  whitespace checks instead of just a comparison with ' '.
	- res changed xmlshader to also add normals to the default mappings.
	- res changed the replacer document nodes to use refcounting on the
	  given substitutions and also ensure that the attribute pointers
	  don't change over the lifetime of a node.
	- res changed the GL fixed VP to use ProgramParams internally for
	  light parameters (means those are not limited to shader variables in
	  XML) and changed the parameter specification from attributes to
	  child nodes.
	- res changed the FVP "light number" to be the CS light number, not GL
	  light number.
	- res added a number of other FFP light parameters that can be
	  controlled through FVP shader programs.
	- res removed a redundant buffer change from gl3d.
	- res started to work on a shader to mix GL fixed pipeline lighting
	  and SW lighting through vproc_std. Currently supports GL directional
	  lights.
	- res fixed a variable flippage in the spotlight lighting calculator.
	- res augmented FVP for spotlight-related parameters.
	- res changed the engine lights to compute a proper attenuation vector
	  on attenuation changes.
	- res added arcsin, arccos, arctan to shader expressions.
	- res augmented the vproc_fixed shader to also handle point and spot
	  lights (the latter are somewhat off, though, due CS/GL spotlight
	  differences).
	- swedishcoder added a CEGUI renderer for CS, developed by iceeey and
	  swedishcoder. The actual plugin is located in plugins/gui/cegui and
	  the demonstration application in apps/tests/ceguitest In the
	  ceguitest dir you can also find a short howto. Its currently
	  disabled.
	- swedishcoder removed the cegui howto doc, it was outdated, instead
	  take a look at ceguitest app. Thanks iceeey for pointing that out.
	- Marten made some smaller layout fixes to the CEGUI stuff.
	- iceeey added the missing iCEGUI include file and fixed some Jamfiles.
	- iceeey moved the ceguitest data files into CS/data.
	- iceeey added ceguitest and cegui to Jamfiles, but left them
	  commented.
	- iceeey fixed a bug in ceguitest where it would crash when resized.
2-Sep-2005
	- Jorrit fixed a bug in CS reported by valgrind: In the GL state cache
	  a few fields were not initialized in some cases.
	- Jorrit made the csColliderActor a bit more stable at high speed.
1-Sep-2005
	- Andrew Dai fixed an infinite loop when moving using csColliderActor,
	  this was caused by the collision system and FindIntersection tests
	  disagreeing with each other.
	- res made an optimization/fix to sprcal3d: forgot to update a variable
	  that is checked to avoid unnecessary computations.
	- res made some VC6 compile fixes.
	- res ditched the fragile "built-in wchar_t" detection and allowed
	  support for VC's built-in wchar_t by csUnicodeTransform::Encode()
	  and Decode() by utilizing the special __wchar_t type always present
	  on VC7+.
	- res fixed some VC8 warnings in expparser.cpp.
	- res fixed(mostly blindly) some 64bit issues reported by Mike Gist.
	- res renamed iSpriteCal3DState::GetSubmeshSVC() to
	  GetCoreMeshShaderVarContext() (to be a bit more consistent with the
	  remaining methods and to have a bit more vebose name. Also made it
	  actually work.
	- Eric Sunshine added a couple %ignore directives to cspace.i for the
	  non-const overloads of csEllipsoid::GetCenter() and GetRadius() in
	  order to avoid 'method redefinition' warnings from Java.
31-Aug-2005
	- Jorrit added a new system to iObject/csObject so that you can get
	  notified when an object changes name. To do this you have to
	  implement the iObjectNameChangeListener interface.
	- Jorrit fixed the engine to use this new system for sectors,
	  lights, materials, meshes, and mesh factories. That way changing
	  the name of such an object will no longer cause FindByName() to fail
	  (because the internal hash of that list was not updated after the
	  name change).
	- Eric Sunshine added an important note to the CS_IMPLEMENT_FOREIGN_DLL
	  API documentation stating that it is the responsibility of the DLL's
	  author to ensure that the global iSCF::SCF gets initialized within
	  the DLL's context.
	- res changed the Win32 console -> file redirection from appending to
	  overwriting the log file - otherwise, the log will grow uncontrolled,
	  and for troubleshooting purpose a log of the last run is probably
	  sufficient.
	- res fixed a bug in sprcal3d where HitBeam* would crash if the mesh
	  has not been rendered yet.
30-Aug-2005
	- res overhauled cal3d's render mesh code - the original code was from
	  a time when both OR/NR still existed; now, a number of ORisms were
	  thrown out and some NR features are better utilized.
	- res added per-calmesh shader variables to sprcal3d.
	- res made sprcal3d share indices and texture coordinates between
	  mesh objects.
	- Eric Sunshine excluded the special-purpose csutil/win32/psdk-compat.h
	  from the csutil.h master header.
	- res fixed a crash in sprcal3d when a submesh didn't have texture
	  coordinates.
        - res reinstantiated the GLU check in configure since CgGL depends on
          it on some platforms.
29-Aug-2005
	- res made some more compile fixes for Win64, reported by Mike Gist.
	- res added csutil/win32/psdk-compat.h to concentrate Windows Platform
	  SDK smoothing in a single place (previously, certain same workarounds
	  for PSDK version differences have been duplicated in several source
	  files).
28-Aug-2005
	- Philip Wyett moved some declerations to after a goto jump because the
	  code executed after the jump does not require them.
	- res made a few compile fixes for Win64.
27-Aug-2005
	- res added a tad more functionality to the common document stuff.
	- res augmented the shader conditional template support with the
	  ability to substitute strings in the template. The parameter names
	  are a simple space-delimited list after the name, and strings of the
	  form $Foo$ will later be replaced with the string that is passed
	  at the position of the Foo parameter when invoking the template.
	  Silly example:
	    <?template Foo X Y?>
	      <!-- test $X$ -->
	      <?template $Y$ Z?>
		<!-- another test $$Z$$ -->
	      <?endtemplate?>
	    <?endtemplate?>
	  Invokation with
	    <?Foo baz Bar ?>
	    <?Bar moo?>
	  will lead to:
	    <!-- test baz -->
	    <!-- another test moo -->
26-Aug-2005
	- res added a dummy csPlatformMemoryMapping implementation.
	- res converted the canvases to the new SCF.
	- res did a slight reorganization: created a new directory
	  csplugincommon/iopengl for OpenGL interfaces, renamed iogl.h to
	  openglinterface.h and moved it there.
	- res removed the AsciiArt canvas.
	- res updated unix.jam to only use EMBED_META to decide whether
	  metadata should be embedded.
	- res added iGLDriverDatabase to allow clients to provide custom
	  driver databases in addition to CS' default one.
	- res fixed some mistakenly abstract methods in
	  csDocumentAttributeCommon.
	- res bumped the versions of the canvas-related interfaces that now
	  virtually inherit from iBase.
25-Aug-2005
	- res added some tweaks for software GL to the driver database.
	- Adam Bradley fixed a bug in the Linux joystick driver diagnosed by
	  Marc Price <marcymarcymarc@gmail.com>.
	- Jorrit did several cache manager related changes:
	    - Added new iEngine->SetVFSCacheManager() which is a better way
	      to change the cache manager that the engine is using than
	      the current clumsy construct:
	        vfs->ChDir (...);
		engine->SetCacheManager (0);
		engine->GetCacheManager ();
	    - Added iCacheManager->SetReadOnly() and IsReadOnly(). With
	      SetReadOnly(true) you can force the cache to be read only
	      which means nothing can be written to it.
	    - Removed caching of LOD and normal data in spr3d since calculating
	      this is now fast enough (it was optimized several months ago).
	      The cache is no longer needed.
	- Jorrit removed a few warnings:
	    - A few unused camera_origin warnings in spr3d and bezier.
	    - A reordering of initialization in xmlshader plugin.
	    - Unused var in GL renderer.
	    - In xmlshader a non-POD was passed through ... I temporarily
	      disabled that code as I don't know what the correct code is
	      there.
	- Jorrit did a documentation fix: the pixmap howto was not 100%
	  correct.
	- res changed csLoader::ParseTexture() to enforce texture registration
	  by the loader plugin.
	- res fixed the proctex loaders to register the returned texture.
        - res revamped the memory mapping support. The platform-dependent
          memory mapping was merged into csMemoryMappedIO, which is also a bit
          easier to use (notably, you can request blocks of arbitrary size from
          arbitrary offsets) and simplified (thrown out the block cache for
          emulated memory mapping).
        - res added a metadata reader for ELF binaries (that is, embedding on
          systems that have ELF binaries does not need libbfd any more).
        - res adjusted the metadata embedding checks to account for the
          built-in ELF support.
	- res updated the Win32 memory mapping to the new csMemoryMappedIO.
24-Aug-2005
	- res further worked on lighting support for the fat rl and vproc_std.
	- res added the "simplelights.zip" level to test vertex lighting in
	  the fat rl.
	- Philip Wyett eliminated gcc compiler warning in meshmode.cpp.
	- Eric Sunshine fixed the Linux joystick driver so that it only polls
	  the joystick device on cscmdPreProcess, rather than on
	  cscmdPreProcess, cscmdProcess, cscmdPostProcess, and
	  cscmdFinalProcess, since that was unnecessarily expensive.
	- res augmented the XML shader conditionals with support for symbolic
	  constants to facilitate passing enums etc. from code to shaders
	  (e.g. "<?if vars.someVariable.int == consts.CS_ATTN_NONE?>").
	- res added an int8 etc redefinition (equivalent to the redefinition
	  formerly done in ivaria/ode.h) to odedynam since this is needed on
	  some platforms.
23-Aug-2005
	- Erroroman added "start", "end" and "mode" params to csFog struct.
	- Erroroman added support in csloader for the new fog params.
	- Erroroman added shader variables for new fog params in generic
	  renderloop.
	- Erroroman fixed error in glshader_fixed where wrong parameter was
	  used when loading fog color.
	- Erroroman adopted OpenGL fog in glshader_fixed to use data from
	  csFog. At the moment "mode" is not usable because it is not a shader
	  variable and it can't use mode from csFog. There is still work to get
	  working OpenGL fog as standard CS fog.
	- res removed the dependency of ivaria/ode.h on <ode/ode.h>.
	- res tweaked the fat loop and vproc_std a bit; runs flarge okay now.
	- Peter Amstutz added a new method iVosA3dl to allow fetching the
	  iVosObject3D wrapper for a Vobject given the VOS URL path.
21-Aug-2005
	- res moved csLightShaderVarCache to csgfx.
	- res changed the vertex light calculator to not use iLight* but a
	  struct with the relevant light properties.
	- res changed vproc_std to pull the light information from shader vars.
	- res added some more options to vproc_std.
	- res added some more fat rl tests.
	- res worked around some warnings on VC8.
20-Aug-2005
	- res fixed potential buffer overflows in TinyXML and xmlread, spotted
	  by forum member 'dominic'.
19-Aug-2005
	- Jorrit fixed the rain plugin so that it is possible to query the
	  iParticleState from it. Thanks to 'SR' on the forums to find this.
18-Aug-2005
	- Jorrit added a minimum/maximum range for a mesh object. Outside that
	  range the object will not be rendered. The maximum distance can be
	  used to hide small detail objects that are too far away to matter.
	  The minimum distance can be used to bring in an imposter mesh that
	  replaces a number of smaller objects (which are then removed with
	  the maximum distance). You can set mininum/maximum distance with a
	  constant distance value or else with variables. Using variables gives
	  greater flexibility as you can then control the distance in a setup
	  program (even at runtime). The syntax in a map file is as follows:
	    <meshobj name=...>
	      <params> ... </params>
	      <minrenderdist value="5" />
	      <maxrenderdist var="Test Max Dist" />
	    </meshobj>
17-Aug-2005
	- Eric Sunshine fixed csutil and csgeom unit tests so that they compile
	  successfully again following recent SCF re-engineering.
16-Aug-2005
	- res made some more Doxygen fixes and also expanded the Doxygen info
	  in the coding guidelines a bit.
	- res added Doxygen documentation for the master headers.
	- Vincent Knecht applied mdmkolbe's fix to perlpre.i. This resolves
	  swig errors about _wrap_* functions.
	- res augmented the fat renderloop with the ability to basically render
	  different lights with different shaders. The lights relevant to a
	  mesh are determined and rendered in the quantities and limits given
	  by user and user-specified shaders.
	- res added csShaderVariable::SetName().
	- res added csShaderVariableContext::Clear() and ReplaceVariable().
	- res made csBitArray::SetSize() public.
	- res added csBitArray::GetSize().
	- res changed some more Doxygen comments.
15-Aug-2005
	- res added a hopefully helpful message that is written to the console
	  when csInitializer cannot load the VFS plugin.
	- res dropped "WARNING: " from a couple of messages reported by the
	  plugin manager, as csReport() can add that, too.
	- res made some misc Doxygen fixes.
	- res enabled sorting for Doxygen brief docs.
	- res fixed some GCC complaints in the lighter apps and the document
	  helpers.
	- res made some VC6 compile fixes.
	- res fixed the glshader_fixed plugin for the STANDARD_LIGHT changes.
	- res made csGLGraphics3D::SetMixMode() disable alpha testing.
	- Marten added a fugly hack to SCF to allow querying of
	  base-interfaces.
14-Aug-2005
	- mdmkolbe fixed a divide by zero error in the collider.
	- mdmkolbe removed redundant statements in the python tutorial1.
	- res fixed a couple of Doxygen warnings.
	- res added a "local" flag to csGetPlatformConfigPath.
	- res changed clarified the csUnicodeTransform docs a bit by using
	  'code point' or 'code unit' instead of 'character' where appropriate.
	- res fixed the csShaderVar copy ctor to properly set the pointer
	  members to 0.
	- res changed the names of the "STANDARD_LIGHT_0_FOO" shader variables
	  to "light 0 foo".
	- Marten commited recent work to the lighter. It is right now added
	  as lighter2 but later it will replace the current ligter. Also
	  applied older changes to old lighter.
	- Marten added two helpers which operates on iDocument* structures
	    - RemoveDuplicateChildren method which removes children of a given
	      node which are considered to be duplicates.
	    - FilterDocumentNodeIterator which works as a wrapper around a
	      iDocumentNodeIterator but filters the returned nodes.
	  Both these work with a templated functor as argument to work out
	  which nodes are to be removed/returned.
	- Marten added a iDocumentNode::RemoveNodes (iDocumentNodeIterator*)
	  which removes all child-nodes returned by a given iterator.
13-Aug-2005
	- Peter Amstutz applied a couple of fixes to csThing to prevent
	  crashing when a lightmap is present but uninitialized
	  (which comes up when reading/writing lightmap caches)
12-Aug-2005
	- res added support for spr3d and Thing meshes to the importkit.
	- res applied some compile fixes from mafm.
	- mdmkolbe replaced yesterday's temporary SWIG workaround with a better
	  solution.  Again the Java and Perl bindings were done blind.
11-Aug-2005
	- mdmkolbe cleaned up SWIG to be a bit more type-safe.
	- mdmkolbe changed GetChild in iObject and csObject to return
	  iObject* instead of void* in order to make the SWIG cleanup possible.
	- dfryer changed VFS to expand paths when unmounting paths, instead of
	  only when mounting.  This had caused some inconsistancy.
	- res changed the way static plugins are registered. Previous, they
	  were registered with SCF upon module loading; however, this has the
	  problem that when SCF was shut down, the static plugins were
	  unregistered, but there was no way to re-register them - restarting
	  a statically linked binary was not possible. Now, the static plugin
	  registration information is stored upon startup and scanned every
	  time SCF is initialized, allowing re-registration of them when SCF
	  is restarted.
	- res changed some symbol names in aws2 to prevent symbol name clashes
	  when doing static linking.
	- res made the engine more forgiving(ie not crashing) in case the
	  shader compiler plugin is not found.
	- mdmkolbe refactored some of the SWIG stuff.  The changes to the
	  Java and Perl bindings were done blind and will need to be checked.
	- mdmkolbe added a temporary workaround for %rename placement
	  issues in SWIG.
10-Aug-2005
	- Jorrit fixed the java scripting module in a similar way as how
	  the python module was fixed.
8-Aug-2005
	- Jorrit added a rule to disable texture_rectangle extensions on
	  GF4Go/MX type cards.
	- Andrew Dai made the collision response system in csColliderActor
	  act correctly and fixed an occasional crash in AdjustForCollisions().
	- Marten made a fix to SWIG interface files. Python bindings now works
	  and the sample pyhton files in scripts\python works. Similar fixes
	  are probably needed for java and perl.
6-Aug-2005
	- Jorrit fixed odedynam so it compiles.
	- Jorrit again reverted Piotr's changes to odedynam. They cause
	  phystut to crash. Please commit back the changes after making
	  100% sure they are ok.
5-Aug-2005
	- res made adjustments for the latest cs-win32libs.
	- Jorrit reverted Piotr's changes to ODE physics plugin completely
	  since they totally break it.
	- Mark Sanders fixed a bug with mousewheel wich gave wrong coordinates.
	- res added the "import kit", a wrapper around the loader and mesh
	  factory interfaces to provide an interface for external applications
	  to obtain CS mesh data without much interface juggling. Currently
	  supports simple genmeshes, though support for Things is planned.
	- res added a method to csVfsDirectoryChanger that just pushes the
	  current directory (useful when some "custom" directory changing
	  should be done).
	- res deprecated csStrKey.
	- res simplified some code in glwin32.
	- res fixed cases where SCF factory creation function prototypes didn't
	  match scfFactoryFunc.
4-Aug-2005
	- Jorrit added support for genmesh/submeshes also to factories.
	  The optional submeshes defined in the instance will override
	  the submeshes from the factory (if present).
3-Aug-2005
	- Peter Amstutz added support for csColliderActor to the csvosa3dl
	  plugin
	- Jorrit removed a few unneeded things from csMeshWrapper (like
	  the unused flag to cast hardware shadows and the old renderer
	  functions to draw meshes).
	- Jorrit changed reflect.xml and reflectsphere.xml so that they
	  support objects with mixmode add/alpha/... Changed the teapot
	  in flarge to use add mixmode.
	- Eric Sunshine changed the check for buggy -finline-visibility-hidden
	  in configure.ac so that it merely disables the option entirely for
	  AMD64 since the old test (checking for link error when manipulating a
	  std::basic_string<>) apparently did not catch every buggy
	  installation. For now, this option is disabled for every gcc version
	  on AMD64. If we later find out that it only impacts certain versions,
	  such as 3.4.x and 4.0.x, then we can tighten the heuristic to disable
	  it for only those versions. Alterately, if we can find a reliable way
	  of testing (something along the lines of std::basic_string<>), then
	  we can instead apply that approach.
	- Peter Amstutz applied fixes to iXWindow, iWxWindow and the VOS
	  interfaces to compile with the new SCF implementation
	- Peter Amstutz fixed csThing so that it invalidates the bounding
	  box when HardTransform() is called
2-Aug-2005
	- Marten converted csSector to new SCF implementation.
	- Marten fixed some issues in the plugin loader and object registry
	  caused by the new template interface functions.
	- Jorrit added functions to iLoader to load images and textures
	  from a buffer (iDataBuffer) instead of a filename.
	- Piotr Obrzut added interface which allows to operate on dynamics
	  system colliders more directly
	- Piotr Obrzut added method generating sphere for genmesh (copied
	  from ball mesh)
	- Jorrit added a new data/shader/reflectsphere.xml shader which is
	  like reflect.xml but instead it uses spherical mapping (not
	  cubemap).
	- Jorrit changed the teapot to use reflectsphere. Also moved the
	  teapot to a more visible location.
	- Marten cleaned up scf_implementation.h and removed the paritial
	  connection to csRefTracker. It needs to be done properly.
	- res fixed a size_t vs int warning in AWS.
	- res renamed the DEBUG_BREAK macro to CS_DEBUG_BREAK.
	- res removed the ASSERT, VERIFY_SUCCESS and VERIFY_FAILURE macros from
	  the Win32 csosdefs.h. They were not used (except one place) in CS
	  itself and could interfere when CS was embedded.
	- Jorrit added support for overriding of mixmode in submeshes of
	  genmesh. The loader also supports this now.
	- Marten fixed some more leaks introduced by changes to plugin loader.
1-Aug-2005
	- Jorrit added a missing include to ref.h.
	- mdmkolbe fixed some Swig issues with the new SCF, but more remain.
	- mdmkolbe converted CS/libs/csgeom/ to the new SCF implementation.
31-Jul-2005
	- Peter Amstutz updated the csvosa3dl plugin to compile again
	  with the recent changes made in SCF and CS headers
	- Marten fixed a few bugs and compilation errors in the new SCF
	  implementation.
	- Marten rewrote the plugin loader and object registry to play nice
	  with virtual and/or multiple inheritance.
	- Marten converted csEngine, csLightIt and a few other classes to
	  use new style SCF implementation. Also converted a few interfaces
	  to the new syntax.
	- Marten made some general cleanup of iEngine and csEngine.
30-Jul-2005
	- mdmkolbe added the csQueryRegistry family of helper functions and
	  defined CS_QUERY_REGISTRY et al. in terms of them.
29-Jul-2005
	- Jorrit fixed the light movable->MovePosition() so that it doesn't
	  notify the light listeners anymore. This is done in UpdateMove().
	- Jorrit fixed a problem in odedynam, AttachColliderMesh(). It would
	  crash on empty meshes.
	- res excluded csutil/scf_impl.h from the master headers.
	- Eric Sunshine fixed cssysdef.h so that it again works on MacOS/X.
	- Eric Sunshine eliminated compilation warnings in the custom cursor
	  plugin.
	- Marten cleaned up the new SCF implementation a bit. It is now split
	  in several headers to later allow fewer header-in-header includes.
	  Also using new macros for querying interface, and SCF_VERSION.
	- Eric Sunshine augmented the Python configure check in checkpython.m4
	  so that it adds -L directives to PYTHON.LFLAGS only for directories
	  which actually exist. This eliminates annoying warnings from the
	  MacOS/X linker which complains about non-existent directories
	  specified via -L.
28-Jul-2005
	- mdmkolbe fixed some more fallout from the include cleanup.
	- mdmkolbe fixed some pedantic issues.
	- Jorrit fixed a bug in libs/csutil/documentcommon.cpp. Was using
	  %g for an int.
	- Jorrit changed csColliderActor to have default 9.81 gravity.
	- Jorrit added SetRotation/GetRotation to csColliderActor.
	- Jorrit added SetCD/HasCD to csColliderActor.
	- Jorrit changed walktest to use csColliderActor. This greatly
	  improves readability of the movement system. In addition the
	  handling of disabling gravity, fine tuned movement (ctrl key),
	  and disabling collision detection has also improved.
	- mdmkolbe began implementing CSEP 10: Templated implementation of SCF.
	- mdmkolbe fixed unused parameter warnings in the include directory.
	- res changed the way the clipping rectangle is saved/restored in the
	  framebuffer r2t support. It is now saved/restored when the render
	  target is set/cleared instead of BeginDraw()/FinishDraw(). This works
	  around problems were the clipping rect was restored but the viewport
	  was not yet, causing the clipping to be wrong.
	- res changed csVFS::ChDirAuto() to check whether a file is a .zip by
	  looking at ist content, not it's name.
27-Jul-2005
	- res added support for "templates" to the XML shader conditions.
	  You define them with "<?template SomeTemplate?> ... "<?endtemplate?>"
	  blocks and later invoke them with "<?SomeTemplate?>", which is
	  replaced by the document nodes that appear in the earlier definition.
	- Marten cleaned up some header-in-header includes. More work needed
	  when someone have time.
	- Marten deprecated csPoint and FastSqrt. Use csVector2 resp sqrtf
	  instead.
	- Marten removed some left-overs from terrfunc (since long removed).
	- res added some partial iDocument* implementations with commonly
	  duplicated code to facilitate creation of new iDocument*
	  implementations.
	- res fixed some fallout from the include cleanup.
	- res worked around namespace clashes of the Opcode in CS with the
	  Opcode in ODE.
25-Jul-2005
	- mdmkolbe removed an unused local variable.
	- mdmkolbe added CS_PRIn64 macros for passing to csPrintf et al, and
	  fixed the PRIn64 macros to be more correct.  Places that needed
	  to be using CS_PRIn64 were changed to use it.
	- res fixed the CS_LONG_SIZE to 4 for MSVC.
	- res added MSVC-specific PRIn64 macros (which employ the I64 format
	  modifier as used by the VC runtime).
	- res changed the provided (u)intptr_t type to be dependent on the
	  processor size (ie is 64 bit wide on 64 bit machines).
	- res added provision of PRInPTR macros to csdef.h.
24-Jul-2005
	- Jorrit added a csEllipsoid class which is a variant of
	  csSphere that has a vector as a radius.
	- Jorrit added new versions of the following functions so that they
	  return their result with 'return' instead of a reference parameter.
	  This is a lot easier to use in scripting languages like Java:
	      - csColliderHelper::TraceBeam (returns csTraceBeamResult)
	      - iCamera->Perspective
	      - iCamera->InvPerspective
	      - iMeshWrapper->HitBeamBBox (returns csHitBeamResult)
	      - iMeshWrapper->HitBeamOutline (returns csHitBeamResult)
	      - iMeshWrapper->HitBeamObject (returns csHitBeamResult)
	      - iMeshWrapper->HitBeam (returns csHitBeamResult)
	      - iMeshWrapper->GetRadius (returns csEllipsoid)
	      - iMeshWrapper->GetWorldBoundingBox
	      - iMeshWrapper->GetTransformedBoundingBox
	      - iMeshWrapper->GetScreenBoundingBox (returns csScreenBoxResult)
	  Many (but not all) of the old versions have been marked as
	  deprecated.
	- Jorrit clarified a few api docs.
	- Eric Sunshine added %ignore directives to cspace.i for the older
	  methods HitBeamBBox(), GetRadius(), Perspective(), etc., which were
	  not scripting language-friendly.
	- Vincent Knecht added the "DejaVu" TrueType fonts to the list of
	  files to be installed. Also modified vfs.cfg.template accordingly.
	- res added a 0 check to csMeshFactoryList::FindByName() to avoid a
	  crash when a 0 mesh name is passed.
	- res fixed invalid usage of csStrNCaseCmp() in
	  csString::CompareNoCase (const char* iStr).
23-Jul-2005
	- mdmkolbe added a default radix of 10 to csPrintFormatter::OutputUint.
	- mdmkolbe changed csPrintFormatter::Format to call OutputUint instead
	  of OutputInt for size_t arguments.
	- mdmkolbe fixed some 'void format' warnings in AWS.
22-Jul-2005
	- mdmkolbe removed extraneous semicolens, commas, and qualifiers
	  found with '-ansi -pedantic'
	- mdmkolbe replaced some instances of __int64 with int64.
	- Piotr Obrzut added plane collider parsing to csPhysicsLoader
	- mdmkolbe replaced some instances of 'long long' with 'longlong'
	  and 'unsigned long long' with 'ulonglong'.
	- res removed or conditionalized some superfluous configure check
	  (e.g. we don't use GLU or GLUT, no point to check ALSA on Win32, ...)
	- mdmkolbe fixed non-ISO complient anonymous structs.
21-Jul-2005
	- mdmkolbe fixed a few more warnings in gcc with the '-W -Wall' flags
	- Jorrit added a section to the docs about sprite sockets. Also did
	  a small correction to the sound section.
	- Eric Sunshine fixed several logic flaws introduced by the recent
	  `-W -Wall' changes.
	- Eric Sunshine fixed broken initialization loop in
	  CreateIdentityPalette() in the Windows OpenGL canvas. Reported by
	  Michael D. Adams.
	- Marten added a system for handling of official enhancement proposals
	  within CS. System called CSEP, derived from Pythons PEP.
	  Supportfiles to convert the text source to html as well as a few
	  initial CSEPs have been added.
20-Jul-2005
	- Jorrit made csColliderActor more robust by checking if the other
	  mesh has a collider.
	- Jorrit added SetOnGround() method to csColliderActor.
	- Jorrit added a small note to the csColliderActor documentation
	  about having to call Move() every frame.
	- Jorrit added the ability to csColliderActor to use a camera instead
	  of a mesh.
	- mdmkolbe fixed SWIG warnings related to functions with default
	  arguments getting shadowed.
	- Jorrit fixed a bug in csColliderActor. It was ignoring speed.
	- Jorrit made csColliderActor a bit more robust.
	- Jorrit changed simpmap so that it uses csColliderActor.
	- Jorrit fixed csColliderActor so that it works better for camera
	  (supports tilting up/down of camera and also rotation around
	  z vector).
	- mdmkolbe put an #ifdef guard around a MSVC only #pragma
	- Eric Sunshine eliminated compilation warning in csShaderVariable
	  copy constructor.
	- mdmkolbe fixed several warnings in gcc with the '-W -Wall' flags
19-Jul-2005
	- Jorrit removed the unused GetVisibilityNumber/SetVisibilityNumber.
	- Jorrit fixed the thing plugin so that it does a small correction
	  on lightmap coordinates for impossibly thin polygons. That prevents
	  the GL renderer from crashing on those.
	- Jorrit added a new csColliderActor class. This class handles
	  basic actor collision detection with gravity and sliding with
	  walls. Using it is very easy (and documented in the manual).
18-Jul-2005
	- Eric Sunshine resolved circular inclusion of event headers. Also
	  fixed a few other compilation errors and warnings.
	- Eric Sunshine performed some minor textual cleanup of the AWS2
	  sources: added copyright notices, added missing end-of-file
	  line-terminators, removed errant semi-colons.
	- Eric Sunshine fixed various gcc4-related build problems.
	- Jorrit fixed a bug in the plugin manager that was recently
	  introduced in the rename of iConfig to iPluginConfig.
	- Jorrit converted the following classes in CS so that they no longer
	  use embedded interfaces:
	    - csCamera
	    - csMeshWrapper
	    - csSector
	- Jorrit converted most of csThing so that it no longer uses
	  embedded interfaces.
	- Christopher finished some changes in AWS2 regarding the conversion
	  from std::string to csString.
	- Christopher also added a constructor to csString (and it's parents)
	  allowing it to construct from a C-string and length, instead of just
	  a string.
	- Erroroman made many fixes in genmesh skeletal animation plugin:
	    - time operations and delays are fixed.
	    - "translate" tag is removed from animation script.
	    - added attribute "type" which can be "rel" or "abs" for
	      absolute or relative transforms. If "type" is not defined
	      transformation is absolute.
	    - added tag "loop" for animation script and attribute "times".
	      If "times" is defined animation will stop after repeating
	      defined times.
	    - added attribute "duration" in "frame" tag.
	    - added "repeat" attribute in "frame" tag. It defines how many
	      times frame exists in loop animation.
	    - added "always update" tag in the script definition.
	    - added "bones" and "vertices" tag in always update definition.
          These tags defines how animation updates if mesh is not visible.
	    - adopted all animations to the new syntax.
	    - added offset transform in bone->SetRigidBody. It defines how
	      bone is transformed to the rigid body - this helps for accurate
	      ragdoll physics.
	    - added function GetAnimatedVertices and GetAnimatedVerticesCount
	      in the animation control interface.
	- Erroroman fixed error in stencil2 plugin where it used wrong
	  clipping plane.
17-Jul-2005
	- Eric Sunshine added forward declaration of struct WrapperStackEntry
	  to xmlcompiler/docwrap.h in order to pacify gcc4.
	- Jorrit fixed a bug (as directed by res2k) in csSet.Delete() which
	  would fail for deleting the 0 element.
	- res made the 'length' parameters of csString::SubString() and Slice()
	  optional (symmetrical to the recent scfString changes).
	- res moved the AWS2 'autom' namespace into a namespace 'aws'.
	- res changed the AWS2 aws::autom::iObject interface to better conform
	  to interface guidelines. Particularly, the method names have been
	  changed to CS style, and strings are passed as iString pointers/refs
	  (since the interface will be used in cross-plugin scenarios).
	- res changed internal strings in AWS2 to be stores as csString instead
	  of scfString, mostly because csString has operator<, but scfString
	  doesn't. Also, scfString is mostly a wrapper around csString, so the
	  latter is a bit more lightweight.
	- res renamed the 'iConfig' interface to the more appropriate
	  'iPluginConfig'.
	- res fixed some float truncation warnings on VC in phystut.
16-Jul-2005
	- Eric Sunshine upgraded the MSVC project files to use wxWidgets 2.6.1
	  rather than 2.4.2.
	- res fixed the sector mesh transformation saving in cssaver as
	  reported by Spin.
15-Jul-2005
	- res separated the cs-win32libs detection into its own .m4 file for
	  easier reuse in external projects.
	- Jorrit fixed a bug in iEngine->CreateMeshFactory(classId,name).
	  It would set the name directly on the iObject AFTER adding the
	  factory to the list. This caused the hashmap in the factory list
	  to be invalid for this entry. So FindByName() wouldn't work.
	- Piotr Obrzut fixed his shameless error (he forgot about setting stops
	  and motors for universal joint)
14-Jul-2005
	- Jorrit added a small section about how to draw text to the
	  documentation.
	- Piotr Obrzut fixed a bug in stops/motors methods in ODESliderJoint
	- Jorrit did a big stability fix to the phystut app. Apparently
	  ODE doesn't like it if it is called with variable steps. The phystut
	  app normally calls ode->Step(delta) with delta constant. However
	  there is always a remaining part of the elapsed time that was also
	  done. This could cause instability. To fix this, instead of doing
	  the remaining part immediatelly we store it in a class variable
	  and add it to the elapsed time the next frame. That way we are sure
	  that we always do steps that are exactly 'delta' big but our physics
	  simulation speed is still independent from the framerate. This helps
	  a great deal with stability.
	- Jorrit documented the best way to do physics step simulation in the
	  manual.
        - res changed the framebuffer GL render-to-texture backend to draw
          "persistent" render targets without filtering to fix smearing
          occuring on some hardware.
13-Jul-2005
	- Jorrit optimized csXRotMatrix3, csYRotMatrix3, and csZRotMatrix3
	  by avoiding unneeded extra calls to cos and sin.
12-Jul-2005
	- Eric Sunshine fixed several compilation errors in the aws2 plugin.
	- Christopher Nelson made many changes to AWS2, but since it's a
	  developing plugin he won't detail all of them here.  He will simply
	  note that AWS2 can now load XML definition files.  He also made
	  changes to the awstest application to allow it to provide a testing
	  framework for AWS2.
	- Christopher Nelson "fixed" the API issue regarding len=0 vs.
	  len=(size_t)-1 in scfString.
11-Jul-2005
        - Christopher Nelson made the following AWS modifications:
	    - Changed the header guard name, added some checks to the headers
	      to make sure they're not accidentally BOTH being included.
	    - Made massive changes all over, replacing std::string in many
	      cases with scfString.
        - Christopher Nelson changed scfString so that it has automatic
	  variables for start and len, and added single character append
	  functions.
        - Christopher also added scfString::ReverseSlice() and
	  ReverseSubString(), which are just like their non-reversed
	  counterparts except that the offset for the start parameter is
	  counted from the end.
	- Eric Sunshine added missing forward declaration to cseventq.h which
	  is now needed on account of (nasty) circular inclusion between
	  cseventq.h and csevent.h. :-(
10-Jul-2005
	- Peter Amstutz committed a fix to csQuaternion where initializing
	  it with an identity matrix could cause a divide by zero.
	- Eric Sunshine augmented the Windows joystick driver so that it
	  supports any number of axes rather than being hard-coded for only
	  two.  Also fixed bug where it performed an excessive amount of work
	  per poll.
9-Jul-2005
	- Jorrit added a section about binary XML to the manual.
8-Jul-2005
	- res added the "DejaVu" TrueType fonts. They're based upon the "Vera"
	  family (and shares its liberal license), but features additional
	  non-Latin glyphs.
	- res added some more information to the "alpha" manual page.
	- res adapted the "Efficient Textures" article from the community site
	  for the manual.
	- res made the DDS loader check for the DDSCAPS2_VOLUME flag not only
	  when DDSCAPS_COMPLEX is set, as some files (as reported by Bedrich
	  Zaba) have the former, but not the latter set.
	- caedes added iCommandLineParser and iSoundListener to cspace.i
6-Jul-2005
	- Eric Sunshine updated numerous "Linux" references throughout the
	  project to "GNU/Linux" in order to avoid perpetuating the myth that
	  Linux somehow exists as a full operating environment without the aid
	  of all the GNU-supplied utilities.
	- Eric Sunshine fixed a bunch of image references (via @picture{}) in
	  the Texinfo sources for the CS manual which broke when the
	  documentation was reorganized on 1-Jul-2005.
	- res updated the "external libs" manual page for the new cs-win32libs
	  release.
5-Jul-2005
	- Piotr Obrzut fixed creating/removing of *strict ode joints*
	- Piotr Obrzut added creating function for ode slider joint in cs
	- Peter Amstutz added Get/SetContactMaxCorrectingVel() and
	  Get/SetContactSurfaceLayer() to iODEDynamicSystemState
	- Peter Amstutz committed preliminary physics support in the
	  csvosa3ld plugin (via the ODE plugin) (currently disabled)
	- res fixed an errorneous private inheritance in odedynam.
3-Jul-2005
	- Piotr Obrzut added pop dir on every return path in ParseShaderList
	  in csparser
	- Piotr Obrzut fixed error on reloading cal3d sprite in viewmesh
	- res added csVfsDirectoryChanger, a helper to automatically restore
	  the previous VFS working directory when changing it is required.
	  Made it used by some code that did PushDir()/ChDir()/PopDir()
	  manually.
	- res fixed some aws2 compile errors.
2-Jul-2005
	- Marten did a major cleanup of cstool/pen.h and pen.cpp.
	- Marten removed aws2.h from the master headers for time being. It
	  is broken and incompatible with aws.h
	- Marten did a few asorted fixes:
	    - Added a SetOrigin to csPlane3; It moves the plane so it goes
	      through a given point.
	    - Added a method to csPoly3 to get the main axis of the normal.
	    - Added another constructor and a copy constructor to csVector2
	    - Fixed spelling in job.h
	    - Fixed unittest application generated by jam.
	    - Fixed the pathlist unittest to accualy work on win32.
1-Jul-2005
	- Jorrit did the first phase of the new documentation. All
	  documentation has been moved to a new location. Note that there is no
	  new documentation yet. Everything is still there. Just at other
	  spots.
	- Jorrit did some extra documentation changes:
	    - Changed structure of sprite3d animation chapter.
	    - Replaced old email with jorrit.tyberghein@gmail.com
	    - Added two sections about Blender and 3DSMax.
	- Jorrit did some extra documentation changes:
	    - Fixed a few outdated references.
	    - Added a new lighting section in usingcs and moved a few
	      other documentation parts there.
	    - Moved some other stuff around.
	- Jorrit moved a few howtos to more appropriate places in the
	  documentation.
	- Jorrit fixed the thing mesh object explanation. Things don't support
	  portals anymore.
	- Jorrit fixed lots of outdated information in the docs.
	- Jorrit added a new materials section and an explanation on alpha
	  textures.
	- Jorrit did some index related changes to the docs.
	- res made the jamtemplate-generated application code use
	  csApplicationRunner<>.
	- res fixed a compile problem and csRef<> deletion (don't do that!) in
	  the AWS XML definition parser.
	- res made all OpenGL drivers from "Microsoft" on Win32 be considered
	  as non-accelerated (since it's either software GL or the sucky
	  Direct3d OpenGL).
	- Jorrit did more documentation stuff. Added some information about how
	  to play sounds and fixed a few things.
	- res fixed the walktest Jamfile to generate a proper walkall compile
	  group for VC6.
	- Eric Sunshine moved the RepairNodes rule from docs/texinfo/Jamfile to
	  docs.jam so that it can be used by external projects.
30-Jun-2005
        - Christopher added in the code that he's building back up for AWS2.
          Starting from the original AWS code, and breaking it in a big way.
        - Christopher also added a vector-pen class that can draw various
          2D shapes using the 3D engine.  Currently this does not include
          circles because I have to think about a good way of dealing with
          resolution issues.
        - Christopher added a Raw() getter to csArray in order to get a raw
          buffer which can be passed to the renderer.
29-Jun-2005
	- Eric Sunshine applied a patch to texi2html.pl which allows it to work
	  on Windows by avoding dependence upon the Unix-specific external
	  `pwd' command.
	  https://texi2html.cvshome.org/servlets/ReadMsg?list=dev&msgNo=538
	- Eric Sunshine fixed a few problems afflicting `jam manualinfo' on
	  Windows on account of the somewhat old MSYS `makeinfo'.
	- Eric Sunshine worked around bug in some version of gcc where it
	  complained about one-liner expression in csRedBlackTree::GetColor(),
	  saying that it could not convert Node* to NodeColor.
	- Eric Sunshine modified (hacked) the RunMakeInfo action in docs.jam to
	  work with `makeinfo' 4.2 which ships with MSYS and which does not
	  respect -I (search path) for @image{} directives.
25-Jun-2005
	- Marten fixed a transformation bug in software renderer. The direction
	  / names of transforms needs to be checked at some point (they are
	  probably not correct).
24-Jun-2005
	- Jorrit did a big optimization to genmesh objects that don't use
	  localshadows (i.e. meshes that calculate vertex lighting). These
	  meshes used to calculate lighting again and again every frame
	  even if the lighting conditions didn't change. This is now fixed
	  so that lighting is only recalculated if needed. This optimization
	  is even more worthwhile when you are using submeshes in genmesh
	  because then this lighting would have been recomputed every
	  frame for every submesh (and it would calculate the entire mesh
	  for every submesh anyway).
23-Jun-2005
	- Piotr Obrzut applied fixed fix for get/set transform methods applied
	  before by Erroroman
	- Eric Sunshine eliminated several compilation warnings.
20-Jun-2005
	- mdmkolbe fixed segfaults on exit under Cygwin due to static local
	  variables in functions.
	- res changed TinyXML to write a text node out as CDATA when the value
	  contains CRs or LFs.
	- res cleaned up the shader conditional code a bit and also made the
	  various debug dump options toggleable through the configuration.
	- res made the Cg VP support save a program loading.
18-Jun-2005
	- Jorrit added csColor4 support to genmesh (pretty much untested).
	  That means that mixmode alpha should now work again and it should
	  now also be possible to set alpha per vertex.
	- res disabled NPOTS textures for ATI hardware, as, at the moment,
	  support for it seems to be suboptimal there. (Actually, we should
	  collect some information on how well NPOTS textures work on various
	  ATI hardware versions... based off the little information I got it
	  seems that NPOTS isn't that great on any ATI.)
	- res fixed the walktest logo pixmap creation to not set the renderer
	  dimensions (as really the original dimensions are wanted for
	  coordinate computations etc.)
	- res added support for a "hidden" feature on ATI drivers were NPOTS
	  2D textures can be used (which is also a bit better than RECT on ATI
	  hardware). Still disabled though.
	- res removed the CS_FX_ALPHA hacks from genmesh and spr3d since they
	  aren't needed any more.
	- res added csVector4::Description().
	- Jorrit fixed an initialization bug in sprcal3d with dynamic_ambient.
	- res added fog support to the fat rl.
	- Marten added some more features to the new lighter. Still not close
	  to functional.
17-Jun-2005
	- Jorrit seperated per-sector dynamic ambient from per-object
	  dynamic ambient. Previously if you called
	  sector->SetDynamicAmbientLight() then it would loop over all
	  mesh objects and call SetDynamicAmbientLight() on each mesh object.
	  This is not efficient. Instead the mesh object itself goes to look
	  at the current ambient level of the sector and keeps a counter
	  to check if the ambient level changed. In addition the
	  SetDynamicAmbientLight() in mesh object is reused for mesh object
	  local dynamic ambient that is added to the sector dynamic ambient.
	- Jorrit fixed the bezier curve so that it honors dynamic ambient.
	- Jorrit fixed genmesh so that it honors dynamic ambient.
	- Jorrit cleaned up two big unused UpdateLighting() routines in
	  sprcal3d.
	- Jorrit implemented local dynamic ambient in sprcal3d.
	- Jorrit implemented local dynamic ambient in bruteblock.
	- Jorrit fixed a note with iEngine->CreateTexture().
	- res removed the CS_FX_ALPHA check hack(s) from csfxscr.cpp since
	  they aren't needed any more.
	- res fixed the CS_FX_ALPHA support in the GL renderer for the fact
	  that the "alpha" option actually contains transparency information
	  (as opposed to the usual meaning of 'alpha' as opacity).
	- res added support for user-defined mixmodes to the particles plugin.
16-Jun-2005
	- Jorrit fixed SimpleRoom.java so that it works again. Also
	  added a bit more code to demonstrate how to move objects.
	- Eric Sunshine fixed bug in csApplicationFramework where `restartFlag'
	  instance variable was not being initialized.
	- res changed csFlags::Set() to apply the mask to the 'value'parameter,
	  too. Previously, e.g. specifying a value of ~0 as the value would set
	  all bits, not just those in 'mask', as the documentation stated.
	- res gave the 'value' parameter of iMeshWrapper->SetFlagsRecursive()
	  a default value of ~0. This way all bits in specified in 'mask'
	  will be set (which mirrors the behaviour of the two csFlags::Set()
	  overloads). Also added a bit of documenation.
	- res fixed a typo in win32.cpp.
	- res made csGLGraphics3D::SetupStencil() disable clip planes before
	  drawing the stencil stuff. This has the same effect as Jorrit's
	  earlier fix in some cases, which however, as clip planes were
	  disabled all the time the clipping didn't change, caused clipping
	  issues in other places.
	- res fixed warping portals in the fat rl.
15-Jun-2005
	- res changed the SV context precedence slightly so that user-defined
	  mesh shader vars override SVs provided by the mesh plugin.
	- res fixed the logic to determine whether a mesh wrapper SV context
	  is empty.
	- Jorrit added CS_IS_BROADCAST_EVENT and used that define to change
	  csKeyEventHelper::GetEventData() so that it now also works for
	  broadcast events.
14-Jun-2005
	- res augmented DrawSimpleMesh() to not require an index array; if it
	  is omitted, an array that simply contains vertexCount indices with
	  values 0 to vertexCount-1 is used.
	- res further worked on the fat rl portal support. flarge now works to
	  some extent.
13-Jun-2005
	- res fixed cut-and-paste errors in the ARB fragment program code
	  (where GL_VERTEX_PROGRAM_ARB instead do GL_FRAGMENT_PROGRAM_ARB was
	  used).
	- res made some miscellaneous documentation fixes.
	- res fixed some issues reported by Bedrich Zaba <frogbride@seznam.cz>:
	    - GL DrawSimpleMesh() didn't use the shadervars from the shader.
	    - Shadervars specified in shader programs were not used. "Fixed" it
	      by removing support for SVs in programs. This functionality can
	      be achieved by other means (either by specifying SVs in the
	      shader itself or, for constant values, using variable mappings).
12-Jun-2005
	- res fixed the null renderer to report correct texture dimensions.
	- res added the CS_STRING_TO_WIDE macro. Useful when the value of a
	  macro is to be converted to a wide string.
	- res added csRedBlackTree<>::IsEmpty().
	- res made csShaderVariableContext::PushVariables() fill the new
	  entries in the enlarged 'stacks' array with 0s. Previously, the
	  new entries could contain invalid data.
	- res added some csInputBinder documentation.
11-Jun-2005
	- Piotr Obrzut added motor/stops functions to ODEUniversalJoint.
10-Jun-2005
	- Eric Sunshine eliminated several compilation warnings.
9-Jun-2005
	- Jorrit fixed the new CollideSegment() so that it really works
	  now.
	- Eric Sunshine fixed problem with recent csVector3 optimization which
	  prevented scripting languages from having access to the x, y, and z
	  members (a limitation of Swig).
	- res refined the RECT texture crash workaround by having it controlled
	  by the driver database.
	- res changed the parameter passing to Cg from using the data type of
	  the SV to the parameter type reported by Cg. Apparently, Cg is rather
	  strict and doesn't accept when e.g. a float3 value is set to a
	  float4 parameter (setting the param has no effect). So querying the
	  datatype Cg wants and using that gives a bit more tolerance against
	  type lapses.
8-Jun-2005
	- res moved all OpenGL-relevant config keys, for both canvases and
	  renderers, into r3dopengl.cfg. Also removed opengl.cfg.
	- res fixed the Win32 GL canvas to not throw away the result of the WGL
	  pixel format determination. Makes multisampling work again.
	- Jorrit added a new iCollideSystem->CollideSegment() routine which
	  works similarly as CollideRay() except that it collides with a finite
	  segment instead of an infinite ray. Extended OPCODE to support
	  this new function.
	- res worked around a problem where ATI drivers crash when a generic
	  compressed format is used for a RECT texture.
7-Jun-2005
	- res added support for "simple mappings" to the
	  csUnicodeTransform::MapToSomething() methods. "Simple mappings"
	  always return at most 1 character.
	- res made csKeyboardDriver::SynthesizeCooked() use
	  csUnicodeTransform::MapToUpper().
	- Jorrit did an optimization to the thing mesh with regards to
	  lighting. With both dynamic and pseudo-dynamic lighting it will
	  now detect if the light actually affects any of the polygons. If
	  not then the light will not be added as relevant for the thing.
	  In some situations this can give a huge performance boost (in
	  a level I'm making from 15->80 fps with a very small pseudo
	  dynamic light that is animation and a huge mesh that surrounds
	  it but is not affected by it).
	- Christopher Nelson added four files into the AWS plugin.  Currently
	  they are unused. Added new preferences storage functions, and an
	  XML-based translator.  The XML translator constructs a tree of
	  registries that contain only settings pertinent to the node the
	  settings reside in.  This system is very similar to the one AWS
	  currently uses, except that it has the element.attribute naming
	  system and it parses XML instead of AWS's custom definitions file.
6-Jun-2005
	- Anders fixed several bugs in array SV handling, and added loader
	  functionality for array SVs. Pseudo-syntax is:
	  <sv type="array"><sv .../><sv .../> ... </sv>
	- Eric Sunshine added `manualchm' Jam target to the build system which
	  converts the Crystal Space user manual to CHM (Microsoft's compressed
	  HTML help) format.  For this to work, you will need to have Perl
	  installed (www.activestate.com) and Microsoft's HTML Help
	  Workshop. Although CHM generation relies upon Microsoft's hhc.exe
	  (HTML Help Compiler), it is possible to create CHM format
	  documentation on Linux by running hhc.exe under Wine. The file
	  CS/docs/support/winhelp/README.txt contains instructions explaining
	  how to configure both Windows and Linux installations for CHM
	  generation.
	- Eric Sunshine fixed gristing problem in _Texinfo rule in docs.jam
	  which caused generated files to end up in an incorrect location if an
	  attempt was made by two different targets to convert the same Texinfo
	  sources to the same format.
	- Eric Sunshine augmented the various documentation generation rules in
	  docs.jam so that they return the gristed top-level output file as a
	  convenience to callers.
	- Eric Sunshine fixed bug in the Texi2HTML rule in docs.jam where it
	  failed to respect its `outfile' argument (i.e. it omitted texi2html's
	  -top-file= option).
	- Jorrit added support for x, y, and z relative vector to the node
	  object (iMapNode). This can be used together with map editors
	  (like blender) to export not only a position in a sector but also
	  x, y, and z relative direction. One usage is the ability to export
	  nodes for a spline path where you can encode the forward and up
	  vectors that way.
	- res did more fat rl modularization work.
	- res changed some csRenderContext members to use csRef<> instead of
	  plain pointers.
5-Jun-2005
	- Eric Sunshine fixed a bunch of compilation issues reported by
	  Apple/Tiger's gcc4.
	- Eric Sunshine fixed Swig 1.3.24 issue on Apple/Tiger which resulted
	  in linker complaining that iBase__DynamicCast was undefined.
	- Eric Sunshine augmented the 3DS check in configure.ac so that it also
	  looks for the utility `lib3ds-config', since this is the name of the
	  script installed by the lib3ds build process.
	- Eric Sunshine added check for `hhc.exe', the Microsoft HTML Help
	  compiler to configure.ac.
	- Eric Sunshine fixed bug in apps/tutorial/phystut/Jamfile where it
	  lacked an ExternalLibs invocation for ODE.
	- res added some explicit types at some places where event property bag
	  functions are used for mouse/joystick events to pacify pickier gccs.
	  Also changed some ints to uints where appropriate.
	- Anders added a vertex program rewriter for Cg, since removing the
	  old one caused Cg VPs to break on ATI drivers. The new one is much
	  simpler than the old one though. Arrays may still be borked,
	  so that needs investigation.
4-Jun-2005
	- Eric Sunshine worked around problem where Apple/Tiger's gcc4 rejects
	  -fvisibility-inlines-hidden in Objective-C++ mode. (This fix is
	  somewhat hacky. A cleaner solution will involve having the configure
	  script differentiate between the C++ and Objective-C++ compilers when
	  checking for accepted options.)
	- Eric Sunshine fixed a few compilation warnings reported by gcc4 on
	  Apple/Tiger (though quite a lot still remain for when more time is
	  available).
	- res started to make the fat rl more modular.
	- res added some support for rendering to NPOTS textures. Still
	  untested tho.
	- res made the Opcode plugin properly use a reporter from the object
	  registry to report Opcode issues.
	- res fixed some botched logic from the NPOTS changes above.
3-Jun-2005
	- Eric Sunshine fixed some more problems caused by spurious use of
	  'inline' on some C functions wrapping Objective-C for access by C++,
	  this time in plugins/video/canvas/macosx, which caused linking to
	  fail on account of undefined symbols on Tiger with gcc4.  Earlier
	  related fixes were made on 25-May-2005.
	- res fixed some gcc4 warnings reported by Terry Richards.
	- res updated the cs-win32libs URL in the manual.
2-Jun-2005
	- Jorrit reports: today I found out that there was a bug in blend2cs
	  which incorrectly put the mixmode flag with the thing mesh factory
	  in case there were multiple instances made of that thing. However,
	  instead of fixing blend2cs I decided to adapt Crystal Space to
	  that bug. It is now allowed to put mixmode in thing mesh factories.
	  If that is present then it will be the default mixmode for
	  things created from that factory.
1-Jun-2005
	- res made the following changes:
	    - Made the OpenGL DrawMesh() emit a string marker with the mesh
	      being drawn.
	    - Fixed parsing of the pairing modifier in the PS plugin; lines
	      like "+ mov ..." (notice the space after '+') were not handled
	      correctly.
	    - Added a config option to disable the creation of display lists
	      for NV pixel shader support. Useful for debugging.
	    - Fixed handling of source register component replication for NV
	      pixel shader support.
	    - Changed the NV pixel shader final combiner to something
	      apparently more working.
	    - Made a bunch of PS1 plugin output to be verbose-only and turned
	      some errors to warnings.
	    - Augmented the Cg plugin to also support PS routing on NV
	      hardware. Useful for testing.
	    - Removed some code from the Cg VP class which wasn't needed since
	      rewriting isn't done any more.
	- Jorrit fixed a very old bug in the lighting routines. Basically
	  shadow casting through portals didn't work. i.e. if you had an
	  object in front of a portal then the shadow of that object would
	  stop at the portal boundary. The shadow casted by the portal
	  outline itself did work though. The problem was fixed with a
	  workaround. Apparently nothing is calling MarkRelevant() on each
	  shadow anymore. This means that when a portal is traversed for
	  lighting all shadows are considered irrelevant and are dropped.
	  I work around this problem temporarily by changing IsRelevant()
	  so that it always returns true. That will slow down static lightmap
	  calculation when portals are concerned but at least it is correct.
	- Wouter fixed some compile warnings.
31-May-2005
	- Marten made a few fixes to the shader system:
	    - Removed the static variable context from csXMLShader::Compile
	      and child methods.
	    - Made some changes to the variable mapping holder to use less
	      memory.
	    - Rewrote Cg plugin to (once again) use Cg calls for parameter
	      setting and not using the ARB_vertex_program routing.
	    - Rewrote shader variable handing in Cg and ARB_*_p plugins to
	      properly support matrix, transform and array datatypes.
	    - Added matrix and transform types to SV and shader parameter
	      loader.
	    - Changed the SV stack to be a SV list.
	- Marten changed the renderloop to follow the SV context order
	  shadermanager (global) - renderloop - sector - light - mesh -
	  shader - material ( - shaderprogram).
	- Marten changed fountain meshobject to use csRandomFloatGen which
	  hopefully is faster than normal rand().
	- Marten fixed a few compile warnings in isotest.cpp.
	- Marten fixed environment reflective cubemap support.
	- res added some initial portal support for the fat rl. It is still
	  copy'n'pasty, clumsy, ugly. Don't look at it! Your eyes will bleed!
	  You can't un-see it!
	- res removed the superfluous csPortalContainer::DrawTest() method.
30-May-2005
	- Eric Sunshine fixed csutil/win32/csosdefs.h so that it is more
	  discerning when setting up csAlignedMalloc()/csAlignedFree() in order
	  to support MSVC6 which does not feature
	  _aligned_malloc()/_aligned_free().
	- Eric Sunshine eliminated compilation warnings reported by MSVC6 in
	  walktest/infmaze.cpp.
	- Anders fixed a problem where render to texture and floating portals
	  wouldn't get along.
	- res fixed the bruteblock plugin to correctly set the mirror flag on
	  the returned render meshes.
29-May-2005
	- res changed the material map texture created by the terrain mesh to
	  use clamping to prevent wraparounds near the border of the mesh.
	- res made the shader program parameter parser also accept "transform"
	  parameters (previously a bit of code was missing).
	- Eric Sunshine fixed AWS to build cleanly with MSVC6.  Problems
	  included incompatibilities with MSVC6's very old STL and std::
	  namespace.
	- Wouter fixed shadervar constructor ordering and inited all vars.
28-May-2005
	- Wouter Wijngaards protected a division against zero divide in
	  csNormalMappingTools::CalculateTangents ().
	- Eric Sunshine augmented CS/data/Jamfile so that it also installs the
	  new isomap/vedette.spr.
	- Wouter tidied up the fullscreen effects (cstool/csfxscr.h).
	  And fixed csfxShadeVert, which was broken, displayed only partially.
	- Marten changed an inconsistency with iGraphics3d::SetWorldToCamera.
	  Previously it took camera to world transform.
	- Marten moved allocation of aligned data into a separate method
	  named csAlignedMalloc. If possible it should be aliased to a platform
	  specific routine instead of the builtin fallback. On MSVC
	  _aligned_malloc is used.
	- Marten worked some more on the lighter application.
	- Marten applied a patch from Seth Yastrov <syastrov@gmail.com> to
	  make it possible to map shader variables of typ MATRIX and TRANSFORM
	  to ARB_vertex_program and ARB_fragment_program shaders.
	- Wouter fixed multiple definition of csAlignedMalloc on linux.
	- Anders added array support to shader variables. No way to map
	  them to programs yet though.
27-May-2005
	- res fixed csGLGraphics3D::DrawPixmap() to also deactivate the
	  texture. When an NPOTS texture was used it could happen that this
	  texture stayed bound and was used subsequently, leading to wrong
	  graphics.
	- res removed the superfluous csRenderMesh::lastFrame.
	- Eric Sunshine eliminated some compilation warnings and errors
	  reported by MSVC6.
	- Wouter fixed breakage introduced by Eric Sunshine, the friend
	  declarations he added for MSVC6 need a class key, according
	  to gcc343 on linux. It is treated as an error by gcc, reports:
	  error: a class-key must be used when declaring a friend.
	  Added the 'class' keyword to fix the problem on linux.
	- Wouter initialised old_cliptype in the function
	  csGenericRenderStep::RenderMeshes(), so it would not be used
	  uninitialised.
	- Jorrit added a version of iEngine->GetNearbyMeshes() that uses
	  a box instead of a sphere.
	- res changed the transparent background detection in the GL font cache
	  to not only work in 1 out of 16777216 cases. Makes text writing a
	  bit more efficient for text with transparent background.
	- Wouter Wijngaards made the isometric test application camera more
	  isometric. It is now 98% isometric, where it was 41% isometric
	  before. Any more is hard due to the accuracy of float numbers.
	- res committed a patch from Jason G <jgmath2000@gmail.com> restoring
	  support for "-infinite" levels in walktest.
	- res fixed msvcgen to properly include the static plugin registration
	  files in the Big Static Plugins Lib.
	- Anders updated parallaxtest and its shaders to show off specular
	  (with glossmap in normalmap alpha).
	- Wouter added bumpmapping, specular shaders to the isotest level.
	- res changed the PNG, TGA and JPG loaders to release the data source
	  once they're finished with loading - it isn't needed any more and
	  just uses resources.
	- res made the parallax shader fall back to the default "light_bumpmap"
	  shader.
	- Eric Sunshine added new CS_SYMBOL_QUALIFIER() macro (qualify.m4)
	  which checks if at least one item from a list of qualifiers can be
	  applied to a symbol (i.e. variable or function). Employed this new
	  macro to fold out a bunch of nearly identical (yet less functional)
	  code from the __attribute__((visibility)),
	  __attribute__((deprecated)), __attribute__((const)), and
	  __attribute__((pure)) tests in configure.ac.
	- Eric Sunshine generalized the symbol "visibility", and function
	  "const" and "pure" tests in configure.ac so that they are no longer
	  specific to gcc.
	- Eric Sunshine changed treatement of visibility tests in configure.ac,
	  at the request of Andreas Grosam <agrosam@onlinehome.de>, so that
	  they apply to all build modes rather than only optimize mode.
	- Wouter changed
	    - The isotest demo to display a helpful text and you can rotate
	      and zoom the camera when holding the shift key.
	    - Changed isotest demo further, adding main character that walks
	      around when moving instead of the ugly box.
	    - Worked on Halo code, the visibility determination is not done
	      using the Zbuffer value, which stalls the opengl pipeline, and
	      seems to produce erratic results on some systems. It now uses
	      HitBeamPortals () to determine if a point is unobscured.
	    - csOpenGLHalo::Draw now respects the fov also for y values.
	    - Fixed an existing bug with halos, they would be drawn off
	      center. Now shifted correct by trial and error.
26-May-2005
	- Piotr Obrzut added getters for joint feedback information to
	  strict ode joints.	
	- Jorrit did a small optimization to bruteblock.
	- Jorrit fixed a bug in the OpenGL renderer introduced by Anders
	  on 17-Jul-2004. For some strange reason he set the number of
	  triangles to 0 before calling SetupClipper. The effect was that
	  the clipper was no longer able to decide on stencil based on
	  the number of triangles.
	- Jorrit started work on a new <noclip/> option for meshes
	  (CS_ENTITY_NOCLIP in iMeshWrapper). The idea is that you can set
	  this on big meshes that are supposed to be rendered only once
	  even if visible from different portals. It doesn't currently work
	  properly yet though. Work in Progress.
	- res fixed csParticleSystem to properly handle alpha of individual
	  particles.
	- Eric Sunshine worked around problem where gcc4 was incorrectly
	  attempting to instantiate a `template<T> operator<<(csStringBase,T)'
	  function when determining a compile-time constant. The problem is
	  illustrated in the following test case provided by Andreas Grosam
	  <agrosam@onlinehome.de>, who also researched the issue:
	    template <typename T>
	    inline Foo& operator<< (Foo& s, T const& v) { return s; }
	    enum { kA = 1 };
	    enum { kB = 1 << kA };
	  When compiled with gcc4, the following diagnostic is emitted:
	    error: '<anonymous enum>' is/uses anonymous type
	    error: trying to instantiate
	      'template<class T> Foo& operator<<(Foo&, const T&)'
	- Eric Sunshine added a check for the C++ Standard Template Library
	  (STL) to configure.ac. The few modules (VOS, AWS, sprcal3d) which
	  rely upon STL are now built only if available.
	- Eric Sunshine worked around an obscure bug in gcc 3.4.x where
	  -fvisibility-inlines-hidden on AMD64 in combination with STL and
	  gcc's -fPIC and -shared flags (which are used to build plugin
	  modules) causes the linker to fail with a bogus error stating that
	  std::basic_string<> can not be used when making a shared object. The
	  configure script now checks for this bug and suppresses
	  -fvisibility-inlines-hidden if present. References:
	    http://dev.gentoo.org/~kugelfang/pappy-visibility.txt
	    http://www.gnu.org/software/gcc/gcc-4.0/changes.html#visibility
	    http://www.nedprod.com/programs/gccvisibility.html
	    http://bugs.gentoo.org/show_bug.cgi?id=78720
	- res added the STL to the msvcgen Jamconfig.
	- res augmented the StaticPluginLibrary with the ability to exclude
	  certain plugins.
	- res excluded the wxgl plugin from the MSVC static plugins library.
	- Jorrit fixed the <noclip/> option so that it really works now.
25-May-2005
	- res added (limited) support for non-power-of-two-sized textures.
	- Eric Sunshine fixed a compilation error in OSXAssistant.cpp from
	  recent event-related changes.
	- Eric Sunshine fixed csPath so that it is once again possible to query
	  it for its iPath interface.
	- Eric Sunshine added missing csMouseEventHelper::GetNumAxes()
	  implementation.
	- Eric Sunshine fixed DDS image loader so that it compiles on MacOS/X.
	- Eric Sunshine added some missing dependencies on the 'clean' target
	  in the scripting Jamfiles.
	- Eric Sunshine fixed problem caused by spurious use of 'inline' on
	  some C functions wrapping Objective-C for access by C++ in
	  csutil/macosx and csplugincommon/macosx which caused linking to fail
	  on account of undefined symbols on Tiger with gcc4. Thanks to Andreas
	  Grosam <agrosam@onlinehome.de> for researching this.
	- Adam Bradley documented event system changes in apimod100.txi
	- Luca removed his useless comments in the latest patch for AWS
	  (committed in his behald by res).
	- res fixed some object lifetime issues in the gmeshskelanim plugin
	  that lead to a crash at cleanup.
	- res changed the GL renderer buffer bindings to be queued and applied
	  from DrawMesh().
	- res fixed NPOTS texture coordinate fixups being wrongfully applied.
	- res added support for the ALPHA mixmode to the GL renderer; in case
	  this mixmode is used, a new color buffer will be created that
	  contains the data of the original buffer, but with the alpha channel
	  modulated to the value from the mixmode.
24-May-2005
	- Marten added a csForEach() which mimics std::for_each().
	- Marten augumented csVector3 to give faster component lookup
	  (operator[]) when possible.
	- Marten added some initial parts of the new map lighter. It still does
	  not do anything.
	- Marten augumented csBlockAllocator<> to utilize a policy-like scheme
	  to determine allocation of blocks.
	- res made Marten's bit haxx0ry in kdtree.h a bit safer by not using
	  the MSB of a pointer for a flag, but instead bit 3.
	- res did some work on the fat loop. Now has the beginnings of an
	  equivalent of multi-renderstep support.
	- res added an entry to the driver DB to disable automatic mipmap
	  generation for Intel graphics.
	- Adam Bradley added a test to the Linux joystick driver to suppress
	  multiple registry of single devices with multiple filenames
	  (e.g., /dev/js0 and /dev/input/js0 on a devfs-enabled system).
	- Adam fixed csMouseEventHelper breakage introduced by the
	  transition to many-axis mouse attributes.
	- Eric Sunshine worked around Swig/Java complaint about multiple
	  inheritance in <csgeom/path.h>. (Java does not support multiple
	  inheritance.)
	- Eric Sunshine fixed some warnings and made other minor adjustments
	  to recent changes.
	- Eric sunshine applied a patch from Pablo <caedes@sindominio.net>
	  which fleshes out the skeleton sprcal3dldr. Here are his notes:
	    The format I implemented is very straight-forward:
	      <meshobj name="uruk">
	        <plugin>crystalspace.mesh.loader.sprite.cal3d</plugin>
		  <params>
		    <factory>orc</factory>
		    <animcycle>TestAndadef</animcycle>
		    <idleanim>TestAndadef</idleanim>
		    <idle/>
		  </params>
		   ...
		</plugin>
	      </meshobj>
	    'animcycle' serves for setting an animation in cycle.
	    'idleanim' for defining the idle animation.
	    'idle' sets the cal3d object as 0 velocity (so the idle animation
	    activates).
	- res fixed the TGA loader to better handle truncated source data;
	  previously, it would read beyond the end of the buffer, possibly
	  leading to crashes.
	- Erroroman added translation support for bones in gemesh skeletal
	  animation
	- Adam added the axesChanged bitmask to csJoystickEventData
	- Adam added many-axes support to csMouseEventData
	- res did a bit more work on the fat rl.
	- res changed xmlshader to also report the variation number when
	  reporting the technique used for a shader.
	- res added a built-in shader "*null" to the shader manager which can
	  be used, as the name suggests, when nothing is to be drawn. (Don't
	  laugh, it has its uses.)
	- res fixed a bug in the aligned block allocator policy where the
	  original address was stored outside the allocated block.
23-May-2005
	- res added an implementation of red-black-trees, csRedBlackTree.
	- res started working on the new "fat" renderloop. Can at the moment
	  just render very simple levels (notably, no portals). Still heavy
	  work-in-progress.
	- res applied a patch from groton to fix a couple of issues with AWS
	  that cropped up lately plus a few fixes from res himself.
	- Adam Bradley added generic event support for up to
	  CS_MAX_MOUSE_COUNT simultaneous mice, each with up to
	  CS_MAX_MOUSE_AXES axes (scroll wheel, etc).
	    - Existing interfaces still work; they assume the caller is
	      interested in Mouse #1.
	    - This is pure infrastructure; none of the mouse drivers have been
	      updated to watch multiple mice, or to send information for more
	      than 2 axes.
	- Adam fixed an initialization bug in the Joystick driver that
	  could have overwritten a large region of memory with '\0's.
22-May-2005
	- Wouter Wijngaards changed the event.cpp CS_ASSERT lines, they
	  contained vital functionality. ASSERT content is gone in optimize
	  mode. The vital functionality was taken out of the ASSERT, keeping
	  the check inside the ASSERT statement.
	- Wouter fixed another bad use of ASSERT in cspace.i.
	- res made some OS/X compile fixes.
	- res fixed a VC compile error reported by Chris Kings-Lynne.
	- res changed the document system multiplexer to pick a system that
	  actually supports changing when CreateRoot() is called on a plexed
	  document.
	- res moved csFogRamp into a class "csFogMath" and also added methods
	  to compute opacities for certain distances and vice versa.
        - Vincent Knecht updated the python tutorials for EventHelpers.
          Also changed pysimpcd.py to use opcode plugin instead of rapid.
21-May-2005
	- Wouter Wijngaards fixed a warning message in subrec.h, a typedef
	  does not work well in a friend declaration. And removed unused
	  variable from subrec2.cpp.
	- Wouter fixed a warning about a printf format in blockallocator.h.
	- Wouter updated the cspython plugin with new csCommandEventHelper.
	- Wouter updated the cspace.i for EventHelpers.
	- Vincent Knecht fixed vostest and csvosa3dl.cpp for EventHelpers.
	- Wouter made an untested fix to vossector.cpp to help Vincent.
	- Adam Bradley let Doxygen know about the CS_PURE_METHOD and
	  CS_CONST_METHOD macros
	- res fixed the font plexer to correctly parse font list entries with
	  scaling.
	- res added csBox2::Area() and csBox3::Volume().
	- res fixed a leak in the emit mesh object.
	- res changed the win callstack creator to use a block allocator for
	  call stack objects.
	- res changed the ref tracker to throw away info for objects where the
	  refcount became 0.
	- res create EPS versions of the lately updated screen shots in the
	  KDevelop & MSVC tutorials.
20-May-2005
	- Jorrit added three new functions to iLoader:
	    LoadMap()
	    LoadLibrary()
	    Load()
	  All these functions are variants of LoadMapFile(), LoadLibraryFile(),
	  and the old Load that worked on a filename. These versions work
	  on a document node however.
        - Adam Bradley changed Mouse, Joystick, and Command events over
	  to the "property bag" idiom.
	    - CVS was tagged with PRE_EVENT_UNION_REMOVAL before the change.
	    - This change breaks the Python binding.
	    - Added csMouseEventHelper, csJoystickEventHelper, and
	      csCommandEventHelper classes, and converted all apps and
	      plugins to use them.
	- Adam added event support for more than 2 joystick axes.
	- Adam added Linux support for more than 2 joystick axes.
	- Adam added CS_CONST_METHOD and CS_PURE_METHOD macros to wrap
	  gcc __attribute__((const)) and __attribute__((pure)).
	- Adam added CS_CONST_METHOD, CS_PURE_METHOD, and const types
	  to lots of input helper and state-querying functions.
	- Vincent Knecht fixed a few more apps and plugins for event helpers.
	- res optimized csSubRectangles a bit. Previously, the regions tree
	  would be traversed beginning from the root, and each node checked
	  whether enough estate would be available. However, that means that
	  only the leaves are ever truly checked whether a rectangle fits.
	  Instead of traversing the tree, the leaves are now kept in a list.
	  Also, instead of a global allocator, each csSubRectangles keeps its
	  own block allocator.
	- res fixed the dsplex plugin metadata to contain a
	  "crystalspace.documentsystem." dependency so plugins tagged with
	  "System.Plugins.iDocumentSystem.N" are properly loaded.
	- res changed the AWS Jamfile to also define YY_NEVER_INTERACTIVE for
	  the AWS parsers for non-MSVC platforms.
	- Luca replaced some "event.Command.Code" with "csCommandEventHelper
	  (&e)" in the Win32Assistant and the csSoundRenderDS3D classes. He
	  corrected also a simple spelling error in
	  csGenmeshSkelAnimationControlType.
	- res fixed a VC8 warning caused by CS_IMPLEMENT_STATIC_CLASSVAR_REF.
	- res adjusted the recently changes event-related headers and sources
	  to the 80 chars per line limit CS mandates.
19-May-2005
	- Wouter Wijngaards changed the csfgen font information print
	  to %d for the Underline position integer.
	- res added csApplicationRunner<> to provide a convenient way to have
	  restartable applications.
	- res changed a couple of examples to use csApplicationRunner<>.
	- res added a small blurb to simple* about the csApplicationRunner<>
	  purpose and updated the simple1 and simpmap tutorials in the manual
	  to use it, too.
	- Erroroman improoved genmesh skeleton animation plugin:
	    -"always update" flag of animation by default is false.
	    - Added iGenMeshSkeletonControlFactory that inherits
	      iGenMeshAnimationControlFactory.
	    - iGenMeshSkeletonControlFactory allows loading animation
	      scripts from file and deleting already loaded scripts (not
	      ready atm :| ).
	    - Added missing SetTransform function to iGenMeshSkeletonBone.
	    - Added small hacky tric to genmesh.cpp to force skeleton
	      creating even object is not visible.
	    - Improoved skeleton updating if mesh is not visible and
	      "always update" flag is true.
	    - Added iGenMeshSkeletonBoneUpdateCallback struct that can be
	      user defined to every iGenMeshSkeletonBone. By default
	      it just applies new transform to the bone. Callback is
	      usable for example to move bone collider.
	    - Removed event handling from iGenMeshSkeletonControlState.
	    - Added event handling to csGenmeshSkelAnimationControlType where
	      it updates all "alwas update" animations.
	- Wouter made static string in bitmasktostring use the CS static
	  variable macros.
	- Wouter made xwindow plugin properly cleanup the windows on restart.
18-May-2005
	- Peter Amstutz changed iProgressMeter::Step() so that it takes an
	  unsigned int parameter indicating the number of steps to advance
	  the meter (with a default value of 1)
	- Peter Amstutz added progress meter support to the csvosa3dl plugin
	- Wouter Wijngaards added the new iProgressMeter::Step() in cslight.
	- res fixed a couple of OS/X Tiger compile problems reported by Per
	  Eckerdal.
	- res made the Cg plugin report program profiles in verbose mode.
	- Wouter Wijngaards added 0 initialization for binormalVerticesNum
	  and tangentVerticesNum in gl_polyrender.h. It could cause a crash.
	- Wouter Wijngaards removed unused G3DFOGMETHOD from igraphics3D.h.
	- Wouter Wijngaards added GetCaps() support to Soft3d so now walktest
	  works with r3dtest level in software mode.
	- res fixed a problem in csShaderProgram::RetrieveParamValue() were
	  parameters that are retrieved from the supplied shader var stacks did
	  not get a proper parameter type set. This manifested itself in e.g.
	  a non-working parallax shader.
	- res fixed some memory leaks and crashing in the bindoc plugin.
	- res changed the xmltiny plugin class implementation from a class that
	  creates a csTinyDocumentSystem instance on the heap to an extension
	  of csTinyDocumentSystem that just adds iComponent. This should avoid
	  ref-counting related issues with xmltiny.
	- res augmented csfgen to store some of the lately added font
	  attributes in CSF files.
	- Eric Sunshine moved a number of the important downloadable CS
	  resources, such as cs-win32libs, over to
	  http://www.crystalspace.org/support/ from
	  ftp://sunsite.dk/projects/crystal/ since some people still have
	  trouble accessing sunsite.dk (and because sunsite.dk isn't always
	  reliable).
	- res made some changes to allow for a smooth restart of CS. Changes
	  include:
	    - Added logic to reset static variables (created with the static
	      variable macros) to 0 when they're destroyed.
	    - Added logic to reset cached SCF IDs to -1 on shutdown.
	    - Fixed the Win32 port to post a Windows quit message only when
	      the window is closed by the user, not upon destruction.
	- res changes the simpvs app to present the video switching menu all
	  the time. When a selection is made there, the new renderer will be
	  stored in the configuration and CS restarted.
17-May-2005
	- Jorrit fixed a compile error in the DDS saver.
	- Jorrit removed the virtual destructor in iBase and csRunnable
	  as it causes bad problems on destruction of mesh wrappers for
	  some weird reason (pure virtual calls at destruction).
	  The warnings with GCC4 will have to be solved some other way.
	- Jorrit fixed a problem in the csKDTree code which could cause
	  frustvis and dynavis to get into infinite recursion in some very
	  rare cases.
	- res added support for mipmap generation to gfxtest.
	- res added DXT5 compression support to the DDS saver.
	- res made the PNG, JPG, JNG savers use csImageLoaderOptionsParser.
16-May-2005
	- Eric Sunshine fixed gristing problem in newly re-written Doxygen rule
	  (docs.jam) which potentially caused Doxygen support files (images and
	  style sheets, for instance) to be copied to the wrong output
	  directory if the Doxygen rule was invoked multiple times (such as
	  once for the 'apihtml' target and once for the 'apidevhtml' target).
	- res fixed some AWS compile errors on MinGW/GCC 3.4.2.
	- res added a #define for strtoll for MSVC (which is there called
	  "_strtoi64") so strtoll can be used anywhere string->longlong
	  conversions are needed.
	- res added the ability to iTextureHandle::Blit() to optionally accept
	  BGRA data.
	- Eric Sunshine converted dynamic_cast<> usage in AWS to static_cast<>
	  since, in each case, the object being cast was known to be of the
	  desired type, so the dynamic_cast<> was overkill. More importantly,
	  this alleviates the need to enable RTTI for the AWS plugin.
	- res made the following changes to DDS saving:
	    - Added support for mipmaps, cubemaps, volume maps (tho the latter
	      two untested) and lifted the limit of PO2-only textures.
	    - Made the DXT compression better support images <4x4.
	    - Made dithering optional (default is off).
15-May-2005
	- Eric Sunshine fixed memory leaks in the csPathsList::Entry copy
	  constructor.
	- Eric Sunshine fixed a number of bugs and copy/paste errors recently
	  introduced into cel.m4. The most serious issues included:
	    - CEL test program succeeded _always_ if the CS test program had
	      succeeded regardless of whether the CEL SDK itself was actually
	      usable.
	    - CEL test program attempted to #include <cssysdef.h> but was never
	      told where to find the CS headers.
	    - CEL test program invoked CS_IMPLEMENT_APPLICATION, which results
	      in declaration of two main() functions on Windows, which leads
	      ultimately to failure.
	    - Name of variable to enable/disable the CEL test program did not
	      match variable used later in script.
	- Eric Sunshine fixed a lot of Texinfo markup problems in the AWS
	  documentation, as well as some grammatical and spelling errors.  Also
	  renamed component_funcs.txi and window_funcs.txi to
	  componentfuncs.txi and windowfuncs.txi, respectively, since the
	  underscores caused TeX to barf.
	- Eric Sunshine rewrote the documentation generation Jam rules
	  (docs.jam) entirely from scratch, enhancing them and repairing
	  defects.
	    - The documentation rules are now completely self-contained.
	      Removed the ugly support scripts runmakeinfo.sh, runtexi2dvi.sh,
	      and runtexi2html.sh.
	    - The rules now do a much better job of cleaning up after
	      themselves by removing files needed only during the actual
	      conversion process. They also avoid copying files unnecessarily.
	    - The TeX, PS, and PDF conversion actions now capture output from
	      the invoked tools and direct the user to consult the captured
	      information when problems are detected. Previously, the
	      documentation rules unconditionally threw away all generated
	      output, which made it impossible to diagnose conversion problems.
	    - The TeX conversion rule now actively scans the captured output
	      for TeX `hbox' warnings and informs the user to consult the
	      captured output when they are detected. Previously, this
	      information was simply thrown away, which made it impossible to
	      determine if TeX was emitting complaints about formatting.
	    - The documentation conversion rules now perform proper dependency
	      tracking, which means that they now know whether or not a
	      converted document needs to be re-generated. Previously,
	      conversion occurred unconditionally each time the conversion
	      targets were invoked.
	    - Simplified client-side usage by making all of the conversion
	      rules available even if the necessary tools are not found (in
	      which case the rules become no-ops). This way, clients can invoke
	      the rules unconditionally, without having to know the underlying
	      implementation details, such as which tools are employed by each
	      rule.
	    - Greatly enhanced the documentation for the documentation
	      generation rules.
	- Wouter Wijngaards added a check to the software sound renderer to
	  guard against multiple calls of Open(). It would deadlock otherwise.
	- res fixed some gcc compiler warnings in the Win32 port.
	- res added saving support to the DDS plugin. Currently can only save
	  power-of-two 2D images without mipmaps and supports B8G8R8, A8B8R8G8,
	  DXT1 and DXT3 formats (latter two by utilizing Jason Dories' PD
	  image library).
	- res corrected the "a8r8g8b8" texture format to "a8b8g8r8".
	- res fixed a number of Linux compiler errors in the DDS plugin.
	- res worked around the gcc4 "non-virtual destructor" warning spam
	  for interfaces (and some other classes, too).
14-May-2005
	- Eric Sunshine fixed more compilation errors and warnings in AWS
	  reported by gcc. (There are still some additional errors unresolved,
	  though.)
	- Wouter fixed a print call in scanplugins.cpp.
	- res added csInstallationPathsHelper::GetPlatformInstallationPaths()
	  for OS/X.
	- res changed csPathsList to better deal with "/" entries.
	- res fixed a wrong message ID in the particles loader.
	- res fixed a bug in csStringBase where replacing a string with an
	  empty string didn't work.
	- res made some compile fixes to syspath.cpp.
	- res added a test for csPathsList.
	- Erroroman added missing <?include snippets/fog-pass.inc ?> in
	  terrain_fixed_base.xml.
	- Erroroman updated export_genmesh_skelanim.mcr to support Skin
	  modifier and bones.
	- res fixed botched string splitting in
	  csPathsList::csPathsList(const char*).
	- res added an alternative way to VFS to scan for data locations.
	  As before, first the application resource and application directories
	  are scanned for vfs.cfg files, after that, a list of possible vfs.cfg
	  locactions based on the list of installation paths is scanned. The
	  first directory of the installation directory list is taken as the
	  "base directory". If that list actually does not contain a directory
	  with vfs.cfg, the first of the app. res. and app. directories is
	  taken as the base dir (this is different from the old behaviour). To
	  get the old behaviour (only scan single dir, don't use app. res. or
	  app. as base dir) #undefine NEW_CONFIG_SCANNING.
13-May-2005
	- res changed the win32kbd_identstrs.h to only use the "recent key
	  codes" when VK_SLEEP is actually present (and not based on compiler
	  type and version).
	- res changed the VC project generator to also generate a single big
	  library for static projects. Also added some support for static
	  plugins in external (VC) projects.
	- res applied a patch from Seth Yastrov <syastrov@gmail.com> to
	  augment the iRenderStepContainer interface with get, delete, and
	  find methods.
	- res removed std::string from the AWS headers; while use of the STL
	  is accepted inside plugins, it is not a good idea to use it in
	  interfaces, as there's no guarantee on binary compatibility
	  (e.g. implementations of stl::string from different e.g. compiler
	  versions might be incompatible). Also, it necessitates the inclusion
	  of <string>, which means that through the crystalspace.h header
	  external projects are suddenly "contaminated" with STL includes.
	  Lastly we prefer the use of our own containers in public headers.
	  The offending method has been replaced with one that replaces the
	  contents of a user-supplied iString*.
	- res removed iAwsPrefManager::GetString() that changes a user-provided
	  reference to an iString*. This is not safe as it does not ensure
	  proper refcounting; also, it differs semantically from the other
	  Get*() methods as a reference to the original value is returned and
	  not a copy. (That allows to change the value without going through
	  the proper accessor methods.)
	- res removed usage of csString from some interfaces.
	- res worked around a compile error in the Cg plugin reported by
	  Sebastien Marchal where the WIN32 macro was used in an #if, however,
	  it is not always defined with a value.
	- res wrapped a number of functions in syspath.h into a static class.
	- res added some functions to generally deal with lists of paths. The
	  idea is to work towards proper support of the fact that CS can be
	  spread out over multiple directories, to also inconveniences like the
	  inconsistent meaning of the path returned csGetConfigPath() across
	  platforms (and inversely make things like plugin and vfs.cfg
	  searching more consistent across platforms) but also to offer some
	  tools for external projects to deal with installation path issues.
	- res renamed csPluginPaths to csPathsList to reflect its more general
	  use.
	- res enabled some new plugin paths determination code that is shared
	  by all platforms (can be disabled by #undefining NEW_PLUGIN_PATHS in
	  scf.cpp).
12-May-2005
	- Eric Sunshine augmented the ResponseFile rule in helper.jam so that
	  it respects the LOCATE variable (possible set by the MakeLocate rule)
	  on the generated file rather than always assuming that
	  $(LOCATE_TARGET) should be used if the directory was not specified
	  explicitly at rule invocation.
	- Eric Sunshine resolved "using independent target" warnings issued by
	  Jam when creating static-linking goop and during mscvgen runs. Also
	  simplified the GenerateStaticPluginFoo rules in static.jam a bit.
	- Eric Sunshine rewrote the Help rule in help.jam so that the padding
	  of the target and description columns is performed directly by Jam
	  rather than by external commands. This should give some overall
	  speed-up of "jam help", especially on Windows where process creation
	  is expensive and slow.
	- res added a small blurb with notes on string formatting in CS to the
	  API docs.
	- Christopher Nelson applied patch to AWS from Bedrich Zaba
	  <frogbride@seznam.cz>:
	    - Component destroy signal added (component is not destroyed
	      immediately, but during the preprocess event of the next frame,
	      because the pointer to the source component must be valid in slot
	      call).
	    - Command button:
	        o Errors about missing textures are written out when Bitmap
		  style used.
		o Bitmap screen position dependency on button state removed (1
		  pixel offset).
		o When Bitmap style used then no caption is drawn.
	    - Support for custom string properties.
	    - Protection against double registering of slot.
	    - Report line number of parse error.
	- Christopher Nelson added AWS automation support files.  Initial
	  implementation of safe, scriptable properties.
	- Christopher Nelson added AWS bound properties.  They bind to some
	  pre-existing variable (such as a member class variable) and handle
	  all the conversion to/from that type from the type-agnostic
	  automation objects.  They also include overloaded convenience
	  functions that let you set the value using the native type (e.g,
	  csRect, int, float.)
	- Christopher Nelson added new AWS type-safe, SetProperty()
	  with overloaded convenience functions.  Uses the property
	  bag to find the property, and the automation type to
	  transfer the value.  None of the old property code has been
	  removed.  I will first change over all the widgets that use
	  it, then the apps, then remove the old shtuff.
	- Christopher Nelson added AWS GetProperty() functions similar to the
	  SetProperty functions.
	- Christopher Nelson added sigslot implementation from
	  sigslot.sourceforge.net to AWS.  This is actually the fixed version
	  from a link on the forums that actually compiles with recent
	  compilers.  Also added two signals to the properties.  You can
	  subscribe to both the Binding and Changed signals.  The Binding
	  signal is fired whenever a property is bound to a given name.  (A
	  property may only be bound to one name at a time.)  The Changed
	  signal fires each time a successful Set operation occurs.  Trying to
	  Set a read-only property never results in signal generation.  In this
	  way it is simple for a programmer to know when changes to any given
	  property occur.
	- Christopher Nelson Added several fixes, made some functions much more
	  std::string friendly.  I also added full automation for awsComp.
	  This includes scripting functions for show, hide, and move_to.
	    - The Execute() function now runs scripts, and is much more
	      friendly than the old execute function.
	    - Parameters can now be embedded into the call, just like you
	      would expect with any normal scripting language.  This will be
	      useful for embedding actions into window definition files, and
	      filling up list boxes, etc.
	    - The checkbox widget now has the new properties built-in, as well
	      as the new signal architecture.  The old stuff still works for it
	      too.
	- res made a number of VC compile fixes to AWS.
	- res disabled the code to check for EXT_framebuffer_object to ensure
	  it is really not used (not ready for prime time yet).
	- res fixed a logical inversion in the texture manager.
	- res removed the essentially unused plugins/engine/3d/stats.* files.
	- res made a small optimization to
	  csGraphics2DGLCommon::GetPixelFormatString().
11-May-2005
	- res fixed the crystalspace_staticplugins target to be independent;
	  i.e. it is not being built when the other libs are.
	- res added a proper clean rule for the static deps file.
	- res fixed a linking issue where a lib dependency was passed to the
	  linker before the depending lib instead after it.
	- res added a "staticplugins" convenience target to build the static
	  plugins and other needed libs at once.
	- res fixed the static use files generated for VC projects.
10-May-2005
	- res further worked towards an easier use of static plugins for
	  external projects:
	    - External dependencies etc. are dumped into a Jamfile.
	    - cs-config has been augmented to report above Jamfile so it can
	      be employed by external projects.
	    - The LinkStaticPlugins rule is now suitable to be employed by
	      and for external packages.
	    - Miscellaneous changes and additions to make static linking in
	      external projects work.
9-May-2005
	- res cleaned up some of the static plugin related stuff and changes
	  as suggested by Eric.
	- res moved the staticplugins library creation into a rule in
	  static.jam to facilitate reuse.
	- res made CCFLAGS and C++FLAGS be properly copied to static lib
	  objects.
	- res made BisonFlags work with subvariants.
	- res added a install_staticplugins target.
	- res added support for "optional" libraries; this affects the
	  behaviour of cs-config for such libs: they are only reported as
	  available if they were actually built.
8-May-2005
	- res made the following changes:
	    - Fixed a 64-bit compilation error in sprcal3d.
	    - Changed the GL renderer to query the maximum clip plane number
	      from GL instead of using a hardcoded 6.
	    - Fixed phystut to use the correct csString::FormatV() instead of
	      Format() in one place.
	    - Fixed csParticleSystem to correctly support mesh objects being
	      rendered multiple times a frame.
	    - Fixed an use of 'int' instead of 'size_t' in csPDelArray.
	- Eric Sunshine augmented checklib.m4 so that it also consults
	  /opt/local and /opt when looking for pkg-config files, foo-config
	  scripts, and raw library installation locations since /opt/local is
	  the default installation of DarwinPorts packages.
5-May-2005
	- res fixed a VC7.0 linking error related to
	  csColliderHelper::InitializeCollisionWrapper(). (See collider.h for
	  details.)
3-May-2005
	- Eric Sunshine updated various resources to point at Crystal Entity
	  Layer's new official domain cel.crystalspace3d.org.  (We also respond
	  to cel.crystalspace3d.net and cel.crystalspace3d.com.)
	- Eric Sunshine updated spoofdir.php so that it filters out .dot files
	  by default since these typically are meant to be hidden.
2-May-2005
 	- Eric Sunshine fixed compilation error in MakeAString::~MakeAString()
	  in gl_render3d.h where MSVC6 was not able to see through typedef in
	  explicit destructor invocation.
	- Eric Sunshine resolved a bunch of compilation warnings and errors
	  reported by gcc4.
	- Eric Sunshine removed the ability to set the so-called `Apple' menu
	  via csutil/macosx/OSXMenu and data/config/macosx.cfg.  Apparently,
	  this feature has become obsolete in MacOS/X 10.4 and is no longer
	  available in the Cocoa API (though I could not find any information
	  about the deprecation in the Cocoa release notes).
	- Eric Sunshine blindly worked around compilation error on MacOS/X 10.4
	  where Apple-provided headers IOGraphicsTypes.h and MacTypes.h,
	  included indirectly by OSXDelegate.m, were both declaring
	  (incompatible) `Point' types.
	- Jorrit extended iEventTimer and csEventTimer with methods to query
	  the number of events and how much time they need before firing.
	- Jorrit fixed serious logical errors in the csEventTimer class.
	  It was not handling accumulated elapsed time well after the first
	  time.
	- Eric Sunshine applied some more ugly 64-bit printf()-format directive
	  hacks to csevent.cpp.
	- Eric Sunshine eliminated all of the `#if' special-cases for the
	  default csHashComputer<> by using uintptr_t as a common-denominator.
	  Also added a csRef<> specialization of csHashComputer<> to make
	  csRef<> work with the simplified default csHashComputer<>. (This was
	  necessary in order to get csHashComputer<> working on 64-bit
	  platforms, though Frank and I are discussing various other solutions,
	  so this particular implementation detail may change in the near
	  future.)
	- Jorrit fixed a bug in the new csEventTimer->GetTimeLeft(). It wasn't
	  correcting the return value for the accumulated elapsed time.
	- Eric Sunshine fixed configure.ac so that it adds
	  -fvisibility-inlines-hidden to C++FLAGS rather than CFLAGS since this
	  is a C++-only option.
	- res changed the way the default csHashComputer<> works; instead of
	  casting the key value to an uint, it rather assumes the key type has
	  a method 'uint GetHash() const' which is used. A side-effect of this
	  change is that pointers (e.g. Foo*) can't be directly used as hash
	  keys any more; instead, csPtrKey<> must be used (e.g. csPtrKey<Foo>).
	- res fixed a software renderer crash introduced with the
	  GetMeanColor() removal.
1-May-2005
	- res removed iTextureHandle->GetMeanColor() which was of questionable
	  use.
	- res removed the "SpecStrings.h quirk". The latest version of the
	  Win32 Platform SDK seems to fix the issues, no macro redefinitions
	  are reported.
	- res removed the ARRAYSIZE macro from the opcode plugin as it
	  conflicted with a macro of the same name from the latest Platform
	  SDK.
30-Apr-2005
	- Eric Sunshine added csRef<>::operator< so that csRef<> can be used as
	  the subject of csComparator<>, which uses operator< for comparisons.
	- res changed the null renderer texture handle to not keep a ref to
	  the image.
	- res removed some unnecessary code from
	  csNullGraphics3D::DrawPixmap(), which amounts to "everything" as the
	  renderer is a "null" renderer after all.
29-Apr-2005
	- Eric Sunshine worked around flaw in SplitToList in helper.jam which
	  made it entirely non-functional. The problem was that when Jam sees
	  an invocation of the `Match' function, it treats its first argument
	  as a literal regular expression, and does not do any variable
	  interpolation. This means that an expression, such as
	  "(.*)$(sep)(.*)" will not be interpreted as expected; it will instead
	  be interpreted as an invalid regex. To work around this limitation,
	  `Match' is now instead invoked indirectly.
	- Eric Sunshine made a few small corrections and enhancements to
	  documentation and Doxygen comments.
	- Eric Sunshine extracted the various plugin meta-info embedding checks
	  from configure.ac and wrapped them in a new macro named
	  CS_META_INFO_EMBED() in embed.m4 so that the functionality can be
	  re-used by external projects.
	- Eric Sunshine updated jamtemplate's configure.template to utilize the
	  new CS_META_INFO_EMBED() macro. This allows external projects to
	  employ meta-info embedding easily for their own plugins (no extra
	  effort required).
	- Eric Sunshine augmented the CS_SUBST_EMITTER() and
	  CS_DEFINE_EMITTER() macros in emit.m4 so that they properly transform
	  the KEY argument into a form suitable for the output medium. For
	  instance, if some macro attempts to emit the variables MYLIB.CFLAGS
	  and MYLIB.LFLAGS via CS_SUBST_EMITTER(), then it will transform the
	  names into valid shell variables MYLIB_CFLAGS and MYLIB_LFLAGS,
	  respectively. This makes it safe to use these two emitters with the
	  many Autoconf checks which have been authored for use with Crystal
	  Space and its clients. As a corollary, removed the recently-added
	  (7-Apr-2005) DELIMITER argument from CS_EMIT_BUILD_RESULT() since it
	  essentially was an ugly hack to make it safe to use
	  CS_SUBST_EMITTER() with CS_EMIT_BUILD_RESULT(). The new approach is
	  much cleaner and fully automatic.
	- Eric Sunshine fixed bug in CS_CHECK_PYTHON() in checkpython.m4 where
	  it behaved differently between cached and uncached runs;
	  specifically, it emitted the PYTHON.MODULE_EXT build variable only
	  for uncached runs.
	- Eric Sunshine added a `texi2pdf' check to configure.ac since the
	  Texi2PDF rule in docs.jam will utilize this tool if present.
	- Eric Sunshine added numerous checks to jamtemplate's
	  configure.template for tools commonly used by the Crystal Space Jam
	  build system.
	- Eric Sunshine fixed problem with the csQsqrt() in configure.ac which
	  made it fail always. Specifically, it was trying to include
	  <cssysdef.h> despite the fact that <cssysdef.h> is unusable before
	  the project has been configured.
	- Vincent Knecht updated Installdata and vfs.cfg.template to add the
	  teapot so that flarge level is usable when installed.
28-Apr-2005
	- Eric Sunshine removed csSet<>::GetHash() since it exposed internal
	  implementation details of csSet<> and was unnecessarily dangerous.
	- Eric Sunshine upgraded CS/docs/texinfo/texinfo.tex to the latest
	  master version maintained by GNU.
	- Eric Sunshine resolved a number of `hbox' warnings, plus some errors
	  reported by TeX.
	- res renamed csOrdering<> to the more general csComparator<>.
	- res changed csHash<> from using so-called "hash key handlers" to use
	  the csHashComputer<> and csComparator<> templates to perform hash
	  computation resp. key comparison.
	- Piotr Obrzut added Universal and Slider joints into strict ODE
	  joints interfaces.
	- Piotr Obrzut fixed bug in latest bugfix in
	  iRigidBody->GetTransform().
	- Piotr Obrzut moved creating/delating strict ode joints functions .
	  from iDynamicSystem to iODEDynamicSystemState.
	- res made a few Doxygen fixes.
	- res fixed a small bug in the engine where engine.cfg wasn't used when
	  the "Engine.RenderLoop.Default" setting was checked.
	- res added small helper templates for simple string comparator and
	  hash computer creation and added such for csStringBase.
	- res fixed some warnings in map2cs, viewmesh and cssaver.
	- res fixed xwindow to compile again.
27-Apr-2005
	- Erroroman fixed a bug in iRigidBody->GetTransform() where wrong
	  matrices were used. ODE works only with t2o matrices for geometry
	  transforms, but they were passed like o2t matrices to CS transforms.
	- Jorrit fixed a bug in csColliderHelper::InitializeCollisionWrapper().
	  In case the factory had a collider mesh then the routine would
	  create a collider from that and ignore the children of the mesh.
	- Jorrit changed csColliderHelper::InitializeCollisionWrapper() so that
	  it now returns the collider wrapper that was created.
	- res slightly changed the Jamfile in include/ to specify deprecated
	  headers separately from the other rejected headers. (The idea is that
	  deprecated headers will probably be removed at some point, and then
	  they're hopefully easier spotted in the rejects and less likelier
	  forgotten to be removed.)
26-Apr-2005
	- Jorrit fixed a mention of the removed 'Prepare()' from the
	  pixmap howto.
	- res patched texi2html to use section numbers (e.g. 1.1.2, where
	  available) instead of names with numbers counted from the first
	  section (e.g. SEC353) to reduce the number of updates caused by
	  inserting a new section.
	- Luca replaced in the AWS documentation the wrong name for the
	  signalChanged of the TextBox (the correct name is
	  signalTextBoxChanged), and added the documentation for the others
	  TextBox's signals as well.
	- res changed the Jam static plugins support to create one big library
	  "crystalspace_staticplugins" instead of a single lib for every
	  plugin.
	- res moved the static plugins list from Jamrules to the walktest
	  Jamfile (where it really belongs).
25-Apr-2005
	- res added a teapot mesh provided by Erroroman.
	- Jorrit added a new syntax for <library>. You can now specify:
	    <library path="/lib/bla" file="library" />
	  In this case the VFS current dir will be set to /lib/bla so that
	  you can just specify files relatively in the library itself.
	  The old syntax still works and behaviour hasn't changed there.
	  That means that with old syntax the VFS path is not changed.
	- res converted the teapot texture to a PNG.
	- res removed csRenderMeshHolderMultiple (equivalent functionality can
	  be achieved by using csFrameDataHolder<csDirtyAccessArray<
	  csRenderMesh*> >) and renamed csRenderMeshHolderSingle to
	  csRenderMeshHolder.
	- res moved csSet<> out of csutil/hash.h into its own header file.
	  While csSet<> internally depends on csHash<>, this is an
	  implementation detail that could change in the future. Hence, to
	  hide this detail and reduce the need to make any adjustments in case
	  the implementation of csSet<> would change the class has been
	  relocated.
	- res worked around some static linking issues with dynavis_debug.
	- res removed uses of strncpy(). (strncpy() does more than you expect
	  [it fills the destination buffer up to then end with 0] and less
	  than you want [it doesn't guarantee null termination].)
	- res fixed some signed vs unsigned warnings.
	- res changed the "listplugins" bugplug key from Ctrl+Alt+P to
	  Ctrl+Alt+L to fix a collision with the "fps" command.
24-Apr-2005
	- res fixed some issues with Z-filling portals (which didn't exactly
	  Z-fill).
	- res fixed SetupClipPortals() to clear the stencil buffer before
	  drawing the stencil mask. Previously, when nested floating portals
	  were used, the stencil mask of "inner" portals was merely added to
	  the mask of "outer" portals due the lack of clearing.
	- res worked around an issue were, when to close to a portal polygon,
	  the polygon would get clipped and stencil & Z filling would be
	  wrong.
	- Vincent Knecht updated rpm/cs.spec:
	    - Removed csbumptest.cfg occurences.
	    - Changed release numbering scheme so one knows the date of
	      tested snapshot.
	    - Put maps relighting in a for loop. Added terrain and terrainf
	      to the list.
	    - Changed occurences of %{name} to %{csprefix} where value is
	      not dependent upon package name.
	- res moved the object-to-world transform back into csCoreRenderMesh.
	  This is less problematic than transferring this in an SV as under
	  some circumstances every rendermesh of a mesh object needs separate
	  object-to-world transforms (spr2d is an example), but usually a mesh
	  uses a single SV context for all RMs.
	- res fixed csNewParticleSystem to properly handle the case were the
	  mesh is drawn multiple times a frame (as it e.g. happens with the
	  fountain in flarge).
23-Apr-2005
	- res updated the JPG versions of the screenshots for the KDevelop,
	  VC6 and VC7 tutorials to reflect the library consolidation and
	  renaming of WIN32_VOLATILE to CS_WIN32_CONFIG.
	- res changed texi2html.init to not emit a comment with the current
	  date.
	- res added support for the new GCC 4 ELF visibility features. When
	  available, the default visibility is "hidden", and only when
	  functions or classes are exported their visibility is "default".
	- res fixed z-fill support in GL ClosePortal().
	- res changed the fixed terrain render loop to do portal traversal in
	  the "standard", not "ambient" step.
	- res augmented csIdentStrings to return the value of an identifier if
	  no appropriate string was found.
	- res changed the caca test to also check for "-llibcaca" (needed for
	  cs-win32libs caca).
	- res changed the ELF visibility features to only be used for optimize
	  builds. (The idea is that it might be useful in some cases, e.g. when
	  debug utilities don't use the debug information but rather only the
	  list of externally visible symbols for symbol name resolution.)
	- res worked around visual borkedness in the "terrain" level caused by
	  the splatting and base layers being drawn when they shouldn't.
22-Apr-2005
	- res changed the default setting for "delayed swap" to "disabled" when
	  no configuration setting is present.
	- Jorrit fixed meshlib in csparser so that it will add the sector to
	  the mesh instead of just setting it. That way you can use meshlib
	  to put a mesh in multiple sectors.
	- res fixed a bug WalkTest::GfxWrite() where csString::Format() was
	  used when FormatV() should have been.
	- res fixed csLoader::LoadStructuredMap() to properly restored the old
	  VFS directory when a ChDir() was performed.
	- res made the new operators in csutil/mempool.h non-static as GCC 4
	  doesn't like that.
	- Eric Sunshine fixed memory leak in csPython::Store().
	- Eric Sunshine fixed compilation error in csPython on some 64-bit
	  platforms caused by assignment of array to an array (va_list to
	  va_list).
21-Apr-2005
	- Eric Sunshine augmented CS_MASTER_HEADER_REJECTS in
	  CS/include/Jamfile so that it filters out of the <csutil.h> master
	  header all of the cs-win32libs headers, as well as the new
	  special-purpose <csutil/win32/SpecStrings.h>.
	- Eric Sunshine fixed `delete' vs. `delete[]' bug in csMemoryPool.
	- Eric Sunshine fixed a few problems in various unit tests reported by
	  valgrind.
	- Eric Sunshine augmented configure.ac so that the "enable exceptions"
	  check also attempts to employ -fno-omit-frame-pointer, since the
	  omission of frame pointers is incompatible with exception handling.
	  (One would think, therefore, that g++ would employ this option
	  automatically when it sees -fexceptions, but it doesn't.) This fixes
	  problem where unit-test driver program itself would crash in
	  "optimize" mode whenever one of the tests failed.
	- Eric Sunshine fixed problem in csOBB::FindOBBAccurate() in which very
	  tiny differences in vector lengths between optimize and debug modes
	  resulted in different vectors being chosen for composition of the new
	  matrix. This tended to result in very large differences in the
	  client's view when it retrieved the box's corners, which essentially
	  were scrambled between optimize and debug modes. This correction
	  fixes the failure of the csOBBTest test-unit (obb.t) in optimize
	  mode.
	- mdmkolbe fixed an uninitialized variable warning and an
	  unsigned/signed comparison warning in GCC.
	- res made all the renderloops to employ the <defaultshader> feature.
	- res augmented the map loader to change into the directory containing
	  a renderloop before loading it from file.
	- res fixed a VC8 warning in cscaca.cpp.
	- res made some minor cleanups in the GL renderer.
20-Apr-2005
	- Eric Sunshine fixed launch and termination crashers in partedit.
	- Eric Sunshine fixed configuration problem in texi2html.init which
	  caused texi2html v1.76 to emit <img src="..."> tags with paths to the
	  images in the original source directory (such as
	  "../docs/texinfo/foo/bar.jpg") rather than correct paths relative to
	  the output directory (such as "foo/bar.jpg"). This prevented images
	  from displaying in the generated HTML translation of the CS manual.
	- Eric Sunshine renamed the following csRegExpMatchError and
	  csRegExpMatchFlags constants in order to avoid global namespace
	  pollution.
	    BadBraces      --> csrxBadBraces
	    BadPattern     --> csrxBadPattern
	    BadRepetition  --> csrxBadRepetition
	    ErrBraces      --> csrxErrBraces
	    ErrBrackets    --> csrxErrBrackets
	    ErrCharType    --> csrxErrCharType
	    ErrCollate     --> csrxErrCollate
	    ErrEscape      --> csrxErrEscape
	    ErrParentheses --> csrxErrParentheses
	    ErrRange       --> csrxErrRange
	    ErrSpace       --> csrxErrSpace
	    ErrSubReg      --> csrxErrSubReg
	    ErrUnknown     --> csrxErrUnknown
	    IgnoreCase     --> csrxIgnoreCase
	    NewLine        --> csrxNewLine
	    NoError        --> csrxNoError
	    NoMatch        --> csrxNoMatch
	    NotBOL         --> csrxNotBOL
	    NotEOL         --> csrxNotEOL
	- Eric Sunshine removed the do-nothing csUtilDebugHelper.
	- Eric Sunshine migrated the csPolygonMesh unit tests out of
	  csgeom/math3d.cpp and over to csgeom/t/polymesh.t in the new
	  cppunit-based testing framework. Invoke `jam check' to run the tests.
	- Eric Sunshine migrated the csOBB unit tests out of csgeom/math3d.cpp
	  and over to csgeom/t/obb.t in the new cppunit-based testing
	  framework.
	- Eric Sunshine augmented unittest.jam so that it adds an appropriate
	  help message to `jam help'.
	- Eric Sunshine added 'jam install' goop for CS/data/shader/snippets.
	- res fixed some warnings reportedly emitted by GCC in winprintf.cpp.
	- res added a method to csCursorConverter to generate a 1bpp cursor,
	  but foreground and background color are automatically determined
	  (instead of having to be provided by the user).
	- res fixed VS8 compiler warnings caused by a wrong include order in
	  tritri.cpp and also made the FABS macro use fabsf().
19-Apr-2005
	- Eric Sunshine enabled the Microsoft HTML Help "search" feature in
	  CS/docs/support/winhelp/csapi.hhp and csmanual.hhp. This allows the
	  user to perform arbitrary searches in the generated help file, thus
	  making it much more useful.
	- Eric Sunshine disabled $USE_ISO in CS/docs/support/texi2html.init
	  since it caused the Texinfo @result{} to be rendered as an unknown
	  glyph in the Microsoft Compressed Help (.chm) files (at least on the
	  Windows platforms I tested which, admittedly, are old).
	- Khaki Lord added two new functions csIntersect3::TriangleTriangle().
	  These replace the old and partially broken function
	  csMath3::FindIntersection().
	- res made some tweaks to the VC7 project templates and some headers
	  to have VC8beta2 compile CS happily.
18-Apr-2005
	- Eric Sunshine augmented csdef.h so that it also fakes up the
	  floating-point cosf(), sinf(), sqrtf(), etc. if strict-ANSI
	  conformance is requested (via gcc's -ansi and -pedantic options, for
	  instance). According to research, these functions are not specified
	  in any standard, though they are noted in "Future Library
	  Directions". http://docs.hp.com/en/B2355-90695/sqrt.3M.html
	- res fixed the user manual to have a index.html again.
	- Peter Amstutz fixed a bug in csutil/blockallocator.h wherein if a
	  destructor called by DisposeAll() in turn Free()'s an object from the
	  same allocator, it triggers a double-free bug when DisposeAll()
	  attempts to also destroy the same object.
	- Peter Amstutz updated the csvosa3dl plugin in response to CS
	  iMaterial API change.
	- Eric Sunshine re-wrote and re-designed entirely from scratch the
	  verbosity utilities csVerbosityParser, csVerbosityManager,
	  iVerbosityManager, and csCheckVerbosity().
	    - Verbosity identifiers have been generalized. Rather than being
	      restricted only to `class' and `class:subclass' combinations,
	      verbosity identifiers can now extend the relationship to any
	      depth. The notation has changed, as well. Some example verbosity
	      identifiers: "scf", "scf.plugin", "scf.plugin.scan",
	      "scf.plugin.load", "scf.plugin.load.debug", etc.
	    - The implied parent/child relationship of verbosity identifiers is
	      now respected. For instance, an explicit "+foo" will now
	      implicitly enable verbosity for all children of `foo', such as
	      "foo.bar", "foo.baz", "foo.baz.cow", etc. Searches for verbosity
	      settings progress from most to least specific. In checking if
	      "foo.bar.baz" is enabled, csVerbosityParser will now first check
	      "foo.bar.baz". If it fails to find an exact match, it will check
	      the verbosity setting of the parent "foo.bar". If that fails,
	      then it will check "foo", and so on. Because searches run from
	      most to least specific, combinations such as
	      "-foo,+foo.bar,-foo.bar.baz" are possible. This disables
	      verbosity for `foo' and all of its children, except for `foo.bar'
	      and its children, which are enabled, with the exception of
	      `foo.bar.baz', which is disabled.
	    - Verbosity identifiers are now interpreted much more intuitively
	      than previously. For example, `--verbose=vfs' (or `+vfs') now
	      enables verbosity for only "vfs". Previously, it enabled
	      verbosity for all modules (i.e. essentially it was the same as a
	      bare `--verbose'). Likewise, `--verbose=-vfs' enables verbosity
	      for all modules except "vfs".  Previously, with the old
	      `class:subclass' scheme, "+foo" would enable verbosity only for
	      `foo', but not any of its subclasses, such as "foo:bar",
	      "foo:baz", etc. To also include the subclasses, one had to write
	      "+foo,+foo:*". Because the new dotted verbosity identifiers form
	      a sort of inheritance hierarchy, such resolution is now
	      automatic; searches are made from the most specific identifier to
	      the least specific.
	    - Eliminated a number of corner-case bugs in the old CheckFlag()
	      resolution scheme which gave unexpected and undesirable results.
	      For instance, "-*,+vfs:*" failed to return `true' when tested
	      against "vfs:foo".
	    - The internal representation of csVerbosityParser has been
	      simplified significantly, thus making it easier to understand and
	      maintain.
	    - csVerbosityParser is now more heap-friendly and consumes less
	      memory.
	    - csVerbosityParser::CheckFlag() has been renamed to Enabled(), and
	      now accepts a single dotted-identifier in place of the older and
	      less flexible `class' and `subclass' arguments.  Ditto for
	      csVerbosityManager and iVerbosityManager. (The old CheckFlag() is
	      still available for backward compatibility, though heavily
	      deprecated.)
	    - Greatly enhanced the Doxygen documentation of the
	      verbosity-related utilities.
	    - Added a Parse() method to csVerbosityParser, csVerbosityManager,
	      and iVerbosityManager which allows verbosity options to be
	      specified incrementally, rather than only at construction time.
	    - Crystal Space-based applications now accept and recognize
	      multiple invocations of `--verbose' on the command-line rather
	      than respecting only the first `--verbose' and ignoring all
	      subsequent ones.
	    - Added csutil/t/verbosity.t, a test-suite for the
	      verbosity-related utilities.
	- Eric Sunshine increased the verbosity granularity of SCF. It now
	  recognizes these verbosity classes:
	    scf.plugin.scan	 Reports directories scanned.
	    scf.plugin.load      Reports plugins loaded/unloaded.
	    scf.plugin.register  Reports plugins found and registered.
	    scf.class.register   Reports classes within plugins registered.
	- Eric Sunshine increased the verbosity granularity of VFS. It now
	  recognizes these verbosity classes:
	    vfs.scan   Reports directories scanned for vfs.cfg.
	    vfs.mount  Reports mounts/unmounts.
	    vfs.debug  Reports low-level debugging information (only enabled
	               via explicit `+vfs.debug'; does not inherit from `vfs').
	- Eric Sunshine made it illegal to copy csMemoryPool (either via
	  constructor or assignment) since such an operation makes no sense in
	  this context.
	- Eric Sunshine added copy constructors and assignment operators to
	  csStringHash, csStringSet, and csPluginPaths.
	- Eric Sunshine eliminated some `size_t' vs. `int' warnings in
	  pvscalc.cpp.
	- Eric Sunshine performed minor cleanup, corrections, and re-writing in
	  apimod100.txi.
	- Eric Sunshine fixed long-standing bug in nodefix.pl (Eric's tool
	  which repairs Texinfo @node and @menu directives) which caused nodes
	  to be assigned the wrong "depth" and title if multiple sectioning
	  commands of different depths followed a single @node directive. For
	  instance:
	    @node Foo
	    @section Foo You
	    Some text.
	    @subsection Foo Me
	    Some more text.
	  This would incorrectly assign a sub-section depth to node `Foo'
	  rather than a section depth. The bug caused navigation to be borked
	  in some instances and also prevented some @node directives from being
	  repaired.
	- Eric Sunshine installed the latest lgpl.txi from the GNU web site.
	- Eric Sunshine eliminated some warnings in the CS manual reported by
	  the new texi2html v1.76.
	- res added a copy of the GPL to the manual (since very few parts of
	  CS use it).
	- res applied some slight markup fixes to lgpl.txi.
	- Eric Sunshine updated CS/docs/support/winhelp/gendoctoc.pl to work
	  with texi2html.pl v1.76.
17-Apr-2005
	- res made the shader manager store the shaders in a sorted list (to
	  allow for quicker retrieval).
	- res fixed csShaderVariable::operator=() to correctly handle
	  accessors.
	- res updated the API mod docs for the iMaterialHandle removal.
	- res updated texi2html to version 1.76.
	- res overhauled the csShaderVariable assignment operator and added a
	  copy constructor to csShaderVariable.
16-Apr-2005
	- res added support for a default shader to the generic render step,
	  which is used when a material doesn't have a shader for a specific
	  shader type.
	- res added support for fog to the std_lighting_detail shaders.
	- res removed the practically useless iMaterialHandle interface.
	  Similar functionality can be achieved by using either iMaterial or
	  iTextureHandle.
	- Luca replaced use of imap/parser.h with imap/loader.h in
	  CS/libs/cstool/initapp.cpp .
	- res fixed the HOM in terrainf.
	- res added the ability to not use the specified default shader in
	  case shaders of a certain type are present on a material to the
	  generic renderstep. This works around the problem that for terrainf,
	  the "use default shader" logic kicked in for materials that are only
	  intended during the splatting passes (and thus causing incorrect
	  terrain rendering). However, in the future a better way to only use
	  certain materials in certain passes should be devised.
	- res tweaked the movie recorder framerate a bit so the intervals
	  between frames are more regular.
	- res cleaned up the DirectDetection code. Mostly removed the unneeded
	  3D detection stuff.
	- res changed the CS loader to only report missing optional plugins
	  when in verbose mode.
	- res removed the redundant csShaderMetadata::name.
	- res added "fallback shaders" to xmlshader. The fallback is used if
	  no technique of the shader validated.
15-Apr-2005
	- Eric Sunshine fixed bug in csBitArray::SetSize() where it failed to
	  clear newly added bits when the array was enlarged.
	- Eric Sunshine fixed bug in csBitArray::SetSize() where it
	  unnecessarily allocated a new backing-store even when the old
	  backing-store was already the correct size.
	- Eric Sunshine fixed csBitArray design flaw which prevented it from
	  being used safely in the context of csArray<csBitArray> since it
	  maintained pointers to its own internal members. These pointers could
	  become corrupt if csArray<> re-located the bit array.
	- Eric Sunshine fixed `delete' vs. `delete[]' bugs in csBitArray.
	- Eric Sunshine fixed problem in csBitArray::Delete() where it could
	  break the invariant that the number of elements allocated for the
	  backing-store must be just large enough to hold the desired number of
	  bits, but no larger.  Several methods, such as Trim(),
	  AllBitsFalse(), most of the operator overloads, etc., were predicated
	  upon this invariant, and behaved erratically when it was broken.
	- Eric Sunshine changed the `const' csBitArray::operator[] so that it
	  returns a simple `bool' rather than a csBitArray::BitProxy since the
	  BitProxy was overkill; to wit, for a `const' operation, the
	  mutableness which BitProxy imparted was pointless. (The non-const
	  operator[] still returns a BitProxy.)
	- Eric Sunshine augmented library.jam so that it asks $(AR) to suppress
	  the unnecessary "ar: created libfoo.a" messages. This makes for a
	  slightly cleaner build log.
	- Eric Sunshine updated ivaria/javapre.i for void* --> intptr_t changes
	  in iEventOutlet. (bug #1183672)
	- res fixed GL DrawSimpleMesh() to (again) set the requried identity
	  transform after drawing in screenspace and 2D mode.
	- res fixed the GL renderer to properly respect the mirror flag again.
	- res made the fixed terrain shader to (almost) properly support fog
	  on (2) 3 TU hardware.
	- res replaced use of imap/parser.h with imap/loader.h.
14-Apr-2005
	- Eric Sunshine tweaked cspace.i for recent changes to csArray<> and
	  csStringSet which caused compilation failure in Swig-generated code.
	- Jorrit fixed the font plex config in walktest.cfg.
	- Jorrit enabled multiplexer for bindoc and xmlread for walktest.cfg.
	- res added the fontplex plugin to the walkall target.
	- res made some fixes so shader inclusion (via <?include?>) of
	  relative paths works.
	- res made a pathetic attempt to modularize shaders by putting some
	  fog stuff into include files.
	- res augmented the fixed terrain shader to support fog; isn't correct
	  yet, though.
 	- Piotr Obrzut added limit/motor support for ODE joints states
	  (currently aplied to hinge and amotor joints).
	- Piotr Obrzut added new methods for rigid body to get paramters: mass,
	  inertia and center of mass.
13-Apr-2005
	- res made the following changes:
	    - Moved keycolor baking out of csImageManipulate into its own
	      class csBakeKeyColor. Also improved the color fill for
	      transparent areas a bit.
	    - Fixed some warnings in csfgen.
	    - A bit more cleanup and simplification of GL render-to-texture.
	- res reduced the Jam line length limit on MSYS to 8192 chars.
	- res added some experimental support for the EXT_framebuffer_object
	  GL extension for render-to-texture.
12-Apr-2005
	- Eric Sunshine added iPath, csPath, iShaderManager,
	  iShaderVariableContext, iStringSet, csSpline, and csStringSet to
	  cspace.i. These additions should make it possible to compose
	  pure-Python versions of `isotest' and `pathtut'.
	- Eric Sunshine resolved some Swig complaints about csStringFast<>.
10-Apr-2005
	- res applied a patch from David Bronke <whitelynx@gmail.com> that
	  fixes the SCF IDs for the multiplexer plugins to be consistent
	  (end on .multiplexer, not .multiplexor or .multiplex).
	- Eric Sunshine fixed assertion failure caused by
	  csStringBase::ExpandIfNeeded() failing to allocate a backing-store
	  given the following expression: csStringBase s; s = "";
	- res fixed some issues in the Win32 callstack and minidump writer.
	- res removed an unnecessary glColor3f() from csGraphics2DGLCommon.
	- res fixed problems in the software renderer caused by some recent
	  size_t changes.
9-Apr-2005
	- res made the XML shader compiler check for a less ambiguous
	  "compiler" (in comparison to "type") attribute in shaders first.
	- res renamed the <shader> "type" attributes of CS' shaders to
	  "compiler".
	- res made the following changes:
	    - Added CS_FUNCTION_NAME macro, gives name of current function.
	    - Added support for GL_GREMEDY_string_marker extension. The GL
	      renderer uses it to write some out some info. Helpful to link
	      GL operations to CS methods in a GL trace.
	    - Made some cleanups & simplifications to the GL render-to-texture
	      code.
	    - Made some cleanups & simplifications to the GL renderer and
	      cavases in general - mostly cut down redundant matrix and
	      viewport setups.
	    - Fixed returning of a stack var in minidump.cpp.
	    - Changed csFontCache to store the size of known fonts in floats.
	    - Fixed a csString passed through '...' in csfgen (really).
	    - Fixed gfxtest at some place were a 0 char* could be passed to a
	      function that expected a non-0 char*.
	- res applied a patch from David Bronke <whitelynx@gmail.com> that
	  makes the "FancyConsole.General.Archive" fancycon option optional;
	  if it is not present, it is assumed that the path in
	  "FancyConsole.General.Mount" is correctly set up and contains the
	  data.
	- res applied a patch from David Bronke <whitelynx@gmail.com> that
	  allows a different font size for the standard console.
	- res fixed a wrongly initialized struct member in csShaderProgram that
	  caused <variablemapping>s to malfunction which in turn caused a lot
	  of problems when shaders were used.
	- res fixed a belated variable initialization in csGraphics2DGLCommon
	  which caused csdemo (and possibly other programs) to come up black.
	- res cleaned up opengl.cfg a bit.
8-Apr-2005
	- Eric Sunshine changed CS_CHECK_LIB_WITH() so that it publishes option
	  names as `--with-foo', rather than `--with-libfoo' since the former
	  seems to be more idiomatic. (The old `--with-libfoo' form, however,
	  continues to be recognized for backward compatibility.)
	- Eric Sunshine added entry to the "Release Notes 1.00" appendix
	  explaining that the public CS headers are now ansi-pedantic-clean.
	- res worked around a subtle problem in csBitArray::AreSomeBitsSet().
	  This method computes a mask which is used to check whether a set of
	  bits in the array is set. The mask computation uses a shift-left
	  where the shift amount was in some cases the number of bits in the
	  storage type. On x86 this amount is 32, but a '<< 32' is actually a
	  no-op there. This caused a wrong mask (all 0) to be computed and
	  subsequently AreSomeBitsSet() would return a wrong value.
	- res augmented csPrintfFormatter<> to correctly handle output
	  precision for strings.
	- res fixed the font plexer which sometimes ignored scaling for the
	  first successfully loaded entry of a substitution sequences.
	- res made iFontServer->Load() accept floats as font sizes.
	- res tweaked a few FT2 warning messages.
	- res fixed csfont to consider empty alpha data as "glyph not present".
7-Apr-2005
	- Eric Sunshine fixed build error in csMetaTexture::Setup() in VOS
	  plugin due to csString::operator[] ambiguity.
	- Eric Sunshine rewrote the wxWidgets and VOS checks in configure.ac so
	  that they are predicated upon CS_CHECK_LIB_WITH(). Not only does this
	  simplify the checks, but it also gives them --with-LIB, pkg-config
	  support, and LIB-config support for free, thus there is no long any
	  need to perform such task manually for these checks.
	- Eric Sunshine fixed long-standing bug in csBitArray::AreSomeBitsSet()
	  where it would fail an input-validation assertion even if the input
	  was valid.
	- Eric Sunshine added a DELIMITER argument to CS_EMIT_BUILD_RESULT() in
	  emit.m4. This allows clients to adjust the delimiter inserted after
	  PREFIX when composing variable names, such as FOOLIB.CFLAGS,
	  FOOLIB.LFLAGS, etc.  By default it is ".", but a good choice for use
	  with the CS_SUBST_EMITTER() for emitting to makefiles is "_", which
	  gives variable names such as FOOLIB_CFLAGS, FOOLIB_LFLAGS, etc.
	- Eric Sunshine rewrote and re-engineered csBlockAllocator<> from
	  scratch; greatly simplifying its implementation and internal
	  representation, so that it is now much easier to understand and
	  maintain. Common operations, such as Alloc() and Free() are now
	  faster; especially Free(), which is now essentially zero-cost,
	  whereas it used to perform a (potentially quite expensive) linear
	  scan, plus a good deal of complicated and convoluted logic. Also
	  enhanced the Doxygen comments by a fair amount.
	- Eric Sunshine added a `pedantic' flag to the csBlockAllocator<>
	  constructor which clients can set to get warnings about objects which
	  have not been handed explicitly to Free() before the allocator itself
	  is destroyed.  This may be useful in cases where the client is using
	  csBlockAllocator<> only as a quick-allocation mechanism and wants to
	  manage object destruction manually, rather than allowing
	  csBlockAllocator<> to act as a light-weight garbage collector (which
	  is its default and intended behavior).
	- Eric Sunshine added a csBlockAllocator<> test-suite
	  (blockallocator.t). Run with `jam check'.
	- res replaced csSubRectangles with csSubRectangles2. (The old
	  csSubRectangles was removed and csSubRectangles2 was renamed to
	  csSubRectangles.)
	- res fixed some VC6 errors in xmlshader.
6-Apr-2005
	- res made the following changes:
	    - The simpleformer loader now doesn't let the loader choose the
	      image format (which is the renderers preferred format) but
	      rather requests the images original format.
	    - The simpleformer loader now uses the index instead of color
	      intensity for paletted images.
	    - Made some fixes and improvements to shader expressions: the
	      make-vector instruction now generates correctly-sized vectors
	      (e.g. vector2 when 2 arguments are passed) (thanks DeSigna),
	      error messages are recorded and can be queried, XML comments
	      don't confuse the parser any more.
	    - <shadervar>s now also support expression. Added example to flarge
	      where the scale of the overlay texture on some walls in the
	      starting rooms varies over time.
	    - Fixed crash in csInputDefinition for input strings like "-".
	    - Un-deprecated some csString methods.
	    - Removed the rather useless StdAfx.cpp file of the Opcode plugin.
	- res fixed access of freed memory in archive.cpp.
	- res fixed TGA loader not setting correct image format if the
	  requested one is CS_IMGFMT_ANY.
	- Jorrit disabled VBO again as it causes a significant slowdown on his
	  card. Probably because this card doesn't really support VBO so the
	  driver emulates it or so?
	- res changed the TGA loader to not convert all images to truecolor,
	  paletted images are properly supported.
	- res augmented configure to support a "--without-wx" option.
	- res added documentation for csShaderExpressionAccessor.
	- Eric Sunshine worked around a few compilation warnings resulting from
	  use of PRId64, PRIu64, and PRIx64 from Mingw/gcc.  The problem is
	  that Mingw's <inttypes.h> defines these as "I64d", "I64u", and
	  "I64x", respectively, since these are understood by the MS C-runtime
	  (which does not understand "ll", etc.), yet these directives are not
	  recognized by Mingw/gcc, so it complains.
	- Eric Sunshine disabled MSVC warning C4284 because, at least some
	  versions of MSVC6 (though not all) complain about
	  csList<int>::operator->() returning a pointer to a base type.  In
	  general, this is a valid complaint because you can not legally apply
	  -> to a pointer to a base type, however, in the context of a
	  template, such as csList<>, the complaint is useless if it occurs at
	  declaration time.  It would be meaningful if it complained at
	  invocation time, though.
	- res added support for the I64 format type specifier to
	  csPrintfFormatter<> when compiling on MinGW or MSVC. This allows use
	  of the PRI?64 macros on MinGW.
	- res made a VC6 compile fix to glshader_ffp.cpp.
	- res made csShaderExpressionAccessor use csReport() for error
	  reporting.
5-Apr-2005
	- res replaced use of printf() and relatives with csPrintf() and
	  relatives and use of sprintf() with use of csStrings.
	- res fixed some 64bit warnings on VC7.0.
	- Eric Sunshine added Delete() and Slice() to csBitArray.
	- Eric Sunshine renamed the following symbols in order to avoid global
	  namespace pollution:
	    MemEntry                      --> csMemTrackerEntry
	    MemTrackerInfo                --> csMemTrackerInfo
	    MemTrackerModule              --> csMemTrackerModule
	    MemTrackerRegistry            --> csMemTrackerRegistry
	    RegisterMemoryTrackerModule() --> mtiRegisterModule()
	- res fixed terrain being too high when using RGB images due a typo.
	- Eric Sunshine removed the following unused modules:
	    csCrystalBall
	    csIndPrint
	- Eric Sunshine fixed some MSVC6 build problems which arose with recent
	  changes.
	- mdmkolbe fixed some slight string format errors in
	  CS/libs/csutil/win32/callstack.cpp
4-Apr-2005
	- res made the following changes:
	    - Changed some internals of shader program variable mappings; now
	      use the "ProgramParam" struct (variable maps now also support
	      a slightly different syntax that allows for constant mappings:
	      <variablemap destination="register 0" type="vector4">
		1,2,3,4
	      </variablemap>).
	    - Added feature to shader program parameters/variable mappings to
	      use shader expressions. For an example, see
	      std_lighting_detail_alpha_scroll shader.
	    - Put namespace { } around code in csjngimg to avoid collisions
	      when linking statically.
	    - Changed how RGB data is handled by simpleformer; treats the RGB
	      triplet as a 24bit number (R is most significant) instead of
	      computing the RGB intensity.
	- res fixed some wrong types in ie3ds.
	- Eric Sunshine added a test suite (strset.t) for csStringSet.
	- res made the following changes:
	    - Fixed some 64bit warnings on VC7.0.
	    - Changed the SCF pooling stuff to use class dtors instead of a
	      custom "PoolRecycle()" method.
	    - Added missing CS_CRYSTALSPACE_EXPORT to csMemoryPool.
	    - Updates for upcoming cs-win32libs release 010.
	- mdmkolbe changed the definitions of u32, ush and uch in
	  include/csutil/zip.h to be uint32, uint16 and uint8 and changed
	  md5_word_t and md5_byte_t in include/csutil/csmd5.h to be uint32 and
	  uint8.
	- mdmkolbe changed the printf-like integer format strings to match the
	  following.  Formats for floats and strings were not changed.
	    int i; unsigned u;
	    printf("%d %X %u", i, i, u);
	    ...	
	    short s; unsigned short us;
	    long l; unsigned long l;
	    printf("%hd %hu %ld %lu", s, us, l, ul);
	    ...	
	    uint32 u32; size_t size; ptrdiff_t diff; int a, b; bool b;
	    printf("%" PRId32 " %zu %td %td %d",
	      u32, size, diff, &a - &b, (int) b);
	    ...	
	    intptr_t ip; int *p;
	    printf("%p %p", ip, p);
	- Eric Sunshine rewrote some bogus logic in the "well formed integer"
	  check in the map2cs brush parser.
	- Eric Sunshine added a `#define __STDC_FORMAT_MACROS' to cstypes.h to
	  ensure that the various PRIx99 macros are properly defined (at least
	  on platforms which provide them). This fixes a bunch of build errors.
	- Eric Sunshine added a check for the PRIx99 macros to configure.ac.
	  If available, CS_HAVE_C_FORMAT_MACROS is emitted to csconfig.h.
	- Eric Sunshine augmented csdef.h so that it fakes up the commonly used
	  PRIx99 macros if the platform does not supply them.
3-Apr-2005
	- Eric Sunshine updated csBlockAllocator<> so that it automatically
	  destroys contained objects at its own destruction time rather than
	  forcing the client to invoke csBlockAllocator<>::Free() for every
	  allocated object before destorying the csBlockAllocator<> itself.
	  Forcing the client to recycle each object manually was not only
	  rather strange, but is was also quite hostile, and made the usage of
	  the class much more onerous than it ought have been.
	- Eric Sunshine retired the csObjectPool<> template since it managed
	  memory poorly and failed to invoke the destructor of contained
	  objects at the time they were recycled via csObjectPool<>::Free(),
	  which meant that the objects might not release their own resources in
	  a timely fashion.  (It did correctly destroy the freed objects when
	  the pool itself was destroyed, but should have been doing so at
	  Free()-time.) csBlockAllocator<> can be used as a drop-in replacement
	  for csObjectPool<>.
	- Eric Sunshine added a new class csMemoryPool, which is a
	  quick-allocation pool for storage of arbitrary data. Pointers to
	  allocations made from the pool are guaranteed to remain valid as long
	  as the pool is alive; the pool contents are never relocated.  All
	  individually allocated memory chunks are freed when the pool itself
	  is destroyed.
	- Eric Sunshine fixed a serious design flaw in csSet<> where it stored
	  each object twice, thus consuming an unnecessarily excessive amount
	  of memory.
	- Eric Sunshine simplified the internal implementation of csStringHash
	  significantly, making it more heap-friendly and much easier to
	  understand.
	- Eric Sunshine retired csStringSetIterator and csStringHashIterator,
	  and replaced them with csStringSet::GlobalIterator and
	  csStringHash::GlobalIterator, respectively. For consistency with
	  other container classes, rather than manually instantiating the
	  iterators, csStringSet and csStringHash now vend iterators to clients
	  via GetIterator().
	- Eric Sunshine fixed bug where every csStringSet iterator was leaking
	  a csStringHash iterator.
	- Eric Sunshine greatly improved the Doxygen documentation for the
	  various container classes.
	- Eric Sunshine added the following methods to various classes and
	  interfaces in order to promote API consistency between the various
	  container classes. In some cases, the new methods deprecate existing
	  ones; in other cases, they add functionality which was missing.
	    csArray<>::Contains()
	    csArray<>::GetSize()
	    csArray<>::IsEmpty()
	    csArray<>::SetSize()
	    csBlockAllocator<>::Empty()
	    csHash<>::Empty()
	    csHash<>::IsEmpty()
	    csSet<>::Empty()
	    csSet<>::IsEmpty()
	    csStringArray::Contains()
	    csStringHash::Contains(csStringID)
	    csStringHash::Delete(char const*)
	    csStringHash::Delete(csStringID)
	    csStringHash::Empty()
	    csStringHash::GetIterator()
	    csStringHash::GetSize()
	    csStringHash::IsEmpty()
	    csStringSet::Contains(csStringID)
	    csStringSet::Delete(char const*)
	    csStringSet::Delete(csStringID)
	    csStringSet::Empty()
	    csStringSet::GetIterator()
	    csStringSet::GetSize()
	    csStringSet::IsEmpty()
	    iStringArray::Contains()
	    iStringArray::Empty()
	    iStringArray::GetSize()
	    iStringArray::IsEmpty()
	    iStringSet::Contains(csStringID)
	    iStringSet::Delete(char const*)
	    iStringSet::Delete(csStringID)
	    iStringSet::Empty()
	    iStringSet::GetSize()
	    iStringSet::IsEmpty()
2-Apr-2005
	- res fixed some VC7.0 warnings.
	- res fixed crashes when making screenshots of render targets.
	- res fixed text not showing up when drawing to a render target.
	- res removed the clear-with-DrawBox() workaround again. It caused
	  issues in other places, and the Clear() problem manifests itself
	  only in one place (PS labels), so it can be worked around there.
	- res removed an entry from gldrivers.xml that became obsolete (and
	  non-functional) after the last texture manager changes (texture
	  class introduction etc.)
	- res fixed an unitialized variable in csGraphics2DGLCommon which
	  caused a crash in simpcon. (Although, that variable was set when the
	  canvas was opened. So simpcon operates on an unopened canvas, which
	  isn't good either.)
	- res added an (somewhat experimental) optimization to gl3d; when
	  Print() is called, the video buffers are not swapped immediately, but
	  the swap is delayed until the next draw call. This is because a
	  buffer swap is stalling, it causes all pending geometry to be drawn
	  out. The idea behind the change is now to allow the drawing to
	  continue, while the engine itself does rendering preparations
	  (culling etc.), and avoid the stalling buffer swap until we really
	  have no other choice. Works fine in flarge and gives a small but
	  measurable FPS boost. If it breaks somewhere, disable it in
	  glrender3d.h by #undefining DELAYED_SWAP.
	- res fixed screen clearing with delayed swap.
	- res fixed msvcgen/config.jam to not contain dxguid.lib in the DirectX
	  library list. This library is not used by CS.
	- res made delayed swapping runtime-switchable. Configuration setting
	  is "Video.OpenGL.DelaySwap".
	- res enabled VBO by default. New VBO management code is worth some
	  more wide-spread testing.
	- res fixed a missing "layer" attribute in water.xml.
	- res fixed the "world2camera transform" SV not being available to
	  shaders when it should be. Fixes crash in waterdemo.
	- res ported Anders Reggestad's last fix to xmlread. Fixes an infinite
	  loop.
	- res changed the XML plugins to strip whitespace before <![CDATA[
	  elements, fixes some shader parsing issues.
1-Apr-2005
	- Eric Sunshine fixed some unportable uses of #warning directives in
	  the public CS headers. (#warning is not part of the C++ standard)
31-Mar-2005
	- Marten fixed a few more places where a temporary return object was
	  assigned to a reference.
        - Anders Reggestad fixed so that TinyXml only save white spaces in the
	  text element it is reading, not including the prev tag if tags are
	  inserted into a text element.
	- Eric Sunshine added README, INSTALL, and LICENSE files to the root
	  CS/ directory in order to be consistent with other open source
	  projects, and because people expect to find these files at the root
	  of the source tree. (Very likely, many people failed to find the
	  README.html which was buried in the CS/docs directory.)
30-Mar-2005
	- Marten fixed a bug in haze-mesh.
	- Eric Sunshine performed another round of size_t-related cleanups.
	- Eric Sunshine converted csObjectModelManager in dynavis to use
	  csHash<> rather than the deprecated csHashMap.
	- Eric Sunshine fixed bug in awsGridBagLayout where it leaked every
	  awsGridBagConstraints object which it allocated.
	- Eric Sunshine converted awsGridBagLayout to use csHash<> rather than
	  the deprecated csHashMap.
	- Eric Sunshine added csStringHash::Contains(). Equivalent
	  functionality was already available by checking if Request(char
	  const*) returned an error, but Contains() is more idiomatic and
	  provides better API consistency with other containers.
	- Eric Sunshine made the second argument of csStringHash::Register(char
	  const*,csStringID) optional. This allows csStringHash to be used as a
	  lightweight alternative to csStringSet when you need just a pure
	  `set' object and don't care about assigning an ID to the string.
	- Eric Sunshine converted csConfigManagerIterator to use csHash<>
	  rather than the deprecated csHashMap.
	- Eric Sunshine added csHash<>::Contains() and csSet<>::Contains().
	  Equivalent functionality was already provided by In(), but Contains()
	  may be considered more idiomatic by some, and provides better API
	  consistency with other containers.
	- Eric Sunshine removed the unused and unnecessary csSet<>::Iterator
	  class.
	- Eric Sunshine converted csLight to use csSet<> rather than the
	  deprecated csHashSet.
	- Eric Sunshine converted csEngine to use csSet<> rather than the
	  deprecated csHashSet.
	- Eric Sunshine renamed ProcEventHandler to csProcTexEventHandler in
	  order to avoid global namespace pollution.
	- Eric Sunshine converted csProcTexEventHandler to use csSet<> rather
	  than the deprecated csHashSet.
	- Eric Sunshine removed the long-deprecated csHashMap,
	  csHashMapReversible, and csHashSet classes. Use instead the templated
	  classes csHash<>, csHashReversible<>, and csSet<>.
	- res changed the way how render-to-texture is handle a bit. Setting a
	  render target now is like switching to another screen, e.g. the
	  width and height of the canvas change to the render target size etc.
	  Coordinates also change accordingly and are in "render target space"
	  as long as a render target is set (note that a FinishDraw() call will
	  unset render targets). On the implementation side, the GL r2t support
	  was moved out into separate classes to facilitate the change of
	  render-to-texture modes. Small warning: needs more work, not checked
	  against software rendering. On the bright side, nothing appears more
	  broken than before.
	- Anders Stenberg fixed a bug in genmesh where a reference was used
	  erroneously. This caused genmeshes to get broken transforms under
	  seemingly random circumstances.
29-Mar-2005
	- Jorrit disabled the new `clearWithBox' rule in gldrivers.xml
	  because it breaks screen clearing on his nVidia card. If this is
	  to be enabled again then I propose it is enabled ONLY on cards
	  that are known to give this problem. Not on all nVidia cards.
	- res fixed an uninitialized member in csSimpleRenderMesh.
	- res fixed a stupid condition reversion in cssynldr.
	- res fixed a 0 string passed to iFont->GetDimensions() by bugplug.
	- res fixed a syntax error in reflect.xml.
	- Marten made some general cleanup.
	- Marten fixed DrawSimpleMesh() after yesterday's changes.
	- Marten fixed the approximate mesh z-sorting.
	- Eric Sunshine fixed bugs in TiXmlElement::ReadValue() and
	  TrXmlElement::ReadValue() where they unconditionally stripped leading
	  whitepsace from text and cdata nodes even if the client asked for
	  whitespace to be preserved.
	- Eric Sunshine fixed unit-testing for CS/libs following the
	  consolidation of libraries into crystalspace.lib so that `jam check'
	  actually runs tests from the various t/ subdirectories of CS/libs
	  once again.
	- Eric Sunshine enhanced the UnitTest rule in unittest.jam so that it
	  can accept a list of test directories as its second argument, rather
	  than only a single directory.
	- Eric Sunshine disabled automatic UnitTest rule invocation for
	  Application (application.jam) and Plugin (plugin.jam) targets for now
	  since unit-testing for these types of targets needs to be thought-out
	  more thoroughly. See CS/docs/jam_todo.txt for details.
28-Mar-2005
	- Marten changed how transforms are sent from meshobjects to the
	  renderer.
	- Marten added a "vertex preprocessor" (vproc) shader program plugin
	  type.
	- Marten removed chunklod terrain engine. Instead use bruteblock.
	- Eric Sunshine fixed a slew of build errors and warnings from today's
	  earlier changes. Also removed some remaining references to the
	  retired chunklod plugin.
	- Eric Sunshine relocated the bruteblock implementation from
	  CS/plugins/mesh/terrain_brute to mesh/terrain/brute so that it
	  resides alongside the terrain loader.
	- Eric Sunshine added a missing csShaderVariable::TRANSFORM case to
	  csShaderVariable::operator=().
	- res fixed some more VC7 compilation warnings.
	- res added a few new extensions to the GL extension manager.
	- res made the ARB and Cg shader plugins only report shader errors in
	  -verbose mode.
	- res fixed an underflow of a size_t in stdrep.
	- res fixed a buffer overflow in csconout.
27-Mar-2005
	- Eric Sunshine added FStripCommon to jamcompatibility.jam since Jam
	  2.4 lacks it and it is needed by StripCommon in helper.jam.
	- Eric Sunshine fixed libs/Jamfile so that it doesn't use `module' as a
	  variable name since `module' is a reserved keyword in BoostJam.
	- Eric Sunshine removed the abominable non-const csString::GetData()
	  which returned a mutable reference to the internal buffer. This is no
	  longer allowed. csString's internal state is private. External
	  clients are required to manipulate the string representation strictly
	  via the public API. (If you feel that absolutely must muck around
	  with the underlying buffer, then you can use the nearly equally
	  abominable csString::Detach() to take ownership of the underlying
	  buffer, and absolve csString of any further responsibility.)
	- Eric Sunshine removed the hand-coded x86 assembly versions of
	  csQsqrt() and csQisqrt(). In the best cases, the platform-supplied
	  sqrt() function was 17-19 times faster than the assembly versions; in
	  the worst cases, 2-4 times faster than the assembly versions. (The
	  PowerPC assembly version of csQsqrt() written by Matt Reda, on the
	  other hand, is 4-5 times faster than the MacOS/X-supplied sqrt(), so
	  this assembly version remains.)
26-Mar-2005
	- res added a check for setenv() and some (Win32 only) code to fake it
	  up if not present.
	- res changed the pixel format of the caca canvas to one that doesn't
	  give color distortions.
	- Wouter Wijngaards removed a warning in map2cs brush.cpp.
	- Wouter Wijngaards fixed signed/unsigned warning in
	  csLoader::CreateSequenceParameters.
	- Wouter Wijngaards fixed the movieplugin minilzo to compile again.
	- res worked around an apparent failure of glClear() in NVidia GL
	  drivers to have any effect.
	- res changed the driver detection to first check for
	  <screendriver>.dll before taking a random entry from the registry.
	- res fixed the warning in the cal3d loader that discourages materials
	  in .cal3d files to be less spamming.
	- res changed the GL font cache to use nearest neighbour filtering
	  instead of bilinear filtering for fonts again. While NN filtering
	  causes jaggies when oversized fonts are used, it is far less
	  problematic in the common case of sanely sized fonts, where bilinear
	  filtering can cause microscopic leaks... which are problematic
	  nonetheless if e.g. keycoloring is used.
25-Mar-2005
	- Wouter Wijngaards made the following changes:
	    - Changed csBitArrayHashKeyHandler::ComputeHash() in bitarray.h,
	      int to size_t to remove signed/unsigned warning.
	    - Made size a size_t in map2cs AddFile().
	    - Added %ignore in csspace.i for csStringBase::operator[].
	    - Changed strnicmp() in csShaderGLCGVP::Compile() to
	      csStrNCaseCmp().
	    - Made the asciiart renderer work again.
	- Jorrit fixed a problem in syntax services where there were too
	  few parameters to csReport().
	- res fixed a the std_foo shaders for the recent xmlshader changes.
	- res fixed a crash with the terrain level.
	- res fixed a crash when using the std_lighting_detail shader.
	- Eric Sunshine merged the csutil, csgeom, csgfx, cstool, csws, and
	  csplugincommon libraries into a single physical link library named
	  `crystalspace' (i.e. libcrystalspace.a). This simplifies end-user
	  documentation and client usage.  `cs-config', `jamtemplate',
	  documentation, and all other client-oriented utilities have been
	  updated appropriately to reflect this change.  (The sources and
	  headers continue to reside in their separate csutil, csgeom, etc.,
	  directories; and, importantly, the modules remain conceptually
	  distinct. This will not change.)
	- Eric Sunshine renamed the following special-purpose link libraries:
	    csplugincommon_dx  --> crystalspace_directx
	    csplugincommon_osx --> crystalspace_macosx
	    csplugincommon_ogl --> crystalspace_opengl
	    csplugincommon_w32 --> crystalspace_windows
	    cspycommon         --> crystalspace_python
	- Eric Sunshine rewrote a bunch of outdated discussion in the Crystal
	  Space manual.
	- res removed the long-deprecated CSWS library.
	- Eric Sunshine removed the remaining CSWS references which escaped
	  Frank's clutches. Also fixed some Texinfo errors which were
	  introduced with the CSWS removal.
	- Eric Sunshine fixed bug in CS_PATH_CRYSTAL_CHECK() in crystal.m4
	  which caused the test to fail on Windows because the program
	  contained two main() functions.
	- res fixed a couple VC7 64bit warnings again.
	- res made the fixed function FP do some optimizations, that is, under
	  some circumstances two layers are merged into one.
	- Wouter Wijngaards added a new canvas that uses libcaca. It displays
	  asciiart in colour. Using the console.driver set to ncurses in
	  data/config/cacacanvas.cfg you can even run in the linux console.
	- Wouter Wijngaards fixed map_key() in walktest so that it no longer
	  calls strcpy() with overlapping source and destination.
	- Wouter Wijngaards initialised a variable in renderbuffer to be sure.
	- Wouter Wijngaards committed configure script generated using
	  autogen.sh.
24-Mar-2005
	- res removed a >= 0 comparison with an unsigned var from array.h.
	- res fixed some wrong ref counting caused by iLoader->LoadTexture()
	  taking an iImage**, not an csRef<iImage>*.
	- res fixed a couple VC7 64bit warnings.
	- res augmented picview to browse images, not files.
	- Jorrit added data/shader/std_rloop_terrainfixed.xml and modified
	  terrainf to use it. Also modified r3dtest, and isomap levels to use
	  data/shader/std_rloop_shadowed.xml and modified terrain to use
	  data/shader/std_rloop_diffuse.xml.
	- Jorrit fixed a bug in iSimpleFormerState->SetHeightmap() (the
	  version that takes a float array). The function would take ownership
	  of the array and delete it in the plugin when the plugin exits.
	  However that breaks the rule that you can't allocate memory in
	  one plugin/module and then delete it in another. Fixed it by
	  having the simpleformer make a copy of the data instead of taking
	  ownership. The caller should now delete the data after calling
	  this function.
	- Jorrit added a new 'heightmap32' keyword to the simplerformer
	  loader plugin. With this keyword you can load 32-bit heightmap
	  data for more accurate terrain representation. The format is
	  as follows:
	    4 bytes: 'HM32'
	    4 bytes: width (little endian long)
	    4 bytes: height (little endian long)
	    the data order row by row. For every data there is a
	    4 byte little endian long which will be translated to a
	    floating point height value between 0 and 1.
	- res made the following changes:
	    - Fixed a couple VC7 64bit warnings.
	    - Fixed an issue in the syntax services where syntax error messages
	      were practically empty.
	    - Made Thing work with flat materials again.
	    - Added ability to give layers in fixed FPs names and use them to
	      refer to a layer from VPs.
	    - Made the shader condition handling a tad more efficient.
	    - Fixed an issue with pooled SCF classes were PoolRecycle() was
	      called multiple times.
23-Mar-2005
	- res removed the Apache snprintf code.
	- res fixed AWS after the recent 64bit compatibility changes. In
	  awsTabCtrl where methods like e.g. RemoveTab() with overloads that
	  had int and intptr_t in the same place, which at least VC7 didn't
	  like. Fixed that by giving the int methods (which take an index)
	  an "Index" suffix and the intptr_t methods an "Param" suffix.
	- res updated the Cg plugin for Cg 1.3. This means the old vertex
	  program rewriting code was removed, just to be replaced with new
	  rewriting code because Cg 1.3 generates vertex programs that ATI
	  drivers don't understand.
	- res updated the sprcal3d plugin for the latest CVS of Cal3d.
	- Jorrit added a new method to bugplug to add a generic mesh to the
	  debug sector.
	- Jorrit added csSolidSpace class in csgeom. This is a class that will
	  maintain a sparse 3D matrix of solid space. Currently untested
	  and unused.
	- Eric Sunshine upgraded configure.ac so that it demands the very
	  latest CVS version of cal3d.
	- Eric Sunshine enhanced snapshot.py so that it generates a checksum
	  file for each archiver directory. The checksum file contains MD5
	  checksums of all packages exported by that directory.
	- Eric Sunshine added a StripCommon rule to helper.jam. Given two
	  lists, it strips from the beginning of list-1 items which it has in
	  common with the beginning of list-2 and returns what remains of
	  list-1.
	- Eric Sunshine renamed the following configuration control macros
	  (most of which are emitted to csconfig.h by configure.ac) to improve
	  internal naming consistency, and to conform more closely to naming
	  scheme used by Autoconf.
	    CS_USE_NASM --> CS_HAVE_NASM
	    CS_USE_MMX  --> CS_HAVE_MMX
	- Eric Sunshine retired the unnecssary and potentially polluting
	  NO_ASSEMBLER control macro.
22-Mar-2005
	- Jorrit removed the slow RAPID and memory consuming collision
	  detection plugin. OPCODE is now a lot better.
	- Jorrit improved the bugplug debugging framework slightly.
	- Jorrit added support for 'setup_debugsector', 'navigate_child1',
	  'navigate_child2', and 'navigate_parent' debug commands to pvsvis.
	  Using bugplug you can now investigate the shape of the kdtree by
	  navigating through the nodes.
	- Eric Sunshine fixed Texinfo mark-up and other problems in
	  colldet.txi.
	- Eric Sunshine took another stab at fixing <csutil/formatter.h> to
	  make it compiler-friendly. Yesterday's addition of `typename' to the
	  declaration of the csPrintfFormatter::mantissa member broke gcc
	  3.4.x, which complains (possibly incorrectly?) that IEEEFloatMantissa
	  is not a templated type.
	- Jorrit improved the PVS debugging stuff a bit.
	- Eric Sunshine eliminated some warnings in `consoletest' issued by gcc
	  for csPrintf()-related formatting directives about which it knows
	  nothing.
	- Eric Sunshine converted csSkelAnimControlRunnable to use csHash<>
	  rather than the long-deprecated csHashMap.
	- Eric Sunshine fixed bugs in csSkelAnimControlRunnable where it was
	  leaking all of the rotation and position transforms which it
	  allocated.
	- Eric Sunshine made the following 64-bit platform compatibility
	  changes:
	    - Converted AWS to deal with intptr_t rather than void* for all of
	      its opaque data needs. iAwsSinkManager::CreateSink(),
	      iAwsComponent::GetProperty(), iAwsComponent::SetProperty(),
	      iAwsSink::RegisterTrigger(), iAwsParmList::AddOpaque(),
	      iAwsParmList::GetOpaque(), and related callbacks all now expect
	      intptr_t.  Since converting client AWS code to the new API can be
	      rather onerous on account of the amount of repetitious manual
	      labor involved, the old void* API is still present, though
	      heavily deprecated. As an aid to clients in upgrading their code
	      to the new API, one of two control macros can be defined.
	      Defining AWS_OBSOLETE_VOIDP removes from the API all methods
	      dealing with void*'s, thus invocations of any such methods will
	      generate compilation errors. Alternately, defining
	      AWS_DEPRECATE_VOIDP, will cause invocations of methods dealing
	      with void*'s to generate compilation warnings when using
	      compilers which support deprecation warnings.
	    - Converted the event system to deal with intptr_t rather than
	      void* for the opaque `info' member of csevCommand-type events.
	      iEventOutlet::Broadcast(), iEventOutlet::ImmediateBroadcast(),
	      csEvent::csEvent(), and csEventCommandData::Info all now expect
	      intptr_t.
	    - Converted CSWS to deal with intptr_t rather than void* for all of
	      its opaque data needs. csComponent::SendCommand(),
	      csComponent::SendBroadcast(), csComponent::ForEach(),
	      csKeyboardAccelerator::Command(), csTimer::csTimer(),
	      csKeyboardAccelerator::Broadcast(), csListBoxItem::ForEachItem(),
	      csTreeItem::ForEachItem(), csTreeBox::ForEachItem(), and the
	      related callbacks all now expect intptr_t.
	    - Fixed a number of additional potential 64-bit problems reported
	      by the compiler throughout the project.
	- Jorrit fixed pvscalc so that the minnode size is no longer ignored.
	- Eric Sunshine re-enabled "Detect64BitPortabilityProblems" in MSVC7
	  project files. We are now getting to the point where there should be
	  very few, if any, 64-bit portability problems in the project, and we
	  would like to identify any which still remain.
	- Jorrit added a -quick option to pvscalc. That will just create
	  the kdtree so that the level works but nothing more.
	- Eric Sunshine fixed brokeness in the Jam system which was inflicted
	  when `csplugincommon' was introduced, and which prevented the MacOS/X
	  canvases from ever being built. (It was broken for a month, but
	  nobody complained.)
	- Eric Sunshine fixed problems which prevented csplugincommon_osx from
	  building.
21-Mar-2005
	- Eric Sunshine re-wrote crystal.m4 essentially from scratch since it
	  was fragile, obfuscated, and unnecessarily complex.
	- Eric Sunshine renamed CS_PATH_CRYSTAL_JAM() to CS_PATH_CRYSTAL_EMIT()
	  in crystal.m4 and generalized it to work with any EMITTER, rather
	  than being hard-coded to use only CS_JAMCONFIG_PROPERTY(). (The old
	  CS_PATH_CRYSTAL_JAM(), though deprecated, is still recognized for
	  backward compatibility.)
	- Eric Sunshine added an OPTIONAL-LIBS argument to the
	  CS_PATH_CRYSTAL() and CS_PATH_CRYSTAL_EMIT() macros in crystal.m4.
	  This is useful for clients which may want to build portions of their
	  own projects conditionally based upon the modules with which Crystal
	  Space itself was built. For instance, CEL's Python support is
	  dependent upon Python support in Crystal Space, such that the CEL
	  Python module should be built only if Crystal Space was built with
	  Python support.
	- Eric Sunshine changed CS_PATH_CRYSTAL() and CS_PATH_CRYSTAL_EMIT() in
	  crystal.m4 so that they publish the additional shell variables
	  CRYSTAL_AVAILABLE (yes or no) and CRYSTAL_AVAILABLE_LIBS (a list of
	  all CS libraries available in this CS installation).
	  CS_PATH_CRYSTAL() exports these variables with AC_SUBST(), and
	  CS_PATH_CRYSTAL_EMIT() emits them to a property file.
	- Eric Sunshine renamed CS_PATH_CRYSTAL_HELPER() to
	  CS_PATH_CRYSTAL_CHECK() in crystal.m4. (The old name, though
	  deprecated, is still recognized for backward compatibility.)
	- Eric Sunshine fixed the --available-libs option in `cs-config' so
	  that it does not raise an error when given a library name which it
	  does not recognize. The purpose of this option (when given arguments)
	  is to filter its arguments down to a usable subset. For example, if
	  given 'csplugincommon_osx' on Linux, it should simply filter out this
	  name rather than complaining that it is unknown. (The other options,
	  such as --libs, --cflags, etc., still correctly complain about
	  unknown names.)
	- Eric Sunshine changed `cs-config' so that it also consults the
	  current working directory when attempting to locate the CS resources,
	  if all other options fail.
	- Eric Sunshine fixed problem in CS_CHECK_PROG_VERSION() macro in
	  progver.m4 where it could construct illegal shell variable names.
	- Marten Svanfeldt fixed a compile error in <csutil/formatter.h> on
	  MSVC 7.1
	- Jorrit started work on a small debugging framework for the
	  PVS visibility culler. Currently empty.
	- Luca applied a very small fix to the sprite2d plugin so that it is
	  possible to change its material on the fly at any time by calling
	  SetMaterialWrapper. He also added a little Doxygen note to the
	  csRenderMesh::indexend about its usage.
20-Mar-2005
	- Jorrit changed pvsvis so that the required bounding box is now
	  optional. PVSCalc will calculate the missing bounding box if needed
	  and the box is now saved with the cached PVS data.
	- Eric Sunshine fixed problem which caused
	  csPrintfFormatter::OutputFloatHex() to complain that it did not know
	  how to format floating-point numbers as hexadecimal on MacOS/X.
	- Eric Sunshine added a -Wno-long-doubles check to configure.ac. This
	  resolves complaints about csutil/formatter.h on MacOS/X.
	- Eric Sunshine added <wctype.h> and `wint_t' checks to configure.ac.
	  <cstypes.h> now fakes up `wchar_t' and `wint_t' if needed.
	  (csunicode.h no longer fakes up `wchar_t' itself since this is now
	  handled by <cstypes.h>.)
	- Eric Sunshine added a check to configure.ac which figures out how to
	  declare functions and types as deprecated so that the compiler will
	  issue a suitable diagnostic. This fixes problems with older versions
	  of gcc failing to understand `__attribute__((deprecated))', which was
	  hard-coded into <cssysdef.h>.
	- Eric Sunshine fixed <csutil/formatter.h> so that it builds cleanly
	  with older versions of gcc, such as 2.95.x.
	- Eric Sunshine fixed some build errors which manifested with older
	  versions of gcc, such as 2.95.x.
	- Eric Sunshine added an --available-libs option to `cs-config', which
	  allows clients to query whether certain Crystal Space libraries are
	  available. This is necessary since some libraries (such as
	  cspycommon, csplugincommon_ogl, csplugincommon_osx,
	  csplugincommon_w32, csplugincommon_dx) may not be built on all
	  platforms or all configurations, and clients need to be able to
	  figure out which resources are available.
19-Mar-2005
	- Erroroman fixed a bug in genmesh skelanimation exporter
	- Erroroman added texture "ugly_woman.jpg" to flarge skeleton model.
18-Mar-2005
	- Jorrit fixed isotest so that the actor displays again. For some
	  reason someone (Eric) put a NewMaterial() line in comments.
	  But that line is obviously needed. Thanks to Ross for finding
	  this.
17-Mar-2005
	- Mike Handverger applied a patch #1158485 from Piotr Obrzut to
          odedynamics with the following features:
	    - Strict ODE-like joint interfaces
	    - AMotor joint functionality added
	- Eric Sunshine fixed bug in simpleformer where a void function was
	  attempting to return a value.
	- Eric Sunshine added a check to configure.ac to determine how to
	  disable function inlining.  The result of this check is used when
	  building cspython since it is reported that, with some versions of
	  GNU build tools on Windows, cspython fails to link and emits the
	  error message "Error: 0-bit reloc in dll". In particular, this occurs
	  with optimizations (such as -O3) enabled. It is said that the problem
	  can be avoided by disabling function inlining.  Reported by Jorg
	  Fischer <turboj@web.de>.
	- Eric Sunshine removed the unused PTHREAD_MUTEX_TIMED test from
	  CS_CHECK_PTHREAD() in checkpthread.m4.
	- Eric Sunshine fixed bug in csStringBase::Append(csStringBase x,
	  size_t n) where, if string 'x' contained embedded nulls and 'n' was
	  -1, all characters following the first embedded null would be
	  discarded (i.e. not be appended to the target string).
	- Eric Sunshine fixed bug in csStringBase::AppendFmt() where the
	  convenience null terminator added by csPrintfFormatter() was
	  incorrectly considered as actual data (an embedded null) by
	  csStringBase. This had the unfortunate side-effect of making the
	  formatted string seem longer than expected. For instance,
	  csString(1234) would create a string of five characters (the four
	  digits plus an embedded null).
15-Mar-2005
	- Eric Sunshine renamed csQint8(), csQint16(), and csQint24() to
	  csQfixed8(), csQfixed16(), and csQfixed24(), respectively, in order
	  to better reflect their functionality. (The old names, though
	  deprecated, are still recognized for backward compatibility.)
	- Eric Sunshine re-implemented csQint(), csQround(), csQfixed8(),
	  csQfixed16(), and csQfixed24() in terms of simple casting operations
	  rather than advanced bit-trickery since, on modern hardware, the
	  casts tend to be significantly faster. For instance, csQint() with
	  CS_QINT_WORKAROUND defined was about six times slower than the simple
	  cast, and csQint() without CS_QINT_WORKAROUND defined was two times
	  slower than the cast.
	- Eric Sunshine removed the CS_IEEE_DOUBLE_FORMAT disabling override on
	  Intel style 64-bit platforms which was added on 22-Feb-2005 since it
	  caused csutil/formatter.h to complain about not knowing how to format
	  floating point as hexadecimal. (Anyhow, this override is no longer
	  needed since csQint() should now work correctly on 64-bit platforms.)
	- Eric Sunshine performed some more -ansi -pedantic sanitation on
	  csstring.h for 64-bit platforms.
	- Eric Sunshine fixed some issues in csstring.h which caused MSVC7 to
	  barf at compile-time.
	- Eric Sunshine added a couple missing `operator=(char const*)' methods
	  to csstring.h which were omitted accidentally from yesterday's added
	  batch of assignment operators.
	- Eric Sunshine added a couple specializations of templated operators
	  << and += in csstring.h in order to prevent gcc from barfing when the
	  right-hand argument has been allocated via CS_ALLOC_STACK_ARRAY().
14-Mar-2005
	- Eric Sunshine propagated yesterday's csString ShrinkBestFit() and
	  Empty() additions to iString and scfString for API consistency.
	- Eric Sunshine removed the csString::AsPadFoo() methods. Use the
	  nearly equivalent PadFoo() methods instead.
	- Eric Sunshine deprecated the SetGrowsExponentially() and
	  GetGrowsExponentially() methods in iString and csString. Use
	  SetGrowsBy(0) and GetGrowsBy() instead.
	- Eric Sunshine renamed the following string-related functions:
	    csFindReplace()         --> csReplaceAll()
	    csString::FindReplace() --> csString::ReplaceAll()
	    csString::FindStr()     --> csString::Find()
	  (The old names are still recognized, though deprecated.)
	- Eric Sunshine added iString::Find() and iString::ReplaceAll() to
	  complement like-named methods in csString.
	- Eric Sunshine re-sanitized csstring.h for gcc's -ansi and -pedantic
	  options. Some `long long' printf() formatting directives had crept in
	  with yesterday's changes.
	- Eric Sunshine updated some outdated documentation in csstring.h and
	  script/perl.txi.
	- Jorrit temporarily disabled the optimization in csStringFast because
	  it makes it impossible to use csString in csArray which is a bad
	  problem. We have to find a better solution for this. This fix is
	  only temporary.
	- Eric Sunshine made the following changes to csString and cousins:
	    - Fixed bugs where missing copy-constructors and assignment
	      operators led to nasty aliasing problems. The compiler was
	      performing memberwise copying, which resulted in multiple
	      csStrings referencing the same data buffers. This manifested as
	      the usual crashes and other foul behaviors.
	    - Fixed design problem which made it impossible (dangerous) to use
	      csString's in container classes, such as csArray<>, which
	      relocate the csString object in memory. The `Data' member no
	      longer ever points at csStringFast's internal buffer.
	    - Fixed bug introduced yesterday into
	      csStringBase::SetCapacityInternal() where its handling of buffer
	      expansion was borked. When configured for exponential expansion
	      (i.e. double the buffer size), it should have grown the buffer
	      like this (4, 8, 16, ...), but was instead growing it like this
	      (4, 9, 19, ...).
	    - Fixed bugs in csStringBase's and csStringFast's
	      SetCapacityInternal() where they were not properly taking the
	      implicit null terminator into account in all code paths when
	      computing the final capacity.
	    - Fixed csStringFast::SetCapacityInternal() so that it never
	      implicitly frees the dynamic buffer once it has been allocated,
	      since this was sub-optimal time-wise. Once we have paid the cost
	      of allocating it, we may as well continue using it, rather than
	      repeatedly throwing it away and reallocating it. As with
	      csStringBase, csStringFast now only frees the dynamic buffer upon
	      explicit request via Free() or ShrinkBestFit().
	- Eric Sunshine fixed win32/csconfig.h so that CS_HAVE_INTPTR_T is
	  defined for Borland.
	- Jorrit fixed csStringBase::LTrim(). It forget to use GetData().
	- Eric Sunshine fixed win32/csconfig.h so that CS_HAVE_STDINT_H is
	  defined for Borland.
	- Eric Sunshine fixed csutil/win32/winprintf.cpp so that it #defines
	  _fileno(), _isatty(), etc. for Borland.
13-Mar-2005
	- res made the following changes to csStringBase:
	    - Removed static Pad*() methods. Provided nothing that can't
	      already be done with non-static methods.
	    - Removed static integer and float Format() routines. Same
	      functionality can be achievedby utilizing the Replace() or
	      Format() methods.
	    - Templated csStringBase::Replace(), csStringBase::operator=(),
	      csStringBase::operator+=, csStringBase::operator<<().
	    - Added ShrinkBestFit() and Empty() methods. The idea has to use
	      the same names as in csArray<> as essentially the same is done.
	- Peter Amstutz fixed the csvosa3dl plugin to remove the use
	  of the obsolote csTextureLayer API
	- Eric Sunshine added Contains() to iStringSet. Previously, there was
	  no way to determine if a given string was a member of the set.
	- Eric Sunshine fixed bug (#838885) in AWS where it was using Adler32
	  to generate ID's from strings for slot names, sink names,
	  etc. Unfortunately, Alder32 is merely a hashing function, which means
	  that it does not guarantee unique results for all strings. This led
	  to bugs within AWS when Adler32 hashing collisions occurred. Andew
	  Mann, for example, reported collisions with just a few hundred
	  strings. Fixed by replacing Alder32 with iStringTable, which does
	  guarantee uniqueness.  Also performed some cleanup of the code and
	  other minor corrections and enhancements.
12-Mar-2005
	- res fixed csPrintfFormatter to actually properly handle argument
	  number specification (like in %3$d to take the 3rd argument).
	- res fixed a problem in csColorQuantizer where a static variable used
	  to qsort an array became 0 and caused crashes (possibly due lack of
	  thread-safety). Removed need for static var.
	- res renamed the current csString to csStringBase, added a templated
	  class csStringFast<> that features an internal buffer (which is used
	  instead of dynamically allocated memory if the size suffices) and
	  added a class csString that's pretty much csStringFast<> with the
	  default internal buffer size.
11-Mar-2005
	- Jorrit fixed the simple2 tutorial in the documentation so that it
	  explicitly states that you shouldn't use the scale.
	- res made a tweak to csuctransform.h to allow compilation for
	  external projects.
	- res fixed a problem where elements of csPolyGroup::polys would point
	  to freed memory. Fixed by using an index into an array instead.
	- res made csbench work again. Issues were above Thing problem but also
	  that wrong mesh objects were used for the light_bumpmap shader test.
	- res undid the csuctransform.h tweak and disabled "builtin wchar_t"
	  for CS. Also disables wchar_t overloads for
	  csUnicodeTransform::Encode()/Decode() on VC.
	- res added an optimization where a per-meshwrapper SV context is not
	  considered if it's empty.
	- res changed csMaterialHandle to also store a iTextureHandle ref.
	  Fixes crashes when fancycon is used with SW rendering.
	- res removed some old layer stuff from iMaterial.
	- res augmented csPrintfFormatter (and hence indirectly pretty much
	  everywhere in CS format strings are used) to support the '*' syntax
	  to supply width/precision as an argument in the arg list.
	- res fixed background transparency of the fancy console.
10-Mar-2005
	- Fixed flarge so that the name of the 'fire' texture plugin
	  no longer conflicts with the name of the 'fire' mesh loader plugin
	  in partsys. That way flarge and partsys can be loaded together.
	- res fixed a crash in the stencil shadow plugin that manifested
	  itself in e.g. r3dtest.
	- res fixed a problem where keycolor information wasn't properly
	  propagated from the PNG loader.
	- res fixed added some code to pythpost.i that was accidentially lost
	  when pyeventh.i was added.
	- res added ability to gfxtest to apply the keycolor to an image's
	  alpha channel.
	- res made the Jamtemplate template app use csPrintf().
9-Mar-2005
	- Peter Amstutz changed the csvosa3ld plugin to automatically
	  recalculate normals on loaded models (md2 and the like)
	- Eric Sunshine fixed bug in CS_CHECK_PYTHON() macro in checkpython.m4
	  where it neglected to set the output variable cs_cv_python in all
	  code paths.  This was particularly obvious if the user specified
	  --without-python, in which case $cs_cv_python would incorrectly
	  resolve to the empty string rather than the literal "no".
	- res made some small documentation tweaks.
	- res started to play with SWIG directors. Doesn't work at all yet,
	  tho.
8-Mar-2005
	- Eric Sunshine renamed the following configuration control macros
	  (most of which are emitted to csconfig.h by configure.ac) to improve
	  internal naming consistency, and to conform more closely to naming
	  scheme used by Autoconf. In the case of the CS_USE_FAKE_feature
	  macros, the boolean sense was also reversed.
	    CS_HAS_CAL3D                   --> CS_HAVE_CAL3D
	    CS_HAS_CMATH_H                 --> CS_HAVE_CMATH_H
	    CS_HAS_GLHANDLEARB_T           --> CS_HAVE_GLHANDLEARB_T
	    CS_HAS_INT64_C                 --> CS_HAVE_INT64_C
	    CS_HAS_INTMAX_T                --> CS_HAVE_INTMAX_T
	    CS_HAS_INTPTR_T                --> CS_HAVE_INTPTR_T
	    CS_HAS_INTTYPES_H              --> CS_HAVE_INTTYPES_H
	    CS_HAS_MACHINE_SOUNDCARD_H     --> CS_HAVE_MACHINE_SOUNDCARD_H
	    CS_HAS_MEMORY_MAPPED_IO        --> CS_HAVE_MEMORY_MAPPED_IO
	    CS_HAS_POSIX_MMAP              --> CS_HAVE_POSIX_MMAP
	    CS_HAS_REGEX                   --> CS_HAVE_REGEX
	    CS_HAS_SOUNDCARD_H             --> CS_HAVE_SOUNDCARD_H
	    CS_HAS_STDINT_H                --> CS_HAVE_STDINT_H
	    CS_HAS_SYS_PARAM_H             --> CS_HAVE_SYS_PARAM_H
	    CS_HAS_SYS_SOUNDCARD_H         --> CS_HAVE_SYS_SOUNDCARD_H
	    CS_HAS_WCHAR_H                 --> CS_HAVE_WCHAR_H
	    CS_RTLD_NOW_AVAILABLE          --> CS_HAVE_RTLD_NOW
	    CS_USE_FAKE_EXPLICIT_KEYWORD   --> CS_HAVE_CXX_KEYWORD_EXPLICIT
	    CS_USE_FAKE_MATH_H_FLOAT_FUNCS --> CS_HAVE_MATH_H_FLOAT_FUNCS
	    CS_USE_FAKE_SOCKLEN_TYPE       --> CS_HAVE_SOCKLEN_T
	    CS_USE_FAKE_TYPENAME_KEYWORD   --> CS_HAVE_CXX_KEYWORD_TYPENAME
	    CS_USE_FAKE_WCHAR_TYPE         --> CS_HAVE_WCHAR_T
	    CS_USE_FAKE_WCSLEN             --> CS_HAVE_WCSLEN
	- Eric Sunshine fixed problem in -fPIC and -shared configure checks
	  where `grep' was misinterpreting the leading `-' on the literal
	  search strings "-fPIC" and "-shared" as introducing a grep option.
	  This caused grep to fail in all circumstances, thus producing bogus
	  results.
	- Eric Sunshine fixed problem in CS_COMPILER_PIC() macro (checkpic.m4)
	  where it neglected to employ the result of the CS_COMPILER_ERRORS()
	  check despite requesting an invocation of CS_COMPILER_ERRORS().
	- Eric Sunshine fixed problem in the CS_COMPILER_PIC() macro where it
	  used AC_REQUIRE() to invoke CS_COMPILER_ERRORS(), which meant that
	  CS_COMPILER_ERRORS() would be invoked only if it had not yet been
	  invoked by some other agent. This was problematic because
	  CS_COMPILER_ERRORS() is intended to be invocable multiple times
	  (possibly with different arguments). As a result, CS_COMPILER_PIC()
	  was unable to predict the name of the shell variable in which
	  CS_COMPILER_ERRORS() stored its result.
	- res made the followig changes:
	    - Removed ancient fatal_exit from cssysdef.h.
	    - Made all lib*.a files go to out/<platform>/<mode>/libs to make
	      the life easier for cs-config.
	    - Changed cs-config to scan the dirs in the CRYSTAL var for
	      cssysdef.h and csconfig.h (both may lie in different directory
	      trees).
	    - Changed the SWIG stuff to rename SWIG_init to SWIG_init_<module>.
7-Mar-2005
	- Jorrit fixed walktest to use csStrCaseCmp instead of strcasecmp.
	  That fixes compilation on mingw.
	- Jorrit changed error reporting of bad UV mapping in thing so that
	  it only shows uv errors for individual polygons in case verbose
	  is used. In addition it will now report the name of the object
	  that is causing the problematic polygons too. In the past it was
	  nearly impossible to get that information.
	- Erotoman added support to export bones movements in
	  export_genmesh_skelanim.mcr (not only bones rotations).
	- Erotoman updated "walk" script of animated mesh with some bones
	  movements and now it looks better.
	- res improved the performance of iTexture->Blit() by preventing the
	  compression of the texture data.
	- res fixed the import of DirectX GUIDs in shared lib builds.
	- res fixed an issue in csProcAnimated where the "last update time"
	  was only updated when the image changed.
	- res fixed an occasional Depth value of 0 in csImageMemory.
	- res added ability to pass an initial image to csProcTexture.
	- res fixed a refcounting issue in cspython. Interfaces returned by
	  SCF_QUERY_INTERFACE* were IncRef()ed in addition to the implicit
	  QueryInterface() IncRef().
	- Jorrit added a few more notes about CEL to the dev-cpp howto.
	  Also reverted the changes from Eric that instructed people to
	  use $CRYSTAL instead of the path to CS. Unfortunately $CRYSTAL
	  doesn't work (and neither does %CRYSTAL%) so the full path must
	  be given.
	- Eric Sunshine added a number of missing ">" tokens to the XML
	  examples in rendpri.txi. (bug# 1158590)
	- res fixed csString::FormatV() to properly use a copied va_list
	  instead of reusing the same for multiple cs_vsnprintf() invocations,
	  which causes problems on x86_64 (and probably others).
	- Eric Sunshine extracted the warning-related compiler checks (-Wmost,
	  -Wall, -Werror, -Wno-unused, -Wno-uninitialized, -Wno-unknown-pragma)
	  from configure.ac and created re-usable macros in warnings.m4. The
	  new macros are:
	    CS_COMPILER_WARNINGS()
	    CS_COMPILER_ERRORS()
	    CS_COMPILER_IGNORE_UNUSED()
	    CS_COMPILER_IGNORE_UNINITIALIZED()
	    CS_COMPILER_IGNORE_PRAGMAS()
	- Eric Sunshine renamed the CS_CHECK_COMPILER_PIC() macro in
	  checkpic.m4 to CS_COMPILER_PIC(). (The old name is still recognized
	  for backward compatiblity.)
	- Eric Sunshine changed the behavior of CS_CHECK_BUILD_FLAGS() in
	  checkbuild.m4.  Rather than setting CACHE-VAR to "no" upon failure,
	  it now sets it to the empty string. This simplifies client usage
	  since the client no longer needs to check against "no" before
	  attempting to utilize the discovered value.  For example, it is now
	  safe to use the result of CS_CHECK_BUILD_FLAGS() directly, as in
	  CFLAGS below:
	    CS_CHECK_BUILD_FLAGS([if -Wflarp is recognized],
	        [cs_cv_prog_cc_flarp], [CS_CREATE_TUPLE([-Wflarp])])
	    CFLAGS="$CFLAGS $cs_cv_prog_cc_flarp"
	  If the old behavior of checking against "no" to detect failure is
	  still needed (rather than checking against an empty string), then the
	  new variable named CACHE-VAR_ok can be consulted.
	- Eric Sunshine fixed bugs in the recently added va_copy() and
	  __va_copy() checks in configure.ac, and the recently modified
	  MAXPATHLEN check where the literal "no" was being added to CFLAGS for
	  the scope of those checks if the "-ansi -pedantic" check had failed.
	- Eric Sunshine refactored the new va_copy()/__va_copy() checks in
	  configure.ac in order to simplify maintenance.
	- Eric Sunshine made the -shared check in configure.ac and compiler.m4
	  more robust against localization problems by checking the compiler
	  diagnostics for the literal "-shared" (which appears in the warning
	  message), rather than for "unrecognized", since "unrecognized" might
	  be translated if the user's language selection is not English.
	- Eric Sunshine fixed problem on Windows with MingW where csQsqrt()
	  test was failing because -fPIC flag was generating warning "-fPIC
	  ignored for target (all code is position independent)". Coupled with
	  use of -Werror flag, this caused configure to think that the test had
	  failed despite the fact that the build itself might have succeeded.
	- Eric Sunshine updated out-of-date comments for CS_EMIT_BUILD_FLAGS()
	  in emit.m4.
6-Mar-2005
	- Eric Sunshine removed invocation of SWIGEXTERN() from definition of
	  csWrapTypedObject() in pythpost.i since the meaning of SWIGEXTERN
	  changed in Swig 1.3.24. Moreover, its use in earlier versions was
	  superfluous since it attempted to export the symbol from the DLL, but
	  the function is used only by other compilation units in the same
	  DLL. Swig 1.3.24 issue reported by Michael D. Adams
	  <mdmkolbe@gmail.com>.
	- res augmented the MAXPATHLEN configure check to use the -ansi and
	  -pedantic flags, as apparently on some setups MAXPATHLEN is detected
	  by configure, but later not available when compiling sources with
	  -ansi -pedantic.
	- res changed some places to use the newly supported cs_snprintf()
	  formats (mostly correct formatting of pointers).
	- Eric Sunshine added csRef<>::Invalidate() to complement the existing
	  IsValid() method.
	- Eric Sunshine replaced the ugly CS_DECLARE_OBJECT_ITERATOR() macro
	  with a new templated class csTypedObjectIterator<>. As a happy
	  side-effect, the templated class provides a cleaner solution than the
	  20-Aug-2003 fix to the problem where the macro-based class was
	  incorrectly invoking the pure-virtual GetRequestedInterface().
	- Eric Sunshine added a `meshimpexp' Jam compile-group.
	- Eric Sunshine changed the following methods to return csRef<> rather
	  than raw pointers of which the client had to dispose manually via
	  DecRef():
	    iEmitFactoryState::CreateBox()
	    iEmitFactoryState::CreateCone()
	    iEmitFactoryState::CreateCylinder()
	    iEmitFactoryState::CreateCylinderTangent()
	    iEmitFactoryState::CreateFixed()
	    iEmitFactoryState::CreateLine()
	    iEmitFactoryState::CreateMix()
	    iEmitFactoryState::CreateSphere()
	    iEmitFactoryState::CreateSphereTangent()
	    iHazeHullCreation::CreateBox()
	    iHazeHullCreation::CreateCone()
	- Eric Sunshine added a section to apimod100.txi discussing Marten's
	  changes to the render buffer architecture of 8-Jan-2005. The
	  discussion is based upon an email of Marten's explaining his changes
	  in some detail:
	    http://article.gmane.org/gmane.comp.graphics.crystalspace.general/
	         6447/
	- res fixed cs_snprintf() long double support.
	- res made a mini-update to the VC build instructions (correct DLL
	  names).
5-Mar-2005
	- res added some terrain-related interfaces to cspace.i.
	- res made more -ansi -pedantic compile fixes on Win32.
	- res made the following changes:
	    - Removed some ancient, now unused files from data/effectsys.
	    - Removed CS_ID type.
	    - Added cs_asprintf() and cs_vasprintf() functions.
	    - Applied patch #1157081, "Fix DirectX support under Cygwin", from
	      Michael D. Adams <mdmkolbe@users.sf.net>.
	    - Fixed totally wrong surrogate handling in csUnicodeTransform.
	      Also, code points outside the Unicode range (0-0x10ffff) now
	      won't be encoded or decoded.
	    - Made some doc changes to cstool/tokenlist.h.
	    - Added an implementation of cs_snprintf() from scratch. It accepts
	      the same format specifiers as glibc. This allows a consistent
	      format syntax across platforms (for e.g. 64 bit numbers) and
	      alleviates us from worries about license compatibility issues.
	      The old cs_snprintf() can be re-enabled by removing NEW_SNPRINTF
	      from the top of snprintf.cpp.
	    - Added ptrdiff_t, (u)intmax_t and (u)longlong types to cstypes.h,
	      used by the new cs_snprintf(). ((u)longlong is intended as a
	      size-agnostic type for %lld(%llu) formats.)
	- res added a patch from Seth Yastrov <syastrov@gmail.com> to directly
	  set the float heightmap data on an iSimpleFormerState.
	- res fixed some issues with cs_snprintf() long double support. Needs
	  more work, though.
	- res added ability to walktest to optionally enable saver flag. Edit
	  walktest.cfg or run with "-saveable". (Really, this time.)
4-Mar-2005
	- Eric Sunshine applied patch from <obi666@users.sourceforge.net>
	  (patch #1155282), which adds iAnimTimeUpdateHandler for
	  sprcal3d. This handler allows clients to override the default
	  advancement behavior of csSpriteCal3DMeshObject::Advance(), which
	  normally merely invokes CalModel::update(). Eric also made a number
	  of improvements to the patch, such as adding missing Doxygen
	  comments, increasing robustness, and making better use of CS
	  functionality.  In addition, Eric performed a bit of formatting
	  cleanup of the sprcal3d-related header files.
	- Jorrit again renamed SortedInPoint() and SortedInLine() to
	  PointInClosedMesh() and LineInClosedMesh().
	- Jorrit added csPolygonMeshTools::BoxInClosedMesh() routine.
	- Jorrit added csPlane3::GetNormal().
	- Jorrit added csPlane3::FindPoint() which returns a point on the
	  plane.
	- Jorrit added csIntersect3::BoxPlane() which tests if a plane
	  intersects with a box.
	- Jorrit added csIntersect3::BoxTriangle() which tests if a triangle
	  intersects with a box.
	- Jorrit renamed a great deal of the routines in csIntersect3 so that
	  they have a more consistent naming. This means that all those
	  routines now mention the names of the two objects that are being
	  intersected. For example, IntersectPolygon() has now been renamed
	  to PlanePolygon(). The apimod document has been updated with all
	  changes.
	- Jorrit renamed routines in csIntersect2 in a similar fashion.
	- Jorrit added csIntersect3::BoxBox() for which the implementation
	  is actually in csBox3. But this routine complements csIntersect3
	  nicely.
	- Jorrit added csIntersect3::FrustumFrustum() for which the
	  implementation is actually in csFrustum.
	- Jorrit added 'const' several times to code in csFrustum.
	- Erotoman made several big changes in genmesh skeletal animation
	  plugin:
	    - Rotations are now calculated by quaternion.
	    - The code for animation blending was completly rewritten.
	    - Changed animation script syntax.
	    - Added functions:
	        iGenMeshSkeletonControlState::SetAlwaysUpdated(bool)
	        bool iGenMeshSkeletonControlState::GetAlwaysUpdate()
	      If the boolean flag is false then animation is updated only if
	      mesh is visible (default is true)
	- Erotoman replaced skeletal animation model with new one.
	- Erotoman added MAX script for exporting genmesh skeletal animation
	  from Character Studio.
	- Eric Sunshine fixed Texinfo mark-up problems and rewrote and
	  clarified discussion recently added to apimod100.txi.
	- Eric Sunshine added a Jamfile to the new CS/scripts/max/gmeshskelanim
	  directory to ensure that this converter script gets installed.
	- Eric Sunshine added csStrCaseCmp() and csStrNCaseCmp() to
	  <csutil/util.h>. These are portable versions of strcasecmp(),
	  stricmp(), strncasecmp(), and strnicmp(). They may be useful to
	  projects which employ gcc's -ansi and -pedantic switches.
	- Eric Sunshine further sanitized <csutil/csstring.h>,
	  <csutil/stringarray.h>, and <ivaria/reporter.h> by eliminating usage
	  of strcasecmp() and strncasecmp() from inline methods since these are
	  not available under gcc's -ansi and -pedantic switches (at least on
	  Windows).
	- Eric Sunshine refined the fakement of `typename' for compilers for
	  which CS_USE_FAKE_TYPENAME_KEYWORD is defined. For such compilers,
	  `typename' is now defined as `class', which means that it can safely
	  be used when declaring template arguments, such as:
	    template<typename T> struct A {...};'
	  For the other case, where `typename' is used to qualify a typename
	  within a template itself, we now fake up a `typename_qualifier'
	  keyword which is defined as nothing for compilers which do not
	  provide `typename', and as `typename' for compilers which do support
	  it.  Usage example:
	    template<typename T> struct A {
	      typedef int B;
	      typename_qualifier A::B var;
	      typename_qualifier T::Functor get_functor() const;
	    };
	- Eric Sunshine fixed a couple bugs introduced recently into
	  configure.ac. (1) Numeric comparisons of $cs_long_bits incorrectly
	  used = rather than -eq. (2) $cs_cv_prog_cxx_fpic had been renamed to
	  $cs_cv_prog_cxx_pic, but not all references to that variable were
	  updated.
3-Mar-2005
	- Jorrit fixed a compile error in spr2d. ||= is not a valid
	  C++ operator. So put the original |= back.
	- Jorrit added csPolygonMeshTools::SortTrianglesX() and
	  csPolygonMeshTools::SortedIn(). These two routines allow you to
	  check if a point is in a closed triangle or polygon mesh.
	- Jorrit renamed csPolygonMeshTools::SortedIn() to SortedInPoint()
	  and added a new SortedInLine() routine that checks if a line
	  is completely in the object.
	- res enabled "Treat wchar_t as builtin type" for VC7 projects.
	- Eric Sunshine once again sanitized the public CS headers for gcc's
	  "-ansi" and "-pedantic" options.
	- Eric Sunshine removed <csutil/getopt.h> from the <csutil.h>
	  master-header since the symbols which it provides tend to conflict
	  with symboles in the platform-supplied <getopt.h>. (In the near
	  future, we should prefix our getopt.h symbols with `cs' to avoid such
	  conflicts.)
	- Eric Sunshine added CS_SUBST_EMITTER() and CS_DEFINE_EMITTER() macros
	  to emit.m4. These are wrappers around the standard AC_SUBST() and
	  AC_DEFINE_UNQUOTED() macros, respectively. They can be used as the
	  EMITTER argument of the many custom Autoconf macros which Eric wrote
	  for CS (and complement the existing emitter macros, such as
	  CS_JAMCONFIG_PROPERTY(), CS_MAKEFILE_PROPERTY(), CS_NULL_EMITTER(),
	  etc.).
	- Eric Sunshine added a check to configure.ac to test if the compiler
	  can be instructed (via -ansi and -pedantic, for instance) to comply
	  strongly with the C++ language standard.
	- Eric Sunshine applied the result of configure.ac's new C++ language
	  conformance check to simple1 and walktest. This will help us to
	  ensure that the public CS headers can be #included cleanly by
	  external projects which use gcc's -ansi and -pedantic options. These
	  two modules were chosen because they are built frequently, and both
	  #include <crystalspace.h>, which provides us with maximum header
	  coverage. (Unfortunately, we can not use -ansi and -pedantic globally
	  since CS relies upon some language features, such as `long long',
	  which are not part of the present standard.)
	- Eric Sunshine eliminated a number of compilation warnings throughout
	  the project.
	- Eric Sunshine updated the cal3d check in configure.ac so that it
	  demands the very latest CVS version of cal3d since it is required by
	  viewmesh.
	- Eric Sunshine updated the extremely old config.guess and config.sub
	  in CS/mk/autoconf from the master copies at
	  ftp://ftp.gnu.org/pub/gnu/config/.  Also updated install-sh from the
	  Automake master copy.
	- Eric Sunshine added a CS_CHECK_COMPILER_PIC() macro in checkpic.m4.
	  This macro figures out how to enable PIC generation (position
	  independent code) in the specified compiler.
	- Eric Sunshine removed redistributed TemplateToolkit2 and AppConfig
	  Perl modules from CS/mk/perl5.  Very few people need to generate MSVC
	  project files for CS, so this extra bulk was hardly warranted.
	  Developers wanting to generate project files can install these Perl
	  packages locally using normal Perl package installation mechanisms,
	  such as CPAN (Unix) or PPM (Windows).
2-Mar-2005
	- Jorrit changed pvscalc to use the Description() method to print
	  out boxes and vectors instead of the ugly B2F and other macros.
	- Jorrit added an epsilon parameter to the csPoly3D::IsAxisAligned()
	  routine.
	- Jorrit fixed csPoly3D::ClassifyAxis() and related to also be
	  able to return CS_POL_SAME_PLANE.
	- Jorrit added an epsilon parameter to the csBox3::Adjacent()
	  routines.
	- Jorrit fixed a bug in pvscalc where it would forget to set the
	  parent node of the shadow KDtree. This bug would have a negative
	  impact on PVS quality.
	- Jorrit added csBox3::GetAxisPlane() to convert a side of a box
	  to an axis plane (axis/where).
	- Jorrit added support in pvscalc for visibility calculation of
	  adjacent boxes by using the axis aligned polygons that are on
	  the box sides.
	- Jorrit enhanced pvscalc so that it uses the axis aligned
	  polygons on the destination node and projects those on the
	  coverage buffer too before projecting the other polygons
	  that are between the two nodes.
	- res fixed a dumb oversight in csGLVBOBufferManager::ParseByteSize()
	  that caused it to bark if no suffix is present at all.
	- res changed the generic csPrintf() to better deal with surrogates.
	- res made a couple of small Doxygen changes/improvements.
	- res applied a patch from Michael D. Adams
	  <mdmkolbe@users.sourceforge.net> to fix a crash on exit in Cygwin
	  (patch #1154478).
	- Eric Sunshine re-engineered the debug emitting code in pvscalc to
	  make it more robust. Unfortunately, the changes to the same code
	  earlier today were unportable and unsafe. Specifically, in an
	  expression such as `printf("%s\n",box.Description().GetData())', some
	  older compilers will destroy the temporary csString returned by
	  Description() before the result of GetData() is used by printf().
	  This typically results in a crash.
	- Eric Sunshine updated the msvcgen workspace templates so that the
	  project dependency lists are now sorted. This will ensure that the
	  same list of dependencies always generates the same workspace file
	  regardless of the order in which the dependencies were declared.
	  This is an important consideration for jobber.pl, for instance, which
	  could be fooled into thinking that the project files were outdated if
	  the the dependency information was specified in a different order on
	  different runs.
	- Eric Sunshine fixed bug in the msvcgen project templates where the
	  file lists were not always sorted reliably. The problem was that the
	  file list was sorted before prefixes (such as $(TOP) and $(BUILDTOP))
	  were stripped from the files.  However, once the prefixes were
	  stripped, the files would appear out-of-order.  For example, given
	  the files "/a/foo" and "/b/bar", they would be sorted into ("/a/foo",
	  "/b/bar"), and then the prefixes would be stripped, giving ("foo",
	  "bar"), which is improperly sorted.
	- Eric Sunshine fixed the csplugincommon DirectX, MacOS/X, OpenGL, and
	  Win32 sub-Jamfiles to correctly use LibDepends instead of
	  LinkWith. This fixes dependency problems in the generated project
	  files.
1-Mar-2005
	- res fixed the use of 'return' in a void method in glrender3d.cpp.
	- Marten fixed a bug related to attenuation of lights in r3dtest.
	  The part in the light iterator needs more careful rewrite later.
	- Marten reduced the density of the fog in flarge slightly so you
	  see anything in it.
	- res added support for color output to the Win32 csPrintf(); it can
	  now parse ansi sequences and set the console colors accordingly.
	- res fixed a bug in the generic csPrintf(), it was incorrectly
	  writing non-ASCII chars in the cheap UTF8-to-ASCII mode.
	- res augmented the generic csPrintf() to parse for ANSI code sequences
	  to only output formatting sequences to a TTY.
	- res made csparser and cssynldr use csReport().
	- res changed the generic csPrintf() to use fputws() only on wide
	  streams and fputs() otherwise.
	- res fixed the simpleformer & bruteblock plugins to use correctly
	  oriented material and base maps.
	- res added hacked around apparent deadlocks in the thread job queue
	  by adding a timeout at one point.
28-Feb-2005
	- Jorrit changed the generation of the light ID so that it is
	  compatible again for pseudo dynamic lights. Otherwise too many
	  maps had to be relit.
	- Jorrit reverted the change to light ID generation because it
	  doesn't help sufficiently.
	- res added functions to map Unicode characters to their uppercase/
	  lowercase/fold equivalents to csUnicodeTransform.
	- Eric Sunshine fixed Crystal Space version check in crystal.m4.  The
	  'sed' expression which extracted the major and minor version
	  components from `cs-config --version' was completely
	  broken. (Reported by Michael D. Adams <mdmkolbe@users.sf.net>; patch
	  #1152178.)  In addition, the sed expression used non-portable
	  regular-expression features which are not available everywhere (such
	  as MacOS/X and modern BSD platforms).
	- Eric Sunshine applied patch #1153486 from Michael D. Adams
	  <mdmkolbe@users.sf.net> which fixes SystemInstallApplication in
	  win32.jam so that it installs programs with proper execute permission
	  on Cygwin.
27-Feb-2005
	- res applied (a variation of) patch #1152721, "Cygwin compatability
	  with _X and _C", from Michael D. Adams.
	- res fixed a printf() format warning in vfscache.cpp on Cygwin.
	- res added missing SCF_CONSTRUCT_IBASE/SCF_DESTRUCT_IBASE to
	  BufferNameIter class (in userrndbuf.cpp).
	- res changed xmlshader to accept both stock and custom buffer names
	  in the source attribute of a buffer mapping.
	- res made some doc changes to the headers in csplugincommon/canvas.
	- res fixed genmesh user render buffers to actually work.
	- Anders Stenberg made genmesh submeshes work with user render buffers,
	  and added loader code for submeshes. No saver code yet.
	- Vincent Knecht cleaned up rpm/cs.spec: using more wildcards, %exclude
	  and %{_bindir}).
	- Marten fixed two compile errors in vertexlight.h
26-Feb-2005
	- res renamed "anonymous render buffers" to user render buffers,
	  simplified csUserRenderBufferManager, added a render buffer parser
	  to the syntax services, and fixed GM factories to support user render
	  buffers.
	- res made a small improvement to the csplugincommon/canvas docs.
	- res made GM mesh objects support user render buffers.
	- Anders Stenberg did the following terrain fixes:
	  - Fixed a design mistake in bruteblock terrain that meant trouble
	    when more than one terrain existed in the scene.
	  - Flipped Z of heightmaps in terraformer to correspond to material
	    & base maps. Hope this doesn't screw things up for people using it.
	- Anders Stenberg added support for multiple contexts to the GL
	  statecache. This is only for possible future use, and not used yet.
	- Anders Stenberg fixed a bug in Win32 utils where command line
	  arguments were read directly instead of through the command line
	  parser.
	- Anders Stenberg added functionality to multiple materials
	  on genmesh instances.
	- res added the ability to attach custom data to Thing polygons. Just
	  add a <renderbuffer> in a <p>.
25-Feb-2005
	- Jorrit added a new HOWTO that explains how to compile external
	  applications for Crystal Space and CEL using Dev-CPP.
	- Jorrit fixed compilation for a few mesh plugins when leak
	  guards are enabled.
	- Eric Sunshine fixed the 'install' target so that it also installs the
	  *.tok files from the CS/include/csplugincommon subdirectories.
	- Vincent upgraded rpm/cs.spec for csplugincommon include directory.
	  Also added *.afp to CS/data/shader/Jamfile InstallData directive.
	- Marten changed the iLight interface to be a bit clearer and simpler.
	- Marten added a few helper functions to csgeom for math calculations.
	- Marten added a general per vertex light calculation system. It is not
	  finished, and not yet used though.
	- Eric Sunshine fixed spelling, grammatical, and Texinfo mark-up
	  problems in material recently added to the CS manual.
	- Eric Sunshine cleaned up and re-wrote portions of the new Dev-CPP
	  HOWTO.
	- Eric Sunshine replaced 'typename' in template arguments with 'class'
	  in some recently added templates in order to support slightly older
	  compilers. CS fakes up a 'typename' keyword, but it is meant to be
	  used only to pacify modern compilers which complain about ambiguous
	  type names within templates; not for declaration of template
	  arguments.
	- Eric Sunshine renamed the following recently added classes in order
	  to avoid global namespace pollution:
	    CLQAttenuation        --> csCLQAttenuation
	    DirectionalLightProc  --> csDirectionalLightProc
	    InverseAttenuation    --> csInverseAttenuation
	    LinearAttenuation     --> csLinearAttenuation
	    PointLightProc        --> csPointLightProc
	    RealisticAttenuation  --> csRealisticAttenuation
	    SpotLightProc         --> csSpotLightProc
	    VertexLightCalculator --> csVertexLightCalculator
	- Eric Sunshine added a bunch of missing CS_CSGFX_EXPORT directives to
	  classes in csgfx/vertexlight.h.
	- Eric Sunshine once again sanitized the public CS headers for gcc's
	  "-ansi" and "-pedantic" options.
	- Eric Sunshine enhanced <cstool/tokenlist.h> so that it is possible
	  for the client to customize the prefix of enumeration items in the
	  event that "XMLTOKEN_" is unsuitable. Also enhanced the synthesized
	  enumeration so that it automatically contains one additional item at
	  the end of the list named XMLTOKEN_TOKEN_COUNT (though this name is
	  also cutomizable). As a convenience, the value of this item is the
	  number of items in the enumeration (not including the
	  automatically-added item).
	- res added STRIP_FROM_INC_PATH to the *.dox files (to get correct
	  include paths to show up in the docs, at last) and merged some styles
	  from newer Doxygen stylesheets into CS' own API doc stylesheet.
24-Feb-2005
	- Jorrit fixed edge drawing by the OpenGL renderer by using
	  glPolygonMode(GL_BACK,GL_LINE) instead of the way it was currently
	  done. This produces correct edges now. The previous method was
	  incorrect in many cases (missing edges and so on).
	- Jorrit changed bugplug so it automatically switches the mode to
	  clearing the screen automatically if edge drawing is selected.
	  Otherwise the edges are hard to see and cause HOM.
	- res corrected the normal map swizzling in the
	  splatting_scattering_base shader. It didn't flip the (source) Y
	  coordinate.
	- Eric Sunshine added several missing #includes to
	  csplugincommon/canvas/draw_line.h and
	  csplugincommon/renderstep/parserenderstep.h.
	- Eric Sunshine fixed problem in csutil/win32/callstack.cpp where it
	  failed to compile with MSVC6 on account of missing ULONG_PTR type.
	- res fixed the missing IID_ symbols on MinGW by having
	  csplugincommon_dx provide them via INITGUID.
	- Eric Sunshine reverted the change to csPrintf() of 18-Feb-2005 where
	  it was modified to understand %b, %2b, %v, and %2v as formatting
	  directives for csBox3, csBox2, csVector3, and csVector2,
	  respectively.  This "enhancement" was problematic for a couple
	  reasons:
	    (1) It introduced a highly undesirable circular dependency between
	        csgeom and csutil.
	    (2) The change was made to the underlying snprintf.c implementation
	        from the Apache project, however, we would like to avoid
	        changing this file if at all possible since we may want to drop
	        in a new version of the file in the future without having to
	        re-apply a large set of changes. (Presently, the only
	        specializations we have made to it are the #inclusion of
	        cssysdef.h and a couple `#pragma warning()' directives for MSVC
	        which, are minimal and simple to re-apply.)
	  Also added Description() convenience methods to csBox3, csBox2,
	  csVector3, and csVector2.
	- Eric Sunshine applied a patch from Michael D. Adams
	  <mdmkolbe@yahoo.com> which fixes problem in winprintf.cpp where
	  Cygwin did not understand _fileno() and _isatty().
	- res fixed compiling of Opcode under Cygwin (and probably other
	  platforms where uintptr_t isn't basically the same as Opcode's
	  udword).
	- res fixed the use of int<->iMaterialWrapper* casts in sprcal3d.
	- res fixed a wrong #include in the asciiart canvas.
	- res fixed missing files in xwindow plugin.
	- res fixed the csplugincommon Jamfile to correctly use LibDepends
	  instead of LinkWith and reverted the recent msvcgen.jam change to
	  avoid libs depending on libs (which was a fix of the symptom, not the
	  cause).
23-Feb-2005
	- res moved the code from the various "common" libraries into a
	  library "csplugincommon" (and libraries with Win32, OpenGL and
	  DirectX specific code) to facilitate the creation of 3rd party
	  plugins (they can use the same base classes etc. as CS does) and
	  future static linking of external projects.
	- res made some udword->uintptr_t changes to Opcode again, hopefully
	  this time with more success.
	- res changed the VC projects to not let depend libraries on other
	  libraries (caused odd linking warnings).
	- res fixed interleaved VBO buffers after the recent change for
	  renderer-independency.
	- Eric Sunshine added a master-header for csplugincommon. Also
	  refactored the csplugincommon Jamfile for ease of maintenance.
	- Eric Sunshine documented new csplugincommon convenience libraries in
	  apimod100.txi.
	- Eric Sunshine re-engineered the way configure.ac filters out the
	  optimization (-O2) and debugging (-g) flags which Autoconf insists
	  upon adding to CFLAGS and CXXFLAGS. (We want to avoid these by
	  default because together they interfere with Crystal Space's
	  "optimize" and "debug" build modes.)  There were several serious
	  problems with the old approach:
	    - It mutated valid compiler options into bogus arguments. For
	      instance, `-ggdb3' became `db3'. This bug report from the Gentoo
	      bug tracker illustrates the problem:
	      http://bugs.gentoo.org/show_bug.cgi?id=77413
	    - It removed -O and -g options unconditionally even if the user had
	      requested them explicitly, thus making it extremely difficult for
	      the user to supply certain desired options at configuration time.
	      (Typically, the user ended up having to edit Jamconfig
	      after-the-fact.)
	    - The options were fed through `echo' in such a way that it was
	      possible for `echo' to mistakenly think that the options were
	      intended for it (rather than for the compiler), which could
	      result in `echo' eating some options, and issuing error messages
	      for others.
	    - The `sed' expression was broken and failed to filter out a
	      literal "-g" despite the fact that "-g" is one of the problematic
	      flags.
	- res added a normal to the base texture of the 'terrain' level.
	- res fixed csImageCubeMapMaker and csImageVolumeMaker not invoking
	  SCF_CONSTRUCT_IBASE()/SCF_DESTRUCT_IBASE().
	- res added a description for the csplugincommon target.
	- res readded 'soundrenderer' to the list of subdirectories which
	  mysteriously disappeared earlier.
22-Feb-2005
	- Eric Sunshine disabled CS_IEEE_DOUBLE_FORMAT for 64-bit Intel style
	  platforms. This works around problem where csQint() failed on such
	  platforms.
	- res made render buffers renderer-independent.
21-Feb-2005
	- res tweaked the VC7 project files to disable manifest generation on
	  VC8 (yay forward compatibility).
	- res made a small optimization to the static plugin registration;
	  the metadata is put into a separate section on MSVC.
	- res fixed a problem occuring with static linking on MSVC: gmeshanim
	  and gmeshskelanim both use a data structure named 'ac_vertex_data',
	  but differently sized. However, for csArray<>s etc. VC uses the same
	  code - which can't end well. Renamed the gmeshskelanim 'ac_*' structs
	  to 'sac_*'.
	- Eric Sunshine augmented csQsqrt() and csQint() checks in configure.ac
	  in order to detect problems specific to 64-bit platforms. (For
	  instance, on Intel 64-bit, csQint() gives incorrect results for
	  negative numbers.)
	- res fixed an unit var in the OpenGL font cache.
	- res fixed 'scfStaticallyLinked' not being defined in plugins.
20-Feb-2005
	- res made the following changes:
	    - Added a flag that is set via a variable indicating whether the
	      app was statically linked or not. In the case of static linking,
	      SCF will by default not scan for plugins on startup (the app can
	      still scan manually).
	    - Added VC projects for static versions of the plugins.
	- res fixed a compile error occuring on older Platform SDKs.
	- res fixed some build issues with the AWS bison/flex stuff.
19-Feb-2005
	- res changed the token table init function name from init_token_table
	  to InitTokenTable.
	- res changed csparser to use the token table mechanism.
	- res added the ability to attach shader vars to mesh objects.
	- res unbotched some string splitting code.
	- Vincent fixed remaing init_token_table calls to InitTokenTable.
	- res fixed endless loops in the $CRYSTAL and other string splitting
	  code.
	- res added the ability to attach shader vars to mesh object factories.
	- res made the following changes:
	    - Changed how static plugin information is handled. The metadata
	      etc. is now kept inside the plugin _static library and referenced
	      by the SCF_USE_STATIC_PLUGIN macro.
	    - Made Jam SubVariants nestable.
	    - Changed DoSourceGrist to not replace already existing grist.
	    - Fixed shared libs to also have install rules.
	- res tweaked the VC7 project files release configuration. Notably,
	  debug info generation is now enabled.
18-Feb-2005
	- Jorrit worked further on PVSCalc:
	    - Some small fixes on kdtree building.
	    - If the two children are invisible then the node itself
	      is automatically marked invisible too.
	    - Added a test so that solid splits (a split where an
	      axis aligned polygon completely covers the node cut) get
	      a higher quality.
	- Jorrit added support for %b (box) and %v (vector3) to csPrintf.
	  So now you can print out a vector and a 3D box like this:
	    csPrintf ("box %b, vector %v\n", &box, &vector);
	  For printing out a 2D vector or a 2D box you can use %2b and
	  %2v. Unfortunatelly using %b and %v cause compiler warnings.
	  Don't know how to avoid that yet.
	- res made csXMLShader only keep a weak ref to iGraphics3D; otherwise,
	  a circular ref was created.
	- res made csSector::UnlinkObjects() also unlink lights (fixes a leak).
	- res scraped a few bytes off Win32 callstacks.
	- res added an alternative (faster) way to obtain the thread context
	  needed to create a call stack. It uses exception handling and is
	  only used if the program is not debugged.
	- res changed csRefCount to also use the ref tracker.
	- res made CRYSTAL be treated like a list of paths.
	- res added a Jam helper to split space-separated vars into a list.
	- res added the Win32RcFlags rule to the Jam system to allow passing of
	  flags to the resource compiler.
	- res fixed the level loader to initialize the light direction with
	  a non-0.0f vector.
	- res changed csLight::SetDirection() to refuse directions with 0
	  length.
17-Feb-2005
	- Jorrit added csPoly3D::ClassifyAxis().
	- Jorrit added constants CS_AXIS_X, CS_AXIS_Y, and CS_AXIS_Z, to
	  replace the values 0, 1, and 2. There is also a CS_AXIS_NONE
	  which has the value of -1.
	- Jorrit added csPoly3D::IsAxisAligned() to test if a polygon
	  is axis aligned.
	- Jorrit made pvscalc kdtree calculation better. Also did a first
	  attempt to use the axis aligned polygons present in the level
	  to optimize the kdtree building. Not fully implemented yet.
	- Jorrit did another optimization to the kdtree building. This
	  time the axis aligned polygons are also used for the general
	  kdtree builder. This makes a more compact kdtree.
	- res fixed viewmesh to compile with latest Cal3d - really the latest
	  cal3d this time.
	- res updated the manual for the latest cs-win32libs URL.
	- res made the Win32 port flush stdout() after a csPrintf().
	- res updated the saver ot properly save 3d textures.
	- res fixed a crash when the reftracker was used with
	  csApplicationFramework and csBaseEventHandler.
16-Feb-2005
	- Jorrit significantly improved PVS quality by fixing the polygon
	  clipper so that the orientation of the polygon clipper is
	  correct. This orientation matters. Now half of the projected
	  polygons were rejected due to wrong orientation.
	- Jorrit fixed initialization problems in pvstree (detected by
	  valgrind).
	- Jorrit added support for a new 'meta' tag in the map loader.
	  This 'meta' tag is exactly the same as 'addon' (i.e. where you
	  use 'addon' you can also use 'meta' with same syntax). The
	  only difference is that 'meta' will not show a warning or error
	  in case the plugin cannot be found. So 'meta' can be used in
	  situations where you want the addon plugin to be optional and
	  not give any warnings at runtime. This can be useful to add
	  specific information useful for tools. I plan to use this to
	  add meta data for pvscalc.
	- Jorrit added initialization of alphaType in the map loader.
	- Marten did following engine changes:
	    - Extended csMovable to be able to use it with lights and
	      cameras as well as meshes.
	    - Changed iLight/csLight to provide a movable.
	    - Extended iLight/csLight with support for directional
	      and spotlight as well as the old pointlight.
	    - Changed some iLight-related defines into enums.
	- Marten made it possible to load lights as a part of a meshobject
	  hierarchy.
	- Eric Sunshine updated the cal3d check in configure.ac to demand the
	  latest CVS version of cal3d.
	- Eric Sunshine augmented the csQsqrt() check in configure.ac so that
	  it attempts to detect the "warning: read-write constraint does not
	  allow a register" diagnostic emitted by some newer versions of gcc
	  for the assembly code in csqsqrt.h.
	- Jorrit added support for meta data in pvscalc. This meta data
	  can be added like this (in a sector):
    		<meta plugin="crystalspace.pvscalc">
		  <minarea>4</minarea>
      		  <polygon>
		    <v x="0" y="0" z="0" />
		    <v x="1" y="0" z="0" />
		    <v x="1" y="1" z="0" />
		    <v x="0" y="1" z="0" />
		  </polygon>
		</meta>
	  The polygon will be used as an additional occluder. You can
	  add more then one polygon in a single meta block.
	  'minarea' is the minimum polygon area that will be considered
	  as occluders during PVS calculation. By default this is equal to 2.
	  Decreasing that value might improve quality of PVS but the
	  calculation time will be longer.
	- Jorrit renamed 'minarea' to 'minpolygonarea' in the PVS meta
	  data parsing.
	- Jorrit removed the minimal node size from pvsvis. That information
	  is now parsed via metadata:
    		<meta plugin="crystalspace.pvscalc">
		  <minnodesize x="..." y="..." z="..." />
		</meta>
	- res fixed viewmesh to compile with latest Cal3d.
	- res fixed a crash in csGLVBOBuffer::FindEmptySlot() as per Marten's
	  instructions.
	- Jorrit fixed a bug in csTiledCoverageBuffer->StatusNoDepth().
	  Fixing this bug has a negative impact on PVS quality but it makes
	  PVS more correct.
	- Jorrit fixed a very bad bug in
	  csTiledCoverageBuffer->FlushIgnoreDepth(). That bug would make
	  insertion of polygons in the coverage buffer fail a lot of times.
	  This bug had a negative impact on PVS quality.
15-Feb-2005
	- Jorrit added csIntersect3::IntersectPolygon() to intersect
	  a polygon with a segment.
	- Jorrit did the following pvscalc changes:
	    - Added a shadow kdtree which is a representation of the
	      PVStree kdtree but contains additional information useful
	      during PVS calculation alone.
	    - The progress indicator of the PVS calculator now shows
	      the size (in nodes) of the source node and also the size
	      (in nodes) of the nodes that are marked invisible.
	    - We now make use of symmetry in visibility. If A cannot see
	      B then B cannot see A either.
	    - There is a big optimization in calculation time of PVS by
	      doing a quick HitBeam() first before proceeding with
	      the other calculations. i.e. if a beam between two nodes
	      in the kdtree hits no polygons then we don't have to continue
	      as we have visibility anyway.
	    - Show total time, estimated remaining time, and average
	      time per node.
	    - Added a measurement of culling quality during calculation.
	      This is the percentage of invisible nodes compared to
	      visible ones.
	    - Speed up pvscalc a bit more by testing more beams
	      before doing the expensive calculations.
	- Jorrit made precache default in walktest. There is now a
	  -noprecache option to disable it.
	- Jorrit fixed a problem in pvsvis which would prevent the pvs
	  visibility information from being written out.
	- Jorrit added a csPoly3D::ComputeNormal() and
	  csPoly3D::ComputePlane() that takes an indexed array of vertices.
	- Jorrit added csPolygonMeshTools::IsMeshConvex() to test if a
	  mesh is convex.
	- res made the following changes:
	    - Added proper support for 3D textures to renderer, loader, and
	      some image csImageManipulate functions.
	    - Moved "keycolor preparation" (set alpha of KCed pixels to 0) to
	      csImageManipulate.
	    - Fixed R8G8B8 support for DDS files.
	    - Added support for L8 format for DDS files.
	    - Fixed A8R8G8B8 decoding for DDS files.
	    - Fixed PNG loader not properly clearing image format alpha flag
	      on some images.
	    - A few documentation tweaks to SV-related stuff.
	- Keith updated sprcal3d and sprcal3dldr to work with latest cal3d cvs.
	- Keith updated viewmesh callbacks to work with latest cal3d callback
	  prototypes.
14-Feb-2005
	- Chris made the minimum polygon UV determinant into a #define
	  so that it would be more amenable to experimentation.
	- Jorrit fixed a bug in pvscalc that would mess up the calculations
	  for some boxes.
	- Jorrit made the kdtree in pvscalc slightly more optimal by
	  trying a bit more agressively when finding a good split location.
	  Also changed quality measurement to give more weight to bad
	  cuts. That improves the number of nodes in the tree (but makes
	  it slightly less balanced).
	- Jorrit added reporting of average, min, and max polygon size
	  to pvscalc.
	- Jorrit fixed a VERY stupid bug in genmesh. Apparently it forgot
	  to register a polygon mesh for visibility culling. That means
	  that genmeshes never participated as occluders.
	- Eric Sunshine fixed bogus use of preprocessor token-pasting in DB()
	  and DBA() macros in pvscalc.cpp.
	- Jorrit optimized pvscalc a bit by making the test for relevant
	  polygons faster.
	- Jorrit optimized pvscalc by remembering the bounding box for every
	  polygon and using that to quickly discard irrelevant polygons. That
	  optimization removes the number one function in the profile result.
	- Jorrit optimized the csPoly3D::ProjectXPlane() and other functions
	  so that they avoid calling csPoly2D::AddVertex() in a loop.
	  This speeds up those routines a lot.
	- res fixed the mesh count not being 0 if
	  csMeshWrapper::GetRenderMeshes() did not return meshes because of
	  a draw callback call, as reported by Marek Prerovsky
	  <marek.prerovsky@seznam.cz>.
13-Feb-2005
	- Peter Amstutz reorganized loading in the csVosA3DL plugin so
	  that texture, material or geometry changes to 3D objects are
	  propagated to the CS engine on the fly, instead of only being
	  loaded once in the initial setup.
	- Jorrit fixed a bug in csBox3::ProjectOutline(). It was completely
	  misinterpreting the vertices and procuding wrong results.
	- Jorrit removed an optimization in pvscalc where we would not
	  test visibility of destination children if the destination parent
	  was totally visible (coverage buffer totally empty). This
	  optimization doesn't add that much speedup and it can degrade
	  quality too much.
12-Feb-2005
	- Jorrit added a test to pvscalc so that irrelevant polygons are
	  no longer shadow casted. This speeds up calculations and also makes
	  shadow casting more correct as polygons that intersect the shadow
	  plane or the source box should not be considered at all.
	- Jorrit drastically improved the quality of the kdtree calculated
	  by pvscalc. Instead of 5599 nodes for the pvstest level there are
	  now 246 nodes.
11-Feb-2005
	- Jorrit changed csBox3::ProjectOutline() to work with
	  csPoly2DUnbounded instead of csPoly2D.
	- Jorrit changed the csPolygonClipper to work with csPoly2DUnbounded
	  instead of csPoly2D.
	- Jorrit changed the csPoly2DPool to work with csPoly2DUnbounded
	  instead of csPoly2D.
	- Jorrit did some more work on pvscalc. Implemented the basic
	  shadow area caster. Not working!
	- Jorrit fixed csPoly2DUnbounded::ClipAgainst(). It was forgetting
	  to set the bounding box.
	- Jorrit removed all usages of csPoly2D in CS. The bounding box was
	  only needed on one spot (portal clipping) and there it is easier
	  to just create the bounding box when needed (in ClipAgainst()).
	- Jorrit renamed csPoly2DUnbounded to csPoly2D and removed the
	  'virtual' from destructor. So csPoly2D is now back as it was before
	  except that it no longer supports the bounding box.
	- Jorrit finished implementation of CastAreaShadow() in pvscalc.
	- res fixed a crash in csTextureHandle related to texture classes.
	- Jorrit added iStaticPVSTree->GetNodeBBox() to query the bounding
	  box of a node.
	- Jorrit added csTiledCoverageBuffer->StatusNoDepth() to test the
	  state of the coverage buffer.
	- Jorrit added iStaticPVSTree->UpdateBoundingBoxes() to make sure
	  that all bounding boxes in the tree are correct after creation
	  of the tree. pvscalc must call this.
	- Jorrit increased the default minimal node size a bit to make sure
	  calculations go a bit faster.
	- Jorrit fixed a bug in csChainHull2D::SortXY() that prevented
	  proper sorting of the points. No csChainHull2D seems to work.
	- Jorrit fixed the NoDepth() versions in the coverage buffer so that
	  they work correctly now.
	- Jorrit finished the basic PVS calculator. Now it is time to do
	  testing. Initial tests seem to indicate that it is doing something.
	  But calculation takes WAY too long for big maps (and even for small
	  maps for that matter). This will have to be optimized a lot.
	- Jorrit added a progress counter to pvscalc. That way you can get
	  an approximate idea of how far we are in the calculations.
10-Feb-2005
	- Jorrit added csIntersect3::XPlane() and YPlane() to complement
	  the already existing ZPlane(). Also added AxisPlane() which will
	  intersect with any axis aligned plane.
	- Jorrit added a new version of csBox3::ProjectOutline() which will
	  project a box outline to an axis aligned plane.
	- Jorrit added a version of csBox3::ProjectOutline() that accepts
	  a csArray<csVector2> instead of csPoly2D.
	- Jorrit did some additional work on pvscalc.
	- Jorrit extended csTiledCoverageBuffer so that there are functions
	  to insert polygons (inverted or not inverted) without caring for
	  depth. PVS calculations will not require the depth buffer.
9-Feb-2005
	- Jorrit implemented sorting in csChainHull2D::SortXY.
	- Jorrit worked a bit further on pvscalc.
8-Feb-2005
	- Jorrit added csVector2::IsLeft().
	- Jorrit added a new csChainHull2D class which calculates the convex
	  hull of a set of points. The main routine is there but the routine
	  to sort the points is still missing.
	- res changed a LockTry() in the threaded job queue to LockWait().
	- res fixed chunklod to provide proper tangents and binormals.
	- res changed the two-pass technique of the splatting shader used by
	  terrainf to use "compressed" tangents and binormals, like the
	  one-pass technique does.
7-Feb-2005
	- Eric Sunshine fixed some bogus mounts in vfs.cfg.template (the
	  vfs.cfg which gets installed), which caused several of the maps to
	  fail to load.
	- Eric Sunshine fixed overload resolution ambiguities in the bruteblock
	  plugin.
6-Feb-2005
        - Magodra made the following changes:
            - Fixed a problem where csSpriteCal3DMeshObject::SetMaterial
              caused crash when called before internal data structures where
              set up properly.
	- res made the following changes:
	    - Fixed a problem in the GL extension manager where WGL exts were
	      never initialized.
	    - Augmented the "reflect" shader to interpolate between the
	      reflected and base texture (based on a fixed ratio).
	    - Gave the "car" in the flarge street a reflection map based on
	      the actual surroundings.
	    - Added a function to walktest to create a cubemap from the current
	      location (press Alt+C).
	    - Made walktest also support UTF-8 encoded keys.
	    - Made the DDS loader support cube maps.
	    - Changed registering of textures; removed use of image vectors.
	      Complex images are now packaged into an iImage, too.
	    - Added a helper class to construct a cubemap image from separate
	      images.
	    - Fixed cube map loader so <north> etc now actually map to the
	      correct direction.
	    - Changed cube map loader to go through the texture <type> system
	      and not use a separate <cubemap> statement.
	    - Fixed a bug in the PNG loader where the alpha flag wasn't cleared
	      on images without alpha.
	    - Added a flag to the engine to control whether data needed only
	      for saving back the world should be kept.
	- Eric Sunshine added fabsf() to the set of functions faked up by
	  CS_USE_FAKE_MATH_H_FLOAT_FUNCS.
	- Eric Sunshine added const and non-const operator[] methods to
	  Opcode's Point class (IcePoint.h).  This works around problem with
	  Borland compiler where it considered the following code ambiguous:
	    Point p; float x = p[0];
	  Other compilers correctly apply Point's float* operator and then
	  treat the returned result as an array.  Borland, however, was unable
	  to choose if it should use the const or non-const float* operator.
	  Removed the float* operators. (This same fix was applied to an
	  earlier version of Opcode on 15-Jan-2004.)
	- Eric Sunshine fixed problem in csSkelBone where it specified a return
	  type for its GetParent(), GetChild(), and FindChild() methods which
	  did not correspond to the return type specified in the
	  iGenMeshSkeletonBone interface which it implements.  This made it
	  unbuildable with older compilers which do not allow the return type
	  of an overloaded virtual method to change.
	- res added methods to csString to find and find&replace a substring.
	- res fixed csGLTextureHandle::GetImageName() returning a 0 string if
	  the texture wasn't prepared yet.
	- res fixed in the GL renderer the use of a 3D projection in 2D mode
	  if the 3D mode was initialized but nothing was drawn.
	- res fixed access of an uninit var in the DDS loader.
	- res updated cssaver for the new cubemap syntax.
	- res added ability to walktest to optionally enable saver flag. Edit
	  walktest.cfg or run with "-saveable".
	- Jorrit did some small stuff on pvscalc.
5-Feb-2005
	- Mike Handverger fixed a bug in iDynamicSystem::AttachColliderMesh
          ODE needs number of tris * 3 to build the mesh data.
        - Mike Handverger added some notes in phystut regarding mesh colliders.
4-Feb-2005
	- Erotoman added new genmesh animation control plugin for skeletal
	  animations Here are some features that plugin brings:
	    - ragdoll physics
	    - smooth blending between animations
	    - free bone control
	    - face animations and mimics
	    - various combinations between ragdoll, script animation and
	      free bone rotation
	- Erotoman added simple mesh in flarge level that demonstrates scripted
	  skeletal animation.
3-Feb-2005
	- res added background loading for images. Doesn't work right yet and
	  is still disabled.
	- res protected csGLGraphics3D::Close() against calls where the
	  renderer wasn't opened before.
	- res added the more intuitive "one minus ..." names as possible
	  multitexturing modifiers.
	- res fixed a cleanup bug in the jpg plugin after the latest changes.
	- res made documentation tweaks to a few files in include/csutil.
	- res added iJobQueue->Unqueue().
	- res made the following changes:
	    - Moved some Win32-specific code from csosdefs.h into a .cpp file.
	    - Made csExpandName a platform-specific function.
	    - Fixed beeps on Win32 when hitting Alt+Character.
	    - Reverted the recent udword->uintptr_t change to Opcode, didn't
	      do that much good.
	    - Added ability to set texture alpha type (previously, only the
	      auto-detected value was available).
	    - Removed a couple of tokens related to the obsolete effects
	      system from csparser.
	- res made GL textures only query image data when really needed (and
	  not already when just querying the size of a texture). This actually
	  makes the use of threaded image loading beneficial.
	- res enabled threaded image loading.
2-Feb-2005
	- Jorrit removed CS_PROFSETUP. Setup is now automatic the first time
	  you use CS_PROFSTART.
	- Jorrit added new 'profdump' command to buplug (assigned to 'p' key
	  by default, fps command has been remapped to ctrl-alt-p). This
	  will simply call CS_PROFDUMP.
	- Jorrit extended the profiler so that the token is also remembered
	  now. Additionally added a way to clear the profile data. Added
	  a 'profclear' command to bugplug (assigned to 'ctrl-shift-p').
	- Jorrit added the ability to the profiler to remember minimum and
	  maximum elapsed time.
	- Jorrit enhanced PrecacheCulling() in Dynavis so that it also
	  traverses the kdtree now. That improves efficiency a bit more.
	- res changed genmesh to let not tris facing the light, but rather
	  those facing away cast shadows. This seems to give better results.
	- res fixed DrawPixmap() alpha support in the software renderer.
	- res fixed spr2d texture coordinate vertex buffer not getting
	  properly filled when NextFrame() was called, but the mesh wasn't
	  rendered any time before.
	- Eric Sunshine fixed crasher reported by Lukas Erlinghagen in
	  csStringSet::Contains() when csSCF::RegisterClassesInt() is invoked
	  with `pluginPath' as a null pointer, which can occur when the
	  SCF_REGISTER_STATIC_LIBRARY() and SCF_REGISTER_STATIC_CLASS() are
	  invoked. (This problem was supposed to have been addressed on
	  17-Jan-2005 but the original problem report was mis-read.)
	- Eric Sunshine upgraded the Swig check in configure.ac so that it
	  demands a slightly more recent version in order to work around
	  Swig/Java bug where it generates incompatible return types for
	  methods between base classes and subclasses. (For instance,
	  `SWIGTYPE_void iFoo::Bar()' and `SWIGTYPE_p_void csFoo::Bar()'.)
	- Eric Sunshine applied fix to opengl/gl_renderbuffer.h for Borland to
	  make csGLVBOBufferManager::VBO_NUMBER_OF_SLOTS accessible to
	  csGLVBOBufferManager::slotList.
	- Marten updated the VBO-routines to split/merge VBO-slots when needed.
	  These routines should somewhen in the future be moved so it does not
	  get into a "split-merge" loop over a few frames.
	- Marten fixed a typo in glshader_fixed.
	- Marten fixed a bug in glstates.h. It didn't reset the vertex/color/
	  normal pointers when switching VBO-buffer (which is needed).
1-Feb-2005
	- Jorrit reverted a bug fix in engine->GetNearbyObjects() and
	  GetNearbyMeshes() that was done on 15-Jan. The problem is that this
	  fix can cause an extraordinary number of objects to be returned.
	  Reverting this fix will cause those functions to work incorrectly
	  in some weird space warping portal setups though.
	- res added CAL3D as an external lib to viewmesh (in case Cal3d was
	  detected). (bug #1113976)
	- res added CS_HAS_CAL3D to the viewmesh MSVC CFlags.
	- Jorrit added a new in-code profile system to CS. This is still
	  experimental. You use it by enclosing code in CS_PROFSTART/
	  CS_PROFSTOP. At setup time of app you need CS_PROFSETUP. To print
	  out current profile info you need CS_PROFDUMP. This profiling code
	  is only enabled in case CS_DO_PROFILING is defined. There is
	  currently no configure switch for that yet. Also the profiler is
	  using csGetTicks(). This should be changed to use higher resolution
	  timers.
31-Jan-2005
	- Jorrit changed csloader so that it will now look for addon
	  plugins with iBase instead of iComponent.
	- Jorrit changed csloader so that iComponent, iLoaderPlugin, and
	  iBinaryLoaderPlugin are now also valid (in addition to iBase) for
	  addon implementations in the object registry.
	- Jorrit changed object registry so that the WARNING about suspicious
	  object that doesn't implement right interface only appears in debug
          mode.
	- Jorrit fixed the location of the collider.h header in the collision
	  detection howto.
	- Jorrit added csBox3::Split() which is an easier way to split a box
	  according to an axis. Changes pvsvis to work with that.
	  Also added csBox3::TestSplit() to test if a box is interesected
	  by an axis-aligned plane.
	- Jorrit reverted the above change and instead changed the addon/loader
	  so that it uses CS_QUERY_REGISTRY_TAG.
	- Jorrit extended pvscalc so that it now calculates the kdtree.
	- Jorrit fixed a bug in pvsvis. It wouldn't store the boxes of the
	  objects which means visculling and other PVS operations failed.
	  With this bug fixed, pvsvis will roughly work as frustvis in case
	  the PVS information is missing.
	- Jorrit changed pvsvis so that by default it will make minsize
	  one fifth instead of 1/20 of total box.
	- Jorrit fixed pvscalc so that the kdtree calculation now actually
	  works. The kdtree is also stored in the cache and pvsvis is able
	  to read and use it. No visibility information yet.
	- res silenced some 64bit warnings in the Opcode plugin.
	- res fixed the Win32 "Press a key" message not working in all cases.
	- res fixed a compile error in the DDS plugin on (used uint32 for an
	  argument in one place, size_t in another).
30-Jan-2005
	- res fixed a leak in spr2d.
	- res fixed a leak in the VBO buffer manager.
	- res fixed an uninit member in csGLRenderBuffer, which could cause
	  a delete[] on an invalid memory address.
	- res made the BMP writer zero the buffer before modifying it (to avoid
	  writing stuff that was previously in that place).
	- res fixed a leak in the image sharpener.
	- res added a method to csImageMemory to specify index data with alpha.
	- Jorrit did the following things related to PVS:
	    - Fixed a bug in the pvsvis.csplugin which prevented the plugin
	      from loading.
	    - Changed pvstest test map to actually use pvsvis. Also added
	      <staticpos/> and <staticshape/> flags.
	    - Changed pvscalc to accept commandline parameters (map directory
	      or zip followed by an optional sector name). pvscalc will now
	      load the world, and scan all sectors (and do nothing for them).
	    - Pvscalc will now report information about bounding boxes
	      and number of static/normal objects.
	    - Fixed another bug in pvsvis which would cause a crash if no
	      parameters were given to the culler in the world file.
	    - Fixed a crash in pvsvis which would occur when the PVS was
	      not yet calculated.
	    - Added missing implements of iPVSCuller to pvsvis.
	    - Added a method to get the bounding box from iStaticPVSTree.
	    - Changed the minimal size of a node to a csVector3 instead
	      of a csBox3. Also when it is not set manually it will now
	      be calculated from the total root box as the dimensions of
	      that box divided by 20.
29-Jan-2005
	- Jorrit moved the tiled coverage buffer from Dynavis to csgeom.
	  This class is going to be useful for the PVS calculator.
        - Philip Wyett eliminated some initialization warnings.
	- res fixed an improper usage of csDataBuffer in vostexture.cpp:
	  iDataBuffers are refcounted, so passing a pointer to a csDataBuffer
	  on the stack does not work!
	- res updated the VC7 projects for the coverage buffer move and also
	  added missing CS_CSGEOM_EXPORTs to tcovbuf.h.
	- res changed the pixel packing code to use sizeof() in code instead
	  of defines to determine csRGBcolor/csRGBpixel sanity.
	- res changed the pixel packing support functions to reside in structs.
	- res fixed the fix in vostexture.cpp to make sense.
	- res fixed the pooled SCF class stuff to allow exported classes.
	- res fixed some gcc warnings.
	- res made the DDS buffer use unpooled parasitic databuffers. Pooled
	  ones aren't that sensible there.
	- res fixed the TGA loader to properly load 16bpp TGAs.
	- res fixed messed-up stencil shadows on some NVidia cards.
28-Jan-2005
	- Andrew Mann fixed bugs in the software sound renderer which prevented
	  looping from working, and which caused a gap in the looping process.
27-Jan-2005
	- Marten rewrote the VBO support. It now uses a fixed cache and only
	  a few VBO-allocated buffers together with a slot-cache algorithm.
	  It still needs some work, but it should work for most conditions.
	  VBO is still disabled by default though, if you want to try it
	  enable VBO in r3dopengl.cfg.
	- Marten fixed a typo in xmlshader.
	- res augmented the iImage interface with means to query raw image
	  data.
	- res augmented the GL texture manager to allow direct upload of DXT-
	  compressed textures, as opposed to the previous way were the image
	  was uncompressed and later recompressed by the GL driver.
	- res added csGetBigEndianLong() and relatives.
	- res fixed csTextureWrapper to properly propagate the texture class to
	  the texture handle.
	- res allowed some slightly friendlier specification of the VBO buffer
	  sizes.
26-Jan-2005
	- Eric Sunshine fixed more boundary-condition bugs in csMouseDriver and
	  csJoystickDriver.
	- Eric Sunshined committed an enhancement from C. J. Collier
	  <cjcollier@colliertech.org> to csutil/t/objreg.t which adds tests for
	  iObjectRegistry::Get().
25-Jan-2005
	- Jorrit fixed a bug that could come up in case you are relighting
	  several maps at the same time and a certain polygon was affected
	  by lights from both maps (through a portal). And the lights in the
	  first map didn't affect the polygon sufficiently to actually
	  contribute to lighting. In that case the static lightmap would
	  get cleared (as an optimization). This would cause recalculation
	  during the second map to fail as the static lightmap was removed
	  by then. Fixed this by refreshing the static lightmap in this
	  situation.
	- Jorrit added a new pvstest world file. This simple world will
	  be used to test the efficiency of the PVS calculator and PVS
	  visibility culler.
	- Jorrit reports a mystery. In md22spr/m2s_mdl.cpp there was
	  a line 'if (mdl2spr_imageio == 0)' with mdl2spr_imageio a
	  csRef<iImageIO>. The compiler complained about this line with
	  the following error:
	    apps/import/md22spr/m2s_mdl.cpp:340: ambiguous overload for
		    `csRef<iImageIO>& == int' operator
	    apps/import/md22spr/m2s_mdl.cpp:340: candidates are:
		    operator==(iImageIO*, iImageIO*) <built-in>
	    include/csutil/ref.h:295: bool operator==(const csRef<iImage>&,
		    iImage*)
	    include/csutil/ref.h:285: bool operator==(const csRef<iImage>&,
		    const csRef<iImage>&)
	  If I change that line to 'if (!mdl2spr_imageio.IsValid())' then
	  the compiler is happy. The really weird thing is that there
	  is another 'if (mdl2spr_imageio == 0)' line a few lines below
	  this and that one doesn't give an error!!! Who can unwrap this
	  mystery?
	- Eric Sunshine augmented the joystick drivers so that they support and
	  scan for up to sixteen joysticks.
	- res changed some always-true checks in csArray<>::DeleteRange().
	  When one of the boundary index is invalid (csArrayItemNotFound
	  value), nothing is deleted.
	- res applied a patch from Seth Yastrov <syastrov@gmail.com> to
	  improve GLX support in the wxgl canvas, after removing some code that
	  created another GLX context (which should be done by the wxgl
	  canvas).
	- res fixed gfxtest to let the csDataBuffer delete[] read file data.
24-Jan-2005
	- Jorrit reverted a fix from res2k in walktest/keys.cpp which changes
	  the way keys are parsed. This fix breaks parsing of keys with
	  modifiers.
	- Jorrit removed the OR specific layer statements from csparser
	  and from data/flarge/world.
	- Jorrit updated the documentation about the XML format to reflect
	  the change in how texture layers work now.
	- Jorrit changed pvsvis to give an error if the 'box' is missing
	  in the XML of the culler descriptor.
	- Jorrit changed pvsvis to also accept a 'minnode' keyword. This
	  can be used to set the minimal node of the kdtree used by the
	  PVS culler.
	- Eric Sunshine reverted Jorrit's reversion of Frank's change to
	  walktest/keys.cpp and also corrected the problem with Frank's change
	  which caused parsing to misbehave.
	- Eric Sunshine augmented joystick.cfg so that it scans for up to four
	  joysticks, rather than only two on Unix platforms.
	- Eric Sunshine fixed a number of bugs in csLinuxJoystick and
	  csWindowsJoystick, the Linux and Windows joystick drivers, where they
	  failed to treat joystick numbers as 1-based (which is how CS and the
	  event outlets interpret them). Also increased CS_MAX_JOYSTICK_COUNT
	  from 2 to 4 (though this hard-coded limitation should be removed
	  altogether in the future).
	- Eric Sunshine fixed bug in csLinuxJoystick where each button event
	  would cause a "joystick motion" event to be sent with coordinates
	  (-1,0).
23-Jan-2005
	- Eric Sunshine applied a boundary-condition fix from Andrew Mann for
	  the timspec::tv_nsec overflow check in csPosixCondition::Wait().
	- res changed iImageIO::Load() to take an iDataBuffer and not separate
	  buffer and size parameters.
	- res improved the wxgl canvas on Win32; now supports GetProcAddress()
	  and retrieves the current display format.
	- res added iFactory::QueryModuleName().
	- res added a command to bugplug to list the currently loaded plugin
	  modules.
	- Keith Fulton fixed problem with sprcal3d animation reversal only
	  working in certain cases due to missplaced check for this
	  condition after the function might have returned.
	- Jorrit introduced a new way to specify cullers in a sector in the
	  map file. The old way of using <cullerp>bla</cullerp> still works
	  but you can now also write <cullerp plugin="bla" /> instead.
	- Jorrit continued work on PVS. To use a PVS in your map you
	  must supply parameters to the cullerp node like this:
		<cullerp plugin="crystalspace.culling.pvsvis">
		    <box>
		    	<min x="-100" y="-100" z="-100" />
		    	<max x="100" y="100" z="100" />
		    </box>
		</cullerp>
	  The box is not optional. PVS requires to know the bounding box
	  of the level in advance. Visibility calculations of objects outside
	  that box are undefined.
22-Jan-2005
	- res made the following changes:
	    - Silenced some compiler warnings on VC2005.
	    - Disabled texture compression of Radeon DRI drivers, it causes
	      problems there.
	    - Added csImageBase, intended as simple base class for iImage
	      implementations.
	    - Removed some ancient relics from data/shader/.
	    - Fixed walktest to update the frame width & height on resize.
	    - Changed the GL state cache to allow quick disabling at compile
	      time.
	- Jorrit added the ability to set bounding box for mesh objects
	  in a world file. Uses the SetObjectBoundingBox() added yesterday.
	  Uses <box min=... max=... /> syntax in <meshobj>.
	- res silenced some more VC2005 compiler warnings and fixed some
	  compile errors due missing external dependencies.
	- res enabled "Whole program optimization" for VC7 release builds.
21-Jan-2005
	- Jorrit continued work on the PVS. The PVS kdtree should now be
	  working (not tested).
	- Jorrit mostly finished the PVS visibility culler. It should now
	  work mostly and perform frustum and PVS visibility culling in
	  an efficient manner. However. This pvs culler is not yet useful
	  since the pvscalc application is not doing anything yet. Also pvsvis
	  has not been tested yet.
	- Jorrit removed the type parameter from
	  iObjectModel->GetObjectBoundingBox(). There was no mesh object
	  that actually used that parameter so it was pretty much useless.
	  In practice objects have only one bounding box anyway. The
	  CS_BBOX_ constants are also removed.
	- Jorrit added an iObjectModel->SetObjectBoundingBox() so that you
	  can force a bounding box for a specific mesh object. This does
	  not yet work for all types of meshes though.
20-Jan-2005
	- res made the following changes:
	    - Let the GL renderer always clear the stencil buffer in
	      BeginDraw() when stencil clipping is used. Previously, stencil
	      was only cleared when teh Z buffer was cleared, too, but in e.g.
	      flarge this was not the case, causing the mirror door to have
	      stuff drawn outside the portal.
	    - Improved the z-dump a bit.
	    - Moved SetMirrorMode() in csGLGraphics3D::FinishDraw() after the
	      G2D->FinishDraw() call. This fixes text not appearing on render
	      targets unless some other 2D op was done prior FinishDraw().
	    - Made the Win32Assistant unregister the CS window class on
	      destruction.
	- Eric Sunshine fixed bug in csPosixCondition::Wait() where it was not
	  taking nanosecond overflow into account when computing the absolute
	  time for the invocation of pthread_cond_timedwait(), with the result
	  that it would store an invalid (> 1 billion) number of nanoseconds in
	  the timespec::tv_nsec member. Although some pthread implementations
	  seem to ignore this erroneous value, others, such as NPTL (Native
	  Posix Thread Library), are more strict and correctly return the error
	  code EINVAL when handed this bogus time value. A big thanks to Andrew
	  Mann for catching this bug.
19-Jan-2005
	- Jorrit fixed a bug in csMeshList::Add() and csMeshFactoryList::Add().
	  It was returning true on success instead of the last added index.
	- Jorrit improved finding by name for several objects in the engine
	  by using a hashmap. This means that finding lights, meshes,
	  factories, materials, and sectors should now be a lot faster.
	- Jorrit changed iMaterialList so that the NewMaterial() function now
	  needs the name of the materials that is created. It is not
	  recommended to change the name later as that will mess up with the
	  internal hash table used to find materials quickly (this goes for
	  the other objects that use hashes too).
	- Eric Sunshine lifted the 18-Jan-2005 restriction that recursive
	  mutexes should not be used with csCondition::Wait() since the
	  restriction was based upon an erroneous code/documentation
	  interpretation. (In fact, POSIX states that recursive mutexes can be
	  used with 'wait' provided that the mutex has not been recursively
	  locked.)
18-Jan-2005
	- Eric Sunshine updated csPosixCondition::Wait() so that it also
	  catches EINVAL from pthread_cond_timedwait().
	- Jorrit fixed smooth in thing. It was using the normals in object
	  space which is wrong.
	- Eric Sunshine upgraded the documentation for csMutex and csCondition
	  so that it explains that recursive mutexes are incompatible with
	  conditions.
	- Eric Sunshine upgraded the various csCondition implementations so
	  that they flag an error when csCondition::Wait() is invoked with a
	  recursive mutex, thus enforcing the requirement that the mutex must
	  be non-recursive.  The reason that the mutex must be non-recursive is
	  because the implicit unlock performed by Wait() must actually release
	  the mutex in order for other threads to be able to satisfy the
	  condition. With recursive mutexes, there is no guarantee that
	  unlocking the mutex actually releases it since it might have been
	  locked multiple times within the same thread. Although most older
	  pthread implementatons were lax about this requirement, more modern
	  ones, such as NPTL, actually enforce it. We also now enforce this
	  requirement.
	- Eric Sunshine upgraded the CS_CHECK_PTHREAD() macro in
	  checkpthread.m4 so that it also determines if "timed" mutexes are
	  available, and figures out the actual constant representing such
	  mutexes (usually either PTHREAD_MUTEX_TIMED or
	  PTHREAD_MUTEX_TIMED_NP). If available, configure.ac now emits
	  CS_PTHREAD_MUTEX_TIMED to csconfig.h with the appropriate value.
	- Eric Sunshine applied patch to sprcal3dldr from Brian DeVries
	  <contingencyplan@gmail.com> which prevents meshes lacking skeletons
	  from being accepted. This is necessary because sprcal3d is absolutely
	  predicated upon the mesh having a skeleton, and will misbehave
	  (i.e. crash) when it is lacking. The loader also now prints an
	  informative error message for the user rather than crashing silently.
17-Jan-2005
	- Eric Sunshine applied patch from Lukas Erlinghagen <erluk@web.de>
	  which fixes crash in csSCF::RegisterClassesInt() triggered by the
	  SCF_REGISTER_STATIC_CLASS() and SCF_REGISTER_STATIC_LIBRARY() macros.
	  These macros cause RegisterClassesInt() to be called very, very early
	  (before main()), thus before the `libraryNames' string set has been
	  initialized.  (Problem was introduced on 25-Nov-2004 when SCF was
	  changed to make it legal to scan the same directory multiple times.)
	- Jorrit optimized the routine in thing to calculate normals. Thanks
	  to Marten for suggesting this.
16-Jan-2005
	- res reduced the iImage interface to a container for pixel data,
	  merged csImageFile and csImageMemory and moved the image
	  manipulation functions into helper classes.
	- res fixed a bug where a csImageMemory with Image == 0 would exit
	  from the ConvertXXX() methods.
	- Anders made DrawSimpleMesh & text drawing get along with eachother
	  a bit better.
	- Peter Amstutz updated the csvosa3dl plugin to use VIP/UDP instead
	  of VOP/TCP.  Also it now replaces both local and remote A3DL
	  factories.  A bugfix was applied to movement updates.
15-Jan-2005
	- Jorrit fixed a bug in engine->GetNearbyObjects() and
	  GetNearbyMeshes(). These functions could get confused in situations
	  with lots of space warping portals and not return the correct
	  result then.
	- Jorrit added a new csEngineTools class in cstools library.
	- Jorrit added csEngineTools::FindShortestDistance(). This function
	  tries to find the shortest distance between two points. Possibly
	  it will traverse portals to do so.
	- res added some new extensions to the GL extension manager.
	- res changed the GL "texture downsampling" code to not do actual
	  downsampling, but rather skip the first N mipmaps.
	- res changed the GL texture manager to not resize textures larger
	  than the maximum size but to rather pick the first mipmap fitting
	  into the texture size limit.
	- res added some more per-texture-class options for downsampling and
	  mip sharpening.
	- res made the object registry call scfInitialize() in debug mode if
	  needed and undid the addition of scfInitialize() to the object
	  registry test.
14-Jan-2005
	- Eric Sunshine added a new automated and highly dynamic unit testing
	  framework which employs CppUnit (http://cppunit.sourceforge.net/).
	  The new Jam rule `UnitTest' can be used to set up unit testing for
	  any module. The Application, Library, and Plugin rules now invoke
	  UnitTest automatically (unless 'notest' is specified), so the vast
	  majority of clients inherit unit testing support for free. By
	  default, UnitTest enables testing for any modules which have a `t/'
	  subdirectory populated with *.t test fragment files. For each such
	  module, it creates a "check_module" Jam target which synthesizes C++
	  wrapper and driver programs for the test fragments, and builds and
	  runs the test cases for that module. Furthermore (and this is where
	  it gets neat) UnitTest dynamically synthesizes test programs at each
	  directory leading up to modules containing test code. The
	  directory-level test programs incorporate all of the tests from child
	  directories (recursively).  This allows entire selected branches of
	  tests to be run all at once rather than having to run several
	  different driver programs to get a complete report. For example, the
	  module-based target "jam check_csutil" runs only csutil's tests, as
	  does the directory-based target "jam check_libs_csutil", but "jam
	  check_libs" runs csutil's, cstool's, csgeom's, csgfx's, and csws's
	  tests; and "jam check" (or "jam check_all") runs, as a single batch,
	  all tests in the entire project. Other examples: check_plugins,
	  check_plugins_video, check_plugins_video_canvas,
	  check_plugins_video_canvas_macosx. The UnitTest rule and supporting
	  framework are generic, and can be employed by client projects based
	  upon the CS Jam system, such as those created with `jamtemplate'.
	  For further information, consult the extensive documentation in
	  CS/mk/jam/unittest.jam (or the soon-to-be-written HOWTO).
	- Eric Sunshined wrote some (complete and incomplete) unit tests for
	  csgeom and csutil. Also added an incomplete test from C. J. Collier
	  <cjcollier@colliertech.org> for csObjectRegistry.
	- Eric Sunshine extracted the TemplateToolkit2 check from configure.ac
	  and placed it into CS/mk/autoconf/checktt2.m4 so that it can be
	  re-used by foreign projects.
	- Eric Sunshine added a re-usable CppUnit Autoconf check at
	  CS/mk/autoconf/checkcppunit.m4.
	- Eric Sunshine augmented the CS_CHECK_PYTHON() check (checkpython.m4)
	  so that it can optionally emit its results via an EMITTER. This
	  change obsoletes the CS_EMIT_CHECK_PYTHON() macro, which is now
	  deprecated.
	- res made the GL font cache better handle large fonts.
	- res changed the object registry to call scfInitialize() (as the
	  object registry relies on a valid iSCF::SCF).
	- res changed the CppUnit autoconf check to also check whether the
	  CppUnit version is recent enough.
13-Jan-2005
	- Eric Sunshine renamed the 'memory' plugin to 'memory2d' for the
	  following reasons:
	    - Sensibility: Jam would become confused if C++ code #included the
	      standard C++ <memory> (the "modern" version of the old
	      <memory.h>). Jam would think that the foreign C++ code had a
	      dependency upon the entire 'memory' canvas.
	    - Consistency: The '2d' suffix is used by the majority of canvas
	      plugins.
	    - Clarity: 'memory' was a poor choice for a plugin name; it
	      conveyed very little about the plugin's purpose. 'memory2d', on
	      the other hand, at least indicates strongly that the plugin
	      likely is a canvas.
12-Jan-2005
	- Jorrit worked further on the PVS visibility culler.
	- Chris fixed a bug in the AWS manager that meant that modal dialogs
	  could not receive keyboard events
	- Jorrit extended iVisibilityCuller with a new method to load
	  parameters from an XML document node. You can now give parameters
	  to a visibility culler by adding them to the <cullerp> node in
	  the world file. Currently no visibility culler has parameters but
	  the PVS visibility culler will use a parameter to specify the
	  filename of the PVS cache.
	- Anders fixed a bug in FreeFont2 where strings would be hashed on
	  their pointers, which in effect pretty much disabled the font
	  loading cache.
10-Jan-2005
	- Jorrit fixed traversal of movable listeners so that it uses a
	  size_t loop instead of one based on int. This should be the same
	  but it is safer/cleaner.
9-Jan-2005
	- Andrew Craig extended StandardReporterListener to allow appending to
	  the log file rather than unconditionally overwriting it.  Default
	  behaviour is still overwrite, however content can also now be appened
	  by one or more of the following methods:
	    1) Reporter.FileAppend = true in a configuration domain.
	    2) Via command-line option `--append'.
	    3) Via a parameter to iStandardReporterListener::SetDebugFile().
	- Marten fixed a bug in csGLRender3D::DrawSimpleMesh() he introduced in
	  his last commit.
	- res made the following changes:
	    - Removed iTextureHandle::GetCanvas(). The render target mechanism
	      is nowadays used to draw onto textures.
	    - Simplified GetMipMapDimensions() by taking out the 'mipmap'
	      parameter and renamed it to GetRendererDimensions(). Commonly,
	      only the mipmap 0 was queried anyway.
	    - Added "texture classes". They allow to vary the upload settings
	      of textures on a per-texture basis (e.g. only compress some
	      textures).
	- res fixed halos on GL.
	- res replaced some glTexEnvf()s with glTexEnvi()s and vice versa at
	  some places.
	- res added a dependency on crystalspace.graphic.image.io. to the
	  cscursor plugin.
	- res fixed a memory overwrite and a double-delete in the win32 cursor
	  code.
	- res made the xalert_null lib depend on X11, as it includes
	  "../xwindow.h" which in turn includes some X headers. This caused
	  problems on some systems.
8-Jan-2005
	- Marten completly rewrote the way renderbuffers are sent from the
	  mesh into renderer. Also changed the syntax of buffermappings a bit.
	  All the shaders in CS is fixed to use this new way.
7-Jan-2005
	- Jorrit added missing SCF_VERSION for iSectorMeshCallback.
	- Jorrit added a new iEngineSectorCallback system to the engine. This
	  can be used to discover when sectors are added or removed to the
	  engine.
	- Jorrit fixed the sector and engine callbacks so that they traverse
	  the callback list from end to start. That way a callback can
	  remove itself safely.
6-Jan-2005
	- Jorrit removed GetPrivateObject() from iThingState and iBezierState.
	- Eric Sunshine applied a patch from Brian DeVries
	  <mavericktux@cashette.com> for sprcal3d.txi which provides some help
	  for problems which new sprcal3d users might encounter. Eric also did
	  a small amount of additional re-writing.
5-Jan-2005
	- res tweaked the pattern(s) for the NV GF FX rules.
	- res changed the cs_floatrand_seed definition to properly compile on
	  Win32 with shared libs.
	- res fixed compilation of the verbosity stuff on Win32 with shared
	  libs.
	- Vincent Knecht changed rpm/cs.spec to put utilities in their own
	  package, named crystalspace-utils. Also updated the RPM Howto in
	  the manual.
	- res changed the cs_floatrand_seed definition again, so it now
	  hopefully works on non-Win32 again.
	- Eric Sunshine retired the global function csFastRandFloat() along
	  with the problematic global variable cs_floatrand_seed, and replaced
	  it with a new instantiable class csRandomFloatGen, which is modeled
	  after the csRandomGen class.  Unlike the old csFastRandFloat()
	  function which was shared by all clients, instances of
	  csRandomFloatGen can be controlled and seeded individually, thus
	  making it far more flexible and useful.
4-Jan-2005
	- Jorrit added a new iSectorMeshCallback and associated setter
	  functions in iSector. With this callback you can get notified
	  whenever a mesh is added or removed from a sector.
	- Jorrit removed iSector->GetPrivateObject(). It is now a non-virtual
	  private function of csSector::eiSector. That means the engine
	  can still access it but it is no longer published in the public
	  API. Also calling it will be slightly more efficient for the engine
	  as the virtual call is avoided.
	- Jorrit also removed iLight->GetPrivateObject() in a similar way.
	- Jorrit applied a patch from Constantine Dymnikov which implements
	  Clone() for the thing factory.
	- PK removed the csws dependency from the Viewmesh and Picview
	  Jamfiles.
2-Jan-2005
	- res made some more fixes to GL text drawing, among it the use of
	  a variable at a time it had no sensible value yet.
	- res made a slight tweak to the default GL format reduction order.
	- res made the GL driver DB to use CS_QUERY_REGISTRY_PLUGIN to
	  acquire the syntax service plugin.
	- res fixed some wrong data in gldrivers.xml.
31-Dec-2004
	- Jorrit added a dependency from csparser plugin to
	  'crystalspace.documentsystem' so that it will now correctly
	  use the xmlread plugin.
29-Dec-2004
	- Jorrit added an optimization to sprcal3d. Based on the distance
	  it will now skip frames for animation. This greatly helps with speed
	  if you have lots of cal3d objects visible. There are three thresshold
	  distances which are controlled in the new sprcal3d.cfg. The default
	  values are:
	    - less than distance 10: no skipping
	    - less than distance 20: skip 4 frames
	    - less than distance 50: skip 20 frames
	    - more than 50: skip 1000 frames
	- Jorrit fixed a bug in the new sprcal3d optimization. Now it actually
	  works.
	- res tweaked the GL text drawing settings; the somewhat problematic
	  method to use the GL_BLEND method together with a GL_INTENSITY
	  texture is now disabled by default.
	- Eric Sunshine fixed bogus logic in csPluginLoader::LoadPlugins()
	  where it was placing all loaded plugins into the object-registry even
	  before they had been initialized (via iComponent::Initialize()).
	  This allowed other objects potentially and incorrectly to access the
	  incompletely initialized objects.  Now, however, objects are placed
	  in the registry only after Initialize() has been invoked, and only if
	  successful.  As a corollary, this also fixes a bug where objects were
	  available incorrectly in the object-registry even if Initialize()
	  failed.
27-Dec-2004
	- Eric Sunshine applied a fix to csXWindow::HandleEvent(), loosely
	  based upon a patch submitted by Seth Yastrov <syastrov@gmail.com>,
	  which fixes a crash when the Caps Lock, Num Lock, Scroll Lock, Print
	  Screen, Pause/Break, Windows, or Context Menu keys were pressed.  (It
	  was accessing out-of-bounds elements of the ScanCodeToChar[] array.)
	- res fixed a problem in the GL polyrender where a wrong component
	  number was specified for the LM coords when interleaving was enabled.
	- res fixed a bogus pixel write in 16bpp software canvas Blit().
	- res added some more tweaks for Intel graphics.
	- res added the simple terrain former and loader plugin to the "meshes"
	  compile group.
	- res made some changes to GL text drawing, hopefully improving
	  compatibility.
	- res made some changes to Win32 custom cursor handling, hopefully
	  improving compatibility.
26-Dec-2004
	- res removed some unneeded code from win32.cpp.
	- res moved some code in heightmapgen into their own methods.
	- res added some helpers to allow more fine-grained verbosity control
	  via --verbose.
	- res changed the Win32 plugin loading error reporting to use
	  csPrintfErr().
	- res added some more documentation to the verbosity stuff.
	- res changed the shadermgr and xmlshader plugins to check for the
	  "renderer:shaders" verbosity flag.
	- res changed direct checks for the "-verbose" command line flag to use
	  the verbosity manager instead.
	- res made the Win32 GL driver detector to search harder for a name.
	- res added verbosity to the Win32 GL driver detector.
	- res changed the Win32 shift quirk to at least work somewhat on
	  Win9x - you can't really distinguish between left and right shift
	  there...
	- res fixed AltGr support for Win32 cooked key code computation.
	- res added a tweak for correct text display on hardware that can't
	  grok the particular TU setup for text drawing.
25-Dec-2004
	- PK fixed a small bug: changed 'i' to 'm' in thing.cpp:1084
	  for (int m = 0; i < repMaterials.Length(); m++)
23-Dec-2004
	- Jorrit added a first version of a new heightmapgen tool. This
	  tool will take an input world file, pick up one mesh from that world
	  file and convert it to a terrain world. This can be used to make
	  worlds in blender (for example) that have a terrain. The way to do
	  this is to make a genmesh terrain and then have this tool convert
	  it. This tool works by taking a config file as input and using
	  all settings in that config file. This is the first version. It
	  still has several limitations. For example, it leaves the original
	  world file alone but ideally it should remove the mesh from that
	  world file. There is an example config file in
	  data/config/heightmapgen.cfg. This one is not used by default though.
	- Jorrit fixed a very critical bug in the generic renderloop. In
	  ShaderTicketHelper a reference was kept to an entry in a growing
	  array as kept in the step itself. However, during recursion this
	  growing array may actually grow which may cause the entry to be
	  relocated in memory. This would make the reference invalid. Fixed
	  this by using an index instead of a reference. In heavy portalized
	  worlds this could cause crashes.
	- Jorrit fixed the generic renderloop so that it no longer allocates
	  the array of visible meshes on the stack. This can potentially cause
	  a stack overflow very soon. Especially in combination with portal
	  based worlds.
	- Jorrit created a new PVS tree structure in the PVS visibility
	  culler. There is also an interface (iStaticPVSTree) to access
	  this tree from outside the plugin. The idea is that this interface
	  will be used by the PVS calculation tool to actually fill in the
	  PVS for the culler. The tree implementation should be mostly
	  finished but of course it is totally untested since neither PVSvis
	  nor PVScalc work.
	- Jorrit added the iPVSCuller interface which is implemented by
	  the PVSvis culler. This is the first time a culler implements
	  a specific interface. This will be used to fetch the PVS tree
	  from a culler (for PVScalc).
	- Jorrit fixed a missing semi-colon in xwindow.cpp.
22-Dec-2004
	- Philipp Aumayr fixed a bug in the thing where the bounding box was
	  not invalidated when a quad was added.. this fixes a culling probs
	  with objects created at runtime.
21-Dec-2004
	- Eric Sunshine generalized `jobber.pl' to make it project-agnostic. It
	  can now be used by any project for performing maintenance tasks.  The
	  task list and project-specific configuration are now read from an
	  external configuration file.  (For instance, it can now re-generate
	  project files and publish online documentation for CEL by reading a
	  configuration file specific to CEL; it is no longer tied to CS.)
	  Also added `jobber.cfg-template', an example configuration file which
	  projects can copy and modify as needed.
	- Eric Sunshine performed a bit more re-writing of the "HOWTO Create a
	  Plugin" section of the manual in order to bring a few portions
	  up-to-date and to clarify some of the discussion.
	- Jorrit added a new stat_dyn_reflect.xml shader.
        - res replaced the stat_dyn_reflect.xml shader with a commented and
	  syntactically and semantically more sensible version.
	- res made the following changes:
	    - Added enum for mouse button constants (csmbXXX).
	    - Added support for mouse wheel and Xbuttons (e.g. thumb buttons on
	      some mice) to Win32 port.
	    - Fixed handling of high mouse buttons in X window plugin. It read
	      beyond the end of an array for buttons > 5.
20-Dec-2004
	- Jorrit added csFastRandFloat() which is a fast random number
	  generator routine that returns a number between 0 and 1.
	- Jorrit optimized emit particle system by using that function
	  instead of rand(). This speeds it up a little.
	- Eric Sunshine fixed problem with 19-Dec-2004 change to
	  csVFS::ChDirAuto() where the new code did not precisely mirror the
	  semantics of the original code, thus some auto-mount attempts failed.
	- Eric Sunshine augmented the "-multiply_defined suppress" linker check
	  in configure.ac so that it first attempts the uglier equivalent
	  "-Wl,-multiply_defined,suppress" in order to make life simpler for
	  external projects using cs-config (which reports this linker option
	  in response to --libs) in conjunction with GNU libtool. The problem
	  with "-multiply_defined suppress" for GNU libtool users is that
	  libtool re-orders linker arguments, not realizing that "suppress"
	  must follow immediately after "-multiply_defined". The uglier
	  equivalent does not suffer from this problem in the hands of libtool
	  since it contains no whitespace.
	- Eric Sunshine changed macosx.jam to use the ugly
	  "-Wl,-framework,FooBar" instead of "-framework FooBar" for LINKLIBS
	  in order to make life easier for external projects using the result
	  of "cs-config --libs" in conjunction with GNU libtool. Without this,
	  libtool would re-order its input arguments, not realizing that
	  "-framework" and "FooBar" need to stick together.
19-Dec-2004
	- Eric Sunshine fixed problem on MacOS/X where output of `cs-config
	  --libs' did not include "-framework AppKit -framework Foundation".
	- Eric Sunshine fixed some 64-bit build problems on Windows in
	  cswinCallStackHelper and csProcessorCapability.
	- Eric Sunshine added the new macro CS_IMPLEMENT_FOREIGN_DLL. This is
	  analogous to CS_IMPLEMENT_PLUGIN, except that is for foreign dynamic
	  load libraries which we might build, rather than for Crystal Space
	  plugin modules. Obvious examples of foreign DLL's are the pure
	  extension modules for Python, Perl, and Java.
	- Eric Sunshine fixed problem where csperl5/perl5mod.cpp was still
	  referencing the obsolete CS_IMPLEMENT_STATIC_VARIABLE_CLEANUP macro.
	- Eric Sunshine fixed problem in plugins/filesys/vfs/vfs.cfg.template
	  where the TTF_PATH variable was misnamed on Unix. Also augmented
	  mount information to take into account fact that TrueType fonts under
	  X-Windows may now be found in /usr/X11R6/libs/X11/fonts/TTF in
	  addition to the older /usr/X11R6/libs/X11/fonts/TrueType.
	- Eric Sunshine renamed the Crystal Space Java package from
	  "com.crystalspace" to "org.crystalspace3d" in order to reflect the
	  new official Crystal Space domain name (crystalspace3d.org).
	- Jorrit added a new PVS visibility culler ('Potentially Visible Set')
	  which is going to be a visibility culler based on precalculation
	  for static geometry. Currently pvsvis is just a complete copy
	  of frustvis so no additional functionality is there. We also need
	  a PVS calculation tool anyway which hasn't been started yet.
	- Jorrit added a new PVS calculation tool. In the future this tool
	  will load a map, take all static geometry and then calculate the
	  PVS data for it which can be used by PVSvis. Currently this tool
	  is only a copy of simpmap tutorial.
	- Jorrit removed the unused csPolygonTree class from csgeom. Odedynam
	  did have a pointer to instances but it was never used.
	- res fixed cswinCallStackHelper to pass the correct settings when
	  stack-walking on the x86_64 platform.
	- Eric Sunshine changed VFS so that the following idiom correctly
	  mounts "/path1", "/path2", and "/path3". Previously, it would
	  correctly mount "/path1", but then attempt to mount the bogus
	  "/path2, /path3".
	    VFS.Mount.foo = $/path1$/, $(FOO)
	    VFS.Unix.FOO = /path2, /path3
	- Eric Sunshine reverted Jorrit's 11-Aug-2004 change to csVFS::ChDir()
	  which caused it to reject the requested directory if it did not
	  represent a physical mount point. That change seriously broke
	  ChDir(). There are valid cases when you may want to ChDir() to a
	  directory for which there is no physical mount. For example:
	    VFS.Mount.lib/textures = textures.zip
	    VFS.Mount.lib/materials = materials.zip
	  In this case, "/lib" _is_ a valid VFS path, despite the fact that
	  there is no physical mount at that location. Jorrit's change caused
	  it to reject ChDir("/lib") even though it should have been
	  accepted. An obvious place where this error manifested was in
	  'vsh'. It became impossible to "cd /lib", "cd /lev", and even "cd /",
	  or to change to any other directory which was entirely virtual. The
	  problem almost certainly impacted other portions of the project, as
	  well.
	- Eric Sunshine added csVFS::CheckIfMounted(). This provides
	  replacement functionality for the reverted change to ChDir().
	  ChDirAuto() now uses CheckIfMounted() rather than relying on the
	  bogus/broken behavior of ChDir().
	- Eric Sunshine fixed csVFS::GetRealPath() so that it returns the
	  slightly more sensible "/foo/bar.zip/cow" instead of
	  "/foo/bar.zipcow" when the queried path points at an entry inside an
	  archive.
	- Eric Sunshine removed the unused csVFS::cnode and csVFS::cnsufx
	  instance variables.
	- Eric Sunshine fixed bug in vsh's "mounts" command where it failed to
	  emit a final newline after displaying the active mount list.
	- Eric Sunshine added a few more command aliases to vsh.
	- res added a csCallStack implementation for systems supporting
	  backtrace().
	- res added -E to the debug linker flags to allow the
	  backtrace_symbols() function to obtain symbols in all cases.
17-Dec-2004
	- Peter Amstutz updated the csvosa3dl plugin to compile with
	  the current VOS CVS code.
	- PK added *polygon_idx = i; to csSprite3DMeshObject::HitBeamObject
	  in order to get the hit polygon.
	- Mike Handverger added support for enabling/disabling bodies
          in odedynam. This is especially helpful when used with
          EnableAutoDisable()
16-Dec-2004
	- Eric Sunshine added the CS_QUERY_REGISTRY_PLUGIN() macro to
	  <iutil/plugin.h>, which is based upon a submission from Reed Hedges.
	  This macro embodies the common idiom of first querying the
	  object-registry for an object, and then asking the plugin manager to
	  load an appropriate plugin if the object was not found. It also
	  registers an object instantiated from the loaded plugin with the
	  object-registry if necessary. Also, as a test of its functionality,
	  altered the shaders and renderers to utilize this new macro.
	- Eric Sunshine renamed the following symbols in order to avoid
	  global namespace pollution:
	    big_endian_float()       --> csBigEndianFloat()
	    big_endian_long()        --> csBigEndianLong()
	    big_endian_longlong()    --> csBigEndianLongLong()
	    big_endian_short()       --> csBigEndianShort()
	    convert_endian()         --> csConvertEndian()
	    double2longlong()        --> csDoubleToLongLong()
	    float2long()             --> csFloatToLong()
	    float2short()            --> csFloatToShort()
	    get_le_float16()         --> csGetLittleEndianFloat16()
	    get_le_float32()         --> csGetLittleEndianFloat32()
	    get_le_long()            --> csGetLittleEndianLong()
	    get_le_short()           --> csGetLittleEndianShort()
	    little_endian_float()    --> csLittleEndianFloat()
	    little_endian_long()     --> csLittleEndianLong()
	    little_endian_longlong() --> csLittleEndianLongLong()
	    little_endian_short()    --> csLittleEndianShort()
	    long2float()             --> csLongToFloat()
	    longlong2double()        --> csLongLongToDouble()
	    set_le_float16()         --> csSetLittleEndianFloat16()
	    set_le_float32()         --> csSetLittleEndianFloat32()
	    set_le_long()            --> csSetLittleEndianLong()
	    set_le_short()           --> csSetLittleEndianShort()
	    short2float()            --> csShortToFloat()
15-Dec-2004
	- res added a graphical alert box to the xwindow plugin. It is based
	  upon the xmessage program, utilizes the Xaw toolkit and is enabled
	  if the latter is detected by configure.
	- Vincent Knecht updated vfs.cfg.template:
	    - Added $(CS_DATADIR)$/ttf-vera.zip to VFS.Mount.fonts/ttf.
	    - Added $(CS_DATADIR)$/aws$/ to VFS.Mount.aws.
	    - Fixed VFS.Mount.lev/parallaxtest.
	- res added a message to configure in case zlib is not found,
	  informing about its essential nature to CS.
14-Dec-2004
	- PK replaced the old, CSWS-based viewmesh with a new AWS-based
	  version.
13-Dec-2004
	- Marten removed the old renderer and methods/classes/plugins
	  deprecated together with it, for closer info about which see the
	  apimod100 in doc appendix. CVS has been tagged with PRE_OR_REMOVAL
	  before the change.  One method in CSWS, and a few other places are
	  yet to be fixed (or removed). Together with this a few fixes have
	  been made too:
	    - or_lighting* shaders have been renamed std-lighting*
	    - The "OR compatibility" shader type in the default renderloop is
	      now "standard"
        - Philip Wyett fixed a compile error with software renderer.
	- Philip Wyett removed 'vbufmgr.h' refererence from cspace.i.
	- Marten removed some files which didn't go away last commit.
	- Eric Sunshine completed the removal of old renderer:
	    - Removed all remaining CS_USE_OLD_RENDERER blocks in C++ code.
	    - Removed all remaining USE_OLD_RENDERER Jam variable and
	      {build,oldrenderer} property references.
	    - Removed all references from documentation (Texinfo).
	    - Removed the wksoldrenderer and wkswxoldrenderer MSVC workspaces,
	      and the corresponding Release_OR, Debug_OR, and ExtensiveDebug_OR
	      build modes.
	    - Renamed the `nrall' build target to `renderall'. (The old name,
	      though deprecated, is still recognized for backward
	      compatibility.)
	    - Renamed the glrender3d, softrender3d, and nullrender3d plugins to
	      gl3d, soft3d, and null3d, respectively. (The old Jam target
	      names, though deprecated, are still recognized for backward
	      compatibility.)
	- Eric Sunshine fixed Texinfo mark-up errors, and spelling and
	  grammatical errors in apimod100.txi.
	- Marten fixed an error in the msvcgen where it set the libdir for
	  release but not debug builds.
	- Eric Sunshine relocated the Crystal Space RPM-creation instructions
	  from texinfo/build/platform/unix to texinfo/tutorial/howto, and also
	  performed a small amount of re-writing to make it more sensible in
	  the context of a HOWTO.
	- Eric Sunshine added a "shaders" compile group to the build system.
	- res fixed an occasional csString character access beyond its length
	  in archive.cpp.
12-Dec-2004
	- Eric Sunshine worked around problem in csjava caused by new operator
	  overrides in csColor and csColor4. Although modern C++ can deal with
	  overrides in subclasses having return values which differ from those
	  in the parent class, Java can not.
	- Eric Sunshine fixed a nasty bug in _csWrapPtr_to_Python() (pythpre.i)
	  where it mismanaged (under-incremented) the reference count of the
	  wrapped object. This caused objects to be deleted multiple times.
	  Objects affected by this bug were those returned by the various
	  CS_QUERY_FOO() and SCF_QUERY_FOO() macros.
11-Dec-2004
	- PK added static void ReportWarning (const char* description, ...)
	  to csApplicationFramework.
10-Dec-2004
	- res made the following changes:
	    - Fixed (or worked around in rare cases) uses of non-const
	      csString::GetData().
	    - Added macros to mark methods or types as deprecated. Compilers
	      which support this will emit a warning when such a deprecated
	      method is uses.
	    - Marked some deprecated methods with above macro.
	    - Changed csRenderMeshHolderSingle to use a block allocator instead
	      of new/delete for allocated rendermeshes.
	    - Fixed comment typos in csgeom/box.h.
	    - Added a paragraph to apimod100.txi regarding the iEvent::Find()
	      to Retrieve() renaming a while back.
	    - Fixed invalid use of CSTOOL_EXPORTS macro in stdpt plugin.
	    - Made the Python glue reside in a shared lib for some more space
	      efficiency. The glue code generates object code of significant
	      size which can be shared between the Py module and plugin.
	    - Updated cs-win32libs URLs in documentation.
	    - Fixed viewmesh to compile with memory debugging or mem tracker
	      enabled.
	- Eric Sunshine updated cal3d check in configure.ac so that it also
	  works correctly with the latest drastic API changes to cal3d
	  (i.e. removal of the create() and destroy() methods from many of the
	  classes).
	- Eric Sunshine updated the "sufficiently recent" cal3d check in
	  configure.ac to demand the very latest CVS version of cal3d since
	  these changes are needed by Keith's 9-Dec-2004 enhancements to
	  sprcal3d.
	- Eric Sunshine fixed `viewmesh' so that it builds cleanly even when
	  cal3d is not available.
	- Eric Sunshine upgraded the msvcgen templates so that they distinguish
	  between "release" and "debug" header and library search paths. This
	  change allows projects to take full advantage of the the
	  EXTLIB.INCDIRS, EXTLIB.INCDIRS.DEBUG, EXTLIB.LIBDIRS,
	  EXTLIB.LIBDIRS.DEBUG functionality which was added on 29-Nov-2004.
	- Eric Sunshine performed an audit (and update) of code which might be
	  impacted by the 26-Oct-2004 change to iDocument::Parse() to preserve
	  whitespace by default.
	- Squee made the following changes:
	    - Added GetImageName() and GetTextureTarget() to iTextureHandle.
	    - Modified csparser to load key-value pairs for cubemaps and 3D
	      texutres.
	    - Fixed some bugs in some Write*() functions in the syntax service.
	    - Fixed a bunch of cssaver (especially textures) so that saving a
	      copy of flarge now produces a loadable (though incomplete) map
	      file.
	- Squee added missing check for OR in cssaver.
	- res fixed the modification of a const char* in openglcommon.
9-Dec-2004
	- Keith Fulton added support for new animation callback system in
	  cal3d.  See viewmesh.cpp for very simple example of how to use this.
	  Here is a quick description of how the callback system works in
	  cal3d:
	    Added animation callbacks to cal3d.  The CoreAnimation keeps the
	    master list of callbacks for itself.  The Animation keeps last-
	    called times for each animation for itself.  The Mixer is
	    responsible for causing the Animation to check for which of its
	    callbacks must be called.  There are two callbacks defined--one for
	    continuous calling during anim playback and one on completion of
	    the animation.  The callbacks take the CalModel in question, which
	    they can use to getUserData in order to get their own
	    application-specific data about which entity the callback is
	    referring to.
8-Dec-2004
	- Eric Sunshine removed obsolete warning from Doxygen documentation for
	  iEventOutlet::Post() which warned that only events returned by
	  CreateEvent() were valid as input to Post().  This requirement was
	  eliminated on 9-Feb-2004 when Eric re-wrote all of the highly nasty
	  code in csEvent which made the dangerous assumption that the incoming
	  iEvent was actually a csEvent.
7-Dec-2004
	- Eric Sunshine added new Autoconf macros CS_CHECK_PROG(),
	  CS_CHECK_PROGS(), CS_CHECK_TOOL(), CS_CHECK_TOOLS(), CS_PATH_PROG(),
	  CS_PATH_PROGS(), and CS_PATH_TOOL() in checkprog.m4. These are simple
	  wrappers which, in addition to invoking the corresponding Autoconf
	  macros (whose prefix is `AC_'), augment the search path to include a
	  list of directories likely to contain tools and commands, but which
	  might not be mentioned in the user's PATH. The default list of extra
	  directories searched includes /usr/local/bin and /sw/bin (where Fink
	  on MacOS/X installs programs).
	- Jorrit extended the addon handling in the loader so that it will
	  first try to find the addon classID in the object registry. That
	  way you can more easily make addon's without them having to be
	  real plugins.
	- Jorrit changed the loading of addons so that the loading no longer
	  fails if an addon cannot be found. Addon's are now optional.
	  A warning is still given though.
	- Eric Sunshine added a test to checkpython.py to figure out how to
	  suppress warnings about `long double' when #including Python headers,
	  since some installations on MacOS/X emit excessive warnings over
	  which we have no control (since the problem is in the Python
	  headers).
6-Dec-2004
	- Eric Sunshine changed the Library, ConstructLibraryTarget, and
	  ConstructLibraryLinkTarget rules in library.jam so that they forcibly
	  filter out "shared" from the option list before invoking
	  LibraryStatic, ConstructStaticLibraryTarget, and
	  ConstructStaticLibraryTarget, respectively, if BUILD_SHARED_LIBS is
	  not true.
	- Eric Sunshine added ConstructStaticLibraryTarget,
	  ConstructSharedLibraryTarget, and ConstructSharedLibraryLinkLib rules
	  to macosx.jam.
	- Eric Sunshine fixed bugs in the Library rule (library.jam) and the
	  LinkWith rule (flags.jam) where they incorrectly and unconditionally
	  believed that the target was configured as a shared library
	  regardless of its actual state and the state of BUILD_SHARED_LIBS.
	  Among other issues, this problem manifested during msvcgen runs where
	  the synthesized workspaces had incorrect dependency information for
	  the static library project files.
	- Eric Sunshine fixed bug in jamtemplate introduced on 29-Nov-2004
	  where compiler and linker flags determined by configure script could
	  incorrectly creep into MSVC project files. (These flags are almost
	  always undesirable because they are specific to the host's build
	  tools -- the one running 'msvcgen' -- rather than to MSVC.)
	- Eric Sunshine worked around a problem where some Python installations
	  have an apparently bad prototype for PyRun_SimpleString() taking a
	  (char*) rather than (char const*).
	- res removed a Deactivate() from the destructor of the GL fixed
	  function fragment program. This should not be needed, and
	  furthermore, happens after GL context destruction (and causes crashes
	  on platforms sensitive to that).
	- Eric Sunshine added csInitializer::RequestPluginsV(). This is just
	  like the variable-argument RequestPlugins(...), except that the
	  arguments are specified as a `va_list'.
	- Eric Sunshine augmented `jamtemplate' so that the synthesized program
	  invokes the new celInitializer::SetupCelPluginDirs() rather than
	  manually attempting to figure out where the CEL plugins are located
	  and telling SCF where to scan.
	- Eric Sunshine made all arguments to the csConfigManager constructor
	  optional. This makes it more convenient to use csConfigManager as an
	  instance variable when the containing object is not able to populate
	  the manager immediately upon construction.
	- Eric Sunshine added a csConfigFile::IsEmpty() method.
	- Eric Sunshine updated VFS so that, at initialization time, it now
	  merges all vfs.cfg files located during its start-up scan. It
	  searches for a file named vfs.cfg in the application resource
	  directory (csGetResourceDir()), then in the directory containing the
	  application (csGetAppDir()), and finally in the Crystal Space
	  installation directory (csGetConfigPath()).  The full set of
	  directories mounted by VFS following the initial configuration file
	  scan is the union of the entries in all of the discovered vfs.cfg
	  files. If there are conflicting entries, then mounts and variable
	  assignments specified in configuration files discovered earlier in
	  the scan take precedence over those discovered later.  Previously,
	  VFS stopped searching for configuration information at the first
	  directory containing a file named vfs.cfg, and loaded only that file.
	- Eric Sunshine augmented VFS so that it respects the --verbose
	  command-line option. When given, it emits information about each
	  vfs.cfg file it has loaded.
5-Dec-2004
	- res made the following changes:
	    - Fixed the Win32 shared library linking.
	    - Did some re-macroization of the static variable cleanup stuff.
	    - Replaced some printf()s with csPrintf()s in the shader expression
	      code.
	    - Made csGradient::GetShades() return a refeference to a const,
	      rather than non-const, array.
	    - Added some missing CS_CSGEOM_EXPORT invocations to csBox2.
	- res made the following changes:
	    - Changed the LibDepends Jam rule for more LinkWith-like invocation
	      (i.e. after Library, not before).
	    - Hardcoded the section name in bfdplugins.cpp to be more
	      symmetrical with unix.jam.
	    - Fixed the logic when to use local and csutil static variable
	      cleanup function.
	- res worked around shared library build breakage on Unix.
4-Dec-2004
	- res fixed the GL renderer to not call glDeleteTextures() on super
	  lightmap textures.
	- res added a patch from Karl Dietz <dekarl@users.sourceforge.net> to
	  add support for DDS textures to map2cs. (patch #1078844)
3-Dec-2004
        - res added a missing 0 check to the GL halo cleaning code.
	- Jorrit removed the GetValueNames() from iKeyValuePair again as it
	  is illegal to return a csArray directly in an SCF interface (due
	  to inter-plugin memory management issues).
	- Jorrit temporarily disabled WriteKey() in syntax services since
	  it used the above GetValueNames(). It will have to be rewritten
	  once we have another way to iterate over all values in a key value
	  pair.
	- Squee forgot to use the proper arrays (again). Added GetValueNames()
	  back into iKeyValuePair using the proper iStringArray and re-enabled
	  WriteKey() in the syntax service.
	- Squee changed GetShades() in csGradientShades to return a reference.
	- Jorrit added support for loading library files to viewmesh. In
	  that case the first mesh factory in that library will be shown.
        - res fixed the or_lighting shader to respect the alpha of the vertex
          colors again.
        - Squee did some more work on cssaver.
2-Dec-2004
	- Eric Sunshine fixed the various extension checks in glextmanager.h so
	  that they won't crash if glGetString(GL_EXTENSIONS) and/or
	  wglGetExtensionsStringARB() return a null pointer for some reason.
	- Eric Sunshine backported into the `glextgen' templates some changes
	  by Matze to glextmanager.h (which is generated by `glextgen').
	- res fixed the GL halos to delete the texture handles before GL
	  context destruction.
	- Squee added various operators to csColor and csColor4 (like ==).
	- Squee added GetShades() to csGradientShades and GetValueNames() to
	  iKeyValuePair.
	- Squee filled in various Write*() methods on the syntax service. Also
	  fixed some bugs in cssaver, though there's plenty more to be done.
	- Squee added 'saveworld' command to the walktest console to easily
	  test cssaver plugin.
1-Dec-2004
	- res added a patch from Brendan Costa adding support for underline
	  position, underline thickness and line height to iFont.
	- res fixed the Win32 keyboard handling to emit Shift autorepeat
	  events.
	- Anders made the lesser (prio 50) technique of or_lighting support
	  fog. or_detail-variants still remain.
30-Nov-2004
	- Eric Sunshine changed the `friend class csHash' mentions in the hash
	  iterators so that they once again specify the full templated name:
	  `friend class csHash<T, K, KeyHandler>'. This reverses a change made
	  some time back (January 2004) to pacify the buggy Borland compiler
	  which failed to understand the fully decorated name, however, MSVC6
	  (at least some versions / patch levels) barfs on the non-decorated
	  name. Since, at present, we are actively supporting MSVC6, but not
	  Borland, it makes sense to use the decorated form which pacifies
	  MSVC6. If, in the future, we need to support both products, we will
	  have to arrive at some other solution (such as conditional
	  compilation).
	- Jorrit added an option to thing to disable lightmapping. This
	  will save some memory (but not as much as I expected) and enhances
	  render speed. You can enable this option in thing.cfg (uncomment
	  the EnableLightmaps=false line) or you can use the
	  '-nolightmapping' commandline option.
	- res added shared libs support for unix platforms.
29-Nov-2004
	- res changed the static variable cleanup code to employ a variable
	  with a pointer to the cleanup function instead of using it directly.
	- res added very crude, very hackish, very experimental, but working
	  shared libs support for MinGW.
	- Eric Sunshine augmented msvcgen to make it possible to specify
	  additional header and library directories, and raw macro definitions
	  (without resorting to compiler-specific option syntax) for external
	  projects.  In addition to EXTLIB.CFLAGS, EXTLIB.LFLAGS, and
	  EXTLIB.LIBS, msvcgen now also recognizes EXTLIB.DEFINES,
	  EXTLIB.INCDIRS, and EXTLIB.LIBDIRS. (You normally set up the
	  EXTLIB.FOO variables with the MsvcGenConfig or MsvcGenConfigFile
	  rule; and the information is consulted by msvcgen when the
	  ExternalLib rule is invoked.) These new settings are reflected in the
	  MSVC project attributes "PreprocessorDefinitions",
	  "AdditionalIncludeDirectories", and "AdditionalLibraryDirectories".
	- Eric Sunshine enhanced `jamtemplate' so that the synthesized
	  Jamfile.in also sets the MSVC search path for CRYSTAL and CEL
	  libraries.  (On 10-Sep-2004, `jamptemplate' was augmented to also set
	  the MSVC search path for CRYSTAL and CEL headers. Prior to that,
	  neither header nor library search path was set for CRYSTAL or CEL.)
	  In particular, it adds these directories to the library search list:
	    ../CS/out/release/libs
	    ../CS/out/debug/libs
	    ../CS/libs/csutil/win32
	    $(CRYSTAL)/out/release/libs
	    $(CRYSTAL)/out/debug/libs
	    $(CRYSTAL)/libs
	    $(CRYSTAL)/libs/csutil/win32
	    ../cel/out/release/libs
	    ../cel/out/debug/libs
	    $(CEL)/out/debug/libs
	    $(CEL)/out/release/libs
	    $(CEL)/libs
	- Eric Sunshine updated jamtemplate/Jamfile-src.template so that it
	  performs a wildcard for all of the common source and header
	  extensions (C, C++, Objective-C, Objective-C++), rather than
	  searching only for *.cpp and *.h.
	- Vincent Knecht updated rpm.txi manual page: --with newrenderer
	  switch has changed to --with oldrenderer.
	- Eric Sunshine augmented the `lcms' test in configure.ac so that it
	  also looks for the header as <lcms/lcms.h> in addition to <lcms.h>,
	  since it is installed in an "lcms" subdirectory on some
	  platforms. (Normally, this should be handled automatically by
	  `pkg-config --cflags lcms' which is invoked by configure.ac, but
	  the necessary pkg-config goop presumably is missing on these rogue
	  installations.)
28-Nov-2004
	- Eric Sunshine made the new-renderer the default. Users wanting to use
	  the old-renderer must select it manually.
	    - The configure script now responds to --enable-old-renderer. The
	      --enable-new-renderer option has been retired.
	    - msvcgen now publishes wkstypical and wksoldrenderer along with
	      build modes Release, Debug, Release_OR, and Debug_OR. The
	      wksnewrenderer workspace, and build modes Release_NR and Debug_NR
	      have been retired.
	    - There is a new preprocessor symbol CS_USE_OLD_RENDERER. The
	      symbol CS_USE_NEW_RENDERER has been retired.
	    - The Jam build variable USE_OLD_RENDERER replaces the retired
	      USE_NEW_RENDERER. Likewise, the Jam property {build:oldrenderer}
	      replaces the retired {build:newrenderer}.
	- Eric Sunshine eliminated numerous compilation warnings.
	- Eric Sunshine updated documentation and other URL's throughout the
	  project to point at Crystal Space's new official domain
	  crystalspace3d.org.  (We also respond to crystalspace3d.net and
	  crystalspace3d.com.)
	- res fixed a crash in OpenGL DrawSimpleMesh() where mesh.dynDomain
	  wasn't checked for 0.
	- res comitted an update to CrystalExport.mel from Mark Sanders:
	    - Fixed bug: When save as box is open and you press Cancel it
	      continues saving with the previous file name.
	    - Added a "roundoff" feature to round the vertice coordinates in
	      the exported file.
	    - Changed the progress bar to display a bit more regular on
	      different sizes of meshes. Also rounded off the percentage
	      display.
27-Nov-2004
	- Jorrit did a few minor changes to foliage. Nothing significant.
	- Jorrit applied a patch submitted by Marc Prussmeier which adds the
	  following three functions to iImage: Copy, CopyScale, and CopyTile.
	  Only csImage implements the new methods.  The other implementations
	  of iImage simply return false.
	- Andrew Robberts fixed a bug in particles simpphys where a for loop
	  iterated the wrong way.
	- res fixed compiling for non-debug builds of win32kbd.cpp.
	- Anders did the following changes:
	    - Moved key/value reading & writing to syntax services, and added
	      key/value loading to xml shaders.
	    - Updated bugplug scene info dump to write child meshes too
	      (and changed the method of indentation a bit)
	    - Made DrawSimpleMesh actually care about the "dyndomain"
	      member of the mesh
	    - Added fog to NR. There are still issues though:
		- Fog looks crappy when looking perpendicular to a portal.
		  This is actually due to properties of z-based fog, but
		  maybe could be tweaked to look better.
		- All shaders aren't updated to support fog, only the
		  standard or_lighting, best technique.
	- res renamed FogRamp() to csFogRamp().
26-Nov-2004
	- Eric Sunshine added capability to cscript/csperl5/Jamfile to create
	  pure-Perl extension module `cspace' (Jam target `perl5mod'). This
	  revives the long-dead pure-Perl scripting interface for CS.
	- Eric Sunshine fixed problem in Perl5 `freearg' typemap for
	  argc/argv[] in perlpre.i which resulted in the typemap never being
	  applied, thus allocations made by the `in' typemap were never freed.
	- Eric Sunshine fixed nasty bug in Perl5 `in' typemap for argc/argv[]
	  in perlpre.i where it was filling the synthesized argv[] array with
	  pointers to strings which it freed before ever calling the wrapped
	  C/C++ function, thus the wrapped function was receiving garbage.
	- Eric Sunshine changed behavior of Perl5 `in' typemap for argc/argv[]
	  in perlpre.i so that, as a convenience, it now automatically inserts
	  the script name as argv[0]. This fixes the common case where the Perl
	  programmer would pass in only @ARGV, which does not contain the
	  script name; yet C/C++ functions accepting argc/argv[] always expect
	  argv[0] to be the script/program name, thus the bare @ARGV was not
	  interpreted as the Perl programmer would expect.
	- Eric Sunshine changed behavior of Java `in' typemap for argc/argv[]
	  in javapre.i so that it now automatically prepends a synthesized
	  argv[0] to the incoming array since C/C++ functions accepting
	  argc/argv[] expect argv[0] to be the program or script name, but
	  Java's `main(String[] args)' array contains only program arguments.
	  Unfortunately, there does not seem to be any way of determining the
	  location of the .class file in which main() was invoked, so
	  "./csjava" is used as argv[0]. The "./" notation is used purposely so
	  that functions, such as csGetAppPath(), which interpret argv[0] will
	  consider the "current working directory" as the location of the
	  program. (This may not be the best solution for synthesizing argv[0],
	  but it is better than sending a bogus argv[] array to the C/C++
	  function.)
	- res added some facilities for keyboard handling debugging. Can be
	  enabled by setting the KeyboardDriver.EnableDebugging config var to
	  true.
	- res augmented csConfigAccessor to also contain a simple object
	  registry only constructor.
	- res slightly augmented the iGraphics3D::DrawSimpleMesh() docs to
	  state that use of that method in 2D mode is possible, too.
	- res fixed the flare halos for NR SR.
	- res fixed a problem in the shader conditionals where float-typed SV
	  values where not correctly retrieved. Also fixed float-vs-int
	  comparisons (ints were not casted to floats).
25-Nov-2004
	- Eric Sunshine enhanced SCF so that it now recognizes the --verbose
	  command-line option. When enabled, it emits the following additional
	  diagnostic information:
	    - Path of each directory scanned for plugins.
	    - Path of each plugin discovered and registered.
	    - Name of each class published by a plugin.
	    - Name of each plugin actually loaded (as a result of a request to
	      instantiate a class contained in the plugin).
	    - Name of each plugin unloaded.
	- Eric Sunshine augmented the behavior of SCF so that it is now legal
	  to ask for it to scan the same directory multiple times for plugins.
	  This may be useful, for instance, by a long-running program which
	  installs plugins dynamically (perhaps downloading them from a
	  server), and wishes for SCF to recognize the new plugins without
	  having to name them individually. Another example is PlaneShift which
	  asks SCF to scan every directory mentioned by PATH, even though some
	  of those directories might already have been scanned by the normal
	  search mechanism.  Previously, the behavior of SCF when asked to
	  re-scan a directory was essentially undefined. (In practice, it
	  issued a slew of potentially misleading warning messages.)
	- Eric Sunshine enhanced several error and warning messages emitted by
	  SCF so that they provide more context information about the problem
	  being reported.
	- Eric Sunshine added Contains() to csStringSet. Previously, there was
	  no way to determine if a given string was a member of the set.
	- Eric Sunshine renamed the 'drivers2d' and 'drivers3d' compile groups
	  to 'canvases' and 'renderers', respectively. (The old names, though
	  deprecated, are still recognized for backward compatibility.)
	- Eric Sunshine fixed bugs in several canvases where they neglected to
	  initialize csPixelFormat::AlphaMask.  A subsequent call to
	  csPixelFormat::complete() then accessed the uninitialized AlphaMask
	  field.
	- Eric Sunshine worked around more Swig 1.2.23 instability in the new
	  "default arguments" features where it generated ambiguous and
	  uncompilable code (at least with gcc 3.4.x) for scfInitialize().
24-Nov-2004
	- res fixed light flare halos for NR.
	- res changed csRenderLoop::Draw() to save the clipper before drawing
	  and subsequently restore it. Needed for proper halo visibility
	  recognition.
	- res changed the NR texture manager to now unload textures upon
	  clearing (i.e. context closing).
	- res slightly augmented the
	  csApplicationFramework::SetApplicationName() Doxygen documentation.
23-Nov-2004
	- Eric Sunshine fixed bug in csSCF::GetPluginMetadata() in which it had
	  not been properly (fully) updated to deal with csStringID following
	  the 13-Nov-2004 change to SCF to make the data structures share
	  library and factory names via csStringSet.  This resulted in
	  GetPluginMetadata() sometimes failing to return a valid meta-data
	  document.
	- Marten fixed a few issues in NR software renderer:
	    - Added triangulation of trianglestrips and fans
	    - Added Blit() to texture handle. This is needed for most/all
	      procedural textures.
	    - Made sure DrawPolysMesh() visits the materials before usage.
	    - Added a fallback-technique to the reflection shader.
	- Eric Sunshine improved error reporting in SCF for when an SCF class
	  is detected in more than one plugin module. It now reports the
	  physical DLL in which each declaration is made. This should make it
	  much easier to debug problems, rather than trying to guess about the
	  locations of the plugins.
	- res applied patch from Alvar Jansson <alvar@users.sourceforge.net>
	  which adds csVector2 shader variable support in Cg programs. (patch
	  #1071736)
22-Nov-2004
	- Eric Sunshine added blurb to apimod100.txi regarding newly supported
	  Java bindings.
	- Vincent Knecht made the following changes to rpm/cs.spec file:
	    - Moved cslight invokations to post-install step.
	    - Changed cslight invocations to use `-canvas=null' instead of
	      `null2d'.
21-Nov-2004
	- res fixed a problem in the NR software renderer were wrong renderer
	  lightmaps were selected for polygons, causing problems from visual
	  glitches to crashes.
	- res fixed the shader list loader in csparser to not stop parsing
	  of the list when a shader is already loaded or under some error
	  conditions.
	- res added csGetPlatformConfigPath(), a function to obtain a platform
	  specific path for per-user data.
	- Eric Sunshine fixed oversight in 4-Nov-2004 change to jamtemplate
	  where it neglected to copy config.sub, config.guess, and install-sh
	  to the synthesized project.
	- Eric Sunshine renamed csHash<>::PutFirst() to PutUnique(). (The old
	  name is still recognized, though deprecated.) Also clarified
	  documentation for Put() to state that it does not replace an existing
	  key/value tuple.
	- Eric Sunshine fixed bug in csKeyValuePair::SetValue() where it was
	  incorrectly invoking csHash<>::Put() rather than PutUnique(). In
	  practice, this caused all invocations of SetValue(), other than the
	  first, to appear to be ignored; and csKeyValuePair::GetValue() only
	  ever returned the value set by the first invocation of SetValue().
	- Eric Sunshine updated the "simple" example code in sprcal3d.txi so
	  that it agrees with the new simple1 tutorial which is now based upon
	  csApplicationFramework. Also updated out-of-date material in
	  sprcal3d.txi and corrected a number of errors.
	- Eric Sunshine fixed oversight in 4-Nov-2004 change to 'install_data'
	  where it neglected to install config.sub, config.guess, and
	  install-sh into ${datadir}/build/autoconf. These are needed by
	  jamtemplate.
	- res generalized csGetPlatformConfigPath() by removing the 'directory'
	  flag. The function now returns a base for a filename.
	- res changed the simple1, simple2 and simpmap apps to use an
	  application name of the style "CrystalSpace....". (As suggested by
	  the SetApplicationName() documentation.)
	- PK changed PicView to use csApplicationFramework and AWS.
19-Nov-2004
	- PK fixed the mesh attaching to sockets in viewmesh by adding
	  sprite->GetMovable()->UpdateMove() to ViewMesh::AttachMeshToSocket.
	- Eric Sunshine performed some relatively minor clean up in simple.txi,
	  simple2.txi, and simpmap.txi: mostly grammatical, punctuational,
	  typographical, and small content corrections.
	- Eric Sunshine added the missing ClearAnimCycle(int,float) overload to
	  iSpriteCal3DState which complements the existing ClearAnimCycle(char
	  const*,float). Also added the missing FindAnim(char const*) to the
	  interface.
	- Luca replaced the void return type with the bool one for the
	  SpriteCal3DState::ClearAnimCycle(int idx, float delay) method.
18-Nov-2004
	- Eric Sunshine changed CS_CHECK_PKG_CONFIG in checklib.m4 so that it
	  also augments pkg-config's search path to reference directories which
	  commonly contain .pc files, but which pkg-config does not search by
	  default. In particular, it now instructs pkg-config to also search
	  /usr/local/lib/pkgconfig and /sw/lib/pkgconfig (the Fink-installed
	  .pc location on MacOS/X).
	- Eric Sunshine upgraded the FreeType2 check so that it is capable of
	  locating the Fink-installed `freetype-config' in the unusual location
	  /sw/lib/freetype2/bin on MacOS/X.
	- PK changed the simple tutorials to use csApplicationFramework.
17-Nov-2004
	- Eric Sunshine fixed a bogus string comparison in
	  csSpriteCal3DMeshObject::FindAnimCycleNamePos() which generally
	  failed (though it would succeed if the input argument was the return
	  value of GetAnimName()).
	- Eric Sunshine fixed bug in the (char const*) overload of
	  csSpriteCal3DMeshObject::ClearAnimCycle() where it incorrectly
	  invoked ClearAnimCycle() rather than ClearAnimCyclePos(). This caused
	  it to be entirely dysfunctional.
	- res added a paragraph about the iTextureManager::FreeImages() removal
	  to the API modifications page.
16-Nov-2004
	- Eric Sunshine enhanced CS_CHECK_LIB_WITH() in checklib.m4 so that it
	  knows about MacOS/X frameworks, and automatically tests for the
	  presence of a framework for the given library or one of its aliases,
	  in addition to performing the normal link library testing.
	- Eric Sunshine upgraded the Cg check in configure.ac for MacOS/X
	  compatibility.
	- Eric Sunshine fixed the SDL check in configure.ac so that it succeeds
	  on MacOS/X. It now #undefines `main' after #including <SDL/SDL.h>,
	  since SDL's `main' #define breaks the test.
	- res replaced the parallaxtest normal map with a better looking one.
	- Anders fixed a nasty bug in genmesh. If the data size of the mesh was
	  increased with a SetVertexCount call, tangent and binormal buffers
	  would be overrun upon next access resulting in memory corruption.
	- Eric Sunshine upgraded javapre.i so that it does not manually provide
	  an overload for iEventOutlet::Broadcast() since this is no longer
	  needed with Swig 1.3.23, and resulted in a Java compilation
	  error. (The manual overload is still provided for earlier Swig
	  versions.)
15-Nov-2004
	- Eric Sunshine fixed _CS_CHECK_LIB_PKG_CONFIG_FLAGS() in checklib.m4
	  so that it no longer checks for `pkg-config' only the very first time
	  it is mentioned in configure.ac. This resulted in incorrect behavior
	  if the first mention of this macro appeared inside the branch of a
	  conditional, and that branch was not taken for a particular
	  configuration run. Instead, the `pkg-config' check is now performed,
	  if necessary, at each invocation of _CS_CHECK_LIB_PKG_CONFIG_FLAGS().
	- Eric Sunshine fixed _CS_CHECK_LIB_CONFIG_FLAGS() in checklib.m4 so
	  that the composed shell variable name is of the form
	  `CONFIG_{library}', rather than `{library}_CONFIG', since {library}
	  might begin with a numeric, which would result in an illegal shell
	  variable name. For instance, the library "3ds" resulted in the
	  illegal shell variable name `3DS_CONFIG'.
	- Eric Sunshine fixed _CS_CHECK_LIB_CONFIG_FLAGS() in checklib.m4 so
	  that illegal characters are transliterated to underscore `_' in the
	  composed shell variable name. For instance, the library alias
	  "lib3ds-120" resulted in the illegal shell variable name
	  `CONFIG_LIB3DS-120'.
	- Eric Sunshine added cache support to CS_CHECK_PKG_CONFIG(),
	  _CS_CHECK_LIB_PKG_CONFIG_FLAGS(), _CS_CHECK_LIB_CONFIG_FLAGS(), and
	  _CS_CHECK_LIB_CONFIG_PROG_FLAGS() in checklib.m4.  This eliminates
	  many unnecessary invocations of `pkg-config' and `{library}-config'
	  during cached runs.
	- Eric Sunshine fixed a few small configuration/build problems which
	  manifested when cross-compiling on Linux for Windows(Mingw).
	- Eric Sunshine added a `GLhandleARB' type check to configure.ac.  A
	  few modern GL headers are starting to declare this type, so we need
	  to avoid re-declaring it in our own glextmanager.h for those cases.
	- res changed the loader to let the <meshobj>s Z buffer mode and render
	  priority always override the <factory> settings.
	- res fixed csosdefs.h to only include <sys/param.h> in case configure
	  detected it.
	- res removed some unnecessary members & methods from the NR GL
	  renderer lightmap code.
	- Marten updated todo_newrenderer.txt. It needs some more checkup, but
	  I don't have time to fix that right now.
	- Eric Sunshine applied patch from Chris Kuethe <ckuethe@users.sf.net>
	  to resolve a MIN/MAX #define conflict between csdef.h and
	  <sys/param.h>. (bug #1066917)
	- Eric Sunshine applied patch from Chris Kuethe <ckuethe@users.sf.net>
	  to fix a couple places where 'false' was being returned incorrectly
	  from methods declared as returning csRef<>/csPtr<>. (bug #1066948)
14-Nov-2004
	- Eric Sunshine updated cspace.i to take csPoly2D decomposition into
	  account.
	- Eric Sunshine added SendMessage() to the list of names sanitized by
	  CS/include/csutil/win32/sanity.inc since CEL uses this identifier for
	  its own purposes.
13-Nov-2004
	- res made the memtracker also work in optimize builds.
	- res fixed memtracker compilation with MSVC.
	- res changed the default ref owner logic to use a sorted array.
	- res changed csArray<>::SetCapacity() to not round the capacity up to
	  a multiple of the threshold.
	- res fixed a bug in csBlockAllocator<>::Compact() where under certain
	  circumstances non-free blocks were removed.
	- res changed the default csSet<> size/grow rate to 23/5.
	- res changed csStringHash to use csHash<> instead of csHashMap.
	- res made SCF shared libraries and SCF factories share library names.
	- res split csPoly2D up into two classes csPoly2D and
	  csPoly2DUnbounded; latter one has no automatic bounding box, but
	  serves as a base class for csPoly2D.
	- res changed csShaderVariableContext to store the SVs in a sorted
	  array.
	- res removed iTextureManager::FreeImages(). The images are now freed
	  automatically once not needed any more.
	- res simplified the NR texture manager a bit.
	- res put the normalization cube computation in the NR GL renderer
	  into an SV accessor (so it is only generated when really needed).
	- res changed the Thing plugin to not store the final computed
	  lightmap. Instead, the final LM is computed into a buffer whose
	  contents are then sent to the renderer. The renderer now has to keep
	  a copy if it needs one.
	- res fixed the DDS loader to properly clear the CS_IMGFMT_ALPHA flag
	  if no alpha is present.
	- res changed the default font server to store glyphs in a hash
	  instead of an array of arrays.
	- res added ShrinkToFit() calls for some arrays in dsplex and fixed
	  function shaders.
	- res fixed the Win32 keyboard RAlt quirk to also omit LCtrl up events.
	- res augmented the NR GL renderer with a debug command to visualize
	  the Z buffer.
12-Nov-2004
	- Eric Sunshine fixed pthread check in checkpthread.m4 so that it works
	  correctly with pre-C99 compilers. Previously, it was mixing variable
	  declarations and code, which is illegal under older compilers.
	  (bug #1064990)
	- Eric Sunshine added a MAXPATHLEN check to configure.ac. If present,
	  it is used as the value of CS_MAXPATHLEN. Also changed the default
	  CS_MAXPATHLEN for Unix from the unusually low 256 to the standardized
	  1024, if MAXPATHLEN is unknown.  (bug #1064997)
	- Eric Sunshine fixed some header checks in configure.ac to use
	  AC_CHECK_HEADERS() rather than AC_CHECK_HEADER(), since the former
	  also invokes AC_DEFINE() for the detected header(s). This is needed
	  by some subsequent build tests.
11-Nov-2004
	- Eric Sunshine augmented configure.ac/cstypes.h so that they also
	  consult <inttypes.h> (in addition to <stdint.h>) when checking for
	  intptr_t and uintptr_t since these types are declared in <inttypes.h>
	  on BSD platforms. (bug #1064199)
	- Eric Sunshine augmented the CS_CHECK_LIB_WITH() macro in checklib.m4
	  so that it employs the following additional methods for gleaning
	  compiler and linker flags for the specified library (in addition to
	  the older, existing heuristic of searching a set of directories):
	    (1) If the `pkg-config' command is present and knows about the
	        library (or one of its aliases), then glean information from
	        its --cflags and --libs options.
	    (2) If a command named `{library}-config' or `{alias}-config'
	        exists (i.e. `sdl-config', `wx-config', etc.), and if it
	        responds to --cflags and --libs, then use those options to
	        glean information about the library.
	  Additionally, CS_CHECK_LIB_WITH()'s "ALIASES" argument is now
	  comma-delimited, rather than space-delimited.
	- Eric Sunshine added a check for lcms (http://www.littlecms.com/) to
	  configure.ac. This library apparently is needed by libmng on some
	  OpenBSD installations. (bug #1062197)
9-Nov-2004
	- Jorrit did some further work on foliage.
	- Eric Sunshine added a number of CS_ASSERT()'s to csList<> to catch
	  illegal cases when the iterator-based insertion, deletion, and
	  manipulation methods are invoked with an iterator which does not
	  point at an element.
8-Nov-2004
	- Eric Sunshine fixed problem in csStencilShadowCacheEntry where it was
	  treating its `csArray<> face_normals' as if it was a
	  csDirtyAccessArray<>.  Although this "works" today, it is considered
	  illegal and may not work in the future.
	- Eric Sunshine wrote sections for the CS user manual explaining the
	  Java and Python bindings. Also rewrote portions of the Perl section
	  and the scripting introduction.
7-Nov-2004
	- Eric Sunshine made the following Python-related changes:
	    - Fixed cspython plugin so that it works correctly when installed.
	      In particular, it now knows how to locate its installed adjunct
	      scripts, whereas it previously knew only where the scripts were
	      in the CS source tree.
	    - Added a --python-enable-reporter command-line option to the
	      cspython plugin. When enabled, sys.stdout and sys.stderr are
	      redirected to iReporter (via CS/scripts/python/cshelper.py).
	      Previously, this was a rather useless compile-time option only
	      (i.e. one had to change the C++ source code and recompile).
	    - Added a --python-enable-debugger command-line option to the
	      cspython plugin. When enabled, a Python exception causes the
	      Python debugger to be launched. Previously, this functionality
	      was the default behavior, but it caused problems because it
	      required that the main application be linked against Python,
	      despite the fact that the cspython plugin can otherwise be used
	      by programs which do not link against Python. In practice, the
	      unconditional loading of the Python debugger caused the oft-seen
	      run-time exception regarding cStringIO load failure, which
	      cascaded into initialization abortion for cspython.
	    - The cspython plugin now responds to the cscmdCommandLineHelp
	      broadcast event.
	    - Augmented pysimp so that it accepts an optional command-line
	      argument specifying the script to load (ex. "./pysimp pysimp2").
	      This makes it easy to load the pysimp2.py script in place of
	      pysimp.py. Previously, one either had to edit pysimp.cpp to
	      achieve this, or copy pysimp2.py over top of pysimp.py.
	    - pysimp now links explicitly against the Python library. This
	      allows the cspython --python-enable-debugger option to work.
	      (Other than that, there is no reason for pysimp to link against
	      Python.)
	    - Updated the Python scripts in CS/scripts/python so that they
	      actually work again. Many of them had become dysfunctional over
	      time as changes were made in other parts of the project.
	    - Added file comments to all of the scripts in CS/scripts/python in
	      order to let people know their purpose. Without this, they were
	      mostly just a bunch of uncommented and mostly meaningless pieces
	      of Python code.
	    - Removed several unused, incomplete, or useless Python scripts
	      from CS/scripts/python.
	    - Renamed testpymod.py to tutorial1.py since it approximates nicely
	      the simple1 C++ tutorial. This complements the existing
	      tutorial0.py, tutorial2.py, and tutorial3.py.
	    - The installed vfs.cfg now publishes a CS_SHAREDIR vfs variable
	      which points at the "shared data" directory (parent of the CS
	      "data" directory). Fixed the "scripts/" mount so that it actually
	      points at the installed script directory, rather than the
	      unrelated CS "data" directory.
4-Nov-2004
	- Eric Sunshine changed jamtemplate/configure.template so that it now
	  expects CS and CEL versions 0.99. This way, external projects created
	  with the 0.99 version of jamtemplate will require the corresponding
	  version of the SDK's.
	- Jorrit fixed a bug in the particles mesh object where it would
	  forget to remove itself from the physics plugin in case it was
	  removed. This would cause crashes later.
	- Eric Sunshine added the 'noinstall' option to protomesh and
	  protomeshldr since these plugins are just "examples", and serve no
	  useful purpose at run-time.
	- Eric Sunshine removed the 'noinstall' option from protomesh and
	  protomeshldr since 'flarge' (which is also installed) tries to load
	  these plugins, despite the fact that they are not useful to the
	  end-user in compiled-form.
	- Eric Sunshine fixed jamtemplate/createproject.sh so that it works
	  correctly both when installed and when used from the CS source tree.
	- Eric Sunshine augmented the 'install' target so that it installs the
	  following additional useful resources:
	    ${datadir}/build/autoconf
	    ${datadir}/build/jam
	    ${datadir}/build/jamtemplate
	    ${datadir}/build/maketemplate
	    ${datadir}/build/msvcgen
	    ${datadir}/conversion/hammer
	    ${datadir}/conversion/max
	    ${datadir}/conversion/maya
	    ${datadir}/conversion/qt2aws
	- Eric Sunshine imposed some order on the eclectic collection of
	  resources installed in ${datadir} by grouping related items, which
	  used to reside at the top-level of ${datadir}, into meaningful
	  subdirectories:
	    java   --> ${datadir}/bindings/java
	    perl5  --> ${datadir}/bindings/perl5
	    python --> ${datadir}/bindings/python
	    *.zip  --> ${datadir}/data
	    data   --> ${datadir}/data
	    maps   --> ${datadir}/data/maps
	- Eric Sunshine relocated the external make-based project skeleton
	  resources, Makefile.template and appwrap.sh, from
	  CS/scripts/cs-config to CS/scripts/maketemplate. 'maketemplate' is
	  now installed in ${datadir}/build/maketemplate, alongside
	  'jamtemplate'.
	- Eric Sunshine fixed bug in the Wildcard rule in helper.jam where it
	  produced and returned a bogus list of paths if the optional `dir'
	  argument consisted of multiple subdirectory token; for instance:
	  [ Wildcard foo bar : *.h *.inc ]
	- Eric Sunshine added an InstallProgram rule to install.jam which is a
	  convenience wrapper around DoInstall for installing already-existing
	  invocable targets, such as shell scripts.
        - Eric Sunshine relocated Norman's Qt -> AWS conversion style sheets
	  from CS/scripts/aws to CS/scripts/qt2aws.
3-Nov-2004
	- res also applied the default hash table size and grow rate change to
	  csHashReversible<>.
	- res fixed the Win32 keyboard code to correctly handle AltGr and Shift
	  quirks.
	- res fixed a few gcc warnings in sndwaveout and sndds3d.
2-Nov-2004
	- res reduced the default hash table size and grow rate from 257/64 to
	  23/5 to have hashes use less memory by default.
1-Nov-2004
	- Erotoman added new stencil2 plugin for dynamic shadows. It is working
	  only for perfectly closed meshes
31-Oct-2004
	- Eric Sunshine renamed the following `null' SCF classes in order to
	  make them consistent with the names of all other `null' plugins:
	      crystalspace.mesh.object.nullmesh -->
	          crystalspace.mesh.object.null
	      crystalspace.graphics2d.null2d --> crystalspace.graphics2d.null
	- Eric Sunshine added a lot of missing `const' qualifiers to many
	  methods in a number of SCF interfaces (mostly video-related).
	- Eric Sunshine normalized the names of a number of key-color methods
	  in various interfaces. Some interfaces used FooKeyColor(), while
	  others used FooKeycolor(). All now use FooKeyColor(). (The
	  FooKeycolor() methods are still available, though deprecated.)
	- Anders fixed an error in nullmesh factory saver. It forgot a
	  <box>...</box> tag wrapping the actual contents of the bounding box,
	  resulting in a file that couldn't be loaded.
	- res changed the csInputDefinition code to remove the internal
	  'CookedToName()' function. Obtaining a name from a cooked code is
	  only of limited use, as a cooked code is somewhat ambigious as more
	  than one key can produce the same raw code. Instead, 'RawToName()'
	  is now used when the name for a key code is to be obtained.
	  (As a side effect, this also fixed csInputDefinition::GetKeyString()
	  for numpad keys.)
	- res beautified the Numpad key names in csInputDefinition and added
	  a few missing pad keys.
30-Oct-2004
	- res improved the Win32 custom cursor cleanup a bit.
	- res fixed a crash in the software sound renderer source, where a
	  member variable was written after the instance was possibly
	  destroyed.
	- res fixed a wrong ref counting in the waveout sound driver.
	- res fixed the '*' appearing on the API doc front page. (Apparently,
	  Doxygen doesn't remove the '*'s at the beginning in \htmlonly
	  blocks.)
	- Eric Sunshine fixed a few places (csparser, vfs) where the
	  26-Oct-2004 change to preserve whitespace, by default, in
	  iDocument::Parse() had a potentially negative impact. These places
	  now request Parse() to (once again) condense whitespace.
29-Oct-2004
	- Bjorn Hansen fixed sprcal3d->SetVelocity() so that animations blend
	  correctly and allow multiple animations with the same base velocity
	  to blend.  Also updated the documentation to more clearly reflect
	  what the function does.
	- Rhad changed the software renderer to account for the OSS driver
	  blocking for long periods on calls to UnlockMemory().
28-Oct-2004
	- Jorrit did some small work on foliage mesh.
	- Eric Sunshine removed some redundant assignments from Jamrules which
	  were merely duplicating the default assignments. Also changed default
	  value of LOCATE.DOCS from 'out' to 'out/docs' (which is where CS has
	  been placing generated documentation the entire time anyhow).
	- Eric Sunshine fixed 20-Oct-2004 bug in Swig rule (swig.jam) which
	  caused Swig to be invoked with an empty "-outdir" option if caller of
	  Swig rule had not provided an `outdir'.
	- Eric Sunshine (blindly) fixed a bug in csSpriteCal3DMeshObject where
	  it completely mismanaged its active_anims[] and active_weights[]
	  members. AddAnimCycle() would append animation cycle information to
	  these arrays, but ClearAnimCycle() never reversed the operation. The
	  result was that the client's, Cal3D's, and csSpriteCal3DMeshObject's
	  notion of which animation cycles were active were out-of-sync. (The
	  only time animation cycles were ever removed from these arrays was
	  when ClearAllAnims() was invoked.)
	- Eric Sunshine fixed bugs in the csWrapPtr "out" typemap in javapre.i
	  where it was incorrectly returning a corrupt Java object when the
	  wrapped pointer was 0. It should have been returning 'null' in this
	  case. Subsequent Java operations on the returned bogus object would
	  then crash within the JNI glue code. This problem manifested, for
	  instance, when any of the query macros, such as CS_QUERY_REGISTRY(),
	  failed to find the requested object.
27-Oct-2004
	- Eric Sunshine added two mechanisms to msvcgen allowing clients to
	  have control over the generated project name:
	    - The new MsvcGenName rule allows the project name to be set on a
	      per-target basis. It must be invoked before the corresponding
	      Application, Library, Plugin, or MsvcGenWorkspace rule.
	    - MsvcGenConfig can be used to set any of the new variables which
	      control the prefix assigned to project names based upon the raw
	      target name.  These apply to all project and workspace names not
	      overriden by MsvcGenName.  Any of the following variables can be
	      set by the client:
		MSVC.PREFIX.appcon    (default "app")
		MSVC.PREFIX.appgui    (default "app")
		MSVC.PREFIX.group     (default "grp")
		MSVC.PREFIX.library   (default "lib")
		MSVC.PREFIX.plugin    (default "plg")
		MSVC.PREFIX.workspace (default "wks")
	- Eric Sunshine eliminated Swig complaint about new
	  iGraphics2D::GetRGB() overload for alpha.
	- res made a small update to the coding style section, removing a
	  reference to the now gone csengine library and updating the
	  cssysdef.h paragraph to reflect the new possibility to include it
	  from headers.
	- Squee added alpha support to iGraphics2D::Blit() in the software
	  canvases and added the transparent Crystalspace logo to g2dtest.
26-Oct-2004
	- Eric Sunshine added an optional argument to iDocument::Parse() which
	  controls whether or not whitespace in CS_NODE_TEXT nodes is
	  condensed.  The new default behavior is for whitespace to be
	  preserved.  (Previously, it was condensed unconditionally.)  This
	  change was made in order to conform to the latest XML specifications
	  which state that XML scanners must preserve whitespace by default.
	  Consult the following documents for more information regarding this
	  issue.
	    http://www.w3.org/TR/REC-xml/#sec-white-space
	    http://www.xml.com/axml/notes/AllWSAlways.html
	- Eric Sunshine worked around a problem reported by Phil Wyett on
	  Solaris where the configure.ac sizeof(wchar_t) check bombed. The
	  libstdc++ could not be found when the sizeof() test program was
	  run. Apparently, Solaris does not search /usr/local/lib (where
	  resides libstdc++) by default.
	- Eric Sunshine upgraded the `pthread' check in checkpthread.m4 so that
	  it works correctly with Solaris 9. Specifically, it also now checks
	  for presence of the semaphore functions (sem_init(), sem_destroy(),
	  etc.) and tries linking with librt.so, which is where the semaphore
	  functions reside on Solaris. These functions are needed by
	  CS/libs/csutil/generic/cspthrd.cpp.
	- Jorrit removed the call to VFS->Sync() in the VFS cache manager.
	  This caused huge overhead when caching lightmaps because for
	  every lightmap file the entire zip would be written.
	- Jorrit added iCacheManager->Flush(). This is a generic way to flush
	  the cache manager data. That way users of the cache don't have to
	  do vfs->Sync() anymore since vfs->Sync() may not be appropriate
	  for the specific cache implementation. Instead they will call
	  iCacheManager->Flush() now.
	- Eric Sunshine worked around warnings reported by Swig 1.3.22 for
	  Perl5.
	- Eric Sunshine worked around a slew of warnings reported by Swig
	  1.3.22 for Python.
	- res added iGraphics2D::GetRGB() methods (one for RGB retrieval, one
	  for RGBA) to complement the FindRGB() and SetRGB() methods.
	- res augmented cswinIsWinNT() to allow a somewhat more fine-grained
	  classification of the running Windows version.
	- res augmented csImageMemory with a method to set the keycolor and a
	  method to apply the keycolor to paletted images (ie set all
	  occurances to the palette index 0).
	- res changed the cursor plugin to postpone the texture registration
	  with the texture manager until really needed (to avoid unnecessary
	  resizing).
	- res changed the Win32 custom cursor support to support 256 color
	  cursors (needed on older systems like WinNT4.0) and 32bpp cursors
	  (with alpha transparency, on newer systems like Win2000+).
25-Oct-2004
	- Jorrit disabled VBO by default now. It gives too many problems
	  (both on ATI and nVidia). Having this option on by default can
	  give a bad initial impression if it doesn't work. With this option
	  off at least things will work but slower.
	- Eric Sunshine documented the semantic and syntactic changes to
	  csList<>::Iterator in apimod100.txi.
	- Eric Sunshine worked around problem where Doxygen became highly
	  confused early in csutil/array.h, with the result that the majority
	  of methods were not reflected in the generated documentation.
	- Eric Sunshine added extra quoting around usage of several commands in
	  the build system where the paths to the commands might contain
	  spaces.  In particular, these are commands discovered by the
	  configure script via AC_PATH_PROGS(), which is used sparingly but
	  with good reason in a few cases.  Extra quoting where the commands
	  are used is not a particularly elegant solution, but I can not, at
	  present, arrive at anything more generalized.  An obvious example of
	  a path containing whitespace occurs on Windows with "Program Files".
	- Eric Sunshine worked around a bug in the `exec' command in the MSYS
	  shell where it incorrectly interpreted a DOS-style absolute path as
	  relative.  This problem manifested when running Ant for building
	  csjava if the user had the environment variables JAVACMD and/or
	  JAVA_HOME set with DOS-style paths.  Since MSYS's `exec' incorrectly
	  interpreted these paths as relative, it looked for the 'java'
	  executable at a location relative to the current working directory;
	  with the result that the Ant invocation failed.
	- Eric Sunshine improved the Java check in configure.ac so that it
	  respects the environment variable JAVACMD when looking for the `java'
	  command.  Also now searches $JAVA_HOME/bin _before_ searching $PATH
	  for the `java' and `javac' commands.  This should help to ensure that
	  the most desirable Java commands are found rather than the least
	  desirable (which happens to be $WINDIR/system32/java.exe on Windows).
	- Eric Sunshine made the CS_PATH_NORMALIZE() macro in path.m4 more
	  robust when faced with shell meta-characters in the argument string.
	- Eric Sunshine augmented configure.ac so that the JAVACMD and
	  JAVA_HOME environment variables are sanitized with
	  CS_PATH_NORMALIZE() before use.  This is needed to prevent DOS-style
	  pathnames from infecting Jamconfig, since the backslashes in such
	  pathnames tend to get eaten by Jam.
24-Oct-2004
	- Eric Sunshine simplified the 22-Oct-2004 change to DDS loader so that
	  it no longer Clone()'s the image when returning a mipmap.  It is
	  instead sufficient simply to return a reference to the existing image
	  (as done by the original code).  The difference now, however, is that
	  the reference counting logic is obvious and clear rather than obscure
	  and hidden.  Also, the Clone() was unnecessarily expensive.
	- Luca reverted the last change of Eric to the DDS loader, and put
	  again his C++ code which were creating a new image using the Clone()
	  method.  The problem is with the Eric code is that a new image was
	  not created, but the method MipMap must return a new image, so that
	  the method caller could work on it without affecting the original
	  image: in fact subsequent MipMap calls must return the original
	  image, not the modified one.
	- Eric Sunshine augmented configure.ac to check if the linker
	  recognizes --kill-at.  This is needed when linking csjava.dll on
	  Windows in order to make the DLL compatible with JNI.  Without this
	  option, JNI is unable to locate the JNI glue functions exported by
	  the Swig-generated code.  csjava now works properly on Unix and
	  Windows.
23-Oct-2004
	- res fixed the GL iGraphics3D::DrawPixmap() disabling blending, which
	  messed up subsequent text writing.
	- Andrew Robberts fixed some bugs in cal3d sockets.
22-Oct-2004
	- Eric Sunshine fixed a bug in the replacement MakeLocate rule in
	  subdir.jam where it failed to set the LOCATE variable for the target
	  of the rule invocation if the output directory was "." (the current
	  working directory).  This was often the case when the rule was
	  invoked with $(LOCATE.TARGETS) as an argument.  In practice, this
	  bug caused, at least some, Copy invocations to be ignored if the
	  target location was ".".
	- Jorrit worked a bit further on foliage.
	- Eric Sunshine worked around Swig/Perl 1.3.22 bug where it emits
	  illegal expressions, such as `new (sometype)[n]' rather than `new
	  sometype[n]' (at least gcc considers it illegal).
	- Eric Sunshine altered the Java, Python, and Perl Jamfiles so that
	  they deposit generated .jar, .py, .pm, and .dll (.so) files at the
	  root of the build tree rather than somewhere deep inside the build
	  tree. This should make it simpler for developers to test these
	  modules since CLASSPATH, PYTHONPATH, PERL5LIB, and LD_LIBRARY_PATH
	  can now be pointed at the top of the build tree rather than having to
	  point them at specific deeply nested subdirectories within the tree.
	- Jorrit reverted an earlier memory leak fix in the DDS loader
	  because it causes walktest to crash. My guess is that this is not
	  really a memory leak and that the image is cleaned up elsewhere.
	- Eric Sunshine changed the 'outdir' argument of the Swig rule
	  (swig.jam) so that it is used verbatim, rather than being interpreted
	  as relative to $(LOCATE_TARGET). This allows more flexibility in
	  placement of auxilliary generated files.
	- Eric Sunshine fixed bug in Swig rule (swig.jam) where it was invoking
	  MakeLocate unconditionally with $(LOCATE_TARGET) even if `outdir' had
	  been provided.
	- Eric Sunshine augmented Perl and Python Jamfiles so that the *.pm and
	  *.py files are emitted by Swig directly into $(LOCATE.TARGETS),
	  rather than being copied there from $(LOCATE_TARGET) in a secondary
	  step.
	- Eric Sunshine made the following changes to csList<>:
	    - Renamed Prev() and FetchPrev() to Previous() and FetchPrevious(),
	      respectively, to complement existing HasPrevious(). (The old
	      names still exist, however, for backward compatibility.)
	    - Added FetchCurrent() to complement existing FetchNext() and
	      FetchPrevious().
	    - Fixed behavior of HasNext()/Next() and HasPrevious()/Previous()
	      so that they work the same as the other iterators in CS; that is,
	      you can simply use it via:
	        while (i.HasNext()) { foo = i.Next() }
	      Previously, usage required a more complicated:
	        foo = i.Current(); while (i.HasNext()) { foo = i.Next(); }
            - Fixed a number of bugs where constructors were not initializing
	      all member variables.
	- Eric Sunshine made the following additional changes to csList<>:
	    - The iterator methods Next() and Previous() now return references
	      to the items rather than pointers (which was a strange
	      choice). This makes them consistent with all other methods which
	      provide item access, as well as with all other iterators in CS.
	    - Unified and relaxed the 'const' vs. 'non-const' status of
	      returned elements from various methods. Element retrieval methods
	      now allow the elements to be modified by the client. This widens
	      the scope of permissible operations on elements, thus making the
	      class more useful.
	- Luca reverted the revert about the memory leak in the DDS loader,
	  fixing the memory leak and correcting the csDDSImageFile::MipMap
	  method: in the last 'return' of the method it was not returning a
	  new image, but it was returning the orignal image: in this way,
	  assigning the return value to a csRef, the original image would have
	  been destroyed when that csRef was destroyed.
21-Oct-2004
	- Eric Sunshine made the following changes to the DDS image loader:
	    - Fixed bug in dds::Loader::ReadHeader() where it could/would
	      attempt to allocate zero bytes, and then unconditionally store a
	      value in the first element of the allocated array, as if the
	      zero-sized allocation was valid.
	    - Fixed bug in dds::Loader::ReadHeader() where it could/would
	      illegally access element -1 of its positions[] member.
	    - Fixed `delete' vs. `delete[]' mixup in dds::Loader::ReadHeader().
	    - Fixed bug in csDDSImageFile::Load() where it was leaking a
	      csDDSImageFile for each mipmap.
	- Eric Sunshine upgraded ivaria/javapre.i to be compatible with Swig
	  1.3.22 which complained (correctly) about unamed operator overloads
	  in several exported classes.
	- Jorrit added a patch from Andrew Dai which adds support for
	  color cursors in the Win32 canvas.
	- Eric Sunshine worked around problem caused by Swig 1.3.22's new
	  'enum' emulation mechanism for Java which is incompatible with its
	  pre-1.3.22 emulation. This caused compilation errors in existing
	  code, such as SimpleRoom.java.
	- Eric Sunshine fixed problem in SimpleRoom.java where it was
	  requesting the null renderer rather than the OpenGL renderer. This
	  explains why it failed to open a window. SimpleRoom.java now works
	  correctly on Unix.
20-Oct-2004
	- Jorrit fixed a critical bug in VFS. In case you tried to
	  call VFS->Sync() while there were still references to open files
	  in ZIP archives then VFS would crash because the archive entry
	  would be deleted and the open files would get a dangling pointer.
	  Fixed this by checking the ref count on the archive entry and
	  only deleting the entry in case there are no open files. If there
	  are open files the entry is only flushed so the effect of
	  Sync() is not lost.
	- Eric Sunshine replaced usage of 'typename' in template arguments with
	  'class' in order to support slightly older compilers. CS fakes up a
	  'typename' keyword, but it is meant to be used only to pacify modern
	  compilers which complain about ambiguous type names within templates;
	  not for declaration of template arguments.
        - Philip Wyett updated OR to eliminate garray.h deprecation warnings.
	- Eric Sunshine augmented the Swig rule (swig.jam) so that it once
	  again utilizes Swig's -outdir option for depositing generated files.
	  This is needed to work around a problem where Swig on Windows was
	  dumping generated .java, .py, and .pm files into the current working
	  directory, rather than into the desired subdirectory of the build
	  tree (ex: ./out/.../csjava/src/com/crystalspace).
	- Eric Sunshine upgraded the Swig check in configure.ac so that it
	  demands at least version 1.3.20 since that is the first version
	  providing the -outdir option.
	- Eric Sunshine fixed problem in csjava/Jamfile which prevented
	  csjava.dll from being built on Windows.  Specifically, the `javamod'
	  Jam variable was being assigned the null string.  Also added gristing
	  for cscript/csjava source files.
	- res augmented annotate.php to mention that the documentation
	  annotations are not a support forum.
	- Eric Sunshine made the following changes:
	    - Augmented the CS_PATH_NORMALIZE() macro in path.m4 so that it
	      also collapses and strips whitespace.
	    - Added a CS_RUN_PATH_NORMALIZE() macro which runs a
	      client-supplied command and normalizes the output.
	    - Updated configure.ac so that it normalizes the `cflags' and
	      `lflags' reported by these modules: cs-win32libs, Java,
	      FreeType2, SDL, VOS, wxWidgets, AAlib.  (Flags for Perl and
	      Python have been normalized since 15-Feb-2004.
	- Luca fixed another compilation error (in xmlshader) that was
	  happening on the VisualC++ 6.0 "compiler". The error is always
	  related to an inner class not being declared friend by the outer
	  class.
19-Oct-2004
	- Jorrit worked further on foliage mesh. Added support for
	  specifying LOD control in a foliage object.
	- Jorrit fixed foliage so that it compiles again.
	- res added alpha blending support to the software canvases.
	- res fixed a crash in the GL canvases when a reporter was not present.
	- res changed the shader manager to only report the loaded shader
	  compiler plugins in '-verbose' mode.
	- Jorrit fixed spr3d so that the alpha which is extracted from
	  mixmode gets a reversed meaning (how it worked with OR).
	- res moved csDirtyAccessArray<> into a new (and sensibly named) file
	  csutil/dirtyaccessarray.h. Usage of csutil/garray.h is now
	  deprecated.
	- Eric Sunshine fixed problem in include/Jamfile where the
	  MasterHeaderCsUtil rule could emit an orphaned #endif if none of the
	  platform-specific subdirectories of `csutil' contained any
	  publish-worthy headers.
	- Squee added GetMounts() and GetRealMountPaths() to VFS to get more
	  information about current mounts.
	- Squee added commands to vsh to test new VFS methods.
	- Squee fixed GetMounts() and GetRealMountPaths() to use iStringArray
	  rather than csStringArray.
18-Oct-2004
	- res enhanced the OpenGL canvases so blending is always functioning
	  (lack of an alpha channel in the frame buffer isn't really a reason
	  to disable alpha blending) and made the text output properly support
	  transparency in both foreground and background color.
	- res added some more transparent text to the g2d alpha test.
17-Oct-2004
	- Eric Sunshine eliminated a few more warnings in the public CS headers
	  reported by Doxygen.
	- Eric Sunshine augmented the Doxygen configuration files devapi.dox
	  and pubapi.dox so that they filter out the third-party headers which
	  cs-win32libs installs into CS/include/csutil/win32.  Documentation
	  for these extraneous headers does not belong in the CS API reference;
	  and they even were conflicting with the CS headers.  (For instance,
	  cal3d.h contains a \mainpage which conflicts with CS's own
	  \mainpage.)
16-Oct-2004
	- Jorrit resumed work on the foliage mesh. Still unfinished.
	- res added some code to initialize some structs used by the shader
	  conditional code, hopefully fixing some valgrind complaints.
	- res fixed leaks in csRenderMeshHolderMultiple, the cube map texture
	  loader and csBSPTree.
	- Jorrit worked further on foliage. Now the loader.
15-Oct-2004
	- Jorrit temporarily fixed spr3d with <alpha> mixmode for NR.
	  The fix works by using csColor4 for the color buffer and extracting
	  the alpha from the mixmode so that we can put the alpha component
	  as the 4th color component. This is only temporary. We need
	  to avoid using alpha in mixmode and add a new SetAlpha() (next
	  to SetMixMode()) for all mesh objects. Also this fix needs
	  to be propagated to other mesh objects too.
	- Jorrit added a few methods to csColor4.
	- Eric Sunshine eliminated several compilation warnings.
	- Jorrit fixed spr3d so that SetBaseColor() is more efficient
	  and should now also work at runtime.
	- Eric Sunshine eliminated about 350 errors and warnings reported by
	  modern versions of Doxygen for the public API reference.
	- res fixed a recent leak fix in csImage to not subsequently crash
	  when a paletted image is converted to another paletted format
	  (notably, stripping or adding alpha).
	- res fixed some weird line breaks in wxgl.csplugin.
	- Luca fixed a little compilation error (in xmlshader) that was
	  happening on the VisualC++ 6.0 "compiler".
	- Squee fixed a problem in OpenGL canvases where alpha colors didn't
	  always blend as expected.	
14-Oct-2004
	- Eric Sunshine added an AAlib (ASCII Art library) check to
	  configure.ac. If the package is present, then the CS `asciiart'
	  canvas is built.
	- Eric Sunshine added a `fontservers' compile group to the build
	  system.
	- Eric Sunshine updated the OpenDivX check in configure.ac to utilize
	  the result of the `-lm' check since libm.a is needed by OpenDivX on
	  some platforms. Also changed the check to look for <divx/decore.h>
	  rather than <decore.h> since ${prefix}/divx is the default
	  installation location.
	- Eric Sunshine upgraded unix.jam so that it respects the result of the
	  configure.ac `-fPIC' check rather than being hard-coded to assume
	  that all compilers understand this option.
	- Jorrit optimized the LOD calculation routines a lot by using
	  csList linked list to maintain a cost-sorted array of
	  vertices.
	- Jorrit added csList<T>::MoveAfter() and MoveBefore() to have
	  a more efficient way to move items around in a list.
	- Jorrit added csList<T>::Iterator::FetchNext() and FetchPrev()
	  to more efficiently get the next and previous item from
	  a list iterator.
	- Jorrit added the triangle connectivity information again to
	  the triangle LOD routines.
	- Jorrit implemented a LOD algorithm in bruteblock using the new
	  LOD routines. This is used for the collision detection mesh
	  (bruteblock still uses its original LOD routines for rendering).
	  To enable this LOD (it is disabled by default) you have to
	  use the lod setting 'cd lod cost' and set it to some useful
	  value. 0.02 is probably good for most cases.
	- Jorrit again changed the triangle connectivity. This speeds
	- Jorrit changed data/terrainf/world to use the new CD mesh LOD
	  reduction.
	- Jorrit fixed genmesh so that it honors the SetColor() call
	  again.
	- Jorrit implemented LOD caching for bruteblock (for the new
	  CD mesh LOD).
	- Jorrit fixed csVfsCacheManager->CacheData() to call vfs->Sync().
	  That ensures that on -recalc the vfs file is correctly updated
	  if the cache dir happens to be in a zip file.
	- Squee fixed the glx canvas locking up under certain alpha conditions.
13-Oct-2004
	- Jorrit removed the triangle connectivity information in
	  the csTriangleVerticesCost class since they were not used there.
	  The basic csTriangleVertices still has that information.
	- Eric Sunshine removed invocation of the non-portable
	  CS_ALLOC_STACK_ARRAY() from isdir() in cssysdef.h since this is a
	  public header, and we want it to be usable by projects with strict
	  requirements (such as those which use gcc's -ansi and -pedantic
	  options). Variable-size stack-based arrays are not allowed by the
	  1998 ISO C++ standard.
	- Eric Sunshine fixed a bunch of problems in the public CS headers
	  reported by gcc's -ansi and -pedantic options; mostly involving
	  orphaned semi-colons and commas, and illegal use of 64-bit
	  constants.
	- Eric Sunshine removed duplicate definitions of CONST_INT64() and
	  CONST_UINT64() from cstypes.h for MSVC.
	- Eric Sunshine augmented joystick.cfg so that it also supports Linux
	  2.6.x's /dev/input/js* devices in addition to the older 2.4.x
	  /dev/js* devices.
	- Eric Sunshine performed minor cleanup of csjoylin.cpp. Fixed problem
	  where it was unnecessarily allocating space for joysticks which were
	  not present. No longer reports about missing joystick devices (unless
	  -verbose is specified); now only reports if a device malfunctioned
	  for some reason.
12-Oct-2004
	- Jorrit changed the way that you can define different algorithms
	  for doing LOD (csTriangleMeshLOD) by making a csTriangleLODAlgo
	  classes from which you can inherit to make your own LOD
	  algorithms. That seperates the algorithm from the vertex data.
	- Jorrit changed xmlshader so that it no longer complains about
	  fragment and vertex programs failing to load unless -verbose
	  is given.
	- Jorrit greatly optimized the routine to setup the vertex
	  table for LOD calculation. This routine was previously doing
	  a loop #vertex * #triangle times which is VERY bad. Now it
	  has been reduced to #vertex + #triangle.
	- res changed the Win32 GL canvas to only employ the WGL pixel format
	  check if really needed (e.g. multisampling was requested), otherwise
	  the GDI method is used.
	- Squee added better alpha color support to iGraphics2D and all
	  canvases. This means FindRGB() now optionally accepts an alpha
	  value.
	- Squee improved the Win32 OpenGL canvas SetFullscreen() and
	  Resize() functions to more properly toggle/resize when called
	  by an app after the canvas is open
	- Squee fixed fonts with backgrounds not displaying correctly
	  after above alpha changes.
	- Squee updated g2dtest to test alpha transparency (currently does not
	  always work).
11-Oct-2004
	- Jorrit generalized the csTriangleMeshLOD class and related
	  so that you can now generate LOD using different cost
	  functions.
	- Jorrit added a new version of csTriangleMeshLOD::CalculateLOD()
	  which generates a simplified mesh.
10-Oct-2004
	- Jorrit committed some unfinished LOD code for bruteblock.
	  Although it gives good results it also causes irregularities
	  in the CD mesh so I will not do it like that. We need a real
	  triangle reduction system.
	- Rhad fixed a race condition in the software renderer that
	  could result in crashes in vorbis.dll.
	- Rhad changed the default sound handle Play() member function
	  so that it always returns an iSoundSource - even if the sound
	  isn't looping.
	- Rhad made the default sound handle Play member function ignore
	  the looping parameter when working with a streaming audio
	  source since it's the handle that loops and not the attached
	  source.
9-Oct-2004
	- Luca fixed a little compilation error (in protomesh) that was
	  happening on the VisualC++ 6.0 "compiler".
8-Oct-2004
	- res added a missing CS_CSTOOL_EXPORT to csProcAnimated.
	- res added a helper class to quickly write images to disk for
	  debugging purposes.
	- res added custom cursor support to the Win32 canvases.
	- res fixed custom cursors for the X canvases.
	- Jorrit added support to the simpleformer for adding
	  additional data maps. Currently unused and untested.
	- Jorrit added bruteblock, simpleformer, and simpleformerldr to
	  the walktest_static target.
	- Jorrit fixed a bug in debugimagewriter.h. It was using
	  iSCF::SCF->object_reg but that field is only present in debug
	  mode.
	- Jorrit optimized the simpleformer weight function a bit.
	- Jorrit fixed a few string memory leaks in walktest.
	- Jorrit fixed protomesh to compile with OR.
7-Oct-2004
	- Jorrit added a new 'proto' mesh. This is a basic mesh that can
	  be used to start creating a new mesh. It supports the following
	  features:
	    - Primitive geometry (8 vertices, 12 triangles, just enough for
	      a box).
	    - Setting of base color and per vertex color.
	    - Setting of vertices, texels, and normals.
	    - Material per mesh object.
	    - Sharing geometry in the factory.
	    - Collision detection.
	    - Direct creation of render buffers.
	    - Delayed creation of render buffers.
	  The mesh only works in NR but should be compilable with OR
	  because it is used in flarge (it should display nothing with
	  OR).
	- Jorrit added a protomesh to flarge.
	- Jorrit added a new foliage mesh. This mesh does not do anything
	  at this moment. It is just an empty stub. Real implementation will
	  follow soon.
6-Oct-2004
	- Jorrit did various lighting related optimizations to genmesh:
	    - To genmesh pseudo dynamic lighting handling. If the light is
	      near black a loop will be avoided.
	    - To genmesh lighting handling. If dynamic sector ambient is near
	      black a loop will be avoided.
	    - To dynamic lighting. If light at that distance is near black
	      a loop will be avoided.
	- Jorrit fixed a bug in genmesh pseudo-dynamic lighting handling.
	  The lighting was too dark because it forgot to multiply the
	  color with a factor.
	- Jorrit fixed a bug in the simpleformer so that it no longer
	  generates small irregularities.
	- Jorrit optimized the simpleformer a bit.
	- Jorrit fixed a bug in bruteblock which used AddBoundingVertexSmart()
	  inappropriatelly. So the box of the block could be wrong.
	- Jorrit implemented static lighting in bruteblock (enable this
	  by setting <staticlighting/> in the terrain). Shadow casting is
	  not yet supported. Changed data/terrainf/world to use bruteblock
	  now. It works nice now (you have to relight the lighting for
	  terrainf to see it) but there seems to be a problem with normals
	  so the lighting effect is not very visible right now.
	- Jorrit changed the lightmap size in bruteblock to 257x257 by
	  default. In addition added a 'lightmap resolution' LOD value
	  with which you can set this size.
	- Jorrit changed the static lighting calculator so that it picks
	  the highest detail object for shadow casting instead of the
	  lowest detail object. This will be slower but looks a LOT better.
	- Jorrit changed bruteblock so it reports lighting progress on stdout
	  if -verbose is given.
	- Jorrit fixed another visual glitch in bruteblock where it would
	  sometimes miss a material that is used by a splatter because
	  the box dimensions were calculated to exact.
	- res fixed leaks in the custom cursor plugin.
	- res fixed the passing of a bool through '...' in the NR GL renderer.
	- res fixed an array access with an negative index in bruteblock.
	- Eric Sunshine fixed several compilation warnings.
	- res fixed a double-Open() of the renderer in g2dtest.
	- Eric Sunshine changed cspace.i so that it no longer exports the new
	  va_list function csPrintfErrV() (the same change had been made for
	  csPrintfV() on 24-July-2004).  This change was necessary because Swig
	  emits code which is invalid on platforms on which va_list is
	  implemented as a simple array. ISO C++ forbids array assignment, yet
	  Swig-generated code attempts to assign a va_list to a va_list.  Note
	  that the corresponding var-arg (...) function, csPrintfErr() is still
	  exported. (bug #1039809)
	- res augmented xmlshader to also support conditionals in external
	  fp/vp program files specified via a "file" attribute.
	- res augmented the shader conditionals with an <?include?> statement.
	  This will "mount" external documents into a tree.
	- Eric Sunshine applied patch from Mike Gist <xordan@gmail.com> which
	  works around crasher in csImage::Rescale() on AMD64. Very possibly,
	  the problem was result of unintended sign-extension when assigning
	  signed int csQint() result to unsigned long.
	- Rhad fixed coordinate system conversions for the OpenAL software
	  renderer.  Resolves bug #981288.  Also minor changes in anticipation
	  of some future fixes.
5-Oct-2004
	- Rhad fixed a long standing bug in the Ogg loader.  Per specs,
	  SEEK_END must seek 1 byte past the end of data buffer, not to the
	  last byte.
	- Jorrit fixed a bug with hierarchical objects (and static lod
	  too) that are created using meshref. The children would not get
	  added to the engine with the result that cached lighting wouldn't
	  be saved/loaded. For this purpose I added
	  iEngine->AddMeshAndChildren().
	- res fixed OpenGL 2D Blit() to work when no render target is set.
	- res added a Blit() test to g2dtest.
	- res added a custom cursor test to g2dtest.
	- res changed the custom cursor plugin so a keycolor isn't mandatory
	  any more for a cursor.
	- res changed iCursor->ParseConfigFile () to accept an iConfigFile*
	  instead of a VFS file name.
	- res made iCursor->GetKeyColor() return a const pointer.
4-Oct-2004
	- res fixed xmlshader to correctly deal with shader conditionals
	  in text.
	- res made some optimizations to the XML shader conditionals.
	- res fixed leaks in chunklod, the engine, the Win32 callstack code,
	  spr3d, bugplug, csparser, csconin.
3-Oct-2004
	- Jorrit added iTextureHandle->Blit() for new renderer. Only the
	  NR OpenGL renderer implements this. This is a faster way to
	  update (part of) a texture.
	- Jorrit modified csProcAnimated to use the new Blit(). This
	  should speed up JNG images a bit.
	- Jorrit changed plasma and fire to use the new Blit().
2-Oct-2004
	- Rhad improved windows waveout sound driver performance through brute
	  force threading.
	- Rhad added an event to trigger buffer filling instead of timeslice
	  based filling.
	- Rhad: Background thread is now set to time critical priority.
	- Rhad applied more fixes to software sound renderer.
	    - Fixed crash when source was deleted while background thread was
	      reading sound data related to the source.
	    - Fixed sound plays at full volume when beyond maxdistance.
	    - Added assertion on handle destruction if sources are still
	    associated with the handle.
1-Oct-2004
	- Rhad added Get,set MinimumDistance and MaximumDistance interface
	  functions to the iSoundSource interface
	    ****** INTERFACE CHANGE AND VERSION BUMP ******
	    iSoundSource interface version changed to 0,0,2
	    - Software, OpenAL and DS3D sound renderers updated to make use
	      of the new interface members.
	    - Fixed software sound renderer reverse channels for 3d
	      positional sounds.
	    - Added simplistic direction-based volume adjustment to software
	      sound renderer.
	    - RollOffFactor is now properly used instead of DistanceFactor
	      in attenuation (sound attenuation is normally not linear).
	      See documentation on SetMinimumDistance in iSoundSource
	      interface for details (or the OpenAL sound guide, or the
	      DirectSound help).
	- PK fixed a msvc6 bug in bezierdlr.
	- res applied patch 1038181 (operators < & > in csString) with some
	  modifications.
	- res fixed a bug in bindoc where requesting a float value when it was
	  stored as an int could return bogus results.
	- res moved PreacheTexture() to iTextureHandle.
	- res removed the NR GL texture cache and merged the relevant code
	  (texture uploading, mainly) with the texture manager.
	- res enabled bindoc compilation on 64bit systems. Seems to work on
	  fine on SF's AMD64 compile farm machine.
30-Sep-2004
	- Jorrit added a new 'copy' flag to CreateRenderBuffer() and
	  CreateIndexRenderBuffer() which is default to true. Meshes can
	  set that to false if they keep the data for the buffer in their
	  own memory. Currently not yet implemented. API change only.
	- Jorrit changed the NR OpenGL texture cache so that it never unloads
	  textures but leaves this for the OpenGL driver. i.e. it is no
	  longer a cache.
	- Jorrit changed the NR OpenGL texture cache so that it removes the
	  image data after uploading the texture to OpenGL. This can save
	  a LOT of memory in big levels (75 megabytes less memory for
	  PlaneShift levels).
	- Jorrit added an iGraphics3D->PrecacheTexture() to precache the
	  texture for the renderer. For the NR OpenGL renderer this will
	  cause the upload of the texture to the renderer and also free
	  of the memory. The other renderers do nothing with this flag.
	- Jorrit changed engine->PrecacheDraw() to also call PrecacheTexture()
	  for all textures.
	- Jorrit simplified the code of the NR OpenGL texture cache a bit now
	  that it is no longer a cache.
	- Jorrit implemented the 'no copy' mode for software vertex buffers.
	  Genmesh now uses that mode.
	- Eric Sunshine fixed problem in wxgl/Jamfile where it neglected to
	  mention `GL' in the ExternalLibs invocation, in addition to
	  `WX'. Typically, this wouldn't matter since the output of wx-config
	  --cflags, --libs, and --gl-libs provides sufficient information to
	  make `GL' redundant, but on MacOS/X, we need the CS_OPENGL_PATH
	  #define which comes from GL.CFLAGS in order to allow the preprocessor
	  to locate the OpenGL headers.
	- Jorrit implemented interleaved buffers for things. This means
	  that vertices, texels, and lightmap coordinates are now in one
	  interleaved buffer. This should improve memory usage considerably
	  since a lot less VBO buffers will be created. This feature can
	  be quickly reverted by setting INTERLEAVED to 0 in
	  plugins/video/render3d/opengl/gl_polyrender.cpp.
	- Jorrit did a small cleanup to particles mesh.
	- Jorrit fixed the API of iGraphics3D->CreateInterleavedRenderBuffers.
	  It would accept a csRefArray and then modify it. This is not legal
	  in a plugin context. Changed it by accepting a normal array which
	  should be allocated by the caller. This is also more efficient as
	  there will be less growing array operations needed.
	- Vincent Knecht worked around an #error single quote error in bindoc.h
	- Rhad made further adjustments to the windows waveout driver:
	    - waveOutUnprepareHeader is no longer called on blocks that have
	      not been prepared.  Fixes "no sound on some C-Media audio
	      devices".
	    - empty blocks are now unprepared on shutdown.
	    - Default buffer length increased from 0.05s to 0.1s
29-Sep-2004
	- Rhad changed csMutexes in the windows software driver to
	  critical sections.  Per MMsystem documentation, critical sections
	  are the only safe syncronization calls to make in the waveout
	  callback.  Fixes "no sound and exit crash when sound buffers run
	  dry" bug with previous version.
	- Rhad added output device enumeration to the windows software driver
	  and Sound.WaveOut.DeviceIndexOverride configuration directive to
	  override the default OS choice of output device.
	- Rhad added some mutex protection around the software renderer calls
	  to start the software driver to avoid potential race conditions
	  with the mixing function.
	- Jorrit fixed callstack.cpp so that it compiles on Mingw. Please
	  don't use single quotes in #error unless you also close the quote.
	- Jorrit added a new VBOThresshold config value to r3dopengl.cfg.
	  With this setting you can control when VBO buffers are used and
	  when normal buffers are used. By default this is set to 0 which
	  means that VBO is used all the time (if present). If you increase
	  this value then VBO buffers will only be used if the buffer
	  size (in bytes) exceeds that value. This may solve a problem
	  that on some systems using VBO causes big memory overhead.
	- Eric Sunshine made the following changes:
	    - Fixed bug in csjoylin, the Linux joystick plugin, where it was
	      incorrectly iterating over _all_ configuration keys from
	      joystick.cfg, rather than only those specific to that plugin.
	    - Changed the key composition in joystick.cfg so that it is based
	      only upon the platform name (i.e. "Device.Joystick.Win32") rather
	      than both platform and compiler names
	      (i.e. "Device.Joystick.Win32.GCC"). Using the compiler to
	      distinguish key names was inappropriate. If more fine-grained
	      control is needed over key names, then some other, better
	      mechanism should be employed.
	    - Rewrote confusing comments and key names in joystick.cfg which
	      incorrectly led the reader to believe that joystick numbers were
	      0-based, despite the fact that iJoystickDriver and the event
	      system consider them 1-based.
	    - Fixed Doxygen comments in csinput.h which stated incorrectly that
	      joystick numbers were 0-based. (They are 1-based.)
	    - Fixed bugs in csJoystickDriver where it confusedly treated the
	      joystick number as 0-based some of the time, and 1-based other
	      times. Now, all code treats it as 1-based.
	    - Fixed the informational messages reported by csjoylin so that
	      they employ 1-based joystick numbers, rather than 0-based.
	- Jorrit fixed the NR OpenGL polygon renderer so that it only
	  creates buffers for normals if normals are actually asked for.
	  Need to do the same for binormals, tangents, and others but it
	  already helps a bit for memory usage.
	- Jorrit also made binormal and tangent information use accessors.
        - Matze fixed AWS lexer to accept comments. The // and # tokens now
          start a comment till the end of the line
	- Eric Sunshine updated some outdated URL's in the CS manual. Also
	  added some URL's to the release notes.
        - Matze fixed a bunch of 64bit warnings/problems
28-Sep-2004
	- Rhad mutexed some portions of the software renderer to reduce
	  thread contention issues.  This is not a complete fix but should
	  reduce problems to distortion during the stopping, starting
	  and switching of sound sources and handles.
	- Rhad changed the Windows waveout sound driver to properly handle
	  threading issues, buffer sounds better, manage memory better, and
	  not blow up randomly.
	    - Fixes "waveOutUnprepareHeader: 0000000b An invalid parameter was
	      passed"
	    - Should reduce/fix sound stuttering during moderate system load.
	    - The software renderer needs certain changes to be made to thread
	      safety to go along with this.
	- res fixed a bug in bindoc where a struct member was accessed directly
	  instead of through a method, causing bogus values to be used
	  sometimes (and subsequent crashes).
	- res fixed a leak in cswinGetErrorMessage().
	- res added some error reporting to the Win32 callstack code and other
	  various improvements.
	- res fixed leaks in chunklod.
	- res changed the Win32 call stack generator to not start with the
	  stack in the kernel. This also seems to fix call stack generation
	  on WinXP SP2.
	- res fixed sprcal3d to work with memtracker enabled.
27-Sep-2004
	- dfryer changed "unsigned int" to size_t in
	  csXMLShaderTech::ActivatePass().  Prototype used size_t; size_t is
	  long unsigned int under Mac OS X, which is incompatible with unsigned
	  int.
	- Eric Sunshine fixed problem in wxWidgets check in configure.ac where
	  a couple cache variables were not being assigned values in all code
	  paths.
	- Jorrit added the ability to set zmode flags (ZUSE, ZFILL, ZTEST,
	  or ZNONE) and render priority (object, alpha, wall, ...) to
	  mesh factories too. These will be used as defaults when creating
	  objects from those factories.
	- PK added SaveMap to bugplug. Press F10 to save the map.
	- PK added GetUpdateInterval() to imesh/lghtng.h.
	- PK added GetUVAnimation (int idx, int &style, bool &loop) to
	  imesh/sprite2d.h
	- PK started with SaveSequence() and SaveTriggers() in csSaver.cpp
	- PK implemented iSaverPlugin for hazemesh.
	- PK implemented iSaverPlugin for lightningmesh.
	- PK added the saving of uvanimations to spr2d
	- Jorrit again fixed a stability problem to thing lightmap cache.
	  Turned out that csQround() of a value VERY close to x.5 can either
	  round down or up depending on system/debug mode. So I made the
	  rounding more robust by forcing a certain direction in case
	  it is close to x.5. This might invalidate lightmap caches for
	  certain objects if you're unlucky. It is still not perfect.
	  There are still cases where there are differences between debug
	  and optimize mode calculations. I'm uncertain on how to solve them
	  though.
25-Sep-2004
	- res copied Matze's change of GLAPI in glextmanager.h (empty instead
	  of 'extern') over to the GL extension manager templates.
	- res fixed a leak in VFS.
	- res fixed a signed vs unsigned warning in dynavis.
	- res fixed bug 1004889 (GL font cache: glTexSubImage2D() called with
	  0 length).
24-Sep-2004
	- Jorrit moved csProcAnimated to cstool so that it is easier to
	  use animated textures from code.
	- Jorrit speed up MNG animated images considerably. The problem
	  is that MNG animation used the elapsed time to update the
	  right animation. But if an animated texture is not visible for
	  a long time and then becomes visible again, the elapsed time
	  will be very large and this causes the MNG image calculator to
	  do a lot of work. I fixed this by adding a cap to 500 milliseconds
	  for elapsed time. This is not accurate but it speeds them up
	  a lot.
        - Philip Wyett did some horrid #ifdef'ing in the sprcal3d plugin to
          keep OR build compiling.
        - Philip Wyett eliminated compiler warning in xmlshader.cpp.
23-Sep-2004
	- Eric Sunshine augmented configure.ac so that it is no longer a fatal
	  error for zlib to be missing since that made it unnecessarily
	  difficult to perform maintenance tasks (project file synthesis,
	  documentation regeneration, Swig generation, etc.) on platforms
	  lacking this resource. It also unnecessarily penalized clients
	  interested in utilizing only some of the low-level portions of the CS
	  SDK, such as the utility and geometry libraries, etc.
	- Eric Sunshine fixed bug in cspython/Jamfile where pure-Python
	  `pythmod' module was not being linked against $(LINKLIBS). This could
	  result in failure on some platforms, such as Windows. Reported by
	  Lukas Erlinghagen. (bug #1032928)
	- Eric Sunshine updated URL for libmng in extlibs.txi.
	- Jorrit propagated a fix to frustvis from res2k to dynavis too.
	- Eric Sunshine fixed bug in csjava/Jamfile where Java extension was
	  not being linked against $(LINKLIBS).
	- Eric Sunshine removed a useless csPoly2D::GetVertexCount() overload.
	- Eric Sunshine relocated the remaining const/non-const-disambiguating
	  %ignores from javapre.i to cspace.i. They are sufficiently general
	  that they can be applied to all supported scripting interfaces.
	- Eric Sunshine fixed crasher in csjava's CS.requestPlugin() where it
	  was incorrectly invoking the do-nothing constructor of
	  csPluginRequestArray which did not even create the underlying C++
	  object. Therefore, later method invocations on that object crashed.
	- Eric Sunshine fixed nasty bug in csjava's <iface/iface_ver> typemap
	  (javapost.i) where it incorrectly used the full JNI class name when
	  it should have extracted just the SCF interface name. This resulted
	  in several serious problems. First, it invoked iBase::DynamicCast()
	  with the full JNI name, despite the fact that DynamicCast() expects
	  only the SCF interface name; thus all such invocations
	  failed. Second, other code which tried to reconstruct the JNI name
	  from the interface name would produce incorrect names such as
	  com/crystalspace/com/crystalspace/iVFS. These incorrect names led to
	  crashes later when the "out" typemap tried invoking methods upon the
	  non-existent class mentioned by the incorrect JNI name.  In practice,
	  this caused all query macros (CS_QUERY_REGISTRY, SCF_QUERY_INTERFACE,
	  etc.) to crash and burn.
	- Eric Sunshine fixed bug in csjava where it was invoking the plugin
	  manager's RequestPlugin() method once per desired plugin, rather than
	  one only with a single list of all desired plugins. This prevented
	  the plugin manager from performing proper dependency resolution
	  between plugins at load time. Toward this end, renamed
	  CS.requestPlugin() to CS.requestPlugins(). It now accepts a
	  java.util.Vector filled with csPluginRequest objects, rather than
	  accepting only a single plugin name and interface. (bug #858626)
	- PK implemented the iSaverPlugin for bezier mesh and fixed some bug in
	  the other Savers.
	- res fixed a crash with the terrain map after the recent shader
	  conditions stuff.
	- res fixed some memory leaks in xmlshader.
	- res fixed a compile error in bintree.h.
	- res fixed bug 1033694 (missing objreg.h inclusion in docwrap.h).
        - Andrew Craig fixed a bug in sprcal3d's SetMaterial function where
          the render meshes were not updated for the new material.
22-Sep-2004
	- Jorrit changed the loader so that it only prints certain
	  notifications if -verbose is given on the commandline. These
	  notifications have to do with materials being loaded differently
	  in case they are not found on the requested location.
	- PK added #include <ivaria/ode.h> to
	  CS/apps/tutorial/phystut/phystut.h.
	- PK moved the following files from cstool to plugin/proctex/standard:
	    prdots.cpp   / prdots.h
	    prfire.cpp   / prfire.h
	    prplasma.cpp / prplasma.h
	    prsky.cpp    / prsky.h
	    prwater.cpp  / prwater.h
	- res added functions to print formatted strings to stderr.
	- res eliminated a static var from win32kbd.cpp.
	- res silenced some MSVC warnings in regcomp.c and snprintf.cpp.
	- res replaced some ints with size_ts in csPoly3D.
	- res removed the csextern.h #inclusion from csutil/hashr.h. Not needed
	  there.
	- res added conditionals to XML shaders. Statements like
	  '<?if vars."some shader var"?>' can be placed in the shader to change
	  its behaviour based on the presence and value of shader vars at the
	  time the mesh is rendered.
	- res changed the generic step to have material SVs override shader
	  SVs.
	- res fixed wxtest to build as a console app on Win32.
	- res changed the or_lighting shader to also support flat materials.
	- res improved handling of malformed fixed function programs a bit.
	- res added a default white texture to glrender3d.
21-Sep-2004
	- Eric Sunshine fixed a bug in the "subsystem"-related change to
	  msvcgen/project6x.tlib on 19-Sep-2004 which caused the linker's /out:
	  option to be omitted from the generated project files. This caused
	  built .exe and .dll resources to be deposited in the wrong location.
	- Jorrit changed lighter and cslight to look for a "world" file
	  with ChDirAuto() so they can load worlds from VFS more easily.
	- Eric Sunshine fixed logic flaw in the re-written (18-Sep-2004)
	  csGetConfigPath() for MacOS/X in which it would sometimes return the
	  incorrect path.
	- Eric Sunshine made the following changes:
	    - Augmented the 'masterheaders' Jam target so that it now omits
	      several headers from the synthesized master headers because those
	      headers reference external resources which may not be known or
	      available to all clients of the master headers. Prior to this
	      change, clients of the master headers had to utilize the `cflags'
	      of each of these external resources if <crystalspace.h> was ever
	      included. The list of headers now omitted from the master headers
	      follows.
	        csutil/archive.h  -- needs zlib (indirectly via csutil/zip.h)
		csutil/zip.h	  -- needs zlib
		inetwork/vosapi.h -- needs VOS
		ivaria/ode.h	  -- needs ODE
		ivideo/wxwin.h	  -- needs wxWidgets
	      Clients requiring these headers will have to #include them
	      manually; and will need to arrange with the build system that the
	      appropriate `cflags' are used (typically by invoking the
	      ExternalLibs Jam rule).
	    - Agumented configure.ac so that it no longer emits CS_HAS_VOS,
	      CS_HAS_ODE, and CS_HAS_WXWIDGETS to csconfig.h. These control
	      macros have been obsoleted by the above change.
	- res fixed jobber.pl to use 'crystalspace' as the package name in the
	  fake Jamconfig.
	- PK fixed a compile error of vc8 beta 1 in regcomp.c.
20-Sep-2004
        - Andrew Craig fixed memory leak in csparser.
	- PK did the following:
	    - Implemented loader, saver and type for each procedural textures.
	    - Added a iTextureFactory* parameter to the following constructors:
	        csBaseTextureFactory()
	        csProcTexture()
	        csProcDots()
	        csProcFire()
	        csProcPlasma()
	        csProcSkyTexture()
	        csProcWater()
	    - Added csHaloType GetType() to iBaseHalo.
	    - Added iBaseHalo* GetHalo() to iLight.
	    - Added iTextureFactory* GetFactory() to iProcTexture.
	    - Added iTextureType* GetTextureType() to the iTextureFactory.
	    - Implemented iTextureType* csBaseTextureFactory::GetTextureType().
	    - Improved the iSaver.
	    - Corrected some wrong savings in gmeshldr and spr3dldr.
19-Sep-2004
	- Eric Sunshine fixed the Jam 'install' target so that it also installs
	  Marten's new parallax data files.
	- Eric Sunshine propagated Marten's new parallaxtest VFS mounting in
	  vfs.cfg to plugins/filesys/vfs/vfs.cfg.template.
	- Eric Sunshine adjusted the msvcgen templates so that GUI applications
	  are given subtype "windows" in `release' mode, and subtype "console"
	  in `debug' mode. This allows stdout/stderr to be captured easily from
	  debug applications, but avoids the ugly console window popping up
	  automatically for release applications (when launched from Explorer).
	- Eric Sunshine fixed problem in msvcgen/custom.cslib where
	  ExtensiveMemDebug and ExtensiveMemDebug_NR build configurations did
	  not have the appropriate "debug" tag, thus causing important
	  debugging configuration to be omitted from the synthesized project
	  files.
	- Jorrit changed all occurances of csQround() in CS that require an
	  exact correct answer to use the slow version of csQround() (manually
	  in code) which simply does: (int ((x) + ((x < 0) ? -0.5 : +0.5)))
	  The reason for this is that experimentation has showed that the
	  fast versions of csQround() actually give different results on
	  different systems. Places where these different results can have
	  bad effects have been fixed. This includes:
	    - float2short/float2long endian routines.
	    - places where cached data is compared for validity. A different
	      result of csQround() can cause (for example) lightmaps not to
	      load on some system.
	  The faster csQround() versions are still considerably faster then
	  the simple function above so I opted against removal for now.
	- Jorrit also changed the csQround() fallback macro to be an inline
	  function to avoid double evalulation of the argument.
	- Eric Sunshine added include/csutil/win32/sanity.inc which #undefines
	  several Win32 API macros which pollute the global preprocessor
	  namespace, and which interfere with CS's own method and function
	  names. This file is now included by the various csutil/win32 headers
	  after all Win32 API have been included.
	- Marten Svanfeldt fixed some compilation errors Eric's last fix
	  introduced.  If you use Win32 API functions which is listed in
	  sanity.inc, make sure that the windows headers are included in your
	  sourcefile after sanity.inc, otherwise it will not work.
	- Eric Sunshine made the following changes to the wxWidgets check in
	  configure.ac:
	    - Added an "SDK usable" check.
	    - Now checks if wxWidgets has been built with OpenGL support. This
	      is needed by the CS `wxgl' canvas.
	    - Worked around bug in wx-config on Windows where the --gl-libs
	      option emits a reference to a non-existent library
	      (wxmsw_glxxx.lib). To handle this broken case, configure first
	      tries the result of --libs and --gl-libs together; if that fails,
	      then it tries only --libs augmented with the results of CS's own
	      OpenGL checks.
	    - Now emits CS_HAS_WXWIDGETS to csconfig.h if wxWidgets is present.
	- Eric Sunshine fixed ivaria/wxwin.h so that it now #includes <wx/wx.h>
	  in order to get the declaration of wxWindow rather than trying to
	  forward declare wxWindow manually via `class wxWindow'. This is
	  necessary because wxWindow is typically an alias, created with
	  #define, to some platform-specific implementation class, so our
	  forward declaration was incorrect.
	- res fixed the VC7 group projects to also specify intermediate &
	  output directories and an output file (so cleaning them works
	  without warnings).
	- res enabled VC project generation for WX-dependent plugins and also
	  added two new workspaces which include the wxgl plugins (they are
	  not included in the default workspaces as not everyone may want to
	  spend the effort to build wxWidgets or need the wxgl canvas).
	- res updated the "External Libraries" docs to point to the latest
	  cs-win32libs package.
	- Eric Sunshine folded out redundant copy/paste code which was added to
	  msvcgen/workspaces.jam. This will reduce maintenance costs and avoid
	  possible errors attendant with such duplication.
	- Eric Sunshine renamed the recently added `wx-typical' and
	  `wx-newrenderer' MSVC workspaces to `wxtypical' and `wxnewrenderer',
	  respectively, since MSVC6 can not grok hyphens in project or
	  workspace names.
	- Eric Sunshine added missing CS_HAS_WXWIDGETS define to WX.CFLAGS in
	  msvcgen/config.jam.
	- Eric Sunshine applied to the MSVC6 group project templates Frank's
	  fix which allows the "clean" operation to work without warning. Also
	  simplified Frank's change to the MSVC7 templates. Since the content
	  of the `global_common' macro is now shared by all project types, it
	  has been folded directly into the project template proper (in
	  project7.tlib).
18-Sep-2004
	- Eric Sunshine changed the executable subsystem type in the MSVC
	  project files for GUI applications from "windows" to "console". This
	  should allow stdout and stderr to go to the terminal window from
	  which the user started the program (allowing the output to be
	  captures, if necessary), rather than opening a new console window and
	  dumping the output there. This matches the subsystem setting for GUI
	  executables in the old msvcgen templates.
	- Eric Sunshine repaired some outdated references to
	  /usr/local/crystal, the old GNU-make-based installation location, in
	  the CS manual. Also eliminated TeX 'hbox' warnings.
	- Eric Sunshine augmented csGetPluginPaths() in generic/pluginpaths.cpp
	  so that it respects the value of CS_PLUGINDIR if defined, which is
	  configure's notion of where installed plugins will reside.
	- Eric Sunshine upgraded csGetConfigPath() for MacOS/X so that it
	  respects CS_CONFIGDIR if defined, in addition to checking the
	  CrystalSpaceRoot default and the CRYSTAL environment variable. If the
	  above fail, now also checks a couple other likely (hard-coded)
	  locations. Also upgraded to understand LFS installation structure
	  used by Jam build system.
	- Marten Svanfeldt added a parallax mapping (also known as virtual
	  displacement mapping or offset mapping) shader and testlevel to CS.
	  The testlevel and shader requires NR, and a pretty highend card to
	  work.
17-Sep-2004
	- Eric Sunshine fixed a couple methods in odedynam which were returning
	  a value despite being declared as returning void. Reported by Brendon
	  Costa.
	- Eric Sunshine fixed const vs. non-const mixup in xmlshader which
	  resulted in compiler failure in MSVC6. Reported by Brendon Costa.
	- Eric Sunshine fixed phystut MSVC project file so that it defines
	  CS_HAS_ODE.
16-Sep-2004
	- Jorrit fixed several cases in the loader where it would crash
	  in case checkDupes was true and the object that it was loading
	  didn't have a name.
	- Jorrit made the special gmeshanim effect in flarge look nicer.
	- Jorrit enhanced the gmeshanim system so that you can auto-run
	  multiple scripts at once.
	- Eric Sunshine eliminated Swig warnings regarding recently added
	  friend methods in csColor.
15-Sep-2004
	- Eric Sunshine added an `UNCONDITIONAL' argument to
	  CS_EMIT_BUILD_PROPERTY() in emit.m4. This is analogous to the
	  like-named argument accepted by CS_JAMCONFIG_PROPERTY().
	- Eric Sunshine updated configure.ac so that it sets RANLIB
	  unconditionally (via `=') in Jamconfig, rather than conditionally
	  (via `?='). This is needed because the default RANLIB in Jambase is
	  incorrect on some platforms (such as on MacOS/X with Jam 2.4), and
	  because the default setting is inappropriate during
	  cross-compilation. If necessary, despite being set unconditionally,
	  users can still provide a custom value at configuration time:
            ./configure RANLIB=my-ranlib
	  Also removed the MacOS/X-specific work-around for this problem from
	  macosx.jam.
	- Eric Sunshine restored the MacOS/X-specific Jam 2.4 RANLIB
	  work-around in macosx.jam. This will allow external projects to work
	  correctly with the latest macosx.jam even if those projects have not
	  updated their configure scripts to emit an unconditional RANLIB
	  value.
	- Jorrit finished the basic gmeshanim plugin. Moving and rotating of
	  vertex groups works. Still a lot todo but all the basics are there
	  now.
	- Jorrit added a Set(csColor) and a divide operator to csColor. Also
	  added a color multiplication operator.
	- Jorrit implemented color animation in gmeshanim.
	- Jorrit implemented support for hierarchical transforms (both for
	  vertices and color) in gmeshanim.
	- Jorrit did several other small fixes and optimizations to gmeshanim.
	- Jorrit implemented scaling of vertex groups in gmeshanim. Not 100%
	  ok though. There is a new fancy object in flarge demonstrating
	  all this.
14-Sep-2004
	- Eric Sunshine fixed bug in msvcgen.jam's LinkWith override where it
	  did not distinguish between release and debug libraries & linker
	  flags when applying a project library's external dependencies to a
	  target which linked against the project library. In practice, this
	  manifested in CS's release and debug libraries (csutil.lib and
	  csutil_d.lib, for example) incorrectly appearing together in the same
	  "AdditionalLibraries" property in the "Debug" configuration within
	  application and plugin project files of foreign projects.
	- Eric Sunshine updated the msvcgen templates so that the files listed
	  as components of projects are now sorted. This will ensure that the
	  same list of files always generates the same project file regardless
	  of the order in which the "wildcard" operation returns the files
	  composing a project. This is an important consideration for
	  jobber.pl, for instance, which could be fooled into thinking that the
	  project files were outdated if the wildcard operation returned the
	  same list of files in different orders on different runs.
	- Eric Sunshine updated msvcgen/workspaces.jam so that `isotest'
	  appears only in wksnewrenderer, and not in wkstypical, since it is
	  specific to the new renderer.
	- Eric Sunshine augmented cspace.i so that it %ignores non-const
	  csPoly3D::GetVertices(). This fixes build failure in csjava.
	- Eric Sunshine added a Sort rule to helper.jam which returns its input
	  sorted alphabetically.
	- Eric Sunshine added a MasterHeader rule to helper.jam which, given a
	  list of header files, synthesizes a "master header" which #includes
	  all of them, and which is properly multiple-include protected.  The
	  pseudo-target `masterheaders' will synthesize all requested master
	  headers; `cleanmasterheaders' will destroy them; and
	  `freezemasterheaders' will copy them from the build directory into
	  the source tree.
	- Eric Sunshine added a DirectoryMasterHeaders rule to helper.jam which
	  is a convenience wrapper around MasterHeader. Given a list of
	  directories, it recursively scans each directory and creates a master
	  header for each directory which #includes the gleaned list of header
	  files contained within that directory.
	- Eric Sunshine added several "master header" files to the project
	  which should simplify client usage.  Users can choose the level of
	  granularity which suits them best. Users new to the SDK will probably
	  want to #include <crystalspace.h> since it is simplest; whereas more
	  advanced users may want to #include <csutil.h>, <cstool.h>, etc; and
	  power users can continue to #include only the individual headers
	  required by a particular piece of code.  The complete list of new
	  headers is:
            crystalspace.h  -- all public headers in entire SDK
            csgeom.h        -- all of csgeom
            csgfx.h         -- all of csgfx
            cstool.h        -- all of cstool
            csutil.h        -- all of csutil
            csws.h          -- all of csws
            iaws.h          -- all of iaws
            iengine.h       -- all of iengine
            igeom.h         -- all of igeom
            igraphic.h      -- all of igraphic
            imap.h          -- all of imap
            imesh.h         -- all of imesh
            inetwork.h      -- all of inetwork
            isound.h        -- all of isound
            itexture.h      -- all of itexture
            iutil.h         -- all of iutil
            ivaria.h        -- all of ivaria
            ivideo.h        -- all of ivideo
	  These headers can be re-created / refreshed at any time by invoking
	  "jam freezemasterheaders".
	- Eric Sunshine augmented jobber.pl so that it keeps the new master
	  header files up-to-date.
	- Eric Sunshine cleaned up the CS headers so that they are
	  self-contained and responsible for their own needs. This allows them
	  to work correctly in in the context of, and in conjunction with,
	  <crystalspace.h>. (Some headers expected that the .cpp file had
	  #included other headers upon which they depend, but this is incorrect
	  behavior. Other headers had various other problems.)
	- Eric Sunshine removed the long-deprecated csutil/rng.h.  Use
	  csutil/randomgen.h instead.
	- Eric Sunshine augmented configure.ac so that the VOS check emits
	  CS_HAS_VOS to csconfig.h when VOS is present. inetwork/vosapi.h now
	  checks for the presence of this control macro before trying to
	  #include <vos/vos/vos.hh>. This allows vosapi.h to work correctly
	  with <crystalspace.h> and <inetwork.h> even if VOS is not present.
	- Eric Sunshine changed the tutorials so that, for the sake of
	  simplicity, they #include only <crystalspace.h>, rather than the bevy
	  of individual header files which they used to #include, and which
	  served only to confuse new users.
	- Eric Sunshine fixed Texinfo formatting and mark-up problems in the
	  tutorials and HOWTO's.
	- Eric Sunshine removed the now obsolete CS/include/css.h, which
	  included many, but not all, of the public Crystal Space headers. To
	  obtain the same type of functionality, #include the new
	  <crystalspace.h> instead.
	- Jorrit worked further on the genmesh animation system. The basic
	  principles are now working. Removed the jittering test case.
	  Currently no animation is occuring but you can see test messages
	  appear on stdout. Still work in progress.
	- Jorrit fixed initialization errors in the new gmeshanim.
	- PK added multi-include protection to DbgHelpAPI.h.
	- Jorrit added new csArray::DeleteIndexFast() and
	  csArray::DeleteFast() routines. They work the same as DeleteIndex()
	  and Delete() but they don't preserve order of the remaining
	  elements (basically they work by moving the last element of the
	  array in place of the deleted one). When order in the array
	  is not important then it is recommended to use this function.
	- Jorrit changed a few (only a few) cases where DeleteIndexFast() can
	  be used easily.
	- Eric Sunshine augmented configure.ac so that the ODE check emits
	  CS_HAS_ODE to csconfig.h when ODE is present. ivaria/ode.h now checks
	  for the presence of this control macro before trying to #include
	  <ode/ode.h>. This allows ode.h to work correctly with
	  <crystalspace.h> and <ivaria.h> even if ODE is not present.
13-Sep-2004
	- Eric Sunshine renamed the following symbols in order to avoid
	  global namespace pollution:
	    mmioInfo                 --> csMemMapInfo
	    MemoryMapFile()          --> csMemoryMapFile()
	    MemoryMapWindow()        --> csMemoryMapWindow()
	    UnMemoryMapFile()        --> csUnMemoryMapFile()
	    MKDIR()                  --> CS_MKDIR()
	    PATH_DELIMITER           --> CS_PATH_DELIMITER
	    PATH_SEPARATOR           --> CS_PATH_SEPARATOR
	    TEMP_DIR                 --> CS_TEMP_DIR
	    TEMP_FILE                --> CS_TEMP_FILE
	    __NEED_GENERIC_ISDIR     --> CS_USE_CUSTOM_ISDIR
	    __NEED_OPENDIR_PROTOTYPE --> CS_WIN32_USE_CUSTOM_OPENDIR
	- Eric Sunshine retired the following CS_SYSDEF_PROVIDE_FACILITY set of
	  macros, which clients would #define before including cssysdef.h in
	  order to alter the behavior of cssysdef.h. Removal of these macros
	  eliminates the polymorphic behavior of cssysdef.h, thus helping to
	  pave the way toward eventually pre-compiling Crystal Space's headers
	  in order to reduce overall compilation time.
	    CS_SYSDEF_PROVIDE_ACCESS
	    CS_SYSDEF_PROVIDE_ALLOCA
	    CS_SYSDEF_PROVIDE_CASE
	    CS_SYSDEF_PROVIDE_DIR
	    CS_SYSDEF_PROVIDE_EXPAND_PATH
	    CS_SYSDEF_PROVIDE_GETCWD
	    CS_SYSDEF_PROVIDE_GETOPT
	    CS_SYSDEF_PROVIDE_MKDIR
	    CS_SYSDEF_PROVIDE_PATH
	    CS_SYSDEF_PROVIDE_SELECT
	    CS_SYSDEF_PROVIDE_SOCKETS
	    CS_SYSDEF_PROVIDE_SOFTWARE2D
	    CS_SYSDEF_PROVIDE_TEMP
	    CS_SYSDEF_PROVIDE_UNLINK
	    CS_SYSDEF_VFS_PROVIDE_CHECK_VAR
	- Eric Sunshine lifted the age-old restriction that cssysdef.h could be
	  included only by source files (.cpp), and not by header files (.h).
	  This restriction was an unfortunate side-effect of the polymorphic
	  behavior of cssysdef.h in the presence of various
	  CS_SYSDEF_PROVIDE_FACILITY macros. It is now safe, even recommended,
	  to include cssysdef.h in header files. Doing so helps to make header
	  files more self-contained, thus reducing the burden of clients of
	  those headers.
	- Eric Sunshine enhanced the Recurse rule (helper.jam) so that it
	  returns the list of visited files matching the requested type. Also
	  made it legal to omit the 'rule' argument, which allows Recurse to be
	  invoked simply to retrieve a list of matching files (without being
	  forced to apply a rule to each matching file).
	- Jorrit fixed the NR so that it now also calls BeforeDrawing()
	  callbacks before rendering a mesh. This was simply forgotten.
	- Jorrit completely redesigned the genmesh animation system (even
	  before the previous design was implemented :-). There are now
	  three main classes:
	    - iGenMeshAnimationControl: the animation control interface
	      that is set on the genmesh.
	    - iGenMeshAnimationControlFactory: the factory that is set on
	      the genmesh factory.
	    - iGenMeshAnimationControlType: the plugin itself from which
	      one can create factories.
	  In addition there is iGenMeshAnimationControlState which is an
	  interface to set the state parameters specific to the gmeshanim
	  way to do animation. Using this interface one will be able to
	  execute named scripts to control how the animation will work.
	  The advantage of this new system is that it will now be possible
	  to have one animation scripting set defined for the factory but the
	  genmesh objects themselves can actually execute different scripts
	  and be in a different animation state. This wasn't possible in the
	  previous design.
	- Jorrit implemented gmeshanim to support 'jitter' animation. This is
	  just a test to show that the system works. gmeshanim still needs to
	  have a real scripting system. In data/flarge/world there is one box
	  that uses this 'jitter' script.
	- PK fixed a few bugs in csSaver::SaveMaterials().
	- PK implemented about 70% of the particlessaver.
	- PK fixed a bug in the xmlshader by adding a csNewStr() in
	  SetFilename().
	- Eric Sunshine fixed OR compilation error in genmesh.cpp. Also added
	  extremely ugly const_cast<>'s to allow invocation of
	  iVertexBuffer::LockBuffer() to compile. (Someone, please fix this in
	  the cleanest way possible.)
	- Eric Sunshine fixed ambiguous invocations of convert_endian() in
	  spr3d.cpp.
12-Sep-2004
	- Jorrit fixed genmesh so it compiles with OR again.
	- Jorrit did some more work on gmeshanim. Still unfinished.
	- PK did the following:
	    - Fixed genmesh so that it really compiles with OR.
	    - Extended the iShaderVarContext with GetShaderVariables()
	      to get a all shadervariables.
	    - Extended the genmesh API with ->IsAutoNormals()
	      to check if the normals were automatically calculated.
	    - Extended iMaterial with GetShaders()
	      to get a list of all shaders that material uses.
	    - Extended the iShader API to allow the manual setting of a file.
	    - Changed the csloader so it sets the filename in the shader.
	    - Did a lot in the cssaver.cpp, mainly implementing the following:
	        bool SaveShaders(iDocumentNode*);
	        bool SaveSettings(iDocumentNode*);
	        bool SaveRenderPriorities(iDocumentNode*);
	        bool SaveVariables (iDocumentNode*);
	    - Fixed some lines that were longer than 79.
11-Sep-2004
	- Andrew Robberts updated sprcal3d to allow for transformations of
	  a mesh attached to a socket.
	- Andrew Robberts added the ability to attach multiple meshes to a
	  sprcal3d socket.
10-Sep-2004
	- Eric Sunshine fixed bugs in walktest/Jamfile where it unconditionally
	  attempted to add several optional modules to the "walkall" compile
	  group even if those modules had not been detected/enabled by the
	  configure script. Among other issues, this resulted in a failure by
	  the configure script to set up the makefile emulation layer if some
	  of those modules were absent.
	- Jorrit added support for genmesh animation plugins. There are new
	  interfaces iGenMeshAnimationControl and
	  iGenMeshAnimationControlFactory and you can call
	  SetAnimationControl() on the mesh factory.
	- Jorrit started work on a new gmeshanim plugin that is a script
	  based animation plugin for genmesh. Doesn't work yet.
	- Eric Sunshine removed the 'ignoresubdir" option from the IncludeDir
	  rule (helper.jam) and replaced it with the more generalized 'literal'
	  option.  Also added a 'transient' option which indicates that the
	  specified header directory should not be recorded in generated
	  resources, such as project files.
	- Eric Sunshine upgraded jamtemplate so that MSVC project files
	  generated via 'msvcgen' will now search for CS and CEL headers in the
	  following additional locations:
	    ../CS/include
	    $(CRYSTAL)/include
	    $(CRYSTAL)/include/crystalspace
	    ../cel/include
	    $(CEL)/include
	    $(CEL)/include/cel
9-Sep-2004
	- Jorrit fixed a potential bug in csLoader::LoadMeshObjectFactory()
	  where it would destroy the wrong factory after unsuccessful
	  loading of a new factory. This could happen in case region
	  loading was desired OR check dupes was not enabled AND at the same
	  time a factory with the same name already existed in memory.
	- Jorrit fixed a bug in csLoader::LoadMeshObject() where it would fail
	  to delete the created mesh object if the loading failed.
	- Jorrit added a new iLoader::Load() function which is a smart function
	  that can detect what kind of XML file it is trying to load and act
	  accordingly. Currently it supports world files, library files, mesh
	  factories, and objects.
	- Jorrit changed iMaterialWrapper->Register() and
	  iTextureWrapper->Register() so that they no longer attempt to
	  register again if they were already registered. That makes it
	  safe to call Register() multiple times.
	- Jorrit changed the loader so that it will now automatically
	  register textures and materials if the texture manager is already
	  present during loading. That makes it easier to use the new
	  Load() function because after loading a library you have no way
	  of knowing what textures and materials are new so there was no way
	  to register them.
	- Jorrit fixed a bug in opcode. The new CollideRay() function would
	  crash if there was no collider.
8-Sep-2004
	- Jorrit fixed a bug in all particle systems that depend on
	  csNewParticleSystem (rain and fountain). 'camera_origin' was
	  not set which could lead to bad back-to-front sorting for them.
	- Jorrit changed the OpenGL canvases so that you get a warning
	  when you try to run CS with less then 24 bit displays. Running
	  CS under such conditions is sub-optimal.
7-Sep-2004
	- *** RELEASED STABLE 0.98.4 ***
6-Sep-2004
	- Eric Sunshine upgraded the ODE "sufficiently recent" check in
	  configure.ac so that it demands version 0.5. Also added a check to
	  see if ODE was built with OPCODE support since OPCODE support is
	  required by Mike Handverger's latest changes.
	- Wouter Wijngaards changed the Jamfile for the phystut tutorial
	  application. It failed to examine if ODE.AVAILABLE was set,
	  resulting in trying to compile phystut in the absence of ode,
	  even though ivaria/ode.h includes ode/ode.h.
4-Sep-2004
	- Mike Handverger updated odedynam including the following changes:
	    - TriMesh collisions (that collide with everything except planes,
	      since that is missing in ODE currently) Partly from code posted
	      to crystal-main by Marc Rochel.
	    - Ability to select QuickStep (setting iterations not possible yet)
	      QuickStep is a new solver for ODE that is much much faster.
	    - Ability to use AutoDisableBodies. When turned on, ODE will
	      disable any rigid body that hasn't been moving much recently.
	      Generally, this means the body is on the ground, so it speeds
	      things up by not doing collision-detection with that body.  When
	      an enabled body collides with a disabled body, it will enable it.
	    - More to come...
	    - *Warning* ODE 0.5 required.
	- Mike Handverger updated phystut to demo odedynam updates:
	    - Added on screen display for various things.
	    - Select Solver with the following keys:
	        1 = WorldStep
	        2 = StepFast
	        3 = QuickStep
	    - Turn on AutoDisableBodies with 'd'.
	    - Create a TriMesh 'm'.
3-Sep-2004
	- Eric Sunshine applied a patch from <cbarney1509@earthlink.net> which
	  changes csgfx/mipmap.inc "from array index to pointer offsetting
	  arithmetic in order to make 64 bit pointer math work without change
	  of sign extension problems." This should fix crashes in mipmap.inc on
	  64-bit platforms which resulted from accidentally applying negative
	  indexes to arrays.
2-Sep-2004
	- Jorrit added a new iVisibilityCuller->IntersectSegmentSloppy().
	  This function will find all objects that might possibly intersect
	  with the given beam. Intersection is not guaranteed but at least
	  the bounding box of the object will intersect. This function is
	  not as accurate but a LOT faster then IntersectSegment().
	- Jorrit added a new csColliderHelper::TraceBeam() function that
	  is a very efficient way to find the closest object that is hit
	  by a beam (uses colliders for the objects). This function is
	  faster then the iSector->HitBeam() functions but in contrast
	  to those TraceBeam() will only work on the colliders while
	  HitBeam() will work on the actual current triangle data. This
	  can matter in cases where animation is used and the collider
	  is a simple box approximating the model. The new TraceBeam()
	  function will correctly transform portals (and space warping
	  portals too).
	- Jorrit added functionality in bugplug to test this new routine
	  in case the third mouse button is pressed.
	- Jorrit changed walktest to also register the iCollideSystem to
	  the object registry.
	- Jorrit fixed csString::DeleteAt() so it no longer tries to do
	  something in case iCount == 0.
1-Sep-2004
	- Jorrit added a new iCollideSystem->CollideRay() and
	  GetIntersectingTriangles(). With this function it is possible
	  to test if a collider intersects with a ray. Only the OPCODE
	  plugin implements this (not RAPID). Note that this function
	  is currently untested.
	- Jorrit added a constructor for csColor to csColor4 and also
	  a Set(csColor) method.
	- Jorrit updated the howto on how to create a pixmap.
31-Aug-2004
	- Jorrit did a huge optimization and cleanup on dynamic lights (old
	  style dynamic lights which do NOT use stencil hardware). Pressing
	  'L' in walktest (which adds a huge dynamic light at the current
	  spot) improved from 22 seconds to something slightly bigger then
	  0 seconds (for a big level). To do this I had to remove support
	  for shadows. I don't think shadows for dynamic lights are that
	  important. They will still correctly shadow if they shine through
	  a portal (i.e. the portal boundary).
30-Aug-2004
	- Jorrit fixed iCameraPosition->Load() so that it will first
	  attempt to find a sector in the current region and if that
	  fails try to find a more global sector.
	- Oktal added UTF-8 support for csInputDefinition strings
	  and fixed a serious bug in csInputDefinition::GetKeyString.
29-Aug-2004
	- Jorrit added a new -enable-leakguards configure option. Instead
	  of disabling or enabling leakguards with debug versus optimize
	  mode it is now enabled with a configure option independent of
	  debug or optimize mode. This means that debug and optimize mode
	  are now again compatible given the same leakguards option.
	  Re-enabled the leakguard in csShaderVariable.
	- Eric Sunshine made the following changes:
	    - configure.ac no longer uselessly emits the Jam variable
	      LEAKGUARDS.
	    - Renamed control macro CS_LEAKGUARDS to CS_USE_LEAK_GUARD.
	    - Renamed configure.ac option --enable-leakguards to
	      --enable-leak-guard.
	- Eric Sunshine fixed a couple problems in the path() macro
	  (msvcgen/macros.tlib). (1) Periods in 'striproot' pattern were not
	  being escaped. The result was that a period incorrectly matched any
	  character rather than a literal period, as intended. (2) When the
	  source and build directories were the same, it was incorrectly
	  stripping single periods from the beginning of paths, even if the
	  periods were part of a larger unit, such as "../".
28-Aug-2004
	- Jorrit removed the leakguard from csShaderVariable since somehow
	  it prevents combination of optimize and debug plugins.
27-Aug-2004
	- Eric Sunshine added intptr_t / uintptr_t check to configure.ac.  If
	  the types are available, CS_HAS_INTPTR_T is defined in csconfig.h.
	- Eric Sunshine augmented cstype.h so that it fakes up intptr_t and
	  uintptr_t if CS_HAS_INTPTR_T is not defined, or if MSVC headers do
	  not provide these types.
	- Eric Sunshine changed the way configure.ac and cstypes.h treat
	  CS_HAS_STDINT_H. Previously, configure.ac would emit this control
	  macro only if <stdint.h> was present _and_ the INT64_C() macro was
	  also available. Now, CS_HAS_STDINT_H is independent of INT64_C()
	  availability and depends only upon presence of <stdint.h>. The new
	  control macro CS_HAS_INT64_C now instead indicates availability of
	  the INT64_C() facility.
	- Eric Sunshine retired the obsolete CS_BUILTIN_SIZED_TYPES control
	  macro.
	- Eric Sunshine replaced the old special-purpose msvcgen.pl facility
	  with a much more generic and easily extensible project generation
	  facility based upon Template Toolkit. A number of benefits result
	  from this new approach:
	    - Reduced maintenance costs. With the old template facility, even
	      seemingly small modifications to the templates required up to 35
	      actual changes on account of significant duplication (five
	      different project types multiplied by five different build modes
	      for CS, plus five project types multiplied by two build modes in
	      the 'jamtemplate' templates). This was a major maintenance
	      problem, and a large source of potential errors. With the new
	      facility, most modifications require only one or two changes. As
	      a corollary, the same templates are now used for CS and
	      'jamtemplate'; the distinct template set for 'jamptemplate' has
	      been eliminated.
	    - Simplify creation of project files for systems other than MSVC,
	      such as Borland and Apple. It is no longer necessary to create a
	      new specialized script for these cases; instead, simply provide
	      an appropriate Template Toolkit input file and add some Jam
	      support functionality.  (When the time comes, we will also want
	      to re-factor msvcgen.jam in order to avoid duplicating
	      functionality which is common to project file generation for
	      other tools.)
	    - Finer-grained control over various project attributes. For
	      example, msvcgen now allows preprocessor defines and additional
	      header and library directories to be specified independently,
	      rather than bundling everything into "cflags" / "lflags". This
	      allows MSVC7 users, for instance, to take advantage of
	      auto-completion of preprocessor defines, etc.
	    - Faster project generation (possibly). Rather than running the
	      Perl msvcgen.pl once per generated project and workspace the new
	      facility invokes Template Toolkit just once.  All projects and
	      workspaces (for a single MSVC version) are generated by the one
	      run. This may make a large difference on Windows (and Windows 9x
	      in particular) where process creation is so extremely
	      expensive. (Unfortunately, this gain is largely offset by the
	      fact that Template Toolkit is much slower than msvcgen.pl on
	      account of the fact that it is a generic templating mechanism.)
	- Eric Sunshine increased the speed of the ResponseFile rule
	  (helper.jam) by several orders of magnitude.
	- Eric Sunshine relocated the MSVC6 and MSVC7 project files from
	  CS/mk/visualc6 and visualc7 to the shared directory CS/mk/msvc. This
	  reduces clutter by eliminating the duplicated .rc files for
	  application and plugin projects.
	- Eric Sunshine fixed bug in msvcgen process where the compile groups
	  created via RegisterCompileGroups (Jamefile.in / groups.jam) were not
	  being emitted as MSVC "group" projects. This had been working at one
	  time when Eric performed the major Jam-based msvcgen clean-up and
	  fix-up several months ago, but broke at a late stage during that
	  work, and went unnoticed until now.
26-Aug-2004
	- res changed the TinyXML unknown element writer to write the value
	  not verbatim but inside pointy brackets (a tag like "<?foo ?>" in a
	  file will result in an 'UNKNOWN' element with the value "?foo ?").
	- res fixed the binary document system to also create nodes of type
	  UNKNOWN.
	- res silenced the warning 4345 on VC7.1.
	- res made some OR compile fixes (leak guards for NR-only embedded
	  classes).
25-Aug-2004
	- Jorrit fixed spr3d so that it will forcibly recalculate normals
	  (cached) if -recalc cmdline option is given.
	- Jorrit additionally implemented caching for the LOD tables.
	  Also recalculated if -recalc is given.
	- Jorrit added lots of leak guards again.
	- dfryer fixed the atan2f()-faking macro; it was not accepting the
	  correct number of arguments.
24-Aug-2004
	- Jorrit fixed a bug in Dynavis where it would try to use the
	  hint_goodoccluder flag before setting the value of that.
	- Jorrit fixed a crash bug in walktest/flarge when you tried to jump
	  on the car.
	- Jorrit added some leak guards.
	- res made the following changes:
	    - Added some documentation for csFrameDataHolder<>.
	    - Added a Construct() variant to csArrayElementHandler to
	      initialize elements with the default constructor. So when
	      InitRegion() is called, instead of calling the default ctor one
	      time and the copy ctor for every element in the region, only the
	      default ctor is called for every element.
	    - Changed csRenderMeshHolderSingle to utilize csFrameDataHolder<>.
	    - Fixed the Haze mesh to work with NR.
	    - Added an assertion to
	      csSectorVisibleMeshCallback::ObjectVisible() to catch cases
	      where a mesh reports a render mesh count != 0 but returns a 0
	      pointer to the meshes.
	- Remi Bonnet added a call to SetupObject() in the bruteblock terrain
	  plugin as a function could be called before any call to Setup.
23-Aug-2004
	- Jorrit added lots more leak guards.
	- Jorrit fixed a leak in xmlshader where a failing technique was
	  only deleted in case -verbose commandline option was given.
	- Eric Sunshine silenced Swig warnings resulting from Jorrit's new
	  CS_LEAKGUARD_DECLARE.
	- Jorrit made 'look to origin' default in viewmesh. Also cleaned up
	  the code.
	- Jorrit enhanced viewmesh so that you can now (on the commandline)
	  specify a model in the following ways:
	    - <full vfs path including model name>
	    - <vfs path> ':' [ <directory> '/' ] <model name>
	    - <real path to zip> ':' [ <directory> '/' ] <model name>
	    - <real path> ':' [ <directory> '/' ] <model name>
	  Some examples:
	    - /this/data/model.cal3d
	    - data/standard.zip:sprite1
	    - /lib/std:sprite1
	    - data/models.zip:uglyone/uglyone.cal3d
	  This works best (for cal3d models) if you make sure that the
	  cal3d model specifies NO path and the textures also have
	  no path so everything is loaded relative to the current VFS
	  directory.
	- Jorrit fixed a big memory leak in sprcal3d. The csCal3DAnimation
	  and csCal3DMesh structures where never freed and csCal3DMesh
	  kept a reference to the material which caused a number of other
	  leaks as a result.
22-Aug-2004
	- Jorrit fixed a leak in spr3d. Everytime an spr3d was created
	  it couldn't be removed again.
	- Jorrit added more leak guards.
	- Jorrit added a missing SCF_IMPLEMENTS_INTERFACE(iImageVector).
	- Jorrit fixed a leak in genmesh with shader variable contexts. This
	  caused many other things to leak.
	- Erotoman fixed bug in lightning mesh.
	- Jorrit rewrote csPoly3D so it now uses csArray instead of the
	  custom code for growing array. This should also considerably
	  speed up csPoly3D (and thus loading of sprites which makes
	  heavy use of csPoly3D).
	- Jorrit did a small optimization on sprcal3d which avoids the
	  copy of the rendermeshes all the time.
21-Aug-2004
	- Jorrit added more leakguards to CS.
        - Philip Wyett fixed attempts to load
          "crystalspace.graphics3d.shader.soft" instead of the
          correct "crystalspace.graphics3d.shader.software".
	- res made the lightning and bezier meshes work with NR.
	- res changed the lghtngtest app to use the 'alpha' render priority
	  for the lighting meshes.
20-Aug-2004
	- Jorrit fixed a bug added yesterday in the font multiplexor that
	  would cause crashes at exit.
	- Eric Sunshine fixed bug in csString::Replace(csString const&) where
	  it failed to take into account the case where the replacement
	  csString might be the same as the string on which Replace() was
	  invoked, thus resulting in "undefined" behavior. This problem
	  impacted other clients of Replace(), such as operator=(). For
	  instance, `csString s("foo"); s = s;' resulted incorrectly in 'foo'
	  being cleared.
	- Eric Sunshine added more sanity checks to csString to detect and
	  properly handle near-pathalogical cases such as `s = s.GetData()' and
	  `s = s.GetData() + n'.
	- Eric Sunshine fixed bug in csString::Replace(char const*,count) where
	  it was documented as accepting -1 for `count', but did not correctly
	  handle the case.
	- Wouter Wijngaards fixed compile errors in csbench.
        - Philip Wyett fixed a compile error in prstex.cpp
	- Jorrit added a new leak detector to CS. This class is very easy to
	  use. In the class header you add:
	    class csBla
	    {
	    public:
	      CS_LEAKGUARD_DECLARE(csBla);
	    };
	  In the source you add:
	    CS_LEAKGUARD_IMPLEMENT(csBla)
	  And that's all. When the program exits the number of remaining
	  instances will be printed (if > 0). This is only done in debug
	  mode. In release/optimize mode the code does nothing.
	- Jorrit added the new leak detector declarations to various classes
	  in CS.
        - Philip Wyett fixed a compile error in prstex.cpp.
        - Philip Wyett eliminated compiler warnings in xmlshader.cpp.
19-Aug-2004
	- Jorrit added support for key/value pairs to materials and textures
	  in the loader.
        - Philip Wyett fixed mismatched delete/delete[] in dds.cpp
	- Jorrit fixed csXMLShader so that it holds a weak reference to g3d
	  instead of a real reference. Should reduce the chance of memory
	  leaks a bit.
	- Jorrit fixed csXMLShader so that it now implements iObject.
	- Jorrit fixed the loader so that it adds shaders to the right region.
	- Jorrit fixed the loader so that it no longer adds a shader if
	  a shader with the same name is already there (if CheckDupes() is
	  true).
	- Jorrit added iShaderManager::UnregisterShader().
	- Jorrit fixed regions so that they can now unload shaders.
	- Jorrit added FindShader() to iLoaderContext so that shader finding
	  now also respects the restrictions on finding on region and such.
	- Jorrit reports: the following classes were keeping a csRef to the
	  iObjectRegistry (bad idea):
	      - csSprite2DMeshObjectType
	      - csWaterDemo
	      - csBaseTextureFactory
	      - eiShaderRenderInterface
	      - csSpriteCal3DMeshObject
	      - csBaseTextureLoader
	      - csBaseRenderStepLoader
	      - csBaseRenderStepType
	      - csRenderStepParser
	      - csRenderLoopLoader
	      - csStencilShadowStep
	      - csStencilShadowFactory
	      - csFullScreenQuadRenderStepFactory
	      - csFullScreenQuadRenderStep
	      - csGenericRenderStepFactory
	      - csLightIterRenderStepFactory
	      - csLightIterRenderStep
	      - csTargetRenderStepFactory
	      - csFontServerMultiplexor
	      - csPhysicsLoader
	      - csODEDynamics
	      - csAnimateProctexLoader
	      - csBaseProctexType
	      - csBaseProctexLoader
	      - csFuncTexLoader
	      - csSoundRenderDS3D
	      - csSoundRenderOpenAL
	      - csSimpleFormerLoader
	      - csDDSImageIO
	      - csDDSImageFile
	      - csNullGraphics3D
	      - csGLGraphics3D
	      - csXMLShaderCompiler
	      - csShaderManager
	      - csShaderProgram
	      - csGLShader_ARB
	      - csGLShader_CG
	      - csGLShader_FIXED
	      - csGLShader_PS1
	      - csSoftShader
	      - csSoftShader_FP
	      - csSoftShader_VP
	- Jorrit fixed several plugins to keep weak references to some modules
	  instead of real references in the hope that this minimizes the
	  chances of having memory leaks. And indeed, it fixes the memory
	  leaks with walktest flarge, stenciltest, partsys, isomap, and
	  r3dtest but not with terrain, terrainf, and particles.
	- Jorrit fixed several wrong usages of csRef (forgotten AttachNew()
	  and so on).
	- Jorrit fixed a bug in ODE plugin. It would use a csRef to
	  an event handler but still use DecRef() later.
	- Jorrit fixed circular ref between loader and the mesh loader plugins
	  for particles and terrain. That partially fixes some of the ref leaks
	  in terrain, terrainf, and particles levels (bot not all).
	- Jorrit fixed circular ref in particles mesh object. The problem
	  is equivalent to the problem with embedded event handlers. In this
	  case the embedded struct was an iShaderVariableAccessor. By having
	  this as an embedded struct there was a circular reference.
	- Jorrit fixed circular ref between simpleformerloader and loader.
	  This fixes the remaining ref leaks in terrain and terrainf levels.
	- Jorrit but the unused csBlockBuilder class in #if 0 in bruteblock
	  terrain.
	- res changed the xmlshader plugin so shaders internally have the
	  notion of techniques.
18-Aug-2004
	- Jorrit fixed the NR null renderer so that it also returns a
	  valid iPolygonRenderer instance on calling
	  g3d->CreatePolygonRenderer(). That way PrecacheDraw() can work
	  fine in combination with null3d.
	- Jorrit did the following lighter changes:
	    - Support for filtering meshes on key value pairs (regexp and
	      normal).
	    - Added the ability to reject bad object selectors (can happen
	      if there is an invalid regexp for example).
	    - Added a portals selector.
	    - Added a selector that selects nothing.
	- Jorrit added support for key-value pairs to portals (only when
	  specified outside things).
	- Jorrit fixed a bug in csBitArray where it would do a memcpy
	  from address X to address X (i.e. same address). valgrind reported
	  this.
17-Aug-2004
	- Jorrit did some more work on lighter config parsing.
	- Jorrit did the following lighter changes:
	    - Several fixes in the config parser.
	    - Generalized the mesh selector class so that it is now useful
	      for any kind of CS object. That way we can also implement the
	      sector and light selector using that.
	    - Started scanning the world and finding all appropriate objects.
	    - Lots of fixes.
16-Aug-2004
	- Steven Geens added an example of how to view a cal3d file with
	  viewmesh to the docs and how to load a cal3d file in code.
	- Jorrit fixed flarge so that the billboard has <ztest/> mode.
	- Jorrit worked a bit more on the parsing of the config file of
	  lighter.
	- Eric Sunshine fixed a significant number of Texinfo mark-up and
	  formatting problems in sprcal3d.txi.
	- Vincent Knecht made corrections in csapplicationframework.h Doxygen
	  sample code.
15-Aug-2004
	- Jorrit extended iEngine->PrecacheDraw() so that it also causes
	  the cullers to precache. To do that it calls a new
	  iVisibilityCuller->PrecacheCulling() function.
	- Jorrit changed iEngine->PrecacheDraw() so that it no longer
	  requires the dummy camera and view parameters.
	- Jorrit added an optional region parameter to iEngine->PrecacheDraw()
	  so that you can precache a region alone.
	- Jorrit renamed '-prepare' option in walktest to '-precache' because
	  that better reflects what it does.
	- Jorrit tried to work around a problem where multiple calls
	  to iVFS->ChDirAuto() doesn't work properly because it is hard
	  to discover if a VFS path is going to be valid or not. To solve this
	  iVFS->ChDirAuto() has an additional filename parameter which causes
	  ChDirAuto() to also check if that file is present in the given path
	  so that it is better able to select the right path. This fixes
	  a problem in walktest where it could not open multiple levels.
14-Aug-2004
	- Jorrit added a new iEngine->PrecacheDraw() function which precaches
	  the GetRenderMeshes() of all meshes in the engine. Walktest now
	  uses this function if you specify '-prepare' option. This speeds up
	  running through a level.
	- Jorrit did further work on lighter:
	    - Mesh selection system.
	    - Started working on a new XML config file for lighter. Not
	      functional yet.
        - Philip Wyett eliminated the redefinition of _POSIX_C_SOURCE warning
          within the CS Python plugin.
13-Aug-2004
	- Jorrit added new versions of csPoly3D::ComputeNormal() and
	  ComputePlane() that accept a csArray<csVector3>.
	- Jorrit did further work on the lighter app. Added 'litPolygon' class.
	- Jorrit did a runtime speedup of thing by moving more of the
	  initialization stuff to the -prepare stage (iThingState->Prepare() or
	  PrepareForUse()). This speeds up moving in a big world when things
	  come into view the first time. I put the speed testing code in
	  #ifdef's because there are still some slowdowns that I want to
	  examine further.
	- Eric Sunshine made the following changes:
	    - Updated apimod100.txi to mention that installation location of
	      the Crystal Space header tree has changed.
	    - Re-wrote portions of perl.txi to be clearer and more polished.
	    - Fixed a bunch of Texinfo mark-up problems and 'hbox' warnings in
	      recently added material.
12-Aug-2004
	- Jorrit temporarily put back the old inpnames.h and inpnames.cpp
	  until the new csInputDefinition class works well for normal keys
	  too.
	- Jorrit added litLightMapMapper classes to the lighter application.
	  This class computes the mapping between a polygon and the lightmap
	  coordinates. Currently not used.
	- Oktal added the missing code that meant csInputDefinition would not
	  parse strings of length 1.
	- Jorrit removed inpnames.* again.
	- Oktal changed the arguments of csInputDefinition::ParseKey so it
	  can output both raw and cooked codes in the same call.
	- Oktal fixed a bug in csInputDefinition that caused parsed modifiers
	  to not be stored ('&=' should have been '|=').
11-Aug-2004
	- PK implemented the SaverPlugin in genmesh, spr3dmesh and fixed a
	  bug in the write down order of the other SaverPlugins.
	- Jorrit added a new iVFS->ChDirAuto() function that is similar to
	  ChDir() but it can automount real paths and zip files if needed.
	  This function replaces similar code that was already duplicated
	  in walktest, cslight, Crystal Core, and soon the new lighter app.
	  ChDirAuto() accepts a normal VFS path, a real path using /, \,
	  or $/ path delimiter and also zip files. It also supports a path
	  in which to look for the given directory.
	- Jorrit fixed VFS so that ChDir() now fails if you give an invalid
	  vfs path. Previously it would simply set the current path to 0
	  and return true anyway.
	- Jorrit added a new lighter app. This tool is currently almost the
	  same as cslight but in the (near) future this tool will calculate
	  super lightmaps for the totally new (yet to be designed) new
	  lightmap system that we'll have in Crystal Space.
	- Jorrit removed the feature in walktest to be able to change the
	  zip file extension. Don't really see why that is useful.
	- Eric Sunshine eliminated a number of compilation warnings reported by
	  gcc on Linux/PowerPC.
	- PK implemented the SaverPlugin in spr2dmesh and fixed a bug in
	  csSaver::SavePortals.
	- Oktal replaced csString::StartsWith and ::StartsWithNoCase with a
	  single StartsWith method that takes a bool ignore_case argument,
	  and fixed bugs in those methods.
	- Oktal added getters and setters to csInputDefinition.
	- Oktal added a bool distinguishModifiers argument to
	  csInputDefinition::ToString to choose behaviour ("LCtrl" vs "Ctrl").
	- Oktal added static helper functions to csInputDefinition that
	  work in a similar way to the old csParseKeyDef and related functions.
	- Oktal added information about the csInputDefinition changes to
	  apimod100.txi.
	- Oktal made a couple of fixes to the input binder so it correctly
	  handles keyboard modifiers.
	- Oktal fixed a problem in the console input plugin where a '%' sign in
	  the input would cause problems because of iConsoleOutput::PutText's
	  printf-style format string.
10-Aug-2004
	- PK implemented the csThingFactorySaver.
	- Jorrit fixed a few places in CS where a reverse size_t loop was done
	  like this:
	  	for (i = Length ()-1 ; i >= 0 ; i--)
	  This does NOT work. I changed it to:
	  	i = Length();
		while (i > 0)
		{
		  i--;
	- Jorrit added csStringArray::InsertSorted() which does sorting
	  on string. This fixes a bug in VFS where it would sometimes fail
	  to delete old entries and this could cause duplicate entries in a
	  zip file (happened a lot with relight).
	- Oktal added FindFirst and StartsWith methods to csString.
	- Oktal fleshed out csInputDefinition and moved it from inpnames.h/cpp
	  to inputdef.h/cpp. Also removed csParseKeyDef and related functions.
	- Oktal added a public SynthesizeCooked(iEvent*) method to the
	  keyboard driver which fills in the cooked code of an event containing
	  only a raw code.
	- Oktal added a GetModifiers method to csKeyEventHelper which performs
	  the opposite of GetModifiersBits, ie. it converts a bitmask back to
	  a csKeyModifiers struct.
	- Oktal added a CSKEY_MODIFIER_COMPARE macro to determine if two
	  modifier bitmasks can be considered equal. Also added extra parens
	  to some other macros in evdefs.h, for safety.
	- Oktal made numerous changes to the input binder to make it a "nicer,"
	  more generalised system. This includes the removal of
	  iInputBinderPosition and iInputBinderBoolean. All bound variables are
	  now accessible by numbered keys through methods in the binder.
	  And it now binds to csInputDefinition's instead of iEvent's with a
	  dodgy hash function.
	- Oktal added a Quick Start section to the Perl chapter in the manual.
	- Oktal changed the csInputDefinition empty constructor from
	  protected to public.
	- Oktal updated AWS to use the new csInputDefinition.
	- Luca fixed the InsertSorted method of the class csStringArray.
	- Luca modified a "for (size_t i = 0" to "size_t i = 0; for (i"
	  to make the VisualC++6 compiler users happy.
9-Aug-2004
	- Jorrit did a fix to csQrount() and other csQ... (except for
	  csQint()).  In case CS_QINT_WORKAROUND was defined only csQint()
	  actually had any workaround code while it was also needed for the
	  others. This fixes a problem with the thing plugin creating
	  incompatible lightmaps between optimize and debug mode.
8-Aug-2004
	- Eric Sunshine reverted the 29 July 2004 change to the cosf() check in
	  configure.ac so that it once again performs the check with the C
	  compiler rather than the C++ compiler. The benefit of using the C++
	  compiler turned out to be illusory since, though the test would
	  succeed because the functions were built-in, the headers failed to
	  declare them, thus we nevertheless need to do extra work to make them
	  usable. (The <cmath> change which was made at the same time is
	  retained since it prevents problems resulting from clients including
	  <cmath> after cosf() and cousins are faked-up.)
	- Eric Sunshine eliminated compilation warnings throughout project.
	- Eric Sunshine fixed bug in macosx.jam where it was emitting a
	  slightly bogus PkgInfo file to the generated Cocoa .app wrapper.
	- Peter Amstutz updated csInputBinder to support specifying modifers
	  (shift, ctrl etc) to keyboard bindings.
7-Aug-2004
	- Jorrit added a test (debug mode only) in the generic render step
	  to print when a material or material handle is missing.
	- Jorrit added some asserts to a few mesh objects when the material
	  is missing.
	- Jorrit changed the engine so it reports upto 100 missing lightmaps
	  objects if -verbose is used.
	- Vincent Knecht upgraded cs.spec for new headers installation
	  directory.
6-Aug-2004
	- Jorrit changed the engine so that the plane of the portal is always
	  used for culling but only used for exact clipping in the renderer
	  in case the portal has <clip/> specified.
5-Aug-2004
	- Jorrit added a new 'speed' command to walktest to multiply the
	  normal maximum movement speed with some factor (default 10). That
	  way you can move very fast on huge levels. Assigned to the ' key
	  by default. Also swapped assignment of jump and fire (0 and space).
	- PK did the following:
	    - Changing csTextSyntaxService::WriteBox
	    - Extending the csSaver::SaveSectorMeshes to save childmeshes
	    - Adding csSaver::SaveMeshFactories
	    - Implementing FactorySaver for nullmesh
	    - Implementing ObjectSaver for emitmesh, explosionmesh, firemesh
	      fountainmesh, nullmesh, rainmesh, snowmesh, spiralmesh, starmesh
	    - Prepare implementation of sprcal3d's FactorySaver
4-Aug-2004
	- Peter Amstutz fixed window resizing in the Wx GL canvas.  It works
	  now.  Also fixed input handling in the canvas (2nd and 3rd mouse
	  buttons were swapped by accident).
	- Peter Amstutz also improved sector support in the csvosa3dl plugin,
	  so it won't try and load a sector that has already been loaded
	  a second time.
	- Jorrit added a sanity check to the genmesh loader to test if
	  a triangle is not using a bad vertex index.
	- Jorrit added several new commands to move selected meshes in
	  bugplug.
	- Jorrit fixed several bugs in bruteblock plugin which caused it
	  to calculate LOD wrong if the terrain was moved.
3-Aug-2004
	- Eric Sunshine changed the install location of Crystal Space headers
	  from ${includedir} to ${includedir}/crystalspace in order to avoid
	  polluting the top-level of the global header directory
	  (/usr/local/include, for instance). cs-config has been altered to
	  return the new header location in response to --includedir, --cflags,
	  and --cxxflags, thus the header directory relocation should be
	  essentially transparent to clients.
	- Eric Sunshine fixed bug in cs-config where the --libdir option always
	  returned the empty string.
	- res changed the Thing bitangent calculation to use the +Y instead of
	  the -Y axis. This seems to give better results.
	- res changed the Thing tangent/bitangent calculation to more properly
	  use the difference to the origin in texture space instead of just
	  the +X/+Y directions in texture space.
	- res changed phystut so the angular velocity of spawned objects
	  doesn't cause them to immediately go left when touching a wall.
	- res made the csStringHash::Request() methods const.
	- Jorrit fixed a size_t related bug in the engine. This is 1002540
	  on the tracker.
	- Eric Sunshine fixed bug in partphys_ode/Jamfile where it failed to
	  invoke ExternalLibs for the ODE library.
2-Aug-2004
	- Eric Sunshine localized the faked-up `socklen_t' from csdef.h to
	  csutil/sockets.h so that the type is faked up only if requested by
	  explicit inclusion of csutil/sockets.h. This helps to prevent it from
	  polluting the type-space of external projects which generically
	  #include <cssysdef.h>.  Also, the socklen_t typedef is now only
	  invoked if some other entity (such as an external project) has not
	  already faked it up via a #define, since the #define would cause the
	  typedef to morph into a semantic error.
	- Eric Sunshine retired the long-deprecated CS_SYSDEF_PROVIDE_SOCKETS.
	  Instead, #include <csutil/sockets.h> explicitly.
	- res made the following changes:
	    - Added remarks to some functions taking UTF-8 strings about the
	      fact that they take UTF-8 strings.
	    - Changing phystut so it spawns new objects a bit into the
	      viewing direction.
	    - Updated sprcal3d to latest cal3d CVS.
	- Eric Sunshine updated the cal3d "sufficiently recent" check in
	  configure.ac so that it demands the latest CVS version of cal3d.
1-Aug-2004
	- Eric Sunshine made csBaseEventHandler::HandleEvent() protected rather
	  than private. This makes it possible for subclasses to deal with
	  special cases without having to jump through excessively ugly
	  hoops. For example, a client employing AWS will need to invoke
	  iAWS::HandleEvent() in order to give AWS first crack at the event. If
	  iAWS::HandleEvent() returns false (that is, did not handle the
	  event), then the event should be passed along to
	  csBaseEventHandler::HandleEvent() for dispatch as usual. Added an
	  explicit warning against overriding csBaseEventHandler::HandleEvent()
	  except for special cases, such as this.
	- Eric Sunshine renamed the following global header files in order to
	  avoid possible conflict with headers installed by other packages:
	    platform.h --> csplatform.h
	    qint.h     --> csqint.h
	    qsqrt.h    --> csqsqrt.h
	    volatile.h --> csconfig.h
	- Eric Sunshine renamed the following functions in order to avoid
	  global namespace pollution:
	    QRound() --> csQround()
	    QInt()   --> csQint()
	    QInt8()  --> csQint8()
	    QInt16() --> csQint16()
	    QInt24() --> csQint24()
	    qsqrt()  --> csQsqrt()
	    qisqrt() --> csQisqrt()
	- Eric Sunshine renamed the following macros in order to avoid global
	  namespace pollution:
	    WIN32_VOLATILE --> CS_WIN32_CSCONFIG
	    COMP_GCC       --> CS_COMPILER_GCC
	    COMP_VC	   --> CS_COMPILER_MSVC
	    COMP_BC        --> CS_COMPILER_BCC
	    OS_DOS         --> CS_PLATFORM_DOS
	    OS_WIN32       --> CS_PLATFORM_WIN32
	    OS_UNIX        --> CS_PLATFORM_UNIX
	    OS_MACOSX      --> CS_PLATFORM_MACOSX
	    PROC_FOO       --> CS_PROCESSOR_FOO
	    CS_PROCSIZE    --> CS_PROCESSOR_SIZE
	    DO_NASM        --> CS_USE_NASM
	    DO_MMX	   --> CS_USE_MMX
	- Eric Sunshine removed the obsolete USE_PLUGINS configuration
	  property. The Jam build system now instead provides "variants", such
	  as `static'.
	- Eric Sunshine removed the obsolete JAMCONFIG_READ configuration
	  property. Both CS and 'jamtemplate' now use the more standardized
	  `Jamfile.in --> Jamfile' configuration mechanism for determining if
	  the project has been configured.
	- Eric Sunshine changed configure.ac so that it emits the header
	  property CS_USE_FAKE_SOCKLEN_TYPE to csconfig.h rather than emitting
	  the explicit '#define socklen_t int'. csdef.h now fakes up socklent_t
	  in an appropriate manner if CS_USE_FAKE_SOCKLEN_TYPE is defined.
	- Eric Sunshine fixed bug in the ObjTagMetaData rule (unix.jam) where
	  it was placing plugin meta-data in a section named ".crystal",
	  despite the fact that csGetPluginMetadata() (bfdplugins.cpp) expects
	  the section to be named ".crystalspace" (at least as of 8 July 2004).
30-Jul-2004
	- Eric Sunshine fixed bugs in csInitializer::OpenApplication() and
	  CloseApplication() where they created broadcast events on the stack.
	  This did not work well if clients attempted to take ownership of the
	  received events via csRef<> or IncRef(), for instance.
	- Eric Sunshine fixed several compilation warnings.
	- Eric Sunshine fixed bad side-effect of 29-Jun-2004 change to
	  flags.jam which fixed problem where LFlags invocations within
	  Jamfiles for plugin modules were not being respected during creation
	  a "static" variant. Unfortunately, as a side-effect, this caused an
	  explosive inclusion of multiple copies of LINKLIBS and PLUGIN.LFLAGS
	  to be added to the linker flags for the static variant, which
	  overflowed Jam's command-line length limitation.
29-Jul-2004
	- Eric Sunshine made the following changes:
	    - The cosf() check in configure.ac is now run with the C++ compiler
	      rather than the C compiler.  This allows cosf() to be detected
	      when it is a C++ compiler built-in, thus giving positive results
	      more frequently (such as with older MacOS/X, which previously
	      failed the test).
	    - Added a <cmath> configure.ac check.  If present, then it is
	      included by csdef.h before faking up cosf() and friends (if
	      needed).  This works around potential problem where the faked-up
	      functions could cause errors in <cmath> if it was later included.
	- Eric Sunshine fixed many compilation warnings throughout the project.
28-Jul-2004
	- Erotoman added MEL script for exporting Maya models
	- Eric Sunshine fixed csjava/Jamfile so that it constructs the
	  shared-library name correctly on all supported platforms:
	    MacOS/X : libcsjava.jnilib
	    Unix    : libcsjava.so
	    Windows : csjava.dll
	- Eric Sunshine fixed the Java SDK check in configure.ac so that it
	  adds "-framework JavaVM" to JAVA.LFLAGS on MacOS/X.
	- Eric Sunshine fixed bug in CS_CHECK_PROG_VERSION() (progver.m4) where
	  it would become confused and crash if the version output of a program
	  included multiple lines containing strings which appeared to be
	  version numbers. For instance, on MacOS/X, `swig -version' emits two
	  lines which fit the Swig check version number template:
	    SWIG Version 1.3.21
	    Compiled with g++ [powerpc-apple-darwin7.4.0]
	- Eric Sunshine fixed problem in csjava/Jamfile which caused Jam to
	  complain that it did not know how to create crystalspace.jar at
	  install time if the archive had not already been created by 'all' or
	  'csjava'. This problem also caused the makefile emulation setup by
	  configure.ac to fail.
	- Eric Sunshine applied some corrections to the Swig input files,
	  partly based upon a patch submitted by Brendon Costa. This fixes
	  some, but not all, Java compilation errors in Swig-generated code.
	  Also applied Brendon's patch to SimpleRoom.java. In addition to
	  addressing the remaining Java compilation errors, we still also need
	  to fix the RequestPlugins() bug (tracker #858626).
	- Eric Sunshine worked around Swig 1.3.21 bug where it generates
	  invalid Java code for the iConfigManager enumeration. The illegal
	  emitted code has the form:
	    public final static int ConfigFoo = iConfigManager::PriorityFoo;
	  rather than the legal:
	    public final static int ConfigFoo = iConfigManager.PriorityFoo;
	- Eric Sunshine fixed bug in the iEventOutlet %typemap(javacode)
	  override which prevented the iEventOutlet::equals() method from
	  being synthesized.
	- Jorrit fixed null3d renderer to the Prepare changes that were
	  done yesterday. I forgot to remember that the texture was already
	  prepared which could have bad consequences.
	- Eric Sunshine fixed bug in csArray::DeleteRange() where it failed to
	  destroy (invoke the destructor of) the last object in the range.
	  Reported by Bedrich Zaba <frogbride@seznam.cz>.
	- Peter Amstutz fixed the wxgl canvas to work on Microsoft windows
	  and added the missing wxwin.h header.
27-Jul-2004
	- Peter Amstutz added the wxgl canvas (initially developed by
	  Daniel Fryer) which makes it fairly easy to embed Crystal Space
	  into a WxWindows application using wxGLCanvas.  Mouse
	  and keyboard events are translated from WxWidgets to Crystal
	  Space, so users have the option of using either the CS or
	  WxWidgets event systems for getting input.  Note: currently
	  only supports OpenGL; the software renderer cannot be used
	  with this canvas.
	- Jorrit changed iRegion->Prepare() so that it now also frees
	  images at the end. iEngine->Prepare() already did that but it
	  was forgotten in iRegion->Prepare(). This can save up a lot of
	  memory.
	- Jorrit did a big change and cleanup to the way that the texture
	  manager works. It is no longer needed to Prepare() textures
	  or materials. So iTextureHandle->Prepare(),
	  iMaterialHandle()->Prepare(), iTextureManager->PrepareTextures(),
	  and iTextureManager->PrepareMaterials() are gone. You don't
	  need to replace them with anything. This is now fully automatic.
	  The only thing that must be done when making a new texture or
	  material is using RegisterTexture() and RegisterMaterial().
	- Jorrit also reports that in addition to the API cleanup the
	  register preparation fix also fixes the NR terrain engines so that
	  they work when used in the context of a region. The NR terrain engine
	  created internal textures but didn't prepare them as it assumed
	  they would be prepared later during engine->Prepare(). However, this
	  failed when regions are used because the textures that are internally
	  created will not be part of that region and when region->Prepare()
	  is called those textures will not be prepared.
	- Jorrit fixed a bug in the thing mesh. When it warned about oversized
	  lightmaps it would still allocate the lightmap memory. For some
	  huge oversized objects this could cause a blowup of memory usage.
	  Now lighting is disabled for such polygons.
	- PK worked on the saver.
26-Jul-2004
	- Eric Sunshine made the following changes:
	    - Added 'install' targets to csjava/Jamfile.
	    - Augmented csjava/Jamfile to properly remove built targets at
	      'clean' time.
	    - Changed csjava / Swig rule so that they no longer rely upon the
	      Swig -outdir option since this option is fairly new, and not all
	      users have upgraded.
	    - Changed %ignore csArray<csPluginRequest>::Get(int) to Get(size_t)
	      in cspace.i to fix problem with Java getting confused over const
	      and non-const variations of this method.
	    - Moved SimpleRoom.java from CS/plugins to CS/scripts/java. It is
	      now installed verbatim in $(datadir)/crystalspace/java to serve
	      as an example, rather than being compiled into crystalspace.jar.
	    - Removed legacy csjava/Makefile.
	- PK started with the implementation of the thingmesh saver
	- Keith added APPEND mode flag now for filesystem files in vfs.  APPEND
	  will not work for mem mapped files or archive files--only for regular
	  files.
25-Jul-2004
        - Philip Wyett changed the order of variable initialisation culling a
          compiler warning in chunklod.cpp.
24-Jul-2004
	- Remi Bonnet moved some code from vsh inside vfs to allow other
	  apps to load mount files at run time (new API func:
	  LoadMountsFromFile)
	- PK made the following changes:
	    - Extended the iSyntaxService for iSaver.
	    - Implemented the iSaverPlugin for ballmesh.
	    - Fixed the texture saving in iSaver for images.
23-Jul-2004
	- Jorrit fixed csbench so it first removes the csbench_report.zip.
	  Not doing that causes corrupted zip files due to bugs in VFS.
	- Jorrit added a new test to csbench to do multiple objects in one
	  sector. Unfortunatelly this breaks bumpmapping for some reason.
	  To be investigated.
	- Jorrit fixed a z-fighting issue in the multi-object room.
	- Jorrit added CS_SYSDEF_PROVIDE_UNLINK to csbench in order to
	  compile on VC which doesn't have unistd.h.
	- Eric Sunshine fixed cspython/Jamfile so that "jam help" emits a
	  help message for the "pythmod" target.
	- Eric Sunshine fixed problem in cspython/Jamfile where invocations of
	  CFlags, LFlags, and ExternalLibs were dysfunctional for 'pythmod'
	  target.
        - Philip Wyett changed the order of variable initialisation culling a
          compiler warning in particles.cpp.
	- Eric Sunshine added an 'outdir' argument to the Swig rule (swig.jam)
	  which controls placement of the generated language-specific support
	  files.
	- Eric Sunshine added (the presently incomplete) cscript/csjava/Jamfile
	  for creation of the csjava module. Completed tasks are:
	    - Creates Swig-generated files.
	    - Builds csjava shared library.
	    - Invokes 'ant' to create the crystalspace.jar file.
	  Still to do:
	    - Implement install targets.
	    - Figure out how to determine correct shared library suffix on
	      MacOS/X, and utilize that suffix.
	    - Ensure that 'clean' targets are accurate.
	    - Remove legacy Makefile.
22-Jul-2004
	- Jorrit started work on adding a new test to csbench to test lots
	  of smaller objects.
        - Peter Amstutz fixed an initialization bug in the csvosa3dl
          plugin that caused a crash when compiled with visual studio
          (but not gcc).  The plugin works on Windows now.
20-Jul-2004
	- PK added GetMeshObjectType() to iMeshObjectFactory.
	- PK worked a bit on iSaver.
	- Jorrit added a new feature to bugplug to take all sectors that
	  are loaded and merge them in a single sector. All portal containers
	  will be removed too. The original sectors are still there. You can
	  return to them if you first saved the camera position with 'C'
	  (then press 'c' to return). This feature is assigned to
	  ctrl-alt-o (don't forget ctrl-d first).
	- Jorrit increased resolution of object in csbench to have a better
	  test for high poly object (roughly 32000 tris now).
	- dfryer fixed a bug (or possibly feature) in VFS where $* in vfs.cfg
	  was being treated as the app dir, not the resource dir
19-Jul-2004
	- PK made the following changes:
	    - Changed viewmesh to support the iBinarySaverPlugin.
	    - Started with the iLight dump in iSaver.
	    - Changed some code to fit the codingstyle in iSaver.
	    - Fixed the default code of the iSaverPlugin implementation.
	- Jorrit fixed the GetFactory() in the thing mesh object so that
	  it actually works now.
18-Jul-2004
	- PK changed iSaver and iSaverPlugin to support the iDocumentNode
	  system
	- PK added iBinarySaverPlugin and changed SprCal3dbinldr to support it
	- PK implemented saving of sectors and meshes
	- hangman implemented saving of camera positions
16-Jul-2004
	- res added csColor4, a descendant of csColor, with an alpha component
	  added.
	- res added a new mixmode, CS_FX_PREMULTALPHA.
	- res augmented the 'particles' particle system & physics to support
	  alpha in particle color gradients.
	- res changed the 'particles' level to vary alpha in the fire system.
	  Together with the PREMULTALPHA mixmode, the bottom part is blended
	  additive, while the upper part is alpha-blended (thus, the fire
	  looks more "firey" while the smoke stays opaque).
	- res changed csEvent to internally store the property names as string
	  IDs instead of csStrKeys to save some memory (it is expected that
	  only few distinct property names are used).
	- Anders fixed DrawSimpleMesh to be more usable in 2D drawing mode.
15-Jul-2004
	- Eric Sunshine fixed shell quoting problems from 10-Jul-2004 change to
	  GenerateWin32ManifestRc rule in win32.jam which caused 'sed'
	  expressions to crash and burn on some platforms.
	- *** RELEASED STABLE 0.98.3 ***
14-Jul-2004
	- Jorrit fixed a big bug in csSafeCopyArray.  The problem was that
	  csArray was using 'memmove' but that function is illegal in the
	  context of csSafeCopyArray.  Solved this by adding a new MemMove()
	  function to the memory allocator used by csArray.  This fixes
	  InsertSorted(), Insert(), DeleteRange(), and DeleteIndex().
	- Eric Sunshine made the following changes to the Jam build system:
	    - Added an `options' argument to the ExtraObjects rule (flags.jam),
	      along with the new option "inheritcflags" which causes the added
	      object files to inherit compiler flags set on the target's normal
	      object files (in addition to whatever flags have already been set
	      manually).
	    - Augmented LinkStaticPlugins (static.jam) so that it employs the
	      new "inheritcflags" option for the target's synthesized
	      _static_init.cpp file.  This fixes a problem with use of static
	      targets in external projects where _static_init.cpp was compiled
	      without any special compiler flags, thus it was unable to locate
	      header files, such as cssysdef.h, scf.h, etc.
	- res added an example on how to obtain the global string set to the
	  iStringSet Doxygen documentation.
        - Matze fixed a jam install bug for command-line tools on OS/X where
	  they were not assigned execute permission.
	- aarobber added a Clone() function to the catmul rom spline.
13-Jul-2004
	- Eric Sunshine changed cspace.i so that it no longer exports any
	  va_list functions, such as csPrintfV(), PerformExtensionV(),
	  PutTextV(), etc. This change was necessary because Swig emits code
	  which is invalid on platforms on which va_list is implemented as a
	  simple array. ISO C++ forbids array assignment, yet Swig-generated
	  code attempts to assign a va_list to a va_list. These functions were
	  not especially useful on the scripting side anyhow. Note that the
	  corresponding var-arg (...) functions, such as csPrintf(),
	  PerformExtension(), PutText(), are still exported.
12-Jul-2004
	- Vincent Knecht performed TeXinfo markup corrections pointed by
	  Eric Sunshine in apimod98.txi.
	- Jorrit fixed a size_t related mismatch in csEvent and iEvent which
	  caused compile errors on MacOS/X.
	- Eric Sunshine eliminated underfull 'hbox' warnings from TeX in
	  apimod100.txi.
	- Jorrit fixed a bug in the engine where upon removal of a region
	  it tried to fetch the engine sequence manager even if that plugin
	  was not loaded yet. This caused crashes at exit for Crystal Core.
	- Jorrit fixed a bug in the map loader. It forgot to register portals
	  to the current region. This caused the portal objects to linger when
	  the region was deleted.
11-Jul-2004
	- res made the following changes:
	    - Removed the fake bool stuff. Compilers that are able to deal with
	      CS' usage of templates are deemed to have a 'bool' type.
	    - Some Doxygen documentation fixes.
	    - Replaced the CS_ASSERTs with CS_ASSERT_MSGs in csutil/ref.h.
	    - Removed the flattening from iEvent. Instead, iEvent now offers
	      an attribute iterator which can be used to serialize an event
	      "from the outside". Moved flattening code into a separate helper
	      class, csEventFlattener.
	    - Removed ability to store multiple event attributes with the same
	      name.
	    - Added ability to store iBase data in event attributes.
	    - Renamed iEvent::Find() to iEvent::Retrieve() due changed return
	      value (and semantics change caused by that).
	    - Fixed copy'n'paste error in csendian.h. The int64 variant of
	      convert_endian() would use little_endian_long() instead of
	      little_endian_longlong(), causing bogus results.
	    - Fixed some 64-bit warnings in VFS.
	- res fixed ivaria/cspace.i for the recent iEvent changes.
	- Vincent Knecht added instruction for building RPMs in User Manual.
	- Luca fixed a loop in the file CS\libs\csutil\cseventq.cpp. The loop
	  was behaving not properly after the change of the management of the
	  index in the csArray class.
	- Vincent Knecht modified rpm.txi to avoid an overfull hbox error,
	  and unix.txi to not display package systems advertisement in "nottex"
	  mode.
	- Luca replaced his last commit with a better solution proposed by
	  Remi Bonnet.
10-Jul-2004
	- res fixed the Win32 manifest resource generation code to not emit
	  non-numerical characters when writing the version number - Windows
	  doesn't like non-numerical characters. Note: Not needed for CS
	  itself, but external projects may have versions with alphabetical
	  characters.
	- Keith completed commit of perf optimizations to sprcal3d loading.
	  This is mostly through avoidance of redundant calls to slow
	  functions.
9-Jul-2004
	- Jorrit fixed the engine so that before removing a sector, all
	  objects in that sector are unlinked from it. Added an
	  iSector->UnlinkObjects().
	- Jorrit fixed the iSectorList implementation in
	  iMovable->GetSectors() so that it is now safe to remove sectors
	  from the returned list.
	- Jorrit fixed the camera so that it only fires the sector listeners
	  if the sector really changes.
	- Reed Hedges added notes to the manual about removed plugins in the
	  0.98 API changes appendix
	- Vincent Knecht simplified and re-enabled levels relighting in cs.spec
8-Jul-2004
	- Jorrit fixed a compile error in partgen.
        - Matze changed some jam/configure things:
            - Install documentation in
	      $datadir/doc/$PACKAGE_NAME-$PACKAGE_VERSION.
            - Change PACKAGE_NAME from crystal to crystalspace.
	- res fixed some casts in hashmap.cpp causing grief on 64bit systems.
	- Eric Sunshine fixed a bunch of fall-out from Matze's change which
	  resulted Crystal Space being unable to find its installation
	  directory or any of its installed resources.
	    - configure.ac now emits CS_PACKAGE_NAME and CS_PACKAGE_VERSION to
	      volatile.h.
	    - Platform-specific code which attempts to determine the
	      installation location now utilizes CS_PACKAGE_NAME rather than
	      the hard-coded string "crystal".
	- Eric Sunshine made the following changes to avoid naming conflicts
	  with other packages which have "Crystal" in their names:
	    - Windows: Now searches for installed Crystal Space at
	      "Program Files\CrystalSpace" rather than
	      "Program Files\Crystal".
	    - Unix: User defaults are now stored at $HOME/.crystalspace rather
	      than $HOME/.crystal.
	    - Unix: Plugin meta-information is now stored in BFD section
	      ".crystalspace" rather than ".crystal".
	- Remi Bonnet fixed a typo in csHash::DeleteElement.
	- Jorrit added a new iCameraSectorListener interface that you can
	  implement to get notified of when the camera changes sector.
	- res changed configure to emit a CS_PROCSIZE #define to volatile.h
	  containing the processor's bit size, superseding the
	  CS_PLATFORM_IS_64BITS #define.
	- res changed configure to emit a TARGET.PROCESSORSIZE build property,
	  containing the processor's bit size.
	- res changed the software renderer to not use asm on 64bit machines.
	- res fixed the csddsimg Jamfile to add the plugin to the
	  'imageloaders' compile group.
	- res added a paragraph about data type sizes to the portability
	  guidelines.
	- Jorrit changed the particles mesh to use a csRef instead of
	  a csWeakRef for the color callback. Using a weak reference there
	  seems wrong since it is very useful to have a callback for which
	  the only reference exists in the object that is holding the
	  callback.
	- Vincent Knecht updated cs.spec:
	    - Adaptation for CS PACKAGE_NAME change.
	    - Changed Group: to Development/C++
	    - Disabled levels relighting since lightmaps aren't written where
	      expected.
7-Jul-2004
	- Jorrit fixed several compile errors for gcc 2.95 as reported by
	  Darius Dawidowski. Darius also reported a warning in spr2d
	  which turned out to be a potentially dangerous uninitialized
	  local variable.
	- Jorrit fixed a bug in the bruteblock plugin. Sometimes when walking
	  around the border the material map would get accessed out of bounds.
	- res changed csEvent to use a csHash<> to store the event attributes.
	- res made a small 64bit warning fix to csHash<>.
	- Keith added function CalculateAllBoneBoundingBoxes in sprcal3d to
	  more closely match the cal3d api.  This function is very slow in
	  cal3d and should only be called when absolutely necessary--i.e. the
	  first time the model is fully loaded. Note that calling the per-frame
	  GetBoundingBox is very efficient once this previous function has
	  setup all the base data for it.
	- Keith modified the sprcal3d loader to automatically call this
	  function when models are loaded from a .cal3d file.  Loading sprcal3d
	  models is about 4x faster now due to this refactoring.
	- *** RELEASED STABLE 0.98.2 ***
6-Jul-2004
	- Reed changed VOSA3DL to load required plugins on demand rather than
	  assume they were already loaded.
	- Eric Sunshine fixed bug in jamtemplate/app.cpp.template where it
	  asked SCF to scan CEL plugin path multiple times.
	- Eric Sunshine made parsing of MAKEFLAGS in make emulation layer more
	  robust. It should no longer be fooled by equates, such as
	  "make FOOBAR=socks all", which previously would have caused it to
	  think that the user specified -k and -s make options.
	- res made some size_t and 64 bit warning fixes to the dsplex and
	  xmlread plugins.
5-Jul-2004
	- Jorrit fixed the cs096 in csdemo.
4-Jul-2004
	- Eric Sunshine added a "sufficiently recent" test to the Cg check in
	  configure.ac.  This is needed since the CS Cg shader requires
	  features of Cg 1.2.x (at minimum).
	- Remi Bonnet fixed a bug in csColliderHelper::CollidePath. stepsize
	  arg behaved like a nbr_steps one.
	- Jorrit reverted the change from Remi because it is a dangerous
	  behaviour change. Instead Jorrit renamed the parameter and API
	  documentation to reflect what it really is and kept the old
	  behaviour.
	- Vincent Knecht updated cs.spec:
	    - Specified datadir, libdir and sysconfig switches of configure.
	    - Specified CS_CONFIGDIR in cslight commands.
	    - Re-enabled levels relighting when building NR.
	- res fixed csLightIterRenderStep::GetAttenuationTexture() to only
	  allocate the amount of memory actually required.
	- res fixed a crasher on 64 bit platforms.
3-Jul-2004
	- Remi Bonnet fixed a few signed/unsigned comparisons warnings and a
	  bug in aws where unsigned can't be used.
	- res fixed some occasions of wrong array index comparisons.
	- res fixed an MSVC compile error in glcommon2d.h.
	- Jorrit fixed the NR GL renderer so that it doesn't attempt to
	  implement floating portals if the stencil buffer is broken
	  or not available.
	- res (semi-blindly) augmented the glx canvas to use the format
	  picker.
	- res changed the glwin32 canvas to already use the GL driver database
	  during the initial pixel format selection.
	- res added a driver DB entry for old NVidia drivers with apparently
	  not-so-good-working WGL_ARB_pixel_format extensions. (NB: atm only
	  disabled Venge's particular driver. Need more checks whether other
	  drivers are affected and whether it may be a CS issue after all.)
2-Jul-2004
	- Jorrit fixed compile errors in sprcal3d and terrfunc.
	- res changed the type of csArray<> indices and sizes from int to
	  size_t. CVS has been tagged with PRE_CSARRAY_SIZE_T_INDICES before
	  the change.
	- res added a new appendix for 0.98->1.00 API changes.
	- res added a paragraph about the csArray<> index type change to the
	  API changes.
	- Jorrit added iRegion->Remove() to remove an object from a region.
	  There was already an Add() but the Remove() was missing.
	- res added a "pixel format picker" to the common GL canvas, a tool
	  that can help the platform-dependent GL canvases to iterate over
	  multiple formats (which are then tested for acceleration).
	- res updated the Win32 GL canvas to use the format picker.
	- res fixed csSCF::ClassRegistered() returning always "true".
	- res changed the mixmode of the terrain_fixed_splatting shader to a
	  sufficient <add /> instead of <destalphaadd />.
	- res added renderer caps for destination alpha and stencil shadow
	  support.
	- res augmented xmlshader to reject techniques that use destination
	  alpha when the renderer doesn't support it.
	- res augmented the stencil shadow plugin to not draw shadows when the
	  renderer doesn't support them.
	- res fixed cube map texture uploading on display modes <= 16bpp; an
	  incorrect size was calculated, causing wrong data to be sent to GL
	  and eventually a crash.
	- Eric Sunshine performed some clean up of the new apimod100.txi. Also
	  linked it into the documentation hierarchy via @import{}.
	- Eric Sunshine added a bunch of missing entries to
	  plugins/filesys/vfs/vfs.cfg.template, which is the vfs.cfg that
	  actually gets installed by "jam install".
	- *** RELEASED STABLE 0.98.1 ***
1-Jul-2004
	- Eric Sunshine augmented "jam install" so that CS/data/cube and
	  CS/data/flarge/mosaic-detail.dds are also installed.
	- Jorrit fixed a problem with meshes that didn't keep their pointer
	  to the material wrapper in a csRef. This could cause problems with
	  games that use regions to load/unload parts of the world and when
	  materials are being shared between regions. Warning! Having the
	  meshes keep materials with a real reference will not avoid the
	  material from being deleted from the engine lists.
	- res fixed the corruption of the graphics on Win32 when Alt+Tabbing
	  out and back into a fullscreen app with GL canvas.
30-Jun-2004
	- Peter Amstutz added search support to the csvosa3dl plugin,
	  so that VOS servers with search support can send the world
	  as a single large download rather than requiring many
	  separate requests.  This improves performance greatly.
	- Peter Amstutz modified the the log level of logging statements
	  in the csvosa3dl plugin so that there isn't so much
	  logging spew at the default log level.
	- Jorrit modified walktest so that the default 'perftest' command
	  does 200 frames instead of 100. That is more accurate.
	- Jorrit modified Dynavis so that it will now increase the frame
	  counter faster if it detects camera movement. By doing that the
	  history information will be updated faster in case the camera
	  moves faster. This means that Dynavis will react faster to changing
	  conditions.
	- Jorrit increased benchmark test in csbench to 2 seconds.
	- Jorrit finished the optimization in Dynavis where every occluder
	  is being tested to see how useful it was. Also added two new
	  config options to dynavis.cfg to play with this.
	- Jorrit changed csbench to report performance in a format that
	  is easier to parse using some automated processor.
	- Jorrit changed csbench to use the fastest clipping setting for the
	  further tests.
	- Jorrit changed the OR GL renderer to also report number of rendered
	  triangles when -verbose is given (similar to what NR does).
	- Jorrit did a huge optimization to the NR renderer by disabling
	  z=0 plane clipping. We have to see if this gives any problems
	  at all.
	- Luca fixed an internal compiler error which MSVC6 users would get
	  in the bugplug plugin. He replaced the recent fix he already did
	  with a more clean solution to the problem, avoiding the use of
	  ugly an #idef directive.
29-Jun-2004
	- Jorrit fixed a bug in spr3d where manually specifying sprite normals
	  didn't work.
	- Jorrit started work on a new experimental optimization in Dynavis
	  which will try to measure quality of occluders. Not enabled at
	  the moment.
	- Jorrit optimized Dynavis by allowing to use a coverage buffer that
	  is smaller in size than the screen. This can give very small
	  visibility culling errors but that should be rare (and not wider
	  or taller than a pixel).
	- Jorrit added a new config file for Dynavis where you can set
	  various options (like for example the amount of coverage buffer
	  reduction).
	- Jorrit fixed a bug in csLight for pseudo-dynamic lights. If you
	  specified a pseudo-dynamic light which is initially black the
	  influence radius would be calculated at zero and the light would
	  be ignored. Solved by not calculating the influence radius if
	  the radius is already manually given by the user.
	- Eric Sunshine added a "sufficiently recent" test to the SDL check in
	  configure.ac.
	- Eric Sunshine added csRef<> constructor and assignment operator to
	  csWeakRef<> in order to avoid ambiguous overloads when assigning
	  csRef<> to csWeakRef<>.
	- Eric Sunshine eliminated compilation warnings throughout the project.
	- Eric Sunshine fixed bug in LFlags rule (flags.jam) where it neglected
	  to apply linker flags set on plugin modules to "static" variants,
	  such as walktest_static, thus resulting in link failure.
	- Eric Sunshine fixed conflict between typedef of GLhandleARB in
	  canvas/openglcommon/glextmanager.h and /usr/include/GL/glext.h.
	- Jorrit did a small optimization to Dynavis by keeping the
	  camera transform local. Avoids a few virtual calls and also avoids
	  having to pass the camera along as a parameter.
	- Jorrit fixed a MSVC6 compatibility error with sprcal3d.
	- Reed fixed a bug in VOS/A3DL plugin: color material on static meshes
	  not set properly.
	- Vincent Knecht added building switches to cs.spec file.
	  These can be used when (re)building (S)RPM files:
	    --with debug
	    --with newrenderer
	    --with perl
	  Relighting levels is disabled for now when building NR.
	- res fixed csPixelShaderParser::GetInstructionString() appearing
	  in a "#ifdef CS_DEBUG" in the glshader_ps1 plugin.
	- Jorrit added a new small optimization to Dynavis. If inserting
	  an occluder on the coverage buffer didn't actually modify the
	  coverage and depth buffer then the occluder will be disabled for
	  a few frames (random).
	- Jorrit added a new 'toggle_ignorebadoccluder' debug command to
	  Dynavis to toggle this new feature. Also added a new
	  'Culling.Dynavis.IgnoreBadOccluders' option to dynavis.cfg.
28-Jun-2004
	- Eric Sunshine fixed csApplicationFramework destructor so that it does
	  not bomb out if csApplicationFramework::Main() was not called.
	- Eric Sunshine reverted Andrew Robberts' (aarobber) 17-Jun-2004 change
	  to csVector3 where he added anonymous union and struct around the
	  data members in order to make it simpler to set and get the vector
	  components as a float array. Unfortunately, such an anonymous
	  structure is a non-standard and unportable compiler extension which
	  is not supported by all compilers used by Crystal Space
	  clients. Instead, Eric added Set(float const*) and Get(float*)
	  methods which provide the same functionality without the dangerous
	  and unportable union/struct. Also added similar accessors to
	  csVector2 and csVector4.
	- Jorrit fixed a problem with the new Set(float*) that Eric added
	  to csVector[2-4]. The problem is that some code in CS called
	  csVector[2-4]::Set (0). This worked because that code got
	  automatically converted to Set(csVector3(0)). Now with the new
	  Set(float*) the wrong Set got called. Fixed this by adding an
	  explicit Set(float).
	- Keith Fulton added functionality to sprcal3d.  Now when you set an
	  action in sprcal3d, it remembers this and clears it explicitly when a
	  new animation is set.  If the action has completed and has already
	  been removed this has no effect, but if the action is still in
	  progress then the new animation will play accurately.  This is
	  particularly important for autolock actions which stay on the last
	  frame indefinitely.  YOU NEED CAL3D CVS AS OF 2004/06/28 TO BUILD
	  THIS.
	- Keith Fulton changed sprcal3d so that, now on initial creation of the
	  cal3d model, the bbox is calculated using frame 0 of anim 0 as the
	  base instead of the meshes as loaded.  This is because most of the
	  time 3d modelers model characters with their arms straight out
	  instead of at their sides, which makes collider creation very wrong.
	- Eric Sunshine upgraded cal3d check in configure.ac so that it demands
	  at least the 2004/06/28 version of Cal3D since this is required by
	  Keith's changes to sprcal3d.
	- Jorrit optimized Dynavis a bit. Removed an unneeded optimization that
	  caused more overhead than it is worth and also considerably cleaned
	  up the loop for FlushGeneral(). Overall this gives about a 6-8%
	  speedup on my system.
	- res made the following changes:
	    - Added a helper method to calculate tangents and bitangents for
	      triangle meshes.
	    - Updated genmesh to also provide tangent and bitangent render
	      buffers.
	    - Improved error handling in the glshader_ps1 plugin a bit.
	- res fixed the csNullCacheManager::CacheData() implementation
	  being different from prototype.
	- res changed stenciltest to vary texture usage some more.
	- Luca fixed an INTERNAL COMPILER ERROR that happens as usually on the
	  VisualC++ 6 compiler. He made a fix only for that compiler, wrapping
	  around the fix with an #ifdef.
	- Luca fixed a problem VisualC++6 users have with inner classes,
	  which by default cannot access to any non-public member
	  of the containing class.
	- Steven Geens added the ability to ask the CalCoreModel from
	  iSpriteCal3DFactoryState.
27-Jun-2004
	- res worked around a possible VC7 64bit warning in
	  csIntegralHashKeyHandler<>.
	- Jorrit changed bugplug so that it hides meshes by setting the
	  CS_ENTITY_INVISIBLE flag instead of attempting to remove it from
	  the sectors.
	- Jorrit added the ability to have multiple selected meshes in bugplug.
	  ctrl-alt-m will now accept a regexp pattern which will be used to
	  match all meshes in the current sector.
	- Jorrit fixed a bug in HitBeamObject/HitBeamOutline of bruteblock
	  plugin. Now it appears to work correctly.
	- Luca fixed a problem VisualC++6 users have with inner classes,
	  which by default cannot access to any non-public member
	  of the containing class.
26-Jun-2004
	- Jorrit added a new bugplug command to switch visibility culler of
	  the current sector. ctrl-shift-1 is assigned to switch to frustvis
	  and ctrl-shift-2 is assigned to switch to dynavis.
	- Jorrit added a new bugplug command to select a mesh by name.
	  Assigned to ctrl-alt-m.
	- Jorrit changed bugplug to use a weak reference to point to the
	  currently selected mesh. That avoids a crash at exit when
	  selecting meshes.
	- Jorrit also changed bugplug to use a weak reference for the
	  visibility culler.
	- Jorrit fixed bounding box and bounding radius drawing for bugplug
	  with the new renderer.
	- Jorrit added four new commands to bugplug to display the base,
	  colldet, viscull, or shadow polygon mesh for the selected mesh.
	  Commands are assigned to ctrl-alt-c, ctrl-alt-v, ctrl-alt-s,
	  or ctrl-alt-b.
	- res fixed a few VC7 64bit portatibility warnings and put down
	  comments like "@@@ FIXME 64bit" at problematic to-be-fixed places.
	- res enabled VC7 64bit portatibility warnings for libraries.
25-Jun-2004
	- res removed a small but unnecessary condition statement from
	  particles.cpp.
	- Jorrit fixed iEngine->GetNearbyObjects() and GetNearbyMeshes() so
	  that they correctly work for space warping portals too. This is
	  untested!
	- Jorrit did an optimization to the OPCODE plugin. Instead of
	  requesting polygons and triangulating it will now directly request
	  the triangles. This is more optimal because many meshes actually
	  support triangle meshes more efficiently than polygon meshes.
	- Jorrit implemented support for real collision detection (using
	  iPolygonMesh) for both chunklod and bruteblock terrain engines.
	  Also removed the specialized support for collision detection in
	  walktest as that is no longer needed.
	- Jorrit added a new 'cd resolution' lod value for bruteblock which
	  controls the resolution of the collision detection mesh.
	  By default it will be 256x256.
	- Jorrit reverted a change to data/terrainf/world as it causes
	  huge z-fighting on GF4 Go.
	- Jorrit attempted to implement HitBeamObject/HitBeamOutline for
	  bruteblock plugin. Untested at this moment.
	- res made the following changes:
	    - Updated OR renderers for the recent iGraphics3D changes.
	    - Fixed plugins/video/canvas/glwin32/directdriver.cpp to compile
	      on Cygwin. Thanks to Calvin Finch for spotting this.
	    - Made some changes to bindoc to reduce bloat (ie create smaller
	      files). File format is incompatible to earlier versions, tho.
24-Jun-2004
	- Jorrit fixed a bug in the GL renderer where it would fail to test
	  for the existance of a clipper in some cases.
	- Jorrit disabled MultiSamples in r3dopengl.cfg to make comparisons
	  between NR and OR fairer (on request by Dentoid).
	- res fixed Thing material replacing for NR.
	- res fixed csbench to also set a new material on the walls for the
	  shader benchmarks.
	- res fixed wrong VFS paths to stone2DOT3.png.
	- Vincent Knecht corrected an uppercase typo in app.cpp.template file
	  which prevented inclusion of corresponding header file.
	- Jorrit started working on support for real iPolygonMesh support
	  (for collision detection) in bruteblock terrain mesh. Not functional
	  yet.
	- res changed the render buffer creation to use two distinct methods
	  for render resp. index buffer creation. When locking a buffer, the
	  previous data is now thrown away; however, this can be explicitly
	  disabled. Also, the expected range of index values has to be
	  specified upon index buffer creation. These values are later passed
	  to glDrawRangeElements(). All those changes are supposed to make VBO
	  implementations a bit happier (so they hopefully deliver a bit more
	  performance).
22-Jun-2004
	- Jorrit corrected the fps timings for csbench to use a constant.
	- Eric Sunshine augmented jamtemplate so that it creates a
	  well-commented full skeleton application object based upon
	  csApplicationFramework and csBaseEventHandler.  The skeleton even
	  properly instructs SCF to also scan for CEL plugins if the user chose
	  to enable CEL support.
	- Jorrit added iRenderLoopManager->Load(). The function was already in
	  csRenderLoopManager but not in the interface.
	- Jorrit changed csbench to use the new function.
	- Erotoman added camera_transform in csRenderMesh. This helps to fix
	  incorrect cube environment map of moving objects.
	- Erotoman added spherical environment map in glshader_fixed (not
	  fully working).
21-Jun-2004
	- Jorrit attempted to add new tests to csbench to try out a shader
	  with various techniques. Not sure if it works correctly yet though.
	  Needs more testing.
	- res fixed the shader technique test in csbench. A wrong "shader type"
	  parameter was passed to iMaterial->SetShader().
	- Jorrit attempted to extend csbench to also test the light_bumpmap.xml
	  shader. For this I had to create a new renderloop in code. The
	  visual effects seems weird so I'm not sure it is actually working.
	- res changed csbench to attach a normal map to the material used for
	  testing.
20-Jun-2004
	- Christian Bayle adapted debian scripts to the new configuration
	  options
	- Rhad added a radius_changed flag to csParticlesObject which allows
	  radius changes to have an effect without recreating the system.
	- Eric Sunshine made some small corrections to the Plugin HOWTO.
	- Luca added the support to replace a material on a polygon of a
	  thing mesh object. Actually to use this new support, it is needed
	  to define the symbol __USE_MATERIALS_REPLACEMENT__ at the top of
	  the file thing.cpp . This has been done to prevent any difficulty
	  due to this change of the source code of the thing mesh plugin. In
	  the future (after more testing and devs feedback) the symbol will
	  be removed and the new source code will be the "default" one. This
	  change has been tested successfully with OR and NR anyway.
	- Luca modified the AWS manager so that when the focus belongs to a
	  hidden component, the keyboard events are not forwarded to it.
	- Jorrit extended iShaderCompiler with a function to get all
	  priorities that a technique supports. Also added a function
	  to force compiling of a specific priority technique in a shader.
	  These new functions will be used by csbench so that it can try
	  out different techniques of a shader.
	- Keith added SetDefaultIdleAnim to sprcal3d, which allows multiple
	  idle anims to be selected from by the caller for use in
	  SetVelocity(0) calls.
19-Jun-2004
	- Rhad fixed a typo in the ode and simple physics plugins for particles
	  that was swapping the green and blue components of constant colors.
18-Jun-2004
	- Eric Sunshine added a bunch of missing 'const' directives to csSpline
	  and its subclasses.
	- Eric Sunshine fixed bug in csGetPluginPaths()
	  (csutil/generic/pluginpaths.cpp).  "jam install" places plugin
	  modules in $prefix/lib/crystal, but csGetPluginPaths() was never
	  referencing that location, so SCF would not find those installed
	  plugins.
	- res fixed csdemo after the csSpline constness changes.
	- Jorrit added a new 'csbench' application. The purpose of this
	  application is to collect benchmark and usability statistics about
	  the NR OpenGL renderer. To do that it will create a simple room with
	  a high poly object and then it will render that room for five seconds
	  with various settings for the NR GL renderer. For every run it
	  will print out the performance and also make a screenshot. All
	  this information is collected in 'csbench_report.zip'.
	  This application is not finished yet. The basic framework is there
	  and it currently also does two tests already but more tests will
	  follow.
	- Jorrit added a new iGraphics3D->SetOption() so that you can set
	  renderer specific options from within the application. Implemented
	  the "StencilThreshold" option for the NR GL renderer.
	- res fixed a compile error in the glwin32 driver detection on some
	  older MinGW versions.
17-Jun-2004
	- Jorrit changed g3d->ClosePortal() to also have a new use_zfill_portal
	  flag. When this flag is set the renderer will zfill the portal area.
	  Only the NR renderers do this. With OR it is the engine itself
	  that will zfill the portal area so the OR renderers ignore this
	  flag.
	- Jorrit fixed a compilation error with OR GL renderer.
	- Jorrit fixed several issues with the rotating door in flarge so that
	  it now works perfectly in OR (these issues have to do with
	  setting up the correct render priorities and zmode flags).
	- Jorrit fixed a bug in the NR OpenGL clipper which prevented
	  z-plane clipping from working correctly in case the plane clipper
	  was not selected for the portal. This fixes the rotating door in
	  flarge for NR too.
	- Jorrit fixed 'flame' command in walktest so that it puts the
	  flame particle system at the correct position.
	- res made the following changes:
	    - Worked around non-working "inverted fog" (used by the fixed
	      terrain shaders) on certain GeForce FX cards.
	    - Improved memory usage of bindoc a bit.
	    - Fixed 'int' data handling in bindoc.
	    - Changed csMemFile to not use realloc() to work around problems
	      on VC.
	    - csConfigDocumentIterator now properly handles a 0 subsection.
	- aarobber added an anonymous union to csVector3 to allow for easier
	  accessing/storing of float* data to a csVector3
	- aarobber reverted a wrongly committed r3dopengl.cfg
	- res augmented the glwin32 canvas to also determine the version of
	  the GL driver DLL. This version can be used for comparisons in the
	  driver database.
	- aarobber extended csSpline to allow for specifying/accessing of data
	  per control point and not just per dimension.
16-Jun-2004
	- Jorrit cleaned up stencil clipping in the NR/OpenGL renderer.
	  Now mask 128 is used for both stencil clipping and floating portals
	  and mask 127 is used for stencil shadows. Also when a floating
	  portal is active normal stencil clipping is no longer used.
	  This fixes several bugs with floating portals (not enough to actually
	  fix the rotating door in flarge but in simpler cases it is working
	  very well now). Note that this is not finished yet. If there is
	  another portal (floating or not) behind the floating portal then that
	  other portal clip area is currently fully ignored. This is something
	  we have to fix too.
        - Matze made the following changes:
            - Fixed some warnings in csHashMap::Iterator.
            - Did a blind fix to csString::RTrim. It was obviously wrong and
              icc reported that. Didn't test it though.
            - Fixed some more pointless consts in tinyxml code.
            - Fixed warnings in csProcCaps.
            - Some more small warning fixes for icc.
	- Jorrit changed g3d->OpenPortal() so that it is now called for
	  every portal instead of only for floating portals. There is a new
	  'floating' parameter which indicates if the portal floats or not.
15-Jun-2004
	- Jorrit fixed two serious problems with the NR floating portals
	  implementations (csGLGraphics3D::SetupClipPortals()):
	    - First SetupClipPortals() (which is being called by DrawMesh())
	      itself calls DrawMesh() which can cause bad things to happen.
	    - Second, SetupClipPortals() simply ignored the portal/polygon
	      normal for setting up the stencil. This means the z-buffer
	      contents of the portal would be incorrect.
	  Unfortunatelly both fixes don't yet solve floating portals completely
	  with NR. Have to investigate further.
	- Jorrit applied a patch to walktest from Pascal Kirchdorfer
	  (kirchdorfer@users.sourceforge.net). This patch makes sure walktest
	  again correctly resizes when the window is resized. This was broken
	  when this resizing functionality was added to csView by Pascal.
	- Jorrit added a missing clipportal_dirty = true to the NR GL renderer
	  BeginDraw() implementation.
	- Jorrit added dumping of material and textures to bugplug
	  'dumpeng' command.
	- Jorrit extended iLoader->LoadLibraryFile() so that it now also
	  has a checkDupes parameter (default false). Also the checkdupes
	  parameter from LoadMapFile() is passed along to LoadLibraryFile()
	  if the map contains 'library' statements.
	- Jorrit added a new attribute 'checkdupes' to 'library'.  So, if you
	  say:
	    <library checkdupes="true">somelib.lib</library>
	  Then during loading of the library it will check for duplicate
	  objects (factories, textures, materials, ...) and don't load them
	  if they are already loaded in the engine.
	- res added iterator support to csConfigDocument.
	- res added an assignment operator to csStrKey.
	- res fixed a crash in the glwin32 canvas due a non-opened ext manager.
14-Jun-2004
	- Jorrit implemented correct static lighting for static lod. In case
	  of casting shadows, the lowest detail object that has a shadow
	  caster will be used. In case of receiving shadows all children
	  will get the shadows.
	- res made some small comment changes in ivideo/shader/shader.h and
	  csutil/csuctransform.h.
	- Remi Bonnet added DeleteElement() and NextNoAdvance() to csHash.
	- res augmented the cslibs configure check to pass a "--compiler" flag
	  along to cslibs-config. This will be utilized by the next
	  cs-win32libs version to choose correct compiler-specific libs.
	- res updated the docs for a new cs-win32libs release.
	- res (with help from Manolo Padron Martinez) fixed a crash with
	  terrainf that seemed to occur on certain NV hardware.
13-Jun-2004
	- res changed the Win32 thread error reporting to be less
	  macro-centric.
	- Rhad fixed use_manual_colors in genmeshes by adding handling to
	  csGenmeshMeshObject::PreGetShaderVariableValues.
	- Rhad altered csGenmeshMeshObject::PreGetShaderVariableValues to use
	  the existing renderbuffer if the new data set will still fit inside.
	- res fixed constness support in the GL extension manager.
	- res changed the simple mesh to use some const members.
	- res changed iRenderBuffer->CopyToBuffer() to accept const data.
	- res slightly changed the genmesh color buffer size check to use
	  '!=' instead of '<'.
	- Eric Sunshine upgraded the "Creating an External Application" HOWTO
	  so that it discusses the 'jamtemplate' utility, and so that it
	  discusses MacOS/X in the older Makefile-based section.
	- Eric Sunshine fixed cs-config/Makfile.template and the
	  cs-config/makevar.macosx fragment so that it works for creation of
	  external Makefile-based projects on MacOS/X.  Previously, it was
	  quite broken.  Added cs-config/appwrap.sh, which allows external
	  application Makfiles to create proper Cocoa application wrappers on
	  MacOS/X when using a Makefile-based build.  (This is now documented
	  in the HOWTO.)
12-Jun-2004
	- res made all Win32 platforms, not only VC, use CS' own opendir() etc
	  functions.
	- res changed CS' Win32 opendir() etc to use native Win32 functions
	  instead of the VC only _findfirst() etc.
	- res fixed VfsNode::FindFiles() to not remove a trailing backslash
	  from drive letters on Win32.
	- Neil Mosafi made a few fixes to the csvosa3dl plugin to make it build
	  on Windows
11-Jun-2004
	- Peter Amstutz added support for setting animation loops on
	  models to the csvosa3dl plugin
	- Peter Amstutz added code to support the iMozilla plugin in
	  csvosa3dl (but #ifdef'd out since the iMozilla plugin has
	  not been comitted yet).
10-Jun-2004
	- res fixed the OR renderers for the recent DrawSimpleMesh() changes.
	- res fixed the Fixed FP plugin to reset the multitexturing setup on
	  deactivation.
	- res fixed the software shader plugin. They don't really do anything,
	  but even failed that. Instead of the SW shaders, a multipass
	  lighting shader, intended for GL only, was used, causing suboptimal
	  quality.
9-Jun-2004
	- Jorrit fixed a bug in the engine where it would ignore (and not
	  cache) lighting generated for hierarchical objects. This would
	  make the door too dark because it is a child object.
	- Jorrit fixed a bug with a hardcoded alpha render priority for
	  explosions in walktest. This could cause particles to be
	  rendered after other objects sometimes.
	- Jorrit fixed the OR OpenPortal() command (for floating portals).
	  The function to do a z-fill of the buffer (to clear the z-buffer
	  for geometry in the portal) was backface culled and thus didn't
	  do anything.
	- Jorrit fixed a bug in the NR OpenGL renderer. It would sometimes
	  call glCullFace() which would bypass the statecache.
	- Jorrit attempted to fix the NR OpenPortals() command by trying
	  to use better ways to fill the portal but it didn't seem to have
	  worked very well.
	- res added a member to csSimpleRenderMesh containing the
	  transformation.
	- res augmented DrawSimpleMesh() with a 'flags' parameter.
	- res added a DrawSimpleMesh() flag to specify coordinates in screen
	  space.
	- res fixed bug 762021, 'Win32: "Sticky" main window after app quit',
	  by adding DestroyWindow() calls to the Win32 canvases Close().
8-Jun-2004
	- Jorrit fixed a bug in the FindByNameWithChild() function in the
	  engine. This function would crash if there were unnamed meshes
	  in the map file.
	- Jorrit discovered that the csMath3::Area3() function was wrong
	  in CS. It didn't actually calculate the area. Because changing
	  this function is pretty dangerous I decided to make two new
	  functions:
	    csMath3::DoubleArea3(): which will calculate the real
	    double area (but not signed) with a working formula.
	    csMath3::Direction3(): which will return something <0 or
	    >0 depending on the direction of the triangle.
	- Jorrit renamed csPoly3D::GetSignedArea() to GetArea().
	- Neil Mosafi changed odedynam's default move callback to not call
	  UpdateMove() unless something has actually changed.
	- Eric Sunshine fixed 2-Jun-2004 bug in msvcgen.jam which caused
	  --accept and --reject patterns to be ignored by msvcgen.pl.
	- Eric Sunshine removed the `eventtest' program.  Although useful when
	  making low-level modifications to the event system, it is not
	  otherwise especially meaningful to have around.  To make it easy to
	  recover the program if revival is warranted or if testing needs to be
	  done, it has been tagged in CVS as EVENTTEST_OBSOLETE.
	- Eric Sunshine fixed bug in csExpandPath() for Windows
	  (csutil/win32/winsyspath.cpp) where it neglected to convert
	  Cygwin-format paths to Windows format before invoking the low-level
	  Win32 path manipulation functions on the path.  Hopefully, this will
	  resolve problem where csGetConfigPath() (csutil/win32/instpath.cpp)
	  failed to respect CRYSTAL environment variable under CYGWIN.
	- res did the following changes for map2cs:
	    - Fixed map2cs to use csStrings instead of fixed-size buffers for
	      map parsing. map2cs can now handle much longer tokens.
	    - Added a sanity to entity property parsing to detect malformed
	      maps.
	    - Added a hack to the map2cs parser to correctly return "" tokens.
	    - Fixed map2cs to not emit an empty "_defaultsky" thing if no
	      skybox was specified.
7-Jun-2004
	- Jorrit added an assignement operator to csHashMapReversible.  This
	  actually fixes the crash at exit bug for some of the CSWS apps.
	- Jorrit also added fixed the csEvent assignement operator so that
	  it copies the 'attributes' field too.
	- Jorrit enhanced the build instructions so they invite people to try
	  out the new renderer first.
	- Jorrit updated the FAQ. Removed a few outdated entries, fixed a
	  few wrong statements, and clarified a few entries.
	- Jorrit updated the wrong link to the related projects page in
	  the documentation.
	- Jorrit updated the features list in the documentation.
	- Jorrit updated the collision detection howto to talk more about
	  OPCODE plugin and also changed this in some other parts of the
	  documentation.
	- Jorrit did some additional updates to the documentation:
	    - Updated link to the sunsite data directory from cs096 to cs098.
	    - Updated feedback chapter a bit.
	- Jorrit removed the terrbig terrain engine. It is old, obsolete
	  and unmaintained. It is better to use the NR terrain engines in any
	  case. Before removing I tagged with TERRBIG_OBSOLETE.
	  Note that tbconv and tbtut are also removed.
	- Peter Amstutz removed #ifndef CS_USE_NEW_RENDERER from
	  sprbuild.cpp which caused models loaded using the crossbuilder
	  plugin to not work in NR!
	- Jorrit fixed the parsing of <portaltraversal> so that you can now
	  also safely say <portaltraversal/> instead of
	  <portaltraversal>yes</portaltraversal>. Same for <zoffset/>.
	  Fixed a few other cases in CS where synldr->ParseBool() was used
	  wrong (parsing of heightmap generation, <alwaysanimate/> for
	  procedural textures, <persistent/> for render steps, and terrfunc
	  parser).
	- Jorrit added two entries to the FAQ.
	- res fixed halos for OR (and also a mem leak related to NR halos).
	- res removed the bumpmap stuff from csgfx, which was only used by the
	  (deprecated some time ago) bumptest app.
	- Eric Sunshine removed hard-coded version number from map2cs in
	  several locations; replaced with CS_VERSION.
	- Eric Sunshine fixed a lot of Texinfo errors and warnings in material
	  recently added to the CS manual.
	- Neil Mosafi added GetObject3Ds() function to iVosSector.  This
	  returns all the loaded objects in the sector.
6-Jun-2004
	- Jorrit modified the Jamfile so that the isotest application
	  is only build with new renderer.
	- res made the following changes:
	    - Some places in GL where the COMBINE texenv mode was used also
	      check for the presence of the COMBINE ext (and not only the
	      multitexturing ext.)
	    - For Cg FPs, you can now also bind render buffers to a texture
	      coordinates by specifying "texture coordinate <Texture parameter
	      name>" as the destination.
	    - Augmented the Cg plugin with a facility to dump out debug info of
	      the used programs. Can be enabled by enabling the
	      "Video.OpenGL.Shader.Cg.DebugDump" config setting.
	- res disabled static lighting for the mesh in waterdemo, added a
	  missing FinishDraw() call and made some code cleanups.
	- Eric Sunshine fixed the Jamfile modfications by Jorrit so that they
	  work correctly with msvcgen project generation.
	- Jorrit modified the parser so that you can now nest libraries
	  (i.e. include a library from another library).
	- res added csBitArray::AreSomeBitsSet().
	- res changed the Cg VP part to have a "special" path for NV VPs where
	  the compiled VP is changed to have input matrices aligned on
	  4-register boundaries (as needed by TrackMatrixNV()). Can be turned
	  off by disabling the "Video.OpenGL.Shader.Cg.NvVpRealign" config
	  setting.
	- res added glMatrixMode to the state cache.
	- res fixed the Fixed FP to better work when no combine ext is present.
	  In this case, a fixed FP will only refuse to load if texture layers
	  are used.
	- res fixed NR halos.
	- res fixed msvcgen to properly handle template variable assignments
	  with '='s (e.g. --set=%cflags%='/D foo=bar').
	- Neil Mosafi changed the csvosa3dl plugin
	    - Fixed some confusing log messages
	    - Plugin-wide relight system which should _almost_ work perfectly
	- MatzeB reports:
	  Replaced crystal spaces VERY poor stringhashfunction with something
	  better (D.J. Bernstein algo). It's also totally unnecessary that the
	  CS hashmap only uses prime numbers has hashtablesize. That is only
	  necessary if you have a poor hash function as we had before. A more
	  efficient way is to make the hashtable use size of 2^n, this allows
	  for efficient & mask for clipping hashfunction to hasharea and allows
	  for efficient lazy algorithms for dynamically growing hashtables.
	  If I just had time to implement this stuff...
5-Jun-2004
	- res made the following changes:
	    - Added the *f versions of floor and ceil to csdef.h.
	    - csBox2 can now be constructed from a csRect.
	    - Added a method to iClipper2D to return whether the clipper is a
	      simple box or a poly clipper.
	    - Changed bugplug to also clear the Z buffer when frame buffer
	      clearing is enabled.
	    - Made csSectorIt in the engine pooled.
	    - Throughout the GL canvas and renderer(s) (primarily NR, with
	      some necessary OR fixes), changes were made to reduce the state
	      switches needed.
	    - The pixel write mask and vertex data array client states are now
	      cached by the GL state cache.
	    - The GL NR clipper now also sets a 2D clipping rect (effectively
	      a scissor rect) when using stencil clipping.
	    - Setting the "stencil threshold" to -1 essentially means "always
	      prefer plane clipping".
	    - Changed the OR to use the GL extension manager, too (instead of
	      the "custom" ext management).
	- Rhad fixed the NV specific vertex program paths for the Cg shader
	  plugin.
	- Neil Mosafi added some more dynamics code to csvosa3dl plugin, and
	  the iVosObject3D interface now exposes it's collider to the user.
4-Jun-2004
        - Andrew Craig removed misplaced return in sprcal3d as reported by
          Ingie from the mailing list.
	- Jorrit finally bit the bullet and removed the iso engine. The old
	  iso engine sources (and loader) are tagged with the ISO_OBSOLETE
	  tag so you can get them back if you want. Note that I did NOT
	  remove the 'isotest' application! Instead the isotest application
	  has been rewritten to use the 3D engine and it 'simulates' isometric
	  view only in the way that the camera moves. It does require new
	  renderer though as it uses stencil shadows.
	- Jorrit added views to the new isotest. You can switch with tab.
	- Peter Amstutz fixed an mistake in an entry in the driver database
	  "Rage128" -> "Rage 128"
	- Jorrit optimized genmesh so that with NR the lighting update
	  routine is only called if the shaders actually need color
	  information. That speeds up levels that use stencil shadows or
	  other shaders that don't require software vertex lighting.
	- Jorrit did a significant optimization in
	  csShaderVariable::SetValue() for matrices. The current
	  implementation would do 'new/delete' all the time and this is
	  VERY bad (especially with MSVC) for performance. Now it only
	  does 'new' if needed.
	- Neil Mosafi added support for a3dl:sphere to the csvosa3dl plugin.
	  Neil Mosafi added support for a3dl:cylinder to the csvosa3dl plugin.
	  It will now automatically load these objects into the engine.
3-Jun-2004
	- Eric Sunshine added MsvcGenVariable rule to msvcgen.jam, which allows
	  clients to create msvcgen %foo%-style template variables on-the-fly.
	  This rule provides access to msvcgen.pl's new --set option.
	- Eric Sunshine completely rewrote documentation for the ExternalLibs
	  rule in flags.jam.  The existing documentation was 100% incorrect and
	  highly misleading.
	- Eric Sunshine augmented jamtemplate/createproject.sh so that it can
	  optionally set up a dependency upon CEL in the generated Autoconf and
	  Jam support files.
	- Jorrit removed CollidePath() from iCollideSystem and instead
	  added that function to csColliderHelper. It is not specific to any
	  CD system so it fits better in csColliderHelper.
	- aarobber added a Clone function to iMeshObject.  None of them are
	  currently implemented and will return 0.
	- Jorrit changed the order of the include directories in Jamfile.in
	  so that $(BUILDTOP) include is used before the global include
	  in CS. That fixes compilation of CS in another build dir.
	- Jorrit started work on updating the isometric engine to NR. The
	  tiles display but there is a problem with scrolling. Also mesh
	  objects don't display yet.
	- aarobber fixed the iMeshObject's Clone function to return a csPtr.
	- aarobber added a Clone function to iMeshObjectFactory.  None of them
	  are currently implemented and will return 0.
	- aarobber implemented csParticlesObject's Clone function.
	- Jorrit fixed bruteblock. It would allocate a color buffer with
	  only room for two components per color instead of three. This
	  would crash in many cases.
	- Jorrit did a small optimization to bruteblock. Instead of getting
	  g3d from the object registry all the time it is now cached
	  in the mesh object.
	- Eric Sunshine fixed msvcgen/workspaces.jam so that librenderercommon
	  appears only in wkstypical, and librender3dcommon appears only in
	  wksnewrenderer.
        - Andrew Craig uncommented out the lock variable for sprcal3d
          animations. It was preventing animations from "locking" on the
          last frame.
2-Jun-2004
	- Jorrit reverted the change from Andres Freund that checks on the
	  presence of <params> in a mesh object. There are cases where
	  <params> doesn't have to be given so this test is invalid.
	- Jorrit fixed a bug in OPCODE where it would ignore meshes that
	  have only one triangle.
	- Jorrit fixed a bug in OPCODE that would cause it to calculate
	  wrong collision in case two transforms different from identity
	  were given.
	- Eric Sunshine added acosf() and asinf() to set of functions faked up
	  when CS_USE_FAKE_MATH_H_FLOAT_FUNCS is defined.  Needed by OPCODE.
	- Jorrit added a warning to the loader when objects are being scaled
	  in the <move>. This is not allowed by CS.
	- res fixed a copy'n'paste error in the DDS loader.
	- Jorrit and MatzeB fixed a bug in OPCODE which only occurs in optimize
	  mode and using X86 processor.  The problem is again an aliasing
	  problem between different types on the same memory address.  This is
	  not guaranteed to work in C++.  This fixes a falling through the
	  floor problem in walktest.
	- Eric Sunshine made the following changes to msvcgen:
	    - Added --set option to msvcgen.pl which allows clients to
	      create their own template interoplation variables. For example,
	      --set=cflags='/D "__CRYSTAL_SPACE__"' creates a variable which
	      can be interpolated into template files as %cflags%.
	    - Eliminated hard-coded knowledge of almost all template variables
	      from msvcgen.pl.  (The only ones still remaining are those which
	      msvcgen.pl creates itself for referencing generated material.)
	      Instead, clients now create, via --set, whichever variables they
	      require.  Consequently, removed the following options and related
	      interpolation variables:
                  --build-root          %buildroot%
                  --cflags              %cflags%
                  --debugcflags         %debugcflags%
                  --debuglflags         %debuglflags%
                  --debuglibrary        %debuglibs%
                  --lflags              %lflags%
                  --library             %libs%
                  --meta-file           %metafile%
                  --name                %name%, %upcasename%
                  --project-extension
                  --project-name        %project%, %makefile%
                  --source-root         %sourceroot%
                  --target              %target%
                  --workspace-extension
	    - Worked around corruption in generated files caused by MSYS
	      shell's insistence upon transmogrifying absolute-path-like
	      command arguments into Windows format pathnames.  For example, /D
	      would be corrupted into something like C:/Path/To/Msys/Root/D.
	      This caused havoc with MSVC compiler and linker options, such as
	      /D, /I, /nologo, etc., which were passed to msvcgen.pl on the
	      command-line.  To side-step this issue, msvcgen.jam now prepends
	      the literal "%null%" to any values passed to msvcgen.pl on the
	      command-line which are likely to trigger this unfortunate MSYS
	      behavior.  msvcgen.pl treats the %null% as just another
	      interpolation variable reference, and replaces it with the null
	      string (since %null% happens to be undefined).
	    - Changed msvcgen.jam so that it no longer passes tuples created
	      with MsvcGenConfig from msvcgen phase 1 to phase 2 via the
	      command-line since these tuples were subject to the same MSYS
	      corruption as the information passed to msvcgen.pl via the
	      command-line.  Instead, MsvcGenConfig tuples are now collected
	      directly by phase 2.
	    - Augmented the MsvcGenConfigFile rule in msvcgen.jam so that it
	      can be invoked multiple times to specify additional configuration
	      files.  Previously, clients were restricted to specifying only a
	      single configuration file.
	    - Added MSVCGEN_VERBOSE option to msvcgen.jam which makes the
	      msvcgen process very verbose when set to 'yes'.  This complements
	      the existing MSVCGEN_SILENT option.
1-Jun-2004
	- Jorrit fixed a bug in the particles loader. The test to see if a
	  factory is ok was wrong.
	- Jorrit removed unneeded copy of transformation from OPCODE plugin.
	- Jorrit fixed collision pair handling in OPCODE plugin. It was
	  assuming that the code using the CD system would call
	  GetCollisionPairs() right after calling Collide() but that
	  assumption is not true. This bugfix fixes a problem with OPCODE
	  and flarge were it would let the camera jump a bit in the main hall.
	- res changed the DDS loader to be more endian-agnostic.
31-May-2004
	- Jorrit added "IncludeDir plugins" back to Jamfile.in (it was removed
	  yesterday).  Otherwise, many video plugins failed to compile.
	- Eric Sunshine removed the ugly "IncludeDir plugins" again from
	  Jamfile.in and fixed the potentially ambiguous #include statements in
	  the various video plugins which were incorrectly referencing files
	  relative to $(TOP)/plugins rather than $(TOP).  (CS/bin/efed.pl to
	  the rescue.)
	- Vincent Knecht updated cs.spec:  Added %files entries for .inc and
	  .fun files in include/csutil/
	- Eric Sunshine applied patch from Bedrich Zaba <frogbride@seznam.cz>
	  (plus minor cleanup by Eric) which addresses the following issues:
	    - Added iSpriteCal3DState::GetAnimationTime(),
	      GetAnimationDuration(), and SetAnimationTime().
	    - Fixed bug: csSpriteCal3DMeshObject destructor failed to remove
	      the vertex buffer manager client it had registered (when
	      configured for old renderer).
	    - Fixed bug: awsCmdButton was mismanaging the reference count of
	      its `caption' member.
	    - Modified AWS manager to be able to destroy (and hide) AWS
	      components without crashing or leaking resources.
	    - Modified AWS component class to be able to catch more events
	      (such as "draw" and "preprocess").
	    - Fixed serious bugs with embedded components when awsComponent was
	      acting as a proxy for awsEmbeddedComponent.  It failed to invoke
	      methods of the wrapping object, and also was linking itself
	      rather than the wrapping object into the component chain.  The
	      bugs rendered awsEmbeddedComponent technology fairly inoperative
	      except in the simplest cases.
	- Eric Sunshine fixed awstest so that it builds again following Bedrich
	  Zaba's patch.
	- Anders Stenberg fixed splatting in bruteblock which was broke
	- Marten fixed an #include statement in csutil/win32/instpath.cpp. Also
	  fixed a typo in a comment in same file.
	- Rhad fixed csPNGImageIO::Save to correctly handle the default NULL
	  mime string by presuming the only supported format of 'image/png'.
30-May-2004
	- Jorrit fixed the lightning plugin so that it correctly gets the
	  bounding box and radius from the genmesh.
	- Eric Sunshine made the following changes to the new --with-vos
	  configure option:
	    - Now disables the VOS test if --without-vos or --with-vos=no is
	      specified.
	    - Now behaves sanely if given only --with-vos or --with-vos=yes,
	      rather than assuming that "yes" is the path to the VOS pkg-config
	      files.
	    - Fixed --help message so that it shows how the path for the VOS
	      pkg-config files can be given.
	- Eric Sunshine removed the OPCODE compile-time assertion that
	  sizeof(bool)==1 since this assertion is not satisfiable on all
	  platforms (such as MacOS/X), and since the OPCODE library itself does
	  not actually require bool to be one byte.
	- Eric Sunshine eliminated compilation warnings in csBitArray. Also
	  made minor fixes to Doxygen comment.
	- Eric Sunshine made the following changes:
	    - configure.ac now checks for MacOS/X-specific libmx.a.
	    - configure.ac now checks if libm.a or libmx.a provide
	      floating-point variations of the standard math.h functions
	      (cosf(), sinf(), etc.).  If not, CS_USE_FAKE_MATH_H_FLOAT_FUNCS
	      is emitted to volatile.h
	    - csdefs.h now fakes up floating-point variations of the standard
	      math.h functions if CS_USE_FAKE_MATH_H_FLOAT_FUNCS is defined.
	- Eric Sunshine fixed compilation errors and warnings in
	  csGLFontCache::csGLFontCache() and csGLFontCache::WriteString().
	- Eric Sunshine applied patch to csparser from Andres Freund
	  <anarazel@users.sourceforge.net> which causes it to emit a meaningful
	  error message rather than crashing if <params> is not given for
	  <meshobj> or <meshfact>.
	- Eric Sunshine fixed bug in ApplicationIcon rule in resource.jam where
	  it ignored the "platform" argument.  This caused macosx.jam, for
	  instance, to use cslight.ico (which is for Windows) as the MacOS/X
	  cslight.app icon.
	- Eric Sunshine made the following changes to the Jam build system:
	    - Changed the IncludeDir rule usage.  It must now be invoked with
	      only a single directory at a time, rather than multiple
	      directories.  The directory is now specified as a
	      whitespace-delimited list of tokens (much like with the SubDir
	      rule, except that the path is relative to the current directory),
	      rather than a raw pathname.  It now understands the
	      "ignoresubdir" option, which tells it to use the directory
	      literally rather than assuming it is relative to the current
	      subdirectory.
	    - Augmented msvcgen.jam so that it now also overrides the
	      IncludeDir rule.  It collects the specified directories and
	      applies them automatically (via /I directives) to the generated
	      project files.
	- Eric Sunshine added an example to the jamtemplate-synthesized
	  Jamfile.in which shows how to set additional compiler and linker
	  options for msvcgen.
	- res fixed the moving light in terrain. Due the Y offset it would
	  move higher and, until eventually the terrain was considered "out of
	  influence radius" for the light, causing the diffuse pass not to be
	  drawn.
	- res augmented the syntax services to also recognize the <zequal />
	  zmode.
	- res added edge drawing support (not really all edges, but close
	  enough) to the GL NR plugin.
	- res changed terrainf to use the zequal mode for the splatting
	  passes. This reduces the visibility of the seams.
29-May-2004
	- Peter Amstutz added a "--with-vos" option to the configure
	  script to set the PKG_CONFIG_PATH environment variable when
	  searching for VOS.
	- res updated bruteblock to not emit render meshes for a material for
	  a block if the material in question doesn't appear on the material
	  map (for that block).
	- res added a sanity check to the opcode glue.
	- res changed csBitArray to support resizing after init.
	- res fixed a VC6 compile error in libcanvascommon.
28-May-2004
	- Eric Sunshine fixed bug in CS/include/Jamfile where it failed to
	  install APIdeclare.inc and DbgHelpAPI.fun from csutil/win32.
	- Eric Sunshine fixed bugs in the Cc, C++, ObjC, and ObjC++ Jam rules
	  (compiler.jam and objectivec.jam) where -I/usr/local/include was
	  being mentioned before -I$SRCDIR/include, which meant that installed
	  Crystal Space headers would be found before (possibly more recent)
	  local development headers.
	- res updated Opcode to version 1.3.
	- res fixed the Opcode plugin to compile on non-Win32 platforms.
	- Jorrit made the Opcode plugin the default plugin in walktest. Also
	  changed 'walkall' target to build opcode instead of rapid.
	- Jorrit submitted a patch from Pascal Kirchdorfer
	  (kirchdorfer@users.sourceforge.net) so that the csView will by
	  default fix the view and perspective center when the window is
	  resized. He also added a new function (iView->SetAutoResize()) to
	  disable this again. Disabling this will not get back to the old
	  behaviour because if this is disabled the new csView will not even
	  attempt to fix the view rectangle.
27-May-2004
	- Jorrit fixed a bug in the engine so that engine->RemoveObject()
	  will correctly link a mesh from its parent if it is a hierarchical
	  mesh.
	- Jorrit extended thing so that when it gives an oversized lightmap
	  warning it will also show the name of the mesh instead of only
	  the name of the polygon.
	- Jorrit fixed a bug reported by Bedrich Zaba (frogbride@seznam.cz).
	  In the thing mesh the min_static_color_values csRGBpixel value
	  was initialized with 256,256,256. However csRGBpixel can only hold
	  unsigned char and 256 wraps to 0 then. This could cause performance
	  degradation.
	- Anders added a color buffer to bruteblock, currently just initialized
	  with (0.5, 0.5, 0.5) to avoid overbright terrain.
	- res optimized the GL text writer. It now does less state changes and
	  draws text with background more efficiently (via some GL blend mode
	  setup instead of using quads to create a background).
26-May-2004
	- Keith Fulton fixed bug in HitBeam code which assumed that all meshes
	  for a sprcal3d were attached to the model instance.  This is not
	  required.
25-May-2004
	- Eric Sunshine updated references to the SourceForge CVS server in the
	  user manual from cvs.crystal.sourceforge.net to cvs.sourceforge.net
	  since the former address no longer works.
	- Eric Sunshine disabled generation of the MSVC wksall workspace for
	  now since it generally just confused people who failed to read the
	  manual to learn that they should be using wkstypical.  Also, wksall
	  was not providing any specific benefit at this time since we do not
	  presently have any experimental modules (those which would not appear
	  in wkstypical).  Anyhow, experimental modules ought probably populate
	  a wksexperimental workspace, which would be much less confusing for
	  non-manual-reading users.
	- Jorrit fixed chunklod terrain engine so it calls Cleanup() on the
	  terraformer sampler after using it. This cleans up a lot of memory.
	- Jorrit fixed castshadows for chunklod. It was using a
	  CS_ALLOC_STACK_ARRAY but with a huge array. So the stack would
	  overflow. It now uses a normal memory allocation instead.
	- Jorrit removed several tests in the software renderer to correct
	  for inaccurate clipper. As far as I can see these tests are not
	  needed and they cause entire polygons to be removed if such a test
	  succeeds. This could cause severe render errors when using the
	  software renderer.
	- Keith Fulton added functions to sprcal3d to set animations by index
	  number instead of only by name.
24-May-2004
	- Jorrit added a proper copy constructor to csHashMapReversible.
	  Without that copy constructor doing a copy of such a hashmap
	  will cause the pointers to the internal hashmaps to be copied
	  instead of making new objects. This fix makes sure that it is
	  now safe to assign 'csEvent' structures. This in turn should
	  have fixed crash at exit in cswstest but that doesn't seem
	  to be the case.
	- Jorrit changed the engine plugin so that it now reports the
	  number of sectors that are drawn in case bugplug is present
	  and -verbose commandline option is given.
	- Anders made brute block terrain plugin honour the movable transform
	- res fixed some bogus ARB code in the terrain shaders.
        - Philip Wyett reduced the arithmetic within SetupMesh () in brute.cpp.
23-May-2004
	- Eric Sunshine fixed ambiguous assignment from csRef<> to csWeakRef<>
	  in csEngine::GetEngineSequenceManager().  Reported by David
	  Hendrickson <onyxkana@hotmail.com>.
22-May-2004
	- res changed CS_EMIT_BUILD_RESULT to CS_EMIT_BUILD_PROPERTY in the
	  ODE 'extern "C"' test to fix the build property emission.
21-May-2004
	- res added some cleanup code to NR halo drawing to fix the problem
	  with the disappearing HUD (or, more general, stuff not being drawn).
	- res removed the support for "normalized texture coordinates" from
	  chunklod. (The unnormalized TCs where scaled to [0..1] in the shaders
	  anyway).
	- res fixed the texture coord generation in simpleformer.
20-May-2004
	- res updated map2cs to not write <camera /> into the sky render
	  priority.
	- res re-added the ability to map2cs to have a sky without having to
	  explicitly mark faces as sky portals. Can be avoided by setting the
	  "skyportalsonly" property of worldspawn to 1.
	- res fixed worldspawn in the Hammer script.
19-May-2004
	- res fixed the VBO render buffer to bind a 0 buffer after buffer
	  creation and releasing.
	- res augmented the glwin32 canvas to support an extension
	  "setglcontext" which allows it to set it's GL context as the current
	  (useful if CS is used alongside other GL stuff).
	- res augmented the glx canvas with "setglcontext" support.
	- Eric Sunshine changed jamtemplate so that it synthesizes a Jamfile.in
	  rather than a Jamfile. The synthesized configure script creates a
	  Jamfile from Jamfile.in at project configuration time. This scheme is
	  more normalized, more standardized, requires less special-case
	  handling (there is now no difference between building in the source
	  tree or at some other location), and makes the 'distclean' target
	  100% accurate (previously, it would leak a Jamfile if the build
	  directory differed from the source directory).
18-May-2004
	- Eric Sunshine made the following change to msvcgen.jam:
	    - Fixed bug in LinkWith where, though Frank changed it to properly
	      resolve library dependencies, it nevertheless neglected to
	      consult the EXTERNALLIBS .LFLAGS and .LIBS properties for the
	      fully resolved library list.
	    - Fixed LinkWith so that it removes duplicates from the library
	      list which it assigns to DEPEND.
	- Eric Sunshine disabled MSVC6 warning C4503 "'identifier' : decorated
	  name length exceeded" which is triggered by thing.cpp/ref.h.
	- Eric Sunshine augmented the ODE check in configure.ac so that it also
	  determines if `extern "C"' should be used for the functions exported
	  by ODE.  This is needed for the cs-win32libs package which exports
	  functions with `extern "C"' to avoid name mangling so that the
	  package can be used with many different compilers.  Other platforms
	  do not need `extern "C"', nor do Windows installations in which ODE
	  has been installed manually.
	- Jorrit changed iEngine->CreateTexture() so that it asks the
	  texture format from the texture manager instead of just
	  loading CS_IMGFMT_TRUECOLOR. By doing that it is now possible
	  to load textures with alpha channel using CreateTexture().
	- res fixed sorting for partgen-type meshes. The camera_origin member
	  of the render mesh wasn't set correctly.
	- res made some optimizations to partgen: the render buffers are now
	  DYNAMIC instead of STATIC (results in an FPS boost for me) and the
	  indices aren't copied over every time, only when the index buffer
	  is created, as they don't change.
17-May-2004
	- Eric Sunshine made the following msvcgen-related changes:
	    - Added --source-root and --build-root options to msvcgen.pl, as
	      well as %sourceroot% and %buildroot% substitutions.  If
	      specified, these should be paths (typically relative) pointing at
	      the roots of the source and build trees. Template files can
	      utilize these values rather than hardcoding those paths. For
	      instance, %sourceroot% might be used to compose /I directives
	      pointing at the project's header directory, and %buildroot% might
	      be used to copy built targets to the top-level build location.
	    - Augmented msvcgen.jam so that it invokes msvcgen.pl with the
	      --source-root and --build-root options with relative paths
	      computed from invocations of the MsvcGenSubDir rule. This makes
	      it simple to refer to resources and locations within the source
	      and build trees without hardcoding the paths into the templates.
	    - Augmented jamtemplate's msvcgen template files to utilize
	      %sourceroot% and %buildroot%. It should now be possible for many
	      external projects to utilize these template files without
	      modification (even if those projects have different directory
	      structures than projects created by jamtemplate).
	    - Augmented the CS msvcgen templates to utilize %sourceroot% and
	      %buildroot%.
	- Eric Sunshine fixed CS_CHECK_PTHREAD (checkpthread.m4) so that it
	  sets cs_cv_sys_pthread_recursive=no if cs_cv_sys_pthread==no.  This
	  fixes problem where AS_IF() in configure.ac following invocation of
	  CS_CHECK_PTHREAD() resulted in a shell error if pthread was not
	  found.
	- Eric Sunshine made Jam test and usage in configure.ac more tolerant
	  of whitepsace in Jam path.
	- Eric Sunshine worked around BoostJam incompatibility triggered by the
	  Jamrules files synthesized by jamtemplate.  It was invoking FDefines
	  before jamcompatibility.jam emulated this rule for BoostJam.
	- Eric Sunshine eliminated compilation warnings in viewmesh.cpp.
	- Eric Sunshine fixed cspython/Jamfile so that the 'pythmod' module is
	  now a dependency of the 'all' and 'plugins' pseudo-targets.
	  Previously, it was a dependency only of 'install', which meant that
	  it got built only at installation time (unless the user built it
	  explicitly).
	- Jorrit removed DeleteNext() from the iterators in csHash.  These
	  functions could not compile (the 'hash' that is given to the
	  iterators is const so it cannot be modified) and since nobody seems
	  to be needing them (they are broken anyway).
	- Eric Sunshine fixed bug in Jam build system where .csplugin file (if
	  not embedded) was being installed by 'install_plugin' and 'install'
	  even if Plugin rule had been invoked with "noinstall" option.
	- Eric Sunshine added "nohelp" option to Plugin invocation for
	  'dynavis_debug' target in dynavis/Jamfile.
	- res made the following changes:
	    - Fixed msvcgen to correctly honor LibDepends dependencies.
	    - Augmented msvcgen.pl to remove duplicate supplied dependencies.
	    - Sanitized the VC7 library template. Some experimental dynamic lib
  	      related stuff crept in.
	    - Fixed a problem in jamtemplate's template7/ws.tpl that prevented
	      the Release build config from being useable.
16-May-2004
        - Philip Wyett eliminated gcc compiler warnings in simpleformer.cpp.
        - Andrew Craig enhanced viewmesh by letting the user select a mesh
          file to load when using a socket on a model.
	- Jorrit extended iKeyValuePair so that you can now attach multiple
	  values (by name) to a key value pair. GetValue()/SetValue() are
	  still supported and will set the 'value' value. Also extended the
	  map loader for this new feature.
	- res updated the "External Libs" manual page for the new cs-win32libs
	  release.
	- Steven Geens made the HitBeam methods of sprcal3d faster.
	  They require the newest cal3d cvs.
        - Andrew Craig updated viewmesh again.  You can now specify
          hardtransform rotations (via dialog box) to use when attaching
          a mesh to a socket.
15-May-2004
	- Eric Sunshine added implementation of FReverse rule to 2.4 section of
	  jamcompatibility.jam since it is missing in Jam 2.4 but is needed by
	  the overridden SubDir rule in jamcompatibility.jam and by other
	  custom rules we define.
        - Philip Wyett eliminated gcc compiler warnings in brute.cpp.
	- Eric Sunshine made the following changes to 'jamtemplate':
	    - Added 'msvcgen' support.
	    - Added --without-cs option to synthesized configure.ac so that
	      routine maintenance tasks (such as MSVC project generation) can
	      be accomplished without having CS installed.
	    - Upgraded build instructions in generated README.
	    - Fixed aesthetic problem with reported result of "build mode"
	      check in configure.ac.
	- Eric Sunshine fixed cspython/Jamfile so that it installs _cspace.so
	  (_cspace.dll) alongside cspace.py.  This was the intention from the
	  beginning, but a minor oversight placed it in the CS plugin
	  directory. Reported by Michael Franz Aigner
	  <crystal-space@amfranz.com>.
	- Eric Sunshine corrected a number of problems in the msvcgen templates
	  in CS/scripts/jamtemplate which were copied from 'crystalcore': (1)
	  removed incorrect and unnecessary defines; (2) removed incorrect
	  library paths; (3) removed incorrect library references; (3) removed
	  unused build modes; (4) fixed incorrect paths; (5) general cleanup
	  and unification.
	- Eric Sunshine made the following changes to 'jamtemplate':
	    - Now synthesizes config-msvc.h, which is used by MSVC builds in
	      which the configure script is not invoked (thus, config.h is not
	      available).
	    - Now synthesizes a project-global header which performs the
	      appropriate abstraction of importing config.h or config-msvc.h,
	      depending upon the build circumstances.
	- res added a declaration of iBase to weakref.h.
	- res added a sanity check for the sector in the NR part in
	  csEngine::Draw().
	- res changed a few header files that incorrectly had a GPL
	  boilerplate rather than LGPL.
	- res added a "struct" hash element handler.
	- res fixed a typo in Jamrules.template.
14-May-2004
	- Eric Sunshine worked around VS.NET warning C4345 in blockallocator.h.
	- Eric Sunshine augmented the Jam check in configure.ac so that it now
	  rejects 'ftjam' and other overly old versions (in addition to the
	  Apple-modified Jam, which it had already been rejecting).
	- Eric Sunshine moved the GNU libtool / Apple libtool check out of
	  configure.ac and into the project-agnostic
	  mk/autoconf/checklibtool.m4 so that it can be used by external
	  projects.
	- Eric Sunshine generalized the CS_CHECK_PTHREAD() check and moved it
	  out of configure.ac and into the project-agnostic
	  mk/autoconf/checkpthread.m4 so that it can be used by external
	  projects.
	- Jorrit fixed explo, fire, snow, spiral, and emit so that they
	  now use a single csRenderMesh (if NR is enabled) instead of
	  one for every particle. In case of a very complex emit particle
	  system that I tested with this improves performance from 10
	  to 40 fps! The explo particle systems seems broken though.
	  I have to investigate that.
	- Eric Sunshine generalized the Python SDK check from configure.ac and
	  moved it to the project-agnostic mk/autoconf/checkpython.m4 under the
	  name CS_CHECK_PYTHON(). There is also a convenience macro,
	  CS_EMIT_CHECK_PYTHON(), which emits the build properties expected by
	  the Jam system. These macros are now suitable for use by external
	  projects.
	- Jorrit fixed the explo mesh object so that it works correctly
	  again.
	- res fixed the partgen Jamfile to also contain a LibDepends statement.
	- res changed the way the texture coordinates are used in the terrain
	  plugins. chunklod now behaves like before Anders' recent terrain
	  changes, bruteblock is unfortunately not 100% compatible to this yet.
	- Jorrit added constructor and = operator to csWeakRef for assigning
	  csPtr directly. It is very common to do the following:
	    csRef<T> bla = ...; // Something that returns csPtr<T>.
	    csWeakRef<T> weakbla = bla;
	  This constructs avoids the need for the indirect assign.
13-May-2004
	- Eric Sunshine generalized the CS_EMIT_PACKAGEINFO() macro in
	  packageinfo.m4 so that it can work with any suitable emitter macro,
	  such as CS_JAMCONFIG_PROPERTY() or CS_MAKEFILE_PROPERTY(), rather
	  than being hardcoded to recognize only the literal strings "make" and
	  "jam".  (For backward compatibility, the "make" and "jam" emit
	  targets are still recognized.)
	- Eric Sunshine generalized the CS_OUTPUT_INSTALLDIRS() macro in
	  installdirs.m4 so that it can work with any suitable emitter macro,
	  rather than being hardcoded to always use CS_JAMCONFIG_PROPERTY()
	  (though it still defaults to CS_JAMCONFIG_PROPERTY() if an emitter is
	  not specified).
	- Eric Sunshine added CS_CHECK_MKDIR macro (mkdir.m4), which determines
	  the commands to create a directory and a directory tree. Assigns them
	  to shell variables MKDIR and MKDIRS, and invokes AC_SUBST(). This
	  macro is a generalization of the same functionality from CS's
	  configure.ac, which now instead employs the new macro.
	  jamtemplate/configure.template also now invokes this macro.
	- Steven Geens made some improvements to sprcal3d's HitBeam methods.
	- res fixed static lighting for chunklod.
        - Philip Wyett elimenated gcc compiler warnings in chunklod.cpp.
12-May-2004
	- Jorrit added iMaterial->GetTextureLayerCount() and GetTextureLayer()
	  to NR too (but with an empty implementation) so that we can get
	  the swig stuff to work compatible between NR and OR.
	- Jorrit removed 'waterdemo' from walkall target.
	- Jorrit removed the gtreeldr plugin. It is pretty useless.
	- Eric Sunshine augmented the Doxygen comments for iMouseDriver and
	  iJoystickDriver so that they give an indication of legal values for
	  button and joystick numbers.
	- Vincent Knecht removed calls to iTextureManager::SetVerbose() and
	  iMeshWrapper::DeferUpdateLighting in tutorial2.py script.
	- Eric Sunshine generalized the CS_EMIT_BUILD_PROPERTY(),
	  CS_EMIT_BUILD_RESULT(), and CS_EMIT_BUILD_FLAGS() macros in emit.m4
	  so that they can work with any suitable emitter macro, rather than
	  being hardcoded to always use CS_JAMCONFIG_PROPERTY() (though they
	  still default to CS_JAMCONFIG_PROPERTY() if an emitter is not
	  specified).
	- res augmented msvcgen with the ability to specify debug versions of
	  the cflags/lflags/libraries.
11-May-2004
	- Eric Sunshine made some clarifications and corrections to the
	  'simple' tutorial, AWS "getting started", and iGraphics3D Doxygen
	  comments based upon reader feedback.
	- Eric Sunshine fixed bugs in cstool/initapp.h where it failed to
	  include the headers declaring the interfaces it used in the various
	  CS_REQUEST_FOO macros it defined.  This resulted in each macro
	  querying the non-specialized version of the scfInterface<> template
	  rather than the version specialized for the particular interface if
	  the client had not itself #included the appropriate header.
	- Eric Sunshine changed the methods of the non-specialized version of
	  scfInterface<> so that they throw an assertion failure if invoked.
	  It is _always_ illegal to invoke these methods since they have no way
	  of gleaning correct information about an interface.  They exist only
	  as place-holders for the interface-specific specialized versions of
	  scfInterface<>.
	- Jorrit reverted the removal of Free() from csApplicationFramework.
	  It must work like that since it is illegal to call
	  DestroyApplication() from the application class destructor (the
	  csRef's are not cleared yet at that point)
	- Steven Geens removed the include to iutil/fontserv.h from
	  include/cstool/initapp.h.
	- res reverted Jorrit's reversion of the Free() removal. Added a note
	  to the source explaining why calling DestroyApplication() in the
	  csApplicationFramework destructor is legal.
	- res fixed include/cstool/initapp.h to correctly #include
	  ivideo/fontserv.h.
	- Vincent Knecht made the following changes to cs.spec:
	    - Prefixed source file name with URL.
	    - Building is done by the make emulation layer, which will
	      automatically call system installed jam if present, else use CS
	      provided jam.
10-May-2004
	- Jorrit added a missing file in the new 3dsmax exporter from Luca
	  Pancallo. Now it should work.
	- Eric Sunshine changed LinkPlugin rule in unix.jam so that it only
	  uses the plugin's basename as an argument to -soname rather than the
	  full path to the plugin in the build directory, since that was not
	  especially meaningful.  As a side-effect, this fixes a problem with
	  the _cspace.so module and RPM building where it complained that it
	  was unable to find "required and provided libraries".  Reported by
	  Vincent Knecht and Andre Duclos.
	- res made some minor changes to csApplicationFramework: some
	  nomenclature changes (DisplayError -> ReportError, mp_object_reg ->
	  object_reg), made object_reg protected, made dtor protected, added
	  new Free() method (to delete the instance and call
	  DestroyApplication() afterwards).
	- res removed csApplicationFramework::Free(). DestroyApplication() is
	  now called in the destructor.
	- Eric Sunshine fixed a couple resource leaks in
	  libs/generic/scanplugins.cpp where it was incorrectly copying strings
	  with csStrNew() before pushing them onto iStringArrays.  iStringArray
	  makes its own copy, so the manual copy was not needed.
	- Eric Sunshine removed the following obsolete, unused, unmaintained
	  and/or buggy modules. To simplify revival of these modules from the
	  CVS Attic, they have been tagged as indicated.
	    mdltest --> MDLTEST_OBSOLETE
	    svgalib --> SVGALIB_OBSOLETE
9-May-2004
	- Vincent Knecht made the following changes to cs.spec:
	    - Added current dir to PATH when invoking jam, so building
	      Crystal Space by rpm can be done with CS provided jam if not
	      present.
	    - Specified null2d canvas on cslight invokation.
	    - Removed reference to include/csappframe directory.
	    - Added include/ivaria/*.i to the list of devel %files section.
8-May-2004
	- res fixed csApplicationFramework to be CS_CSTOOL_EXPORT.
	- res fixed simpmap to compile again.
	- res fixed the compilation of OR renderers after the DrawMesh()
	  recent change.
7-May-2004
	- Jorrit fixed a problem with the terrain loader when parsing
	  booleans.
	- res split up csRenderMesh in 3 structures. csRenderMesh was used to
	  transport both data needed by the actual rendering and data only
	  needed by the preparating steps (e.g. shader pass setup). Now, the
	  renderer is using a stripped-down version of csRenderMesh only
	  consisting of render-relevant stuff. Also, the mesh/mix/alpha modes
	  should be modificable by the preparating steps, so they were moved
	  into a new struct as well. Now, the preparating steps can't modify
	  the csRenderMesh anymore (passed in as const), but can return mode
	  data.
	- res made csSet<>::In() const.
	- res added "shader technique tags". They allow some finer control over
	  what techniques validate than the default hardware-capability based
	  fallback system. For example, you can tag some techniques with a tag
	  "bumpmap", and later offer an option in the app to disable
	  bumpmapping, which would instruct the tag system to reject shaders
	  with a "bumpmap" tag.
	- res added some multipass techniques for the or_lighting_detail*
	  shaders.
	- res added a CS_ASSERT_MSG macro to make it possible to attach a
	  message to an assert condition (eg explain a possible reason for the
	  triggering of the assertion).
	- res added some docs to csutil/callstack.h.
	- Eric Sunshine made the following changes to csList<>;
	    - Fixed strange logic where IsEmpty() was implemented as 'return
	      (head == 0) && (head == 0)'.
	    - Made IsEmpty() const.
	    - Fixed brokeness of InsertBefore() and InsertAfter().
	      InsertBefore() was actually inserting the new item _after_ the
	      indicated item; and InsertAfter() was inserting the new item
	      _before_ the indicated item.
	    - Fixed some crash-worthy code in csList<>::Iterator.
	- Eric Sunshine updated simpmap.txi to reflect Frank's changes to
	  keyboard event handling from several months ago.
	- Eric Sunshine fixed bug in jamtemplate/Jamfile.template which
	  prevented 'clean' targets from being removed when 'distclean' was
	  invoked.
	- Eric Sunshine merged the csappframe library into cstool. Also updated
	  out-of-date csApplicationFramework documentation.
	- res added some more documentation to ivideo/rendermesh.h.
	- Eric Sunshine fixed bugs in awsEmbeddedComponent::LinkAbove() and
	  LinkBelow() where they were linking the embedded component into the
	  component list rather than the subclassed wrapper, with the result
	  that methods, such as awsManager::RecursiveDrawChildren(), were
	  invoking methods in the wrong object. (I think that other methods,
	  such as Unlink(), and possibly those dealing with 'parent' and
	  'top-child', suffer from the same shortcoming. Someone needs to
	  perform a thorough audit.)
6-May-2004
	- res fixed the NR GL renderer to handle resize events.
	- res fixed texture downsampling in the NR GL renderer. It could
	  happen that a dimension of the image became 0.
	- Anders did the following changes to terrain in NR
	    * Made chunklod use terraformer
	    * Added a new terrain renderer (bruteblock)
	    * Did various updates to terraformer (like implementing bicubic
	      filtering of heightmap data)
	    * Changed the "lod distance" lod value to "splatting distance",
	      since that is more descriptive
	    * Updated the terrain world files to reflect changes
	    * Changed the materialmap colors to... look better
	  Some problems with materialmap was introduced though (in case it
	  was not already there.) Seems to be problems related to terrain size
5-May-2004
	- Eric Sunshine worked around problem caused by Jam2.4/BoostJam
	  work-around of 2-May-2004 for problem where Jam complained about
	  inability to locate $(BUILDTOP)/Jamrules.  Unfortunately, that work
	  around resulted in volatile.h not being installed when the build
	  directory differed from the source directory.  Now employs a
	  different work-around which should make everyone happy.
	- Eric Sunshine fixed the definition of INSTALL_DATA in install.jam so
	  that it employs whitepace after the -m directive in order to be
	  compatible with older 'install' programs.
	- Eric Sunshine eliminated several gcc 2.95.4 compiler warnings in
	  chunklod.cpp.  Also a couple places in csTerrainObjectLoader::Parse()
	  where code was returning a boolean when a csPtr<> was called for.
	- Eric Sunshine worked around a bug in Swig's Perl5 module where it
	  generates garbage code when a class and instance method have the same
	  name, and when an overload of an instance method accepts variable
	  arguments.  The garbage code takes the form of accesses to
	  non-existent variables and completely illogical control flow.
	- Eric Sunshine removed the following obsolete, unused, unmaintained
	  and/or buggy modules. To simplify revival of these modules from the
	  CVS Attic, they have been tagged as indicated.
	    cssocket --> NET_OBSOLETE
	    ensocket --> NET_OBSOLETE
	    milk2spr --> MILK2SPR_OBSOLETE
	    netman   --> NET_OBSOLETE
	    netmtst  --> NET_OBSOLETE
	    rlecodec --> RLE_OBSOLETE
	- Jorrit added a new version of the 3dsmax exporter script from
	  Luca Pancallo. This version adds terrain (for NR only) and static
	  lod support.
	- Jorrit fixed a compile problem in cstool after removal of the
	  network driver.
	- Eric Sunshine fixed bug in Swig rule (swig.jam) where it failed to
	  search for the input Swig .i file in the current directory (as
	  documented) if a directory was not explicitly provided.
	- Eric Sunshine split the MsvcGenConfig rule (msvcgen.jam) into two
	  rules: MsvcGenConfig and MsvcGenConfigFile.  The problem with the old
	  unified rule was that it was impossible to assign a property a null
	  value.  Also fixed a bug in MsvcExternalLibrary where it could add an
	  empty entry to the LIBRARIES list, which would then cause a bogus
	  `--library=' option to be passed to msvcgen.pl.
	- res augmented the generated Win32 resources with a manifest.
	- res replaced the SetLODDistance() and SetErrorTolerance() terrain
	  options with the more flexible SetLODValue() mechanism.
	- Eric Sunshine fixed bug in msvcgen.jam where tokens the 'sed'
	  expression which transformed path references in the generated icon
	  .rc file were not properly protected. For instance, if the generated
	  'sed' expression was supposed to strip "$(TOP)/" from the emitted
	  icon reference, and TOP was ".", then "./" would unexpectedly match
	  any character followed by a slash, rather than matching a period
	  followed by a slash (as intended).
	- Eric Sunshine fixed bugs in jamtemplate/Jamfile.template where it was
	  invoking incorrect rules and failed to clean up generated files when
	  the 'clean' target was invoked.
	- Neil Mosafi changed the csvosa3dl plugin.  A sector will now listen
	  to updates and respond when children (obj3d and light are changed.
	  There is a separate relight thread which regularly checks if things
	  need relighting.  Added some dynamics support:
	    - Set up dynamic system.
	    - Cube to iRigidBody.
	    - Convert PolygonMesh (if static) to iRigidBody.
4-May-2004
	- Eric Sunshine made the following changes to the build system:
	    - Added ApplicationIconDefault and ApplicationIcon rules to
	      resource.jam.  ApplicationIconDefault allows querying and setting
	      the default icon(s) for all GUI and/or console applications.
	      ApplicationIcon allows querying and setting the icon for a
	      particular application, thus overriding the default icon.  These
	      rules are platform agnostic and work for all supported platforms.
	    - Added application icon support to win32.jam.  It now respects
	      icons assigned by ApplicationIconDefault and ApplicationIcon.
	    - Augmented Jamrules so that it sets a default icon for GUI
	      applications on Windows.  This means that all GUI Crystal Space
	      applications now get an icon; not just Walktest, csdemo, and
	      cslight.
	    - Added a flashy new Windows ICO in place of the old drab one.
	    - Removed the MacOS/X-specific ApplicationIconDefaultOSX and
	      ApplicationIconOSX rules.  Instead, macosx.jam now respect icons
	      assigned by the generic ApplicationIconDefault and
	      ApplicationIcon.
	- Jorrit changed iMeshWrapper->GetShadowCaster() and
	  GetShadowReceiver() so that they now only query for the respective
	  interfaces when being called. That will make it easier later to build
	  those multiplexing versions for static lod on demand.
	- Jorrit fixed a bug in the engine when it would try to do lighting.
	  It would also attempt to init and cache lighting for meshes that
	  were not in any sector. This could cause crashes as some meshes
	  assumed that they were in a sector. This fixes a bug when relighting
	  a level that defines 'meshobj' outside sectors (this is useful in
	  combination with libraries) and where you use 'meshlib' to pull
	  the object in a sector. If the 'meshlib' was not used then the
	  'meshobj' would remain in the engine without any sector.
	- res changed the ApplicationIcon Jam rule to set the icon path to
	  SEARCH_SOURCE if no path was explicitly provided. Without this
	  change, was apparently not utilized and the icon file not found.
	- Eric Sunshine applied the same SEARCH_SOURCE fix to the
	  ApplicationIconDefault rule.
	- res updated msvcgen.jam to honor application icon specified by
	  ApplicationIconDefault and ApplicationIcon.
	- res changed the cslight Jamfile to use the ApplicationIcon rule to
	  set its custom icon.
	- Eric Sunshine made the following changes to msvcgen.jam:
	    - Fully generalized msvcgen (finally) for use by external projects
	      by removing hardcoded assumptions about resource and tool
	      locations, availability, and configuration.
	    - Added new user-visible MsvcGenSubDir rule which informs msvcgen
	      where in the source tree the project files are expected to live,
	      and provides sufficient information for msvcgen to compose
	      relative paths for reference to other resources from within the
	      generated project and .rc files.  (In the future, this
	      information will also be used for "freeze" rules which copy the
	      generated files from the build directory back to the source
	      tree.)
	    - Added new user-visible MsvcGenTemplateDir rule which informs
	      msvcgen where the project template files reside.
	    - No longer blindly publishes various top-level msvcgen targets.
	      This did not make sense when msvcgen support was not enabled for
	      a particular client.  Now, only publishes targets appropriate to
	      the MSVC versions requested by invocations of MsvcGenSubDir.
	    - Eliminated dependency upon ugly libs/csutil/win32/mergres.sh
	      script
	- Eric Sunshine fixed memory leaks in csSpriteCal3DMeshObject's
	  HitBeamOutline() and HitBeamObject().  Reported by Ben Thomas
	  <ben.thomas@wickedstudios.com>.
3-May-2004
	- Eric Sunshine augmented all the "build" instructions in the user
	  manual to indicate that the project can be built with both Jam and
	  'make'.  Also added information explaining how to obtain, build, and
	  install Jam.  Finally, updated much outdated or incorrect information
	  in the "Introduction" and "Build and Install" chapters.
	- res fixed a VC6 compile error in chunklod.
	- Eric Sunshine fixed a bug in the Swig rule (swig.jam), which was
	  introduced with the large re-write of 15-Apr-2004, where it failed to
	  respect the global SWIG.FLAGS, which might be set by the configure
	  script, for example.  This problem manifested when the project was
	  configured for the new renderer (--enable-new-renderer), for
	  instance, since Swig did not know that it should generate code
	  applicable to the new renderer.
2-May-2004
	- Eric Sunshine changed pubapi.dox so that it no longer excludes
	  $(TOP)/include/csutil/win32 and csutil/unix.  In the past, these were
	  excluded because Doxygen complained about finding multiple
	  declarations of SysSytemDriver (one per platform); however
	  SysSytemDriver was finally eradicated on 23-Jul-2003, so it is no
	  longer necessary to make this exclusion.  Furthermore, these
	  directories may contain useful classes which the user might wish to
	  use (such as csWin32RegistryConfig).
	- Eric Sunshine augmented crystal.m4 so that it applies
	  CS_PATH_NORMALIZE() to the results of several cs-config invocations.
	  This should resolve a problem for some Windows users in which the
	  paths returned by cs-config were in DOS format (containing
	  backslashes), which were interpreted incorrectly by the Bourne shell
	  invoked by Jam to compile and link programs.
	- Eric Sunshine performed Texinfo mark-up correction and cleanup in new
	  material added to engine/internal.txi.  Also cleaned up the grammar
	  and performed some re-writing to make the discussion more idiomatic.
	- Jorrit started working on implementing lighting correctly for
	  static lod meshes. Currently the children of a static lod mesh
	  are not registered to the visibility culler. Since lighting
	  (precalculated lighting) is handled through the visibility culler
	  this means that these child objects are basically being ignored.
	  To solve this I'm going to work on having a iShadowReceiver and
	  iShadowCaster in the mesh itself which is going to delegate shadow
	  handling to the appropriate child(ren). Currently I only
	  added iMeshWrapper->GetShadowCaster(). This doesn't do anything
	  yet except return the shadowcaster of the mesh itself.
	- Eric Sunshine removed the difficult-to-maintain, legacy, GNU
	  make-based build system. However, in order to avoid alienating users
	  by forcing them to download, install, and use Jam, the CS configure
	  script now performs these additional tasks:
	    - If Jam is not installed, then it is built automatically on behalf
	      of the user from a local copy of the Jam source
	      (CS/apps/tools/jam) and deposited into the root of the build
	      directory.
	    - A makefile is synthesized which responds to all of the top-level
	      targets to which the Jam build system responds. The makefile
	      simply forwards these requests over to Jam with appropriate Jam
	      options to simulate 'make' output and behavior as closely as
	      possible.
	  These changes make it possible for users to continue using 'make'
	  without ever having to know or care about Jam.
	- Eric Sunshine propagated the CS_EMIT_BUILD_PROPERTY(),
	  CS_EMIT_BUILD_RESULT(), and CS_EMIT_BUILD_FLAGS() Autoconf macros out
	  of configure.ac and into the new CS/mk/autoconf/emit.m4.  These
	  macros are sufficiently generic for use in external projects now that
	  the legacy GNU make-based build system has been removed.
	- Eric Sunshine added a --disable-make-emulation switch to configure.ac
	  which allows the user to disable synthesis of the new makefile
	  emulation layer.
	- Eric Sunshine worked around problem where Jam 2.4 and BoostJam
	  complained of failure to locate $BUILDTOP/Jamrules when the source
	  and build directories differed.
	- Eric Sunshine worked around shortcoming in Jam 2.4 and BoostJam which
	  caused all buildable targets to be built when 'dumptargets' was
	  invoked. This fixes a problem where Jam would want to build all these
	  targets when the configure script invoked 'dumptargets' to synthesize
	  the 'make' emulation layer
	- res augmented the documentations for the platform-specific APIs with
	  a notice about the platform-dependency.
	- res updated snapshot.py to use 'cvs.sourceforge.net' as a hostname in
	  the CVS/Root files for generated CVS snapshots. This seems to be
	  required after some recent apparent changes in SF's CVS.
	- Erotoman fixed spr2d uvanimation in NR
	- res undid an accidential commit of csutil/win32/volatile.h.
	- Eric Sunshine augmented configure.ac's "jam" check so that it will
	  reject the seven-year old, Apple-modified Jam which ships with
	  MacOS/X.  Although, this Jam resides in a private location
	  (/Developer/Private/jam) in recent OSX releases, some users might
	  have it in their PATH anyhow.  Also, with older OSX releases, it was
	  in a publicly accessible location (/usr/bin/jam).
	- Eric Sunshine fixed bug in csperl5/Jamfile where Jam complained
	  "don't know how to make <plugins!cscript!csperl5>cswigpl5.inc" if
	  Swig was not installed.  As a side-effect, this problem caused the
	  'make' emulation synthesis performed by the configured script to fail
	  if Swig was not installed and the user had given the --with-perl
	  configure option.
	- Eric Sunshine removed the following obsolete, unused, unmaintained
	  and/or buggy modules. To simplify revival of these modules from the
	  CVS Attic, they have been tagged as indicated.
	    cloth       --> CLOTH_OBSOLETE
	    clothldr    --> CLOTH_OBSOLETE
	    cocoa2d     --> COCOA2D_OBSOLETE
	    cs2xml      --> CS2XML_OBSOLETE
	    demosky     --> DEMOSKY_OBSOLETE
	    demosky2    --> DEMOSKY_OBSOLETE
	    simplecloth --> CLOTH_OBSOLETE
	- res added a note about the CS_FX_GOURAUD removal to the API
	  modification appendix.
1-May-2004
	- Jorrit added a new data/terrainf/world which is a variant of
	  data/terrain/world that uses the fixed shaders. Keep in mind that you
	  have to do -relight on this level to get lighting.
	- res fixed some left occasions of CS_FX_GOURAUD in OR code.
30-Apr-2004
	- Eric Sunshine changed the Install* rules in install.jam so that they
	  grist the source files with $(SUBDIR). This fixes a bug where
	  like-named resources would be installed at the wrong location. For
	  instance, win32/csosdefs.h was being installed as csutil/csosdefs.h,
	  macosx/csosdef.h, unix/csosdefs.h, and win32/csosdefs.h.
	- Jorrit unified the NR and OR engine a bit more. The csEngine::Draw()
	  and StartDraw() functions are now almost the same. To do that
	  I moved some stuff out of the render loop into the engine again
	  (I don't know why that stuff was put in the render loop in the
	  first place). Removed one version of Draw() from iRenderLoop. It
	  is no longer needed now.
	- Jorrit added iSector->GetRenderLoop() and SetRenderLoop(). With
	  this function it is possible to set a different renderloop for
	  one specific sector. If this is not set (default) then the default
	  engine renderloop will be used.
	- Jorrit added a new <renderloop> tag to the sector definition so
	  that you can specify a renderloop for a sector in a world file.
	- Jorrit changed some warnings into notifies and others into errors
	  in the XML shader compiler plugin.
	- res updated the iDocument documentation by adding that a 0 iterator
	  is never returned.
	- res fixed xmlread to not return a 0 attribute iterator.
	- res slightly clarified a message in xmlshader.
	- Jorrit fixed a bug in the new portaltraversal flag. The
	  portals would be traversed anyway.
	- Jorrit started a new document that explains the inner workings of
	  the engine.
	- res changed the sprcal3d plugin to not read from the pointer to the
	  locked normals render buffer. While this doesn't make a difference
	  on drivers that don't have VBO support, it improves performances
	  when VBO is available.
	- Eric Sunshine augmented Jamrules so that it sets the property
	  "standalone" in the container "build" when the build directory
	  differs from the source directory.  Client Jamfiles can query this
	  property to conditionalize behavior.  Changed Jamfile.in so that it
	  utilizes this new property to determine if it should perform special
	  processing for the configure-generated 'include/volatile.h', rather
	  than performing the check manually.
	- Jorrit added csddsimg to the walkall target. Walktest now needs it.
	- Eric Sunshine performed a significant amount of Texinfo mark-up
	  correction and cleanup in the new engine/internal.txi.  Also cleaned
	  up the grammar and performed some re-writing to make the discussion
	  more idiomatic.
	- Jorrit worked a bit further on the internal engine document.
	- res updated the NR software renderer so that simple1 and 2 work.
	- res replaced CS_FX_GOURAUD with CS_FX_FLAT, which is doing the
	  opposite. Nowadays, gouraud shading is common and flat shading the
	  exception, so it makes more sense to have the latter explicitly
	  specified.
	- res made some smaller changes & workarounds to NR SW. Works with
	  flarge with the sense of 'work' as in 'does not crash instantly'.
	- res fixed a missing quoted string termination in csconf.mak.
29-Apr-2004
	- Marten fixed a bug in xmlshader where it assumed the syntax-service
	  was already loaded.  Now it loads it if needed.
	- Eric Sunshine rewrote gobs of unportable shell programming in the
	  jamtemplate/createproject.sh script. Also generally cleaned up and
	  unified the rest of the jamtemplate resources.
	- Eric Sunshine removed obsolete crystalspace.motion.manager.*
	  reference from csparser.csplugin.  Reported by Matthew Hawn
	  <steamraven@yahoo.com>.
	- res made the following changes:
	    - Changed the cs-config generator to not have a harcoded list of
	      libs or their dependencies, but rather extract this info from
	      the Library Jam rules.
	    - Added some new shaders and used them in walktest:
	      or_lighting_detail_alpha and or_lighting_detail_add, mimicking
	      some layer effects used by OR; reflect.xml, a simple reflection
	      shader, now used by the "car" in flarge; an OR lighting
	      compatible shader for detail textures. Those are relatively
	      cheap, but give the illusion of a higher res texture. Applied
	      to the "mosaic" material(s) in flarge.
	- res "fixed" csconf.mak for the cs-config changes by having it emit
	  hardcoded lib dependencies again.
28-Apr-2004
	- Eric Sunshine applied a few scripting-related patches from Michael
	  Franz Aigner <crystal-space@amfranz.com>:
	    - Fixed inverted logic bug when testing result of PyList_Check() in
	      TYPEMAP_IN_ARRAY_BODY().
	    - Fixed bug where TYPEMAP_IN_ARRAY_BODY() was improperly invoking
	      Swig's $descriptor() pseudo-macro with the result that it was
	      entirely dysfunctional.
	    - Published additional interfaces: iMeshWrapperIterator, iPortal,
	      iPortalContainer, iStandardReporterListener.
	- Jorrit reverted the crash fix in genmesh made by res2k earlier.
	  Better to leave the crash there until the REAL bug is fixed.
	- Jorrit fixed all mesh loaders to test if the factory is actually
	  the same type as the mesh object. That's better than just crashing.
	- Jorrit fixed the engine so that objects created from a hierarchical
	  mesh factory (<meshref> in loader) will also have SetLogicalParent()
	  called.
	- Jorrit fixed genmesh so that it now does CS_ASSERT to test for
	  the crashing condition. This bug is actually a problem in the map
	  file. The problem is that it is impossible to detect at load time
	  and we have no facility to report these kind of errors at
	  render time yet... So a CS_ASSERT will have to do for now.
	- Steven Geens fixed sockets in sprcal3d. The alignment of the
	  object in the socket was incorrect.
	- Jorrit added 'const' to several methods in iGenericRenderStep.
	- Jorrit added methods iGenericRenderStep->SetPortalTraversal()
	  and GetPortalTraversal(). These methods indicate to the render
	  step if it should traverse (draw) portal containers or not. By
	  doing this we will solve the problem that using portals in a
	  level with a complicated renderloop will cause huge overhead
	  because the portal is traversed for every step in the render loop.
	- Jorrit added a <portaltraversal> keyword for the renderstep loader.
	  If this is specified then portals will be rendered in that
	  renderstep. In most cases this should probably be specified
	  for the first step (i.e. ambient).
	- res replaced the 'inUse' member of csRenderMesh with a frame number
	  counter. If this counter is equal to the engine's frame count, it
	  means the render mesh is still in use. This change removes the need
	  to set inUse to false (and fixes some bugs where this occasionally
	  didn't happen).
	- res changed WT to allow disabling crash dumps via the
	  Walktest.Win32.Minidumps config setting. Also, for non-VC compilers
	  it's now disabled by default (not much useful there anyway).
	- res fixed a crash in bindoc when 0 was set as a node value.
	- Eric Sunshine made the following changes to the Jam build system:
	    - Introduced a new rule named Description which can be used to
	      both set and query a target's description.
	    - Changed all invocations of the Help rule (except the ones using
	      the "verbatim" option) to invocations of the Description rule
	      throughout the project.
	    - Removed the "verbatim" option from the Help rule and changed the
	      Help rule to _always_ treat its argument as verbatim.
	    - Eliminated the anomaly where Help was hard-coded to prepend
	      "Build the" to the incoming text.
	    - Augmented the Application, Library, Plugin, and ShellScript rules
	      to invoke Help automatically with the text "Build the
	      $(description)".
	    - Augmented msvcgen.jam and win32.jam to utilize the target's
	      description string (as collected by the Description rule) rather
	      than the help string (which was not necessarily appropriate in
	      the context of project files and .rc files).
	- Eric Sunshine fixed bug in Doxygen rule (docs.jam) where it was
	  invoking MakeLocate on a pseudo-target.
	- Eric Sunshine fixed bug in aws/Jamfile where the 'awsfreeze' target
	  was gristing the built source files in such a way that Jam would
	  complain that it did not know how to create those files if they were
	  needed.
	- res enabled the glRasterPos hack in glcommon2d.cpp for NR, too.
	- res fixed the interpretation of some header fields in the DDS loader.
27-Apr-2004
	- Jorrit removed ClipBSphere() from iRenderView.
	- Jorrit added a private implementation of ClipBSphere() to
	  csRenderView which is used by the portal container.
	- Jorrit cleaned up a few more routines in csRenderView. Changed
	  TestBSphere() to use the new clip planes internally. It now expects
	  a sphere in world space.
	- Jorrit changed GetRenderMeshes() in partgen/particle.cpp to
	  use CalculateClipSettings().
	- Jorrit modified terrfunc so it uses the same ClipBBox() routine
	  that is also used by the NR terrain engine.
	- Jorrit removed the now unused version of iRenderView->ClipBBox()
	  that is based on screen and camera space bbox. These are not
	  used any more.
	- Jorrit changed levtool so that it no longer validates the input
	  file (checks if it is a <world> file) if -inds or -outds is
	  used. By doing that the tool can be used to convert mesh factories
	  and other type of XML files too.
	- Jorrit added code to the chunklod (NR terrain) mesh loader so that
	  it tests the following two things:
	      - Material palette must be specified BEFORE material map.
	      - LodDistance must be set before material map too.
	- Jorrit fixed the terrain level for this change.
	- res augmented the Jam build system to support ExternalLibs for
	  libraries. The required link flags are propagated to clients of the
	  library. csutil now uses ExternalLibs to express it's dependency on
	  zlib and pthread. The hardcoded linking of all apps resp. binaries
	  against zlib and pthread has been removed from Jamrules. Also updated
	  Jam msvcgen to handle ExternalLibs for libraries.
	- Jorrit fixed an initialization error in the NR OpenGL renderer
	  with current_drawflags.
	- res fixed an occasional crash in genmesh (happens when multiple maps
	  are loaded at once for some reason).
	- Eric Sunshine added a "pythmod" Jam target to cspython/Jamfile, which
	  builds the pure Python "cspace" module. Builds and loads correctly on
	  Linux. Other platforms not yet tested.
	- Eric Sunshine fixed bugs in cspython.mak and csperl5.mak where the
	  generated cspace.py and cspace.pm files did not get installed if Swig
	  was present.
26-Apr-2004
	- Eric Sunshine fixed bugs in cross-product functions of csVector4 and
	  csDVector4 where it was accessing 'x' component of wrong vector.
	  Reported by Bernd Waibel <waebbl@gmx.dew>. Also fixed some incorrect
	  Doxygen comments.
	- Eric Sunshine augmented csperl5.mak and scripts/perl5/Jamfile so that
	  they also install *.pl files from scripts/perl5, rather than only
	  installing *.pm files.
        - Philip Wyett removed old motion manager plugin entry from
          walktest.cfg.
	- Jorrit moved the list of camera meshes from RenderQueues to
	  the sector. This change means that it is no longer required for
	  a mesh using CS_ENTITY_CAMERA to be in a render priority that
	  has the camera flag set.
	- Jorrit removed the iEngine methods which control the camera
	  render priorities.
	- Jorrit removed the 'camera' flag for render priorities in the
	  engine and the loader. The keyword is still recognized by the loader
	  but only a deprecated warning is given.
	- Jorrit modified RenderQueues for OR so that it also keeps the
	  frustum_mask. That way we can finally pass along the frustum_mask
	  to the meshes and use the same kind of clipping as is now
	  present in NR.
	- Jorrit removed iMeshWrapper::Draw(). This is not useful to have
	  as it is OR specific and only the engine is really capable of
	  drawing meshes.
	- Jorrit extended iMeshObject->DrawTest() with a frustum_mask
	  parameter (OR only).
	- Jorrit changed all mesh objects to use the new frustum_mask in OR
	  too.
	- Jorrit fixed the NR GetRenderMeshes() for the portal container class
	  so that it no longer ignores the movable transform. Moving portals
	  simply didn't work with NR.
	- Neil Mosafi added forward declare for iGraphics3D to
	  ivideo/custcursor.h.
	- Jorrit changed the 'particles' mesh object so that it now also
	  uses CalculateClipSettings.
	- Eric Sunshine augmented scripts/python/Jamfile so that it also cleans
	  up the evil .pyc and .pyo files which are excreted by Python.
	- Eric Sunshine augmented configure.ac to determine the file extensions
	  of pure Python and pure Perl modules. cspython.mak and csperl.mak now
	  utilize the results of these checks.
	- res fixed an issue with proctex flippedness in NR.
	- res augmented chunklod to also cast shadows. Activated with
	  <castshadows> mesh object parameter.
	- res fixed some coordinate swappage in chunklod, causing it to cast
	  wrong shadows.
	- res removed the user-defined exception feature from the Win32
	  assistant. This can be handled as well (if not better) by the app.
	- res added some helpers for Win32 to easily create minidumps that
	  contain some extra useful info and set up an exception handler
	  (which creates such minidumps).
	- res augmented walktest to create such minidumps.
	- res fixed some gcc warnings & errors in the minidump code.
	- Luca fixed a bug in the csIntersect3::Plane () method. It was using
	  the wrong formula to calculate the x value along the segment
	  U + x (V - U): the unknown 'x' value is got by:
	  x = [(A,B,C) * U + D ] / (A,B,C) * (U - V) and NOT got by
	  x = [(A,B,C) * U + D ] / (A,B,C) * (V - U). Look to the comments in
	  the code for more clarifications. He also set some default values
	  (and documented it) for the output arguments.
	- res changed the walktest Make-/Jamfile to link against zlib (needed
	  by the minidump code).
25-Apr-2004
	- Jorrit changed the way render priorities work in the engine. The
	  RenderQueues field no longer contains all meshes for all render
	  priorities but only the meshes with CAMERA flag set. The other
	  meshes are not needed there.
	- Jorrit added a new 'visible' array to RenderQueues. This array
	  is used with OR only and updated during visibility testing. This
	  replaces the SetVisibilityNumber() that was otherwise used. It
	  also makes OR handling of more meshes more efficient.
	  The RenderQueues.SortAll() method no longer has to test for
	  visibility as it will use the 'visible' array instead of the
	  'queues'.
	- Eric Sunshine augmented jobber.pl so that the Crystal Space version
	  number and copyright are now gleaned from the configure script rather
	  than being hard-coded into jobber.pl.
	- Eric Sunshine updated Python SDK check in configure.ac to take into
	  account new Python.framework in MacOS/X 10.3.
	- Eric Sunshine fixed bug in csPerl5::Init() where it was using the
	  unreliable VFS /this/scripts directory to initialize the interpreter.
	- Wouter Wijngaards changed plugins/aws/Jamfile. The section where
	  the awsfreeze rule is generated was using the FILES variable,
	  however, this variable was already being used for holding the
	  files for the Plugin rule. By overwriting the FILES variable with
	  only the files needed for awsfreeze, the main target was caused
	  to compile only skinlex and skinpars. All other aws*cpp files were
	  not compiled. To fix this, replaced FILES with FREEZEFILES for
	  the awsfreeze rule construction (but not for the main plugin rule).
	- Eric Sunshine fixed bug in csperl5/Jamfile where it failed to run
	  Swig to create cswigpl5.inc, upon which the csperl5 plugin depends.
	- res removed the hard-coded WAVEOUTSND settings from win32.jam and
	  instead added a configure check.
	- res also changed win32.jam to not add /usr/include/directx  as an
	  include dir to CCFLAGS resp. C++FLAGS, as this directory is already
	  checked for in the DirectX configure test.
	- res changed the PLUGIN.LFLAGS value to only include -mwindows.
	  (The old line "-mwindows -mconsole" was self-contradicting as it
	  first set the "GUI subsystem", then the "console subsystem" flags.)
	- res fixed the waveout sound driver to convert error descriptions from
	  the system to UTF-8.
	- Wouter Wijngaards changed the csfx DrawPartial() to work under the
	  new renderer, it forgot to flip the y coord.
	- res fixed a problem in csGLGraphics3D::BeginDraw(). It set
	  "current drawflags" to the "new drawflags" at the very beginning of
	  the method, causing the test for whether G2D BeginDraw() should be
	  called to always fail.
	- Eric Sunshine made the following changes to deal with recent versions
	  of Swig's Perl support:
	    - Worked around a nasty bug where Swig transforms invocations of
	      function-like macros taking zero-arguments in inline code into
	      invocations of non-function-like macros. For instance, it
	      transforms SCF_DESTRUCT_IBASE() into SCF_DESTRUCT_IBASE, which
	      later causes a compilation error since the C-preprocessor does
	      not know about this non-function-like macro.
	    - Worked around problem where Swig unconditionally #undefs Perl's
	      'ENTER' macro. This causes inline code in perlpost.i, which
	      utilizes that macro, to fail to compile.
	- Wouter removed test for images.IsValid() in GetOrigSize(), since
	  the orig size fields are set correctly already. Also the routine
	  was returning without touching the w and h, causing unpredictable
	  results. This fixes an Image View component in AWS.
	- Eric Sunshine augmented the Swig rule (swig.jam) so that it creates a
	  dependency between the "additional files" (typically generated
	  scripting files) and the main target (typically a generated C or C++
	  files). This makes it possible for the other generated files to be
	  created automatically when needed, such as when some other target (an
	  "install" target, for instance), depends upon them.
	- Eric Sunshine augmented the various Install rules (install.jam) so
	  that they grist the incoming files only if they have not already been
	  gristed. This allows those files to be properly created if missing
	  (assuming that Jam knows how to create them), whereas the old scheme
	  of unconditionally gristing the incoming names made it impossible for
	  Jam to create those files at install time.
	- Eric Sunshine fixed problems where the Jam "install" targets were
	  incorrectly installing cspace.py and cspace.pm from the
	  CS/scripts/python and CS/scripts/perl5 directories, respectively,
	  rather than installing the most recent Swig-generated versions from
	  the build directory (if Swig was available).
	- Eric Sunshine fixed bug in csPerl5::Init() (csperl5.cpp) where it was
	  passing corrupt argc/argv to perl_parse().
	- Eric Sunshine fixed bug in csperl5/Jamfile where it failed to
	  re-compile cswigpl5.cpp if cswigpl5.inc had been re-generated by
	  Swig.
	- Eric Sunshine made the following changes to the csPerl5 module:
	    - Fixed nasty bug in csPerl5::CallV() where it was returning an
	      already destroyed Perl object. Since all of the NewObject(),
	      Call(), Get(), Set(), Retrieve(), and Store() methods are
	      predicated upon this one method, everything broke; either by
	      crashing or misbehaving in highly strange and dangerous ways.
	    - Fixed several other bugs relating to reference-counting of Perl
	      and CS objects; mostly involving leaks.
	    - Fixed bugs in all iScriptObject::Get() and Set() methods where
	      they were calling non-existent methods in the corresponding Perl
	      object, thus they were entirely dysfunctional.
	    - Fixed totally broken behavior of csPerl5::Query(), which is
	      supposed to determine if an iScriptObject is actually an
	      implementation of csPerl5::Object. The query always failed.
	    - Changed the Get() and Retrieve() methods for strings in the
	      iScript and iScriptObject interfaces to deal with a properly
	      reference-counted iString, rather than a char** pointer, which
	      was quite ugly; and which, in csPerl5, would return a pointer to
	      a string inside an actual Perl object, which might disappear at
	      any time. It was highly dangerous.
	    - Augmented perl5test to also exercise iScriptObject::Set(), in
	      addition to Get().
	- Neil Mosafi fixed crash in plugins/cursor/cursor.cpp where it was
	  passing a null char* into strcmp, due to it using the internal
	  data in an uninitialised csString.
24-Apr-2004
	- Jorrit fixed a compile bug in glshader_fixed. 'friend' needs
	  'struct'.
	- Jorrit started unifying the engine a bit between OR and NR usage
	  (involves bringing the OR a bit closer to the NR in way of
	  operations).  The advantage of this is that I can clean up a lot of
	  OR specific code that way.  This unification currently involved
	  sharing the ObjectVisible callback in csSector so the same callback
	  code is used in OR and NR.
	- res fixed the rain and partgen Jamfiles to also depend on csgfx.
	- res added PACKAGE_VERSION and PACKAGE_STRING to the jobber Jamconfig.
	- res changed the render mesh holder to automatically set the inUse
	  flag of the returned mesh.
	- res added a fallback to csGLGraphics3D::SetAlphaType().
	- res augmented the chunklod mesh to support static lighting.
	  Is enabled by specifying "<staticlighting>yes</staticlighting>" in
	  the mesh object params. Although the terrain can receive shadows,
	  it can't cast them yet.
23-Apr-2004
	- Eric Sunshine fixed crasher in csSimpleConsole::Initialize()
	  (simpcon.cpp) where it would blindly access its G2D member without
	  first checking if it had managed to actually locate a canvas.
	- Eric Sunshine added check to configure.ac to determine how to disable
	  warnings about uninitialized variables. The result of this check is
	  useful for tool-generated code over which we have no control, and is
	  now utilized when building Swig-generated code for Python and Perl.
	  (To be fair to gcc, however, Swig _is_ generating crash-worthy code,
	  so the warning message is warranted.)
	- Luca fixed a compilation error that the VisualC++ 6.0 was complaining
	  about.
	- Eric Sunshine made the following changes to the build system:
	    - Augmented cspython/Jamfile so that it creates python.cex.
	    - Augmented csperl5/Jamfile so that it creates perl5.cex.
	    - Made the cspythonclean and csperl5clean targets depend upon the
	      pythonswigclean and perl5swigclean targets, respectively, so that
	      they also remove the Swig-generated files.
	    - Fixed generation of perl5.cex by cspython.mak. The script it
	      created was entirely dysfunctional and completely useless.
	- Eric Sunshine resolved a precedence issue with CS_CHECK_LIB_WITH()
	  (checklib.m4) in which it could be fooled into ignoring the path
	  given via --lib-withfoo=path if 'foo' was also installed in one of
	  the standard locations searched by the compiler and linker.
	  Specifically, it would check "path" first before checking
	  "path/include" and "path/lib", however if a version of 'foo' was also
	  installed in a standard location (other than "path"), then it would
	  never get around to trying "path/include" and "path/lib" because it
	  would find the installation at the standard location.
	- Eric Sunshine fixed bug in csGLGraphics3D::Initialize()
	  (gl_render3d.cpp) where it neglected to check if the canvas plugin
	  load request failed; leading to a crash if the canvas did not load.
	- Eric Sunshine fixed bug in csObjectRegistry::Register() where it
	  would crash if handed a null pointer. Also improved Doxygen
	  documentation of iObjectRegistry.
22-Apr-2004
	- Jorrit removed motion and motldr from Jamrules for static
	  compilation.
	- Jorrit fixed a compilation error of the engine with OR.
	- Jorrit removed the almost unused CS_CLIP_PORTAL flag for clipping
	  (was only used in the OR GL renderer). This greatly simplifies the
	  clipping routines.
	- Jorrit added a new iRenderView->CalculateClipSettings() routine
	  which calculates the clip settings out of the frustum mask. This
	  can be used by GetRenderMeshes() implementations of meshes instead
	  of calling the complicated ClipBBox()/ClipBSphere() routines. This
	  will be a lot faster.
	- Jorrit extended thing and genmesh to use the new system already.
	- Jorrit extended spr2d, spr3d, ball, and sprcal3d to use the new
	  system.
	- Jorrit temporarily fixed the clipping bug in the NR GL renderer.
	  Have to think about this a bit more though.
	- Eric Sunshine re-engineered the Doxygen rule in docs.jam to correct
	  a problem where its actions would emit warnings of the form:
	    Copy ./out/docs/html/api
	    rm: cannot remove `./out/docs/html/api': Is a directory
	- Eric Sunshine fixed problem in jobber.pl where the shell was
	  inadvertently interpreting $'s in Jamconfig creation code.  Also
	  installed on shell.sf.net the new version of jobber.pl which utilizes
	  Jam for its maintenance tasks, rather than GNU make.
	- Jorrit fixed two compile errors in CS: one in iso engine and one
	  in OR/engine.
21-Apr-2004
	- Jorrit fixed compilation of the engine plugin with OR after
	  breaking it yesterday.
	- Jorrit extended the genmesh version of HitBeamObject() so that
	  it will now return the index of the triangle that was hit.
	  That way it will also work with iSector->HitBeam() and
	  HitBeamPortals().
	- Jorrit removed the csRenderContextFrustum class and merged it with
	  csRenderContext. There is a one-to-one relationship between
	  those classes so it doesn't make sense to have the additional
	  overhead (more pointer redirection, more object management) for this.
	  Also I'm planning a big redesign of this anyway.
	- Jorrit removed several of the methods in iRenderView and put them
	  non-virtual and private to the engine in csRenderView instead.
	  All these methods are internal for the engine and should not be
	  exposed to the outside (methods like CreateRenderContext and so on).
	  This has the nice benefit of making the engine a bit faster again
	  (less virtual function calls).
	- Jorrit started a unification of the frustum culling that happens
	  in the cullers (Frustvis and Dynavis), and also the frustum
	  culling that every object does in DrawTest() (for OR) and
	  GetRenderMeshes() (for NR) using iRenderView->ClipBSphere() or
	  ClipBBox(). Currently the following steps are done:
	    - csRenderView has a new SetupClipPlanes() method that sets up the
	      current clip planes in world space for the current clipper and
	      camera.
	    - Extended iVisibilityCullerListener->ObjectVisible() with a new
	      frustum_mask parameter.  This parameter will be given by the
	      cullers and contains a bit mask telling the engine which planes
	      (out of csRenderView) are relevant (i.e.  which planes
	      potentially intersect with the object).  This is compatible with
	      csIntersect3::BoxFrustum().
	    - Enhanced Dynavis and Frustvis to pass along the frustum_mask to
	      ObjectVisible.  Both Dynavis and Frustvis already use
	      BoxFrustum() and a frustum_mask to hierarchically do frustum
	      culling on the kdtree for all objects.  So passing this bitfield
	      along comes naturally.
	    - Extended iMeshObject->GetRenderMeshes() with an extra
	      frustum_mask parameter.  The ObjectVisible() function will call
	      GetRenderMeshes() with that parameter.  Note that for OR we will
	      not support this optimization as it is hard to do there and NR is
	      the future anyway.
	    - Removed the unused iMeshWrapper->GetRenderMeshes().
	    - Extended all mesh objects to accept this new parameter in
	      GetRenderMeshes().  None of the mesh objects will actually use it
	      yet.  This is the next stage.
	    - Enhanced the Frustvis and Dynavis plugins to use the clip planes
	      as setup in csRenderView instead of having them make their own
	      clip planes.  This saves a bit of processing there.
	- Eric Sunshine eliminated Cygwin compiler warnings about types not
	  matching printf-format directives in win32/callstack.cpp.
	- Eric Sunshine fixed problem in Recurse rule in helper.jam where it
	  was using 'rule' as a variable name. This confused BoostJam since
	  'rule' is also a keyword.
	- Jorrit fixed a big booboo in the clipper enhancements he did
	  yesterday on chunklod. The results of the BoxFrustum() routine
	  were interpreted wrong which causes them to cause unneeded
	  clipping.
	- Eric Sunshine made the following changes to the Jam-based msvcgen
	  mechanism:
	    - Fixed bug where msvcgen was inserting Unix-style compiler and
	      linker flags from Jamfile invocations of CFlags and LFlags into
	      generated project files.
	    - Enhanced the MsvcGenConfig rule so that it can accept
	      configuration for the msvcgen process in both the form of an
	      external file, and in the form of key/value tuples.
	    - Removed a couple CS-specific configuration options (USE_PLUGINS
	      and USE_NEW_RENDERER) from the project-agnostic
	      mk/jam/msvcgen.jam and placed them into the new CS-specific
	      mk/msvcgen/Jamfile.
	    - Refined the way modules are selected for project-file generation
	      candidacy so that it more closely parallels the way modules are
	      selected for building by the Autoconf configure script.
	    - The new mk/msvcgen/Jamfile creates a custom Jamconfig.msvcgen
	      file for the msvcgen process on-the-fly.  This is a hybrid of a
	      filtered version of the local Jamconfig file and a boilerplate
	      file containing setting specific to MSVC.  This allows the
	      msvcgen process to take advantage of local tools (discovered by
	      the configure script) while still producing project files
	      suitable for MSVC.
	    - This set of changes concludes the high-priority work on the
	      Jam-based msvcgen facility.  The generated project files are now
	      (finally) compatible with the ones produced by the GNU make-based
	      msvcgen facility, and are suitable for actual use.
	- Eric Sunshine fixed bug in "missing file type" warning in
	  CompileObject rule in objects.jam.  It was referencing wrong input
	  argument.
	- Eric Sunshine converted jobber.pl to utilize Jam for all maintenance
	  tasks, rather than using GNU make.  (Unfortunately, this is not yet
	  installed on the SourceForge shell machine.  With CVS access so
	  critically slow -- nearly two hours for a "cvs update", let alone an
	  actual checkout -- it is not possible to check if the changes to
	  jobber.pl are entirely correct.  Consequently, it can not yet be
	  placed into production.)
	- Neil Mosafi added a #include directive to ivideo/custcursor.h because
	  it was not able to find the definition for csRGBcolor.
	- Eric Sunshine fixed bug in joywin.mak where it was trying to install
	  the non-existent data/joywin.zip.
20-Apr-2004
	- Jorrit added 'camera_origin' to csRenderMesh. The meshes will
	  fill this field with the origin of that mesh in camera space. This
	  will be used for sorting alpha render priority.
	- Jorrit optimized the alpha render priority sorter by using
	  the new camera_origin field in csRenderMesh.
	- Jorrit removed the unused and non-functional bcterr mesh object.
	- Jorrit changed iEngine->GetTopLevelClipper() to return an
	  iRenderView instead of an iClipper2D.
	- Jorrit added iRenderView->ClipBBox() that doesn't want the 2D
	  box argument (only does rview frustum check with the 3D box).
	- Jorrit changed several of the important csRenderView methods
	  to use internal engine cs classes instead of interfaces (avoids
	  virtual function calls).
	- Jorrit replaced the 'frustum' in csRenderContextFrustum with an
	  array of csPlane3 instead of an array of csVector3.
	- Eric Sunshine made the following changes to the Jam-based msvcgen
	  facility:
	    - Added --response-file option to msvcgen.pl, which allows
	      msvcgen.pl to collect pathnames (one per line) from the contents
	      of specified files in addition to collecting them from the
	      command-line.
	    - Added a ResponseFile rule to helper.jam which creates a file from
	      a set of items (items are emitted one per line).  This rule can
	      be invoked multiple times for the same file, allowing it to be
	      populated incrementally.
	    - Augmented msvcgen.jam to work around a fatal limitation in Jam
	      which caused project file creation to bomb out frequently except
	      when $(TOP) and $(BUILDTOP) were very short pathnames (such as
	      "C:\CS" or "/home/foo/CS").  Jam places a fairly restrictive
	      limit on the length of a command-line which it will invoke from
	      an 'actions' block, and rudely aborts if the command exceeds that
	      limit.  Even moderately sized projects, such as csutil, easily
	      exceed Jam's command-line length limit when mentioning its source
	      and header files in the msvcgen.pl invocation command.  Ditto for
	      workspaces, which are typically composed of many, many project
	      files.  To work around this limitation, msvcgen.jam uses the new
	      ResponseFile rule, and --response-file mechanism of msvcgen.pl to
	      avoid having to create such lengthy command-lines.
	    - Renamed the msvcgen6 and msvcgen7 targets to msvc6gen and
	      msvc7gen, respectively.  Also added mvsc6clean and msvc7clean
	      targets.
	- Eric Sunshine fixed several Jamfiles throughout the project to
	  utilize the portable FDefines and FIncludes rules instead of
	  harcoding -D and -I.
	- Jorrit fixed a compile error in spr3d for OR.
	- Jorrit added a new iRenderView::ClipBBox(). This versions works with
	  an object space bbox instead of a camera space bbox. This has the
	  advantage of being much more accurate. Instead of transforming the
	  object bbox to camera space (which will make it larger) the frustum
	  is now transformed from camera to object space.
	- Jorrit changed chunklod mesh object plugin to use this new
	  ClipBBox() routine.
	- Jorrit split the new iRenderView->ClipBBox() routine in
	  iRenderView->SetupClipPlanes() and ClipBBox(). That way it is
	  possible to call SetupClipPlanes() in advance and then reuse
	  it multiple times. Chunklod now uses this technique.
	- Jorrit made iRenderView->ClipBBox() return a modified frustum
	  mask so it can be used for hierarchically culling bbox trees.
	  Chunklod now uses this.
	- Eric Sunshine fixed bug in the SetProperty rule in property.jam.  It
	  was ignoring the incoming value and unconditionally setting the
	  property to 'true'.
19-Apr-2004
	- Eric Sunshine added LGPL license notice to the .m4 and .jam files.
	- Jorrit fixed a bug in iEngine->CreatePortalContainer(). If there
	  is a portal render priority then the created mesh will automatically
	  get that render priority.
	- Jorrit removed support for skeletal sprites. Instead you should
	  now use sprcal3d objects.
	- Jorrit removed the mottest program since it depends on skeletal
	  sprites. One should wonder if the entire motion plugin still
	  makes sense now.
	- Jorrit removed the walktest 'setmotion' command.
	- Jorrit removed the walktest 'addghost' and 'addskel' commands.
	- Jorrit removed the motion manager plugin. It was not very nicely
	  designed and I question the usability of the plugin.
	  Also removed associated iSkeletonBone.
	- Eric Sunshine made the following changes to the Jam build system:
	    - Augmented msvcgen.jam so that it is capable of generating
	      multiple workspaces, rather than being hardcoded to produce only
	      a single workspace named "wksall" containing all
	      projects. Workspaces are controlled by client invocation of the
	      new MsvcGenWorkspace rule. This rule allows clients to specify,
	      not only which workspaces to create, but also the contents of
	      each workspace.
	    - Added CS/mk/msvcgen/workspaces.jam, which specifies the
	      workspaces to create for CS. CS/Jamrules includes this file.
	      (Unfortunately, there are now so many projects being included in
	      workspaces, that the command to actually build a workspace
	      overflows Jam's maximum command-line length, causing it to
	      abort. Working around this Jam limitation is the next task.)
	    - Removed code from the MsvcProject rule which was copied directly
	      from win32.jam. Instead, now calls MakeVersionRc in win32.jam to
	      achieve the same result. Also cleaned up other portions of
	      MsvcProject.
	    - Added an invocation of Help for the 'msvcclean' target.
	    - The MakeVersionRc rule in win32.jam now prefers
	      $(PACKAGE_LONGNAME) if available rather than $(PACKAGE_NAME).  If
	      neither is available, it just uses the bare target name as the
	      package name.
	- Eric Sunshine eliminated TeX 'underfull hbox' warning from
	  apimod98.txi.
	- res added a workaround to csArray<>::Push() for the case an element
	  from the array itself was pushed. Under certain circumstance, bogus
	  data was pushed onto the array.
18-Apr-2004
	- Eric Sunshine fixed CS/bin/autogen.sh so that it returns the exit
	  status of 'autoconf' as its own exit status. This allows invokers of
	  autogen.sh to determine if Autoconf failed.  Also removed out-of-date
	  comment in autogen.sh.
	- Eric Sunshine fixed bug in CS/docs/doxygen/Jamfile where it failed to
	  mention doxygen.css in the argument list for the Doxygen rule.
	- Eric Sunshine relocated the HTML-specific ScanDocDirs rule from
	  CS/docs/Jamfile to CS/docs/html/Jamfile, and also renamed it to
	  InstallHTMLDocs to better reflect its function.
	- Jorrit re-enabled the clipping optimization in NR GL renderer
	  after fixing partsys so it has a 'portals' render priority.
	- Eric Sunshine added a general-purpose Recurse rule to helper.jam
	  which recursively scans a directory tree for files matching types
	  specified by the client, and invokes a client-specified Jam rule for
	  each discovered file.
	- Eric Sunshine removed the InstallHTMLDocs and ScanHeaders rules
	  (docs/html/Jamfile & include/Jamfile), and replaced them with simple
	  invocations of the new Recurse rule.
	- Eric Sunshine added missing lghtngldr.csplugin, lghtngldr.mak, and
	  mesh/lghtng/persist/standard/Jamfile.
	- Eric Sunshine removed the unused and unmaintained Arts and EAX sound
	  renderers. For easy revival, they have been tagged in CVS with
	  ARTS_OBSOLETE and EAX_OBSOLETE, respectively.
	- Eric Sunshine removed the unused and unmaintained GLX/Glide driver.
	  For easy revival, it has been tagged in CVS with GLXGLIDE_OBSOLETE.
	- Eric Sunshine fixed aesthetic problem with "jam help" message for
	  install target. It read "Build the Install crystal", which was not
	  especially sensible. Made install help message more robust; it now
	  prefers PROJECT_LONGNAME before PROJECT_NAME, and falls back to
	  "Install the project" if neither is defined.
	- Eric Sunshine added help messages for the all, apps, libs, plugins,
	  clean, and distclean pseudo-targets.  Also fixed some other minor
	  aesthetic problems with the output of "jam help".
	- res made the following changes:
	    - Added Doxygen documentation for macro-generated csString members.
	    - Fixed Doxygen documentation for
	      CS_INITIALIZE_PLATFORM_APPLICATION.
	    - Fixed some compiler errors in minidump.cpp.
	- Eric Sunshine made the following changes to the Jam build system:
	    - Added a general-purpose "property bag" mechanism.  Jamfiles are
	      free to create property containers and populate them as
	      desired. Other Jamfiles can then query the containers in order to
	      conditionalize build behavior.
	    - CS/Jamrules now assigns to the 'build' container the property
	      'newrenderer' with value "true" when the project is configured
	      for the new-renderer.
	    - msvcgen.jam now assigns to the 'build' container the properties
	      'projgen' with value "msvc", and 'projgen_version' with value 6
	      or 7 when building project files. (Future project file
	      synthesizers will use other values for 'projgen'. For instance, a
	      generator of Borland project files might set the value to
	      "cbuilder", and a generator of Apple project files might set the
	      value to "xcode".)
	    - Fixed problem where msvcgen.jam was creating project files for
	      numerous modules for which it made no sense to generate MSVC
	      project files, such as those specific to MacOS/X and Unix.
	    - Fixed problem where msvcgen.jam failed to create project files
	      for both the old- and new-renderers (needed for wksall, for
	      instance).  Previously, it was capable of creating projects for
	      either only the old-renderer or the new-renderer, but not both at
	      the same time.
	    - Added 'noinstall' option to a lot of modules which were being
	      installed despite the fact that they have no practical value
	      when installed.
	    - Fixed numerous cases where Unix-style pathnames were hard-coded
	      into Jamfiles, rather than relying upon the portable ConcatDirs
	      rule.  Likewise, converted serveral Jamfiles to utilize the
	      portable $(DOT) and $(DOTDOT) rather than hardcoding "." and
	      "..".
	- Eric Sunshine removed the unused and incomplete PicoGUI plugin and
	  test program.  For easy revival, they have been tagged in CVS with
	  PICOGUI_OBSOLETE.
	- res removed ivaria/gconnect.h and gserver.h which were only used to
	  interface PicoGUI.
	- res made a small documentation fix to vosa3dl.h.
17-Apr-2004
	- Aren Blondahl updated map2cs to have newly optimized render priority
	  on entities ('priority' tag in the .map) and fixed map2cs to support
	  new alpha flag under <mixmode> instead of under each polygon.
	  ('alpha' tag in the .map)
	- Aren Blondahl patched map2cs's light format to comply with <radius>
	  tag, and added in brightness / influence radius support.
	- res fixed a crash bug in the Win32 GL canvas when the WGL "extension
	  string" extension was not present.
16-Apr-2004
	- Jorrit fixed a crash at exit for genmesh with NR.
	- Eric Sunshine fixed bug in Jam build system where msvcgen target
	  would insert AWS's Bison and Flex input files into AWS project file
	  rather than the related .cpp and .h files.
	- Eric Sunshine worked around problem where msvcgen.jam reported that
	  it did not know how to locate or create <grist>csperlxs.c when
	  PERL5.AVAILABLE was "yes".  (A more correct fix will involve a
	  paradigm shift in the way this glue file is handled.  The present
	  scheme is completely incompatible with the notion of project files.
	  Details of the problem are avalable in cscript/csperl5/Jamfile.)
	- Jorrit added an entry to the GL driver database so that stencil
	  clipping is prefered for ATI Radeon style cards.
	- Jorrit removed the entry from the GL driver database that forced
	  stencil clipping for GeForce4 Go cards. Don't know why in the
	  past that seemed to cause massive slowdown. It no longer does that.
	- Jorrit made stencil clipping default again for the new renderer.
	  It does make flarge slower but that's because flarge is really
	  not designed for good hardware (objects don't have sufficient
	  number of triangles).
	- Jorrit optimized the NR GL renderer by only setting up the stencil
	  clipper if the clipper is not optional. That seems to help a
	  great deal already.
	- Jorrit removed the Video.OpenGL.PreferClipPlane setting. Instead
	  there is now a Video.OpenGL.StencilThreshold setting. This is
	  the number of triangles for a single object after which the
	  NR GL renderer will use stencil clipping instead of plane
	  clipping. By default this is set to 500. With this optimization
	  I managed to improve performance in walktest flarge from 87
	  to 209 fps! (for new renderer).
	- Eric Sunshine fixed bug in msvcgen.jam where the overriden
	  Application rule was employing an incorrect mechanism for detecting
	  console applications.  Also eliminated hard-coded use of Unix-style
	  pathnames.
	- Eric Sunshine performed project-wide spelling correction:
	    thresshold --> threshold
	- Jorrit added csKDTree::NewTraversal() so that it is now possible
	  to safely traverse the KDtree manually. This function will calculate
	  and return a new timestamp.
	- Jorrit added csKDTree::TraverseRandom(). This will also traverse
	  the kdtree but in random order. Changed Frustvis and Dynavis to use
	  this when appropriate.
	- Jorrit optimized Frustvis a bit by doing a manual custom traversal of
	  the tree instead of calling Front2Back().
	- Eric Sunshine augmented the CompileGroups rule in groups.jam so that
	  it complains if handed a compile group which was not registered via
	  RegisterCompileGroups.
	- Eric Sunshine augmented msvcgen.jam to make it possible to invoke the
	  'msvcgen', 'msvcgen6', and 'msvcgen7' targets directly, instead of
	  having to run the stand-alone mk/msvcgen/msvcgen.sh shell script.
	  (The 'msvcgen' target is just a shortcut which invokes the other two
	  targets.)  Removed the msvcgen.sh script.
	- Jorrit added some initialization code to Data in the chunklod
	  terrain engine in an attempt to fix the strange texture swaps.
	  Didn't help though.
	- Jorrit temporarily disabled one of the NR GL optimizations he
	  did earlier. Have to rethink it. Walktest is now down to 160 fps
	  (still better than 87!).
15-Apr-2004
	- Eric Sunshine added a blurb to the Unix and MacOS/X build
	  instructions cautioning about potential problems caused by
	  carelessness when transfering the project source code from Windows to
	  Unix, and how not all Unix utilities deal gracefully with Windows
	  line-terminators.  Also updated quite outdated Unix build
	  instructions.
	- Eric Sunshine added an 'options' argument to the Help rule in
	  help.jam.  Presently, the only recognized option is "verbatim", which
	  tells Help to emit the 'description' string verbatim, without
	  prepending "Build the".
	- Eric Sunshine upgraded installation of $BUILDTOP/include/volatile.h
	  by Jam so that it employs the more robust check used by
	  $TOP/Jamfile.in to see if the build directory differs from the source
	  directory.  (The old scheme of checking could be fooled.)
	- Eric Sunshine added a 'repairdoc' target to texinfo/Jamfile which
	  invokes CS/docs/support/nodefix.pl to repair broken Texinfo @node and
	  @menu directives.
	- Jorrit fixed a bug in the nullmesh factories. They didn't
	  implement iNullFactoryState.
	- Jorrit made iNullFactoryState a subclass of iNullMeshState since
	  they were exactly the same.
	- Jorrit fixed the null mesh NewInstance() so that the parameters
	  of the factory are copied to the null mesh.
	- Eric Sunshine made the following changes to docs.jam and the other
	  documentation-related Jamfiles:
	    - Added documentation-specific 'clean' targets ('manualinfoclean',
	      'manualhtmlclean', 'apihtmlclean', etc.).
	    - Added a 'cleandoc' target (and a 'docclean' alias).
	    - Updated the global 'clean' target to also remove built
	      documentation.
	    - Fixed several cases in docs.jam where it was hard-coding
	      Unix-style pathnames when referencing supporting resources.
	- Jorrit completely changed the way static lod culling works. A static
	  lod mesh is basically a hierarchical mesh. So you have a parent mesh
	  (which typically uses null mesh so that it is not visible) and
	  then several children. Which child is rendered depends on how
	  far the mesh is from the camera. By default CS will register
	  EVERY mesh and child mesh to the visibility cullers. So even
	  for a hierarchical mesh it will register all meshes in that
	  hierarchy seperately. For normal hierarchical meshes this makes
	  sense as it is possible for a child to be visible while the parent
	  is not (i.e. imagine the hand mesh of an actor to be visible but
	  all the rest obscured). However, for static lod this doesn't make
	  much sense as typically all meshes for static lod should have
	  roughly the same bounding box. So if one is visible they are all
	  visible (except that the lod mechanism will choose one to display).
	  So when static lod is detected the engine will only register
	  the parent mesh to the culler. If the parent mesh is considered
	  visible then it will itself find out which child meshes are relevant
	  for the given camera position and then call make them visible
	  in turn. Doing that static lod meshes causes a LOT less
	  overhead in the visibility culler and it also makes the handling
	  of static lod meshes a bit easier. In case a hierarhical mesh
	  is used as a child of a static lod mesh, when the hierarchical
	  mesh is considered visible for the given distance to the camera,
	  then the entire hierarchy is made visible. In this sense
	  a hierarchical mesh as part of a static lod will be culled entirely
	  or not (as opposed to each individual child which normally happens
	  with hierarchical mesh objects).
	- Eric Sunshine fixed bug in aws/Jamfile where it neglected to invoke
	  NotFile for the target which copied the generated Bison/Flex files
	  back to the source directory.  Also added a Help invocation for this
	  target.
	- Eric Sunshine fixed aws/Jamfile so that it utilizes the portable
	  FIncludes rule rather than hard-coding -I directives.
	- Eric Sunshine changed the Copy rule in helper.jam so that it
	  overrides Jambase's default value of $(CP) "cp -f" to avoid using the
	  -f flag, since older platforms do not support it.  Also removed the
	  obsolete SearchSubdir rule.
	- Jorrit extended csKDTree class with GetChild1() and GetChild2().
	  This allows manual traversal of the tree.
	- Jorrit optimized Frustvis so that it detects when a node is fully
	  in the frustum. In that case it will stop traversing the tree
	  in front to back mode but instead just mark all objects inside
	  that node (and inside children of that node) as visible. This
	  greatly reduces visibility processing and also avoids the need
	  to distribute that part of the tree. This optimization will help
	  in all cases but especially in large open areas (i.e. landscape
	  with many objects on it). Note that the effectivity of this
	  optimization is currently reduced because the bbox of the kdtree
	  is too big. Have to find a solution for that first.
	- Jorrit removed un unused field in frustvis. This field was being
	  tested but never filled. So totally useless.
	- Jorrit changed the chunklod mesh object (NR terrain engine) so that
	  it now returns an accurate bbox instead of the previous bbox
	  that was WAY too big. It now uses the bbox of the root quad.
	  Also fixed GetRadius() to use this bbox.
	- Jorrit fixed nullmesh so it properly implements iNullMeshState
	  now.
	- Jorrit changed frustvis so that it now keeps a global bbox of
	  everything that enters the kdtree. This box will always grow
	  (never shrink). When testing nodes against the frustum this box
	  will be used to calculate the REAL bbox of every kdtree node.
	  This makes the kdtree nodes much smaller (they are now artificially
	  big) and this will greatly increase the efficiency of frustvis
	  (and especially in combination with the optimization above).
	- Jorrit also changed Dynavis in a similar manner.
	- Eric Sunshine made the following Swig-related changes to the Jam
	  build system:
	    - Re-designed and re-wrote the Swig rule almost completely from
	      scratch.  It is now much more functional, thus allowing
	      near-duplicated code invoked manually by callers to be
	      eliminated.
	    - Fixed the Swig rule so that it now emits generated files to the
	      build directory rather than the source directory, since the
	      source directory might be read-only or shared.
	    - The Swig rule now publishes a "$(tag)swig" pseduo-target for each
	      client which allows production of the Swig-generated files by
	      explicit user request.  Likewise, it publishes a
	      "$(tag)swigclean" target which removes the generated files.
	    - The Swig rule now optionally publishes a "$(tag)freeze"
	      pseudo-target which copies the generated files back to the source
	      tree at explicit user request.
	    - Fixed the Swig rule so that, upon explicit request, it writes
	      files to the source tree at the _correct_ locations, rather than
	      placing them in completely foreign positions.
	    - Fixed cspython/Jamfile and csperl5/Jamfile to take advantage of
	      these new facilities so that they no longer emit generated files
	      to the source tree, which was broken behavior since that
	      directory migth be read-only or shared.
	- Remi Bonnet added a scriptable action in aws for the notebook
	  component. This allow a program using Crystal Space to change the
	  active tab dynamically.
	- Remi Bonnet made csSet::Delete returns whether an object was deleted
	  or not.
	- res added a facility to the common shader plugins to simplify the use
	  of program parameters that can either be constants or shader
	  variables. (Functionality overlaps with variable mappings; would be
	  nice colllapse var mappings and shader params at some point.)
	- res augmented the light iter step to also provide the light position
	  in world coordinates.
	- res fixed the GL fixed vertex program to correctly use the light
	  world position by default.
	- res added fixed function-only terrain shaders. Support splatting and
	  fading to flat, but not yet lighting.
14-Apr-2004
	- Eric Sunshine fixed bugs in csString where GetData() and the (char
	  const*) operator would incorrectly return a null pointer at times.
	  (These methods should always return a zero-length C-string when the
	  csString is empty; they should never return null.)
	- Eric Sunshine updated Doxygen comments for csStringHash.
	- Jorrit fixed an initialization error in the NR OpenGL renderer
	  with the new clipportal_dirty flag. Please people! Initialize
	  your variables!!!!!
	- Jorrit fixed missing SCF_CONSTRUCT_IBASE in the
	  eiShaderVariableAccessor instances of genmesh.
	- Jorrit removed the non-functional GetHeightMap() function
	  from iTerrainFactoryState and made some other small changes
	  to the API (mostly adding 'const' where needed). Also removed the
	  non-functional GetMaterialMap() function from iTerrainObjectState.
	- Jorrit discovered that MeshTreeNode in the NR terrain engine
	  was doing some SCF stuff for no reason at all (it didn't even
	  inherit from iBase).
	- Eric Sunshine added a backward-compatibility hack to csString to
	  allow projects to recover the old, buggy, undocumented, accidental
	  behavior where csString::GetData() and the (char const*) operator
	  returned a null pointer instead of a zero-length string in certain
	  indeterministic cases if the string was empty.  Projects should
	  #define CSSTRING_BUGGY_NULL_RETURN before #including
	  <csutil/csstring.h> to enable this temporary transitional hack.
	- Jorrit changed iTerrainFactoryState->SetMaterialMap() so that
	  it uses a const csArray<>& instead of a csArray<> as a parameter.
	- Eric Sunshine applied a simple fix to stdrep's
	  csReporterListener::HandleEvent() to work around a bug where the line
	  wrapping code would loop infinitely once it got to the last line in
	  wrapped message if that line contained only a single word.  (A more
	  correct fix would be to re-write this code completely, since it is
	  unnecessarily obfuscated and convoluted, and about three times as
	  long as it needs to be.)
	- Eric Sunshine upgraded csString so that it makes a distinction
	  between a null-string and a zero-length string.  This distinction is
	  now clearly documented.  Client code can check for these conditions
	  in the normal fashion by invoking csString::GetData() or operator
	  char const*() to retrieve a C-string representation of the string.
	  If the result is zero, then it is a null-string.  If the result is
	  non-zero but csString::Length() returns zero, then it is a
	  zero-length string.  This means that existing code in external
	  projects which incorrectly relied upon the broken, indeterminate, and
	  undocumented accidental null-string vending of the past can now rely
	  upon the behavior as supported and deterministic.  The new
	  convenience method csString::GetDataSafe() will always return a valid
	  C-string, even if the underlying csString represents a null-string
	  (in which case a zero-length C-string "" will be returned).  This
	  means that the result of GetDataSafe() can be used directly without
	  performing a null check.  Fixed several csString methods which would
	  crash when the underlying representation was a null-string.  Also,
	  completely overhauled the remaining csString and iString
	  documentation.
	- Jorrit optimized the NR terrain engine by removing an unneeded
	  call to ClipBBox(). If ClipBSphere() is used then that's sufficient.
	- Eric Sunshine fixed bug in the deprecated csutil/hashmap.h where it
	  was re-declaring the csHashCompute() functions with signatures
	  different from the ones in csutil/hash.h.
	- res removed a commented-out debug printf() in
	  csHashMap::ChangeBuckets(). The comment was errorneously line-broken,
	  causing compile errors.
	- Eric Sunshine fixed CS_TEXT_CACHE_OUTPUT() in textcache.m4 to do a
	  better job of cleaning up after itself.
	- Jorrit disabled the use of fputws for now until we find out a way
	  to discover buggy implementations of fputws.
	- res augmented the fixed function FP tp support GL fog.
	- res fixed a bug where binding a vertex buffer to multiple
	  destinations didn't work (was only bound to the first destination).
	- res augmented the chunklod plugin to also provide normalized tex
	  coords (ie go from 0 to 1 over the area of the terrain).
	- Eric Sunshine fixed a silly oversight in install.mak where the
	  'install' target failed to be recognized by the sub-make invocation,
	  despite the fact that the other targets, such as 'install_config',
	  'install_plugin', etc., were recognized.  Reported by Atis Elsts
	  <prophet@balticom.lv>.
13-Apr-2004
	- Jorrit changed the PreferClipPlane default to enabled for the new
	  renderer. Now clipping planes are enabled by default and only
	  disabled in some cases (like on GF Go hardware).
	- Jorrit changed csKeyValuePair and csMapNode so that they no
	  longer use embedding to implement iKeyValuePair and iMapNode.
	- Jorrit started enhancing the API documentation by adding three
	  sections to every common interface definition:
	    - Main creators of instances implementing this interface
	    - Main ways to get pointers to this interface
	    - Main users of this interface
	  The idea is to make it easier for the user to find out how
	  to obtain instances of some interface and how those interfaces
	  are supposed to be used.
	- Jorrit removed the unused iDataObject and csDataObject.
	- Luca improved the speed of csLoader::CollectAllChildren method.
	- Jorrit found out that walktest was actually using iDataObject.
	  Instead of reviving iDataObject, fixed Walktest so that it no
	  longer requires it.
	- res fixed a bug in the AVI handler where a loop counter was
	  incremented twice.
	- Jorrit implemented a considerable optimization in Dynavis
	  and Frustvis by replacing csHashSet with csSet<T>.
	- res augmented the GL fixed shader program plugin to allow
	  manipulation of the texture matrix.
12-Apr-2004
	- Luca added some code to csloader.cpp/*.h to recursively handle the
	  flags in meshes' children if needed.
	- res ported OpenPortal() to NR. Still has issues, though.
	- res updated todo_newrenderer.txt.
	- res ported the halo stuff to NR. Work somewhat (except flares), but
	  could be better.
	- res augmented the csPolygonRenderData struct so normals for smoothed
	  things are passed along to the poly renderer.
11-Apr-2004
	- Eric Sunshine applied a patch from Andres Freund <andres@anarazel.de>
	  to several of the templated csArray<> subclasses which ensures that
	  all names mentioned by the templates are "dependent".  This allows
	  the templates to build correctly with modern compilers, such as gcc
	  3.4.x.  For details of "dependent" template contexts, see:
	  http://gcc.gnu.org/onlinedocs/gcc/Name-lookup.html
	- Eric Sunshine fixed bug in csModelConverterSPR where it informed
	  clients that it could neither load nor save sprites, thus rendering
	  itself quite useless as a sprite importer/exporter.
	- Eric Sunshine fixed a bug in install.mak where the sub-install rules,
	  such as install_config, install_doc, etc., would uselessly create an
	  empty subdirectory within the build directory with the same name as
	  the rule (i.e. "install_config", "install_doc", etc.).
	- Eric Sunshine fixed bugs in several rules in docs.jam where NotFile
	  was being invoked for actual files.
	- Eric Sunshine fixed bug in group.jam where it failed to invoke
	  NotFile for the registered group names.
	- Eric Sunshine fixed bug in cs-config/Jamfile (and install.jam) where
	  the install target did not know how to build cs-config if it did not
	  already exist at installation time.
	- Eric Sunshine fixed bugs in glshader_cg and renderloop/stdsteps where
	  they were returning boolean values from methods declared as returning
	  csPtr<>.
	- Eric Sunshine added a ShellScript rule to application.jam, which
	  roughly parallels the Application rule, except that it builds a shell
	  script, rather than an application.  The ShellScript rules takes care
	  of all the typical housekeeping, such as setting up the installation
	  and clean targets, and ensuring that the script is executable once
	  created.  The actual content of the generated shell script is
	  provided by a client-supplied "content creation" rule.  The cs-config
	  script is now created via this new mechanism.
	- Jorrit did more API documentation enhancements
	  (iEngineSequenceManager) and also added a few constants
	  instead of 0, 1, and 2 for AddConditionLightChange().
	- Eric Sunshine fixed Doxygen configuration so that it properly
	  propogates documentation to group members when only the first member
	  is documented.  (This is common, for instance, when all elements of a
	  group want the same documentation string.)
	- Eric Sunshine fixed csEngine::CreateDefaultRenderLoop() so that it
	  does not crash outright if it fails to load the
	  crystalspace.renderloop.step.generic.type plugin.
	- Eric Sunshine fixed bug in stdstep/rlsstd.mak where link libraries
	  were mis-ordered, thus resulting in plugin load failure on account
	  of missing symbols.
	- Eric Sunshine fixed bug in csperl5.mak where csperl5 was not linked
	  against csgfx, thus resulting in load failure on account of missing
	  symbols.
10-Apr-2004
	- Jorrit fixed a bug in spr3d with new renderer. It would try to
	  tween vertices also for skeletal animation. That would cause
	  crashes for skeletal sprites.
	- Jorrit fixed a memory leak in genmesh with new renderer. Please
	  don't use embedded interfaces for SharedVariableAccessor since that
	  will cause a circular reference.
	- Jorrit removed the unused, unimplemented, and badly designed
	  iCollideSystem->CreateSphereCollider() and CreateBoxCollider().
	  Fixed RAPID and OPCODE plugins for this change.
	- Jorrit augmented the API documentation of iCollideSystem.
	- Luca has fixed a tiny error in the engine plugin. The error was
	  returning a value in a function whose return value is void. He
	  also updated the Doxygen's comment for the iMeshWrapper::GetFlags()
	  method.
	- Aren Blondahl revised <settings> block in map2cs and added ambient
	  lighting, clearscreen, and maxlightmapsize support to map2cs.
9-Apr-2004
	- Jorrit added iMeshWrapper->SetZBufModeRecursive(),
	  SetFlagsRecursive(), and SetRenderPriorityRecursive(). These
	  functions will do the same as their respective non recursive
	  variants but they will also perform the operation on the
	  children of the mesh (and their children).
	- Jorrit extended the map loader so that when you use 'meshref' the
	  flags like render priority, zbuf mode and so on will be propagated to
	  the children too.
	- Eric Sunshine simplified the unnecessarily obfuscated map2cs
	  prototype for CMapPolygon::CheckIfInside() since it caused grief for
	  gcc 3.4.x which considered one invocation of the method ambiguous.
	- Eric Sunshine fixed a couple problems reported by Andres Freund
	  <andres@anarazel.de> in maya2spr's BinaryTreeIterator<> template.
	  (1) Last() was modifying the non-existent variable 'bWentLeft'. (2)
	  Prev() calls printf() in a non-dependent manner, which caused gcc
	  3.4.x to fail with a compiler error since <stdio.h> had not been
	  #included. See http://gcc.gnu.org/onlinedocs/gcc/Name-lookup.html for
	  an explanation of why printf() must be declared before it is used in
	  a non-dependent template context.
	- Eric Sunshine augmented the CPU-specific optimization flag check in
	  configure.ac so that it first attempts the -march= variations before
	  attempting -mcpu=, -mpentiumpro, and -mpentium since the latter flags
	  are officially deprecated in gcc 3.4.x.
	- Eric Sunshine fixed bugs in ivaria/ode.h where it was protecting the
	  types int8, uint8, int32, uint32 by #defining them as ode_int8,
	  ode_uint8, etc. before #including <ode/ode.h>, but was then
	  incorrectly #undefining ode_int8, ode_uint8, when it should actually
	  have been undefining int8, uint8, etc.  This cause compilation errors
	  for any use of int8, uint8, etc. after ivaria/ode.h was included
	  since the compiler still saw ode_int8, ode_uint8, etc. in their
	  stead.
	- Eric Sunshine simplified the Python SDK check in configure.ac
	  considerably by removing support for the obsolete csmingwlibs
	  package, which involved interrogating the csmingwlibs-specific
	  environment variables PYTHON_INC and PYTHON_LIB in lieu of querying
	  distutils.sysconfig (since the Python executable was absent from
	  csmingwlibs); and by dropping support for Python 1.x, which involved
	  manually parsing Python's installed makefile.  (The cspython module
	  dropped Python 1.x support a long time ago.)
	- Eric Sunshine added a hack to sound/loader/ogg/oggdata.h which works
	  around a build problem with some installations of Ogg/Vorbis on
	  Cygwin where it attempts to #include the non-existent <_G_config.h>.
	- Eric Sunshine added a patch to win32.jam to work around a problem
	  with natively-built Jam on Cygwin where it fails to perform library
	  scanning properly, with the result that it thinks that the contained
	  object files need to be rebuilt (along with all targets which depend
	  upon those files).
8-Apr-2004
	- Jorrit committed a patch to map2cs from Aren Blondahl:
	    - Added Support for "_color" tag in light entities for support
	      with proper q3 .map format and GtkRadiant compatibility.
	    - Added Support for keys on the "worldspawn" entity to be added
	      in as a <key /> tag. This will allow developers to add keys to
	      their "worldspawn" and access them in their code through
	      Engine->QueryObject()->GetChild("name here"); Returning a
	      iKeyValuePair*
	    - Added Support for info passed in the config file to be
	      specified in the .map, I had some people I knew annoyed about
	      creating a .cfg each time they made a new map, now the scaling
	      factor can be set in the "worldspawn" entity under the key
	      "world_scale". And also by adding in a key "archive" to the
	      world spawn (or perhaps any entity at this time **will clean
	      that up in the future**) the value of the key is loaded as a
	      pk3 file (will add support for other archive types later).
	      This will essentially exclude the need for the .cfg (for now
	      at least). I will be adding more options in the future.
	- Jorrit added the following persons to the contributors document:
	    - Aren Blondahl
	    - Frank Richter
	    - John Harger
	    - Daniel Fryer
	    - Reed Hedges
	    - Vincent Knecht
	    - Fritz Elfert
	    - Luca Cappa
	    - Andrew Craig
	    - Bjorn Hansen
	    - James Thompson
	    - Chris Matuszewski
	    - Andrew Mann
	    - Andreas Busch
	    - Andrew Topp
	  Also updated a few other entries.
	- Eric Sunshine made the following changes to the 'make install'
	  machinery:
	    - Published the component sub-install targets to give the user
	      finer control at install time.  For instance, to install plugins,
	      "make install_plugin".  The sub-install target names match the
	      Jam sub-install names as closely as possible.  The available
	      installation targets are:
		install
		install_bin
		install_config
		install_data
		install_doc
		install_include
		install_lib
		install_plugin
		install_root
		install_script
		uninstall
	    - Fixed bugs: At install time, with Swig present, cspython.mak and
	      csperl5.mak would attempt to copy Swig-generated files from the
	      build directory back into source tree even though this was not
	      requested (and might fail if source tree is read-only).
	    - Fixed bugs: With Swig present, cspython.mak and csperl5.mak
	      incorrectly installed the Swig-generated files from source tree,
	      rather than the ones from the build tree. (The ones from the
	      build tree will be newer if Swig is installed.)
	    - Fixed bug: cspython.mak attempted to install _cspace.so as if it
	      was as CS plugin rather than a Python extension module.  This
	      failed on MacOS/X because CS plugins have a .csbundle extension,
	      whereas Python modules have a .so extension, and it was looking
	      for the non-existent _cspace.csplugin.
	    - Changed cspython.mak and csperl5.mak so that they now install the
	      pure Python (_cspace.so) and pure Perl (cspace.so) extensions in
	      scripts/python and scripts/perl5, respectively, rather than
	      installing them alongside the CS plugins.  This change allows
	      Python users to set their PYTHONPATH environment variable to
	      simply point at scripts/python and have Python find both
	      cspace.py and _cspace.so.  Ditto for Perl's PERL5LIBS variable.
	    - cspython.mak and csperl5.mak are now responsible for requesting
	      installation of their related scripting files from scripts/python
	      and scripts/perl5, respectively.  install.mak no longer has any
	      hard-coded knowledge about these directories.
	    - Simplified and clarified the implementation of install.mak to
	      some extent by introducing re-usable macros which do much of the
	      difficult or dirty work.
	- res augmented the win32 minidump facility to optionally include the
	  heap in the dump.
	- res slightly changed the way lightiter creates the attenuation
	  texture.
	- res made some VC6 compile fixes.
	- Eric Sunshine performed a major overhaul of intro/contrib.txi:
	    - Eliminated and rewrote much outdated information so as to avoid
	      misleading readers.
	    - Added a good deal of missing information to entries for various
	      contributors.
	    - Re-wrote almost all entries to improve grammar and follow
	      standard English idiom more closely.
	    - Folded together several duplicate entries, including those for
	      Frank Richter.
	    - Alphebatized the list of contributors. (Previously, the document
	      claimed to be ordered by date of initial contribution, however,
	      in reality, there was much randomness of entries, and the
	      date-based claim was more misleading than not.)
	- DeSigna began the implementation of the sexp parser, for use with
	  shader-expressions.
	- Jorrit changed genmesh so that iGeneralFactoryState is now a
	  subclass of iGeneralMeshState. All methods in iGeneralFactoryState
	  that are also in iGeneralMeshState (except for the material methods)
	  will now serve as defaults for creating mesh objects from the
	  factory. For example, you can now set a default mixmode for
	  a factory. All objects created from that factory AFTER changing
	  the default mixmode will also get that mixmode.
	- Jorrit enhanced the genmesh factory loader so that the following
	  keywords can now be used in factories: 'mixmode', 'manualcolors',
	  'lighting', 'noshadows', 'localshadows', and 'defaultcolor'.
	  'defaultcolor' is the same as 'color' for mesh objects but 'color'
	  was already taken for factories.
7-Apr-2004
	- res added a small helper class to create minidumps on Win32.
	- res augmented the Win32 assistant to allow user-defined exception
	  handlers.
	- res fixed spr2d & csNewParticleSystem to correctly appear in mirrors
	  on NR.
	- res augmented stdrep to allow retrieval of the debug log file name.
	- res added a Win32-only variant of csCallStackHelper that allows a
	  bit more control over the call stack creation.
	- Jorrit fixed a bug in the NR rendermesh sorter. The back2front
	  and front2back sorting (used for alpha render priority) were
	  not correctly sorting. The fix makes the sorter sligthly less
	  efficient though but this shouldn't be too hard since it should
	  only happen for objects in alpha render priority. Nevertheless in the
	  future we should consider precomputing the z information so we
	  don't have to calculate it in the sort routine itself.
	- res tweaked the flags for minidump generation a bit.
6-Apr-2004
	- Jorrit finished the implementation of csBSPTree.
	- Jorrit implemented back2front for genmesh. This new feature works
	  only in NR mode. OR will ignore this.
	- Jorrit fixed the autoresolve keyword so that it avoids searching
	  the sector when the keyword is given. i.e. previously if you used
	  autoresolve but the destination sector was already present then
	  the autoresolve keyword would not do anything because the callback
	  would not be created.
	- res changed the OR/NR GL texture managers to free up super lightmap
	  handles upon closing of the renderer. This should fix the problem
	  where texture handles were deleted after the GL context closed (this
	  had no apparent side effects on Win32, but lead to a crash on OS/X).
	- res augmented configure to check for fputws().
	- res changed the generic csPrintf() implementation to use fputws(),
	  if available.
5-Apr-2004
	- Peter Amstutz added the iVosApi interface to the csvosa3dl plugin.
	  This interface allows the application to access the underlying
	  Vobjects that have been loaded by the plugin.
	- Eric Sunshine reverted Peter Amstutz's change to csvosa3dl.mak from
	  yesterday since it broke static link mode; it caused 'ar' to be
	  invoked with linker flags.  Instead, Eric fixed the copy/paste error
	  which resulted in link failure, which is what Peter was attempting to
	  address.
	- Jorrit disabled the 'softgl' rule (Software GL tweaks) in the
	  gldrivers database. This rule prevents the use of hardware GL
	  features in some situations so I'm not sure why it even exists.
	- Jorrit added the iTextureManager->RegisterTexture() for NR also
	  to OR builds (but with empty implementation in the OR 3D renderers).
	  That way the renderstep plugins also compile with OR.
	  This change also makes sure that the python plugin can now compile
	  with NR too.
	- Jorrit added back the render steps so that they again compile in
	  OR too. The plan is to merge OR and NR builds. Not bring them
	  further apart.
	- Jorrit added a new Video.OpenGL.BrokenStencil flag. When this flag
	  is set stencil clipping is considered broken and will never be
	  used. If there are too many planes to clip then it will just ignore
	  the extra planes and not clip on those.
	- Jorrit added an entry for the Linux Rage128 drivers to set
	  the BrokenStencil option to true (in the gldrivers.xml database).
	- Jorrit fixed a bug in the Opcode collision detection plugin. It
	  would crash if it tried to check collision with an object that
	  has no triangles.
	- Jorrit found out that RAPID and OPCODE interprete csCollisionPair
	  differently. RAPID interpretes it as returning a triangle in
	  object space, while OPCODE interpretes it as returning in world
	  space. The RAPID interpretation is correct so I fixed OPCODE
	  to conform to that. By doing this walktest can now finally work
	  properly with the OPCODE plugin.
	- Jorrit clearly documented how csCollisionPair should be
	  interpreted in the API documentation.
	- Jorrit applied a patch from Andrew (Khaki from PS) so that walktest
	  collision detection correctly transforms the collision pairs. Jorrit
	  improved his patch by using the full transform instead of the
	  normal transform and also testing if the transform is identity or
	  not to avoid the work.
	- Jorrit started work on a small csBSPTree class. Unfinished.
	- Jorrit started work on actually implementing back2front sorting
	  in genmesh. Unfinished.
	- Jorrit did a quick untested change to mdl2spr so that it should
	  now output XML instead of the old map format.
	- Jorrit also fixed the MDL part of mdl2spr (not only MD2).
	- res made the following changes to the standard render steps:
	    - Add the ability to create the texture and use a persistent
	      render target in the 'target' step.
	    - Changed the 'fullscreen' step to accept a shader instead of a
	      material/shadertype combo, textures, mixmode, alpha mode and
	      shader vars, as well as optionally different behaviour when it's
	      drawn the first time. Also changed it to use DrawSimpleMesh().
	- res augmented the Win32 keyboard handling to support input from an
	  IME, based on some code from 'fusilli'.
	- Eric Sunshine fixed several errors in Jorrit's untested changes to
	  mdl2spr where it was emitting a tag without a terminating "/>" token,
	  and where it was incorrectly terminating tags with ">" when "/>" was
	  called for.
4-Apr-2004
	- res moved the attenuation texture generation to the light iter
	  plugin. Still the same texture for all lights, though. Plan is to
	  have individual attenuation textures, reflecting the light's
	  actual attenuation settings.
	- res added non-const versions for csHash<>::Get() and
	  GetElementPointer().
	- res made spr2d's SV accessor a non-embedded interface. Fixes a leak.
	- Eric Sunshine re-added 'ranlib' step to Library build rule in Jam.
	  This is needed since Apple's 'ar' command apparently does not update
	  the symbol index when creating the library.  (What was misleading was
	  that the make build system only runs ranlib at install time, however
	  the make system creates the library with Apple's 'libtool', whereas
	  Jam creates it with 'ar'.)  Consequently, Jam build now runs ranlib
	  at both build and install times.
	- res fixed leaking of render meshes and the SV context in the new
	  particle system.
	- res fixed the haze plugin to use the _EXT versions of SCF macros for
	  descendants of csHazeHull.
	- res fixed some GCC warnings & errors in the shader plugins.
	- res changed the render steps to only compile in NR builds.
3-Apr-2004
	- Jorrit fixed a new compile error in the simple console plugin.
	- Jorrit added a new 'back2front' keyword for the genmesh factory
	  loader. This keyword is currently still a placeholder but the idea
	  is that when this keyword is present then the triangles of the
	  genmesh will be rendered from back to front. This is useful when
	  you the mesh is transparent (or uses a transparent material). In
	  that case you need this flag to have correct rendering. At this
	  moment the keyword is simply parsed but not used yet.
	- Jorrit also added iGeneralFactoryState->SetBack2Front() and
	  IsBack2Front() for this functionality. Still doesn't do anything
	  yet.
	- res augmented Cg VPs to modify the compiled ARB VP to use the
	  built-in GL state matrices for the ModelView etc. matrices resp.
	  use glTrackMatrixNV() for nVidia VPs.
	- res added the ability to load ARB VPs from raw text.
	- res augmented csRenderMeshHolderMultiple to allow optional
	  non-deletion of the contained csRenderMesh*es.
	- res fixed csParticleSystem to disable render mesh deletion in the
	  holder.
	- res added a facility to allow shader programs to resolve a texture
	  binding destination in shaders. This way you can have 'custom' names
	  for TUs.
	- res augmented the Cg shader plugin to resolve texture bindings that
	  are named like a program parameter.
	- res added a simple vertex lighting shader utilizing Cg.
2-Apr-2004
	- res made the following changes:
	    - Replaced the CS_SHADERVAR_STACK #define with a csShaderVarStack
	      typedef.
	    - Added a new base class for shader plugins, containing some
	      common stuff.
	    - Updated the glshader_arb program classes to use that new base
	      class.
	- res augmented the Cg configure check to use pthread, required by
	  Cg for Linux.
	- Eric Sunshine added a "default" comparison function to csArrayCmp,
	  and made the "comparison function" argument to the csArrayCmp
	  contructor optional.  If the client does not supply a function to the
	  constructor, then the default function is used.  This makes it much
	  simpler to perform searches in csArrays in cases when the element and
	  keys can be compared via standard comparison semantics (such as when
	  their types are the same, though type equivalence is not required).
	- Eric Sunshine added an invocation of AC_REQUIRE([CS_CHECK_PTHREAD])
	  to the Cg check in configure.ac to ensure that the pthread cflags,
	  lflags, and libs variables are available since the Cg check now
	  utilizes those variables.
	- Jorrit fixed a bug in the new shader code from res2k. It would
	  use SCF_DECLARE_IBASE instead of SCF_DECLARE_IBASE_EXT and this could
	  cause crashes in some circumstances.
	- Jorrit added an entry to the drivers database to disable stencil
	  clipping on a Rage128 card on linux.
	- Jorrit added a new data/shader/specifyambient.xml which is a variant
	  of data/shader/ambient.xml but one that doesn't hardcode the
	  ambient color (STANDARD_LIGHT_AMBIENT). So you can use this to
	  set another ambient value on a material. This is useful to make
	  fullbright materials for example.
	- Jorrit improved error reporting for shader loading a bit.
	- Jorrit removed some error reporting in csShaderProgram about
	  destination attribute missing. I'm not sure this is the correct
	  fix though. Perhaps in some cases it IS an error if this is
	  missing.
	- Jorrit added a new 'autoresolve' tag for portals. If this tag is
	  given the portal will automatically reconnect to the sector if
	  the sector is removed and later added again. Without this flag
	  it works as follows:
	    - Portal is created, if sector doesn't exist a callback is
	      created which will attempt to find the sector as soon as the
	      portal is needed (for rendering for example).
	    - As soon as the callback manages to find the sector it will
	      connect the portal to that sector and remove itself.
	    - When later the sector is removed the portal will be cleared
	      again because it keeps a weak reference to the sector.
	    - However when the sector then comes back again the callback
	      is removed so the portal will not be able to relink again
	      to the sector.
	  With the 'autoresolve' flag the callback will not remove itself
	  so it will always be able to relink to the sector. This is not
	  default because this callback takes some memory which is not
	  needed in most cases. Using this flag helps with games that do
	  dynamic loading and unloading of levels.
	- Jorrit slightly improved performance in the engine by using
	  csMeshWrapper instead of iMeshWrapper to control the socket
	  positioning. That way a lot of virtual calls are avoided.
	- res fixed the splatting_bump shader for the new <variablemap> syntax.
	- res augmented the R300 driver db entry to prefer clip planes.
	- res re-activated reporting of a missing 'destination' report in the
	  shader program <variablemap> parser.
	- res changed the fixed and PS1 shader plugins to use the new shader
	  plugin base class.
	- Jorrit fixed a problem with the new autoresolve and the old
	  style portal specification using the <portal> keyword in a
	  thing mesh. In this particular case it wouldn't actually work
	  and it would also use an uninitialized variable.
	- res augmented the swig-generated output for cspython to #undefine
	  _DEBUG before including Python.h. This way, python23.lib instead of
	  python23_d.lib is used on MSVC.
	- res fixed some VC6 compile errors in some shader plugin and updated
	  some shader plugin makefiles to utilize the common shaderplugin code.
	- res changed char arrays on the stack to csStrings in stdrep and
	  simpcon to avoid buffer overflows.
	- Eric Sunshine applied a Swig-related patch from Andrew Sutherland
	  <sombrero@alum.mit.edu> (patch #925053).  Andrew writes:
	    The problem, long story short: iGeneralFactoryState has a number
	    of methods that return arrays.  However, the signature is just
	    csVector3* or the like, which SWIG interprets to be a point to a
	    single object, rather than an array.  The specific methods are
	    GetVertices, GetTexels, GetNormals, GetTriangles, and GetColors.
	    The changes are:
	    - Swigs csgeom/tri.h, which defines csTriangle.  This is exposed by
	      GetTriangles/GetTriangleByIndex, but was previously just treated
	      as an opaque pointer.
	    - Introduces GetVertexByIndex, GetTexelByIndex, GetNormalByIndex,
	      GetTriangleByIndex, GetColorByIndex.
	    - Introduces (tiny manual) python replacements for GetVertices,
	      GetTexels, GetNormals, GetTriangles, and GetColors via the SWIG
	      python binding's 'shadow' feature.  These replacements create
	      instances of the next class, providing it with the proper
	      by-index-getter and count-getter.
	    - Introduces a new Python class that takes a by-index-getter and
	      count-getter and exposes them as an object that implements
	      __len__ and __getitem__.  This is sufficient for 'for' loops and
	      (index-guarded) subscript access to work properly.  This has the
	      benefit of presenting a 'lazy' list view to the user.
	      Specifically, there's no getting around the wrapper object being
	      constructed for each index retrieved (after all, we're just
	      calling GetFooByIndex), but at least it doesn't happen all at
	      once.
	  In addition, Eric added iSprite2DState::GetVertexCount(), and added
	  %ignore directives for non-Python platforms to ignore the methods
	  which are incorrectly exported by Swig, and which the new
	  GetFooByIndex() methods are meant to replace.
	- res changed the Cg shader plugins to use the new shader plugin base
	  class.
	- res added two simple example Cg programs.
1-Apr-2004
	- Eric Sunshine fixed include/Jamfile so that it installs Swig (*.i)
	  files.  These are needed by CEL, for instance.
	- Eric Sunshine fixed mk/install.mak so that it installs Swig (*.i)
	  files and Perl5 support files (scripts/perl5/*.pm).
	- Jorrit fixed a problem in the fixed shader where it would fail
	  to initialize the 'primcolvar' variable (VERTEX_COLOR token).
	  In vertex_color was not given in the shader then the result would
	  be essentially undefined because of this.
	- Jorrit enabled VBO support in NR OpenGL renderer again. There is
	  still a problem on linux with ATI and drivers 3.2.8 but for that
	  we need to add something to the gldrivers database so that we
	  can disable VBO for that situation alone.
	- Jorrit fixed a slight problem in the PlaneGlyphElementHandler which
	  is used in the font cache. It would not correctly copy the source
	  element in the 'Construct()'. This fix does not fix the problem with
	  the huge slowdown in CS though.
	- res changed the csArray<> comparison functor to not store the key as
	  a ref. This seems to fix the slowdown.
	- Eric Sunshine fixed cs.mak so that "-L$(OUT)" appears in the link
	  command before other platform-specific -L directives.  This ensures,
	  for instance, that application and plugin targets will link against
	  the libraries in the build directory, rather than any installed
	  versions.  Without this change, the linker was preferring installed
	  CS libraries over developmental ones, which was incorrect.
	- Jorrit added a rule to gldrivers.xml to disable VBO for the 3.2.8
	  ATI drivers on linux. I haven't yet tested the more recent ATI
	  drivers so I don't know if the rule has to be applied there too.
	- Eric Sunshine updated outdated information in the KDevelop HOWTO and
	  fixed some incorrect examples.  Also updated the snap5 screenshot so
	  that it no longer mentions the obsolete cssys library.
	- Eric Sunshine augmented the Jam DoInstall rule so that it accepts an
	  optional list of post-install rules to invoke upon the installed
	  target.
	- Eric Sunshine fixed Jam build system bug where it failed to run
	  `ranlib' on the installed libraries.  (Instead, it incorrectly
	  invoked ranlib just after building the libraries, which is completely
	  ineffectual.)
	- res fixed a cut'n'paste error in spr2d: the vertex/color/texcoord
	  render buffers were errorneously flagged as 'index buffers', causing
	  display corruption when VBO was enabled.
31-Mar-2004
	- Jorrit fixed a bug with iSector->HitBeamPortals(). It would not
	  be able to register hits on meshes that don't return a polygon
	  index.
	- Jorrit fixed an initialization error in the csGLStateCache for
	  GL_STENCIL_BITS. This bug was reported by valgrind.
	- Eric Sunshine fixed user.mak so that it only builds glshader_arb,
	  glshader_fixed, and glshader_ps1 if GL.AVAILABLE is 'yes'.
	- Eric Sunshine worked around a slew of MSVC6 compiler bugs ("internal
	  compiler error" and several others) which were triggered by changes
	  to csArray<> aimed at making FindKey() and FindSortedKey() type-safe.
	  The new approach wraps the comparison function in a functor which
	  falls back to unsafe void* if and only if the compiler fails to grok
	  the strongly typed approach.  The functor wrapper hides this MSVC6
	  anomaly from client code.
	- Steven Geens made sprite socket update their position in the new
	  renderer.
30-Mar-2004
	- Eric Sunshine added missing "#define CS_SYSDEF_PROVIDE_SOFTWARE2D"
	  to null_render3d.cpp.  Reported by Steven Geens.
	- Jorrit disabled the sphere culling for the generic render loop
	  that was recently added. This adds a very big overhead to the
	  main rendering loop in csSector which is not acceptable. We need
	  another solution for this.
	- Jorrit fixed two bugs with portal containers in the engine:
	    - First when moving to a sector the portal container would
	      unregister itself instead of registering.
	    - Second the portal container registration was broken in case
	      the portal mesh is a child mesh (which is a very common case).
	- res fixed spr3d on NR (actually, just the obj2cam transform wasn't
	  set). Also slightly changed the way it's drawn, now uses shader var
	  accessors (instead of setting all the data in GetRenderMeshes()).
	- res fixed a GCC warning in the PS1 plugin.
	- res fixed glrender3d to use the actual perspective center instead
	  of a hardcoded "center of screen".
	- res changed glrender3d to set up the projection matrix lazily. Also
	  updates this matrix when the perspective center or aspect changes
	  (which can happen if multiple views are drawn subsequently).
	- res changed csList<>::csListElement to not be dllimported any more.
	  That caused linking problems (as the actual instantiation of
	  csListElement would eb required in csutil).
29-Mar-2004
	- Jorrit changed the NR null3d renderer so it uses the soft canvas
	  instead of the OpenGL canvas by default.
	- Jorrit fixed a bug in the NR null3d renderer. It would call
	  g2d->BeginDraw() too many times.
	- Jorrit fixed another bug in the NR null3d renderer. It was using
	  csRef and DecRef() at the same time.
	- Jorrit added 'chunklod' to the list of static plugins for Jam.
	- res worked further on the PS1.x->1.4 converter. Improved register
	  aliasing.
	- res made the NR normalizer cubemap size changeable via a config
	  setting. Also increased the default size to 256.
28-Mar-2004
	- Eric Sunshine moved csutil's copy of TinyXML into a private namespace
	  to avoid clashes with other external libraries which also embed
	  TinyXML.  This corrects, for instance, a problem on MacOS/X where
	  modules requiring both csutil and cal3d failed to link on account of
	  symbolic collisions (since cal3d also embeds TinyXML).
	- Eric Sunshine greatly expanded the Doxygen documentation fo iVFS and
	  iFile.
	- Eric Sunshine augmented iVFS::PushDir() so that, as a convenience, it
	  optionally accepts a path as an argument and invokes ChDir() for that
	  path after pushing the current working directory.
	- Eric Sunshine fixed shadermgr.mak so that it also installs the
	  contents of CS/data/shader/, since these data files are required when
	  configured for the new renderer.
	- Eric Sunshine upgraded csEngine::HandleEvent() so that it deals more
	  gracefully with failure to load /shader/or_lighting.xml (rather than
	  crashing outright).
	- res made the following changes to map2cs:
	    - Applied a patch from Calle Lejdfors <calle.lejdfors@cs.lth.se>
	      to generate 'new' portal statements.
	    - Improved texturing for HL maps in some cases.
	    - Allow more control where a library is referenced in the map file;
	      "end:lib" puts lib at the end (useful for e.g. sequences).
	    - The player start angle is correctly evaluated.
	    - Added possibility to exclude certain textures from being
	      generated and written to the .zip (so they are supplied by the
	      user).
	    - Added possibility to specify the renderloop to use.
	- res augmented the rotation sequence action loaded to automatically
	  determine a rotation center (the middle of the object's bounding
	  box) when <autoffset /> is specified.
	- res slightly improved the error handling when reading shader files
	  from world files.
	- res fixed the simple console to draw text in PutTextV() only if the
	  method hadn't been called recursively (on rare occasions, something
	  was reported from inside the 2D functions, causing the 2D stuff to
	  be called again, where again something was reported and so on,
	  leading to an infinite recursion resp. stack overflow).
	- res changed csShaderVariable::SetValue(csVector2) to set the 3rd
	  component of the internally stored Vector4 to 0 instead of 1.
	- res added a small hack to the material shader storage to clear the
	  assigned OR compatibility shader if a shader for some shader type
	  is set. This was done to allow the removal of the implicitly set
	  OR compatibility shader.
	- res virtualized some methods in the standard proctex plugin.
	- res augmented csRenderMeshList with a method to remove all meshes
	  outside a sphere.
	- res changed the generic renderstep to not draw meshes that are
	  outside the influence of the light passed in.
	- res added a method to iTextureLoaderContext to retrieve the name of
	  the texture to be loaded.
	- res un-inverted the <mipmap> texture flag parse logic.
	- res added a texture loader to generate a (static) texture from a
	  shader expression.
	- res added a sanity check to csShaderVariableContext::PopVariables().
	- res fixed the shader expressions so atomic expressions are accepted
	  and added pow, min and max functions.
	- res did various changed and fixes to the glshader_ps1 plugin:
	  changed the way instruction are declared, the version is parsed,
	  fixed replication for ps1.4 programs, fixed dealing with phase in
	  ps1.4 programs, fixed parsing of the destination write mask for 1.4
	  programs, now deals with the pairing modifier.
27-Mar-2004
	- Anders Stenberg did the following NR changes:
	    - Added the possibility to route Cg programs through
	      the Pixel Shader plugin, to make Cg available on lower end ATI
	      cards. This means the Cg plugin should now be able to cover all
	      cards with some kind of pixel shading ability. (I.e. GF3+ and
	      ATI 8500+). Routing will be enabled by default on cards where
	      ATI_fragment_shader is supported, but ARB_fragment_program isn't.
	      It can also be manually forced on or off by setting
	      "Video.OpenGL.Shader.Cg.PSRouting" in a config file.
	    - Fixed variable mapping in the Cg plugin, which apparantly was
	      broken.
	    - Added an overloaded Load function to shader plugins, which
	      allows for loading shaders from raw text buffers instead of
	      via iDocumentNode. (Useful for programmatic loading of shaders.)
	      Currently only the Pixel Shader plugin actually implements this.
	- Jorrit fixed a bug in sprcal3d->HitBeamOutline() routine.
	  The routine forgot to set the 'isect' return value AND in
	  addition to that it even used that value. Hitting cal3d
	  sprites with HitBeam() should now work.
	- Anders Stenberg added scissor clipping to NR. This means a GL
	  scissor clipping box is applied to the bounding box of the clipper,
	  which in practice means some fillrate is saved.
	- Anders reverted the latest addition (or at least commented it out)
	  since it'll probably conflict with scissor settings in the canvas.
	  A solution for them to live in harmony should be done eventually.
26-Mar-2004
	- Marten added csMatrix as a type a csShaderVariable can store.
	- Marten made the shadermanager responsible for handling the shader-
	  variablestack used during rendering. This to allow other plugins to
	  access it without having to pass it around everywhere.
	- Marten comitted first steps toward making NR use fog. It does not yet
	  work though, but its progressing.
	- res started to work on a PS1.x -> 1.4 converter. Not useable yet,
	  though.
	- Eric Sunshine eradicated all ugly, unsafe, type-agnostic void* usage
	  from csArray's sorting and searching methods.  Now, all arguments to
	  these functions and their comparison helpers are type-specific and
	  type-safe.
	- Eric Sunshine fixed compilation errors and warnings in the various
	  shader plugins.  Also added 'softshader' to user.mak.
	- Anders Stenberg fixed a problem with fog calculation. Still not
	  working though.
	- res fixed a compile error in partphys_ode after the recent array
	  changes.
	- res further worked on the PS1.x -> 1.4 converter. Can handle veeery
	  simple programs now.
	- Jorrit disabled outline splatting in the Dynavis plugin. This can
	  be enabled again as soon as it works properly.
	- Luca reflected the change to the signature of the method
	  iMeshObject::GetRenderMeshes to the csMeshObject class.
	- Eric Sunshine worked around an MSVC6 compiler bug where it was unable
	  to determine the type of template argument K in
	  csStringArray::FindSortedKey().  Hopefully, we will be able to find a
	  more suitable solution in the near future so that the ugly hack
	  presently in use can be eliminated.
25-Mar-2004
	- res ported code to properly handle keycolored procedural textures
	  over from the OR.
	- res changed the NR glrender3d texture manager so that the images of
	  a texture aren't replaced with the lowest mipmap(s).
	- res slightly changed the behaviour for retrieving shader var texture
	  values: now, a handle is requested from a wrapper when it's needed
	  the first time. Some wrappers don't have a handle yet when the value
	  is set, but get one later.
	- Matt Reda changed the MacOS X OpenGL canvas to use a 32 bit depth
	  buffer (it was 16) and added 8 bit stencil and alpha buffers when
	  compiling for the new renderer
	- Jorrit added a new csStringReader class to csutil. This class takes
	  a const char* input buffer as input and will split that buffer
	  in lines. You can then read the lines one by one. It will correctly
	  read lines for both CR and CR/LF format.
	- Jorrit fixed a few bounding box calculation errors in sprcal3d.
	  Completely untested due to lack of cal3d library.
	- Marten made chunkedlod display something again. It does not yet work
	  with mirrors. Maybe someone who understands the plugin can fix that.
	- Eric Sunshine performed project-wide spelling corrections:
	    conveniance --> convenience
	    conveniant	--> convenient
	- res ported the csParticleSystem based particle systems to NR.
	- res fixed spr2d not always respecting it's position when used as a
	  particle.
24-Mar-2004
	- Jorrit extended the standard output console so that it now also
	  supports setting of the font through the config file. Added
	  a data/config/standardcon.cfg file. Currently the only setting
	  that the standard output console supports is StandardConsole.ConFont
	  which can have the following values:
	    - auto: select font based on size of display, similar like what
	      simple output console does.
	    - select the specified font.
	- Jorrit fixed a bad bug in the standard output console which caused
	  it to crash when the total size of the buffer would be exceeded and
	  the top line would be deleted.
	- res updated spr2d to work with NR.
	- res made some changes to how the render mesh holders work internally.
	- res added some documentation to csRenderMesh, csAlphaMode, the
	  render mesh holders and csRenderBufLock.
	- res changed csRenderMesh to have the db_mesh_name member not only in
	  debug mode (mostly for binary compatibility between debug/release
	  binaries).
	- res fixed a bug in csRenderMeshHolderSingle where it reported the
	  first returned mesh as 'not created', tho the opposite would've been
	  correct.
	- Eric Sunshine fixed run-time syntax error in Java header directory
	  check in configure.ac.  Problem was introduced on 22-Mar-2004 when
	  Java check was augmented for MacOS/X.
	- Eric Sunshine fixed csconout.mak so that it installs the new
	  standardcon.cfg configuration file.  Also upgraded the makefile to
	  the new style which does not directly pollute $(OUT).
23-Mar-2004
	- Anders Stenberg brought stencil shadows back to life in NR.
	  They should get along well with stencil clipping.
	  Possible todo: Not assume 8-bit stencil, but allow different
	  bitcounts. Also somehow avoid glClear of the stencil buffer.
	- Anders Stenberg updated shader plugins to actually not load
	  if the wrong renderer (software) is used. Todo is to give a
	  better error message.
	  Also changed the "environment" syntax of FixedVP a bit to
	  allow for future texgen modes. Look at water shader for reference.
	- Anders Stenberg fixed a bug in windows threading, where a
	  semaphore "LockWait" would return instantly due to wrong
	  usage of the timeout value.
	- Eric Sunshine upgraded the iCursor documentation and interface so
	  that it uses the term "transparency" rather than "alpha" (since
	  "alpha" was misleading), and also indicates the range of transparency
	  values and their meanings.  Also cleaned up some other anomalies in
	  the interface.
	- Eric Sunshine fixed a potential crasher in
	  csRenderMeshHolderMultiple::GetUnusedMeshes() where it blindly
	  accessed element zero of the renderMeshes[] array without checking if
	  the array contained any elements.
	- Eric Sunshine changed scripts/cs-config/Makefile.template to look for
	  *.cpp files in the current directory, by default, rather than in a
	  src/ subdirectory.  The assumption is that an unsophisticated user
	  will probably just dump all sources into the main directory rather
	  than trying to impose some sort of organization.  More sophisticated
	  users, of course, are probably Makefile-wise and will know enough
	  to edit the makefile to suit their needs.
	- Eric Sunshine added libtool check to configure.ac.  This check is
	  smart enough to identify GNU libtool and Apple's own libtool (which
	  is unrelated to the GNU command, and which serves a totally different
	  purpose).  The check will be able to identify Apple's libtool even if
	  a GNU's libtool appears in PATH before Apple's libtool.
	- Eric Sunshine fixed bugs in configure.ac where it was composing
	  search paths using a literal ":" delimiter rather than
	  $PATH_SEPARATOR.
	- Eric Sunshine worked around a problem where INT64_C() and similar
	  macros from <stdint.h> were not getting defined when building
	  cs_pyth.cpp.  This happened because the Swig-generated cs_pyth.cpp
	  includes <Python.h> very early, which includes <stdint.h> (on some
	  platforms) before we have a chance to define __STDC_LIMIT_MACROS.
	  __STDC_LIMIT_MACROS must be defined before <stdint.h> is included in
	  order for <stdint.h> to define INT64_C() and cousins.  To solve,
	  cs_pyth.cpp is now post-processed to ensure that __STDC_LIMIT_MACROS
	  is defined before <Python.h> is included.
22-Mar-2004
	- Anders Stenberg fixed several places where mesh objects would
	  return "false" from GetRenderMeshes (which is supposed to return
	  a pointer), and didn't initialize the "number of meshes returned"
	  variable. This could cause the culler to crash.
	- res changed glrender3d to support changing the texture filter mode
	  and texture cache size via a config setting.
	- res started on converting spr2d to NR. Still needs work, tho.
	- res added a GL driver DB entry for software GL implementations.
	- Jorrit fixed spr2d so that it compiles again with OR.
	- Jorrit fixed spr2d Jamfile so that it no longer trys to use
	  the bcsgeom library (whatever that is :-).
	- Jorrit fixed the NR glrender3d target. You can't declare variables
	  without a type like this:
	    static const textureMinFilters[3] = {GL_NEAREST_MIPMAP_NEAREST,
	      GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_LINEAR};
	- Jorrit fixed a harmless initialization error in Frustvis and
	  Dynavis.
	- Jorrit fixed a bug with NR and handling of visibility culling and
	  portals. Previously the NR would reuse the same visibility culling
	  result if you entered some sector twice (through different portal
	  paths). But this is invalid since the portal contributes to
	  visibility culling so for the same sector the visibility culling
	  result can be different because the portal you entered is different
	  (and other objects will be visible/invisible). Solved this by adding
	  a context_id to csRenderContext. This id is used instead of comparing
	  pointers. Comparing pointers was not safe because render contexts are
	  reused. The id is never reused (for the same frame).
	- Jorrit fixed the chunklod terrain engine (NR) so that it no longer
	  returns bounding boxes that have huge floating point values in them.
	  The visibility cullers (more specifically the kdtree) cannot cope
	  with that.
	- Jorrit removed the obsolete render context data system from
	  iRenderView. Nothing was using it.
	- Eric Sunshine fixed bug in scripts/cs-config/Makefile.template where
	  it incorrectly defined DO.EXEC rather than DO.EXE, thus causing the
	  build to fail.
	- Eric Sunshine augmented the Java SDK usability test in configure.ac
	  so that it succeeds on MacOS/X.
	- Eric Sunshine changed cspace.i so that it %ignores almost all
	  functionality of iString.  All higher-level languages for which CS
	  bindings exist already have powerful string classes, so we can safely
	  export a bare-bones iString interface.  As a happy side-effect, this
	  change also eliminates the compilation error "cs_pyth.cpp: error: ISO
	  C++ forbids assignment of arrays" which occurs on 64-bit x86_64
	  systems when SWIG tries assigning a va_list to a va_list in the
	  iString::FormatV() wrapper.
21-Mar-2004
	- Luca Cappa committed the res fix to the problem regarding the lack
	  of the regex.c file in the CSUtil library. The problem was
	  related to the VisualC++ compiler environments only.
	- Marten made a new, hopefully permanent, fix for the csRenderMesh
	  problem. This fix replace removed res workaround from the 15th March.
	  This change also means that DrawTest no longer is used in the NR
	  way of doing things. Instead GetRenderMeshes now does the job of both
	  DrawTest and GetRenderMeshes.
	- res fixed the ball plugin to correctly update the lighting and use
	  the set mixmode on NR.
	- res fixed a few compiler warnings after the cs-win32libs update.
	- res fixed csInputDriver so it actually can receive focus changed
	  event.
	- res updated the Win32 keyboard driver to do more sophisticated key
	  state restoration after the CS window gained focus.
	- res fixed csImageMemory to also not delete the Palette if the image
	  isn't to be deleted.
	- Eric Sunshine reverted Luca Cappa's change to msvcgen/win32.mak.  The
	  file msvcgen/required.mak already forcibly sets REGEX.AVAILABLE=no,
	  so there should be no need to do so again in win32.mak.  If there is
	  some configuration in which this is failing, please report so that it
	  can be fixed correctly.
	- Eric Sunshine fixed a number of Texinfo errors in the CS manual which
	  were introduced yesterday.
	- John Harger fixed the particles plugin to reflect Marten's recent
	  change to iMeshObject::GetRenderMeshes
	- Jorrit fixed the ball plugin so that it compiles again after res2k
	  'fixed' it.
	- Duhprey added a IBASE constructor/destructor for csSimpleSampler
	- res changed csMaterial::SetShader() to override any already set
	  shader for a type.
	- res fixed bugplug's spider camera catching in NR after Marten's
	  recent changes to GetRenderMeshes() and DrawTest().
	- res augmented map2cs with the ability to specify libraries included
	  in a map and exclude certain materials from being generated (so they
	  are supplied by the user).
	- res fixed map2cs so that q3 invisible textures are handled properly.
	- res fixed the PS shader plugin so constants are honored for ATI
	  programs.
	- res changed the glrender3d to also call G2D->BeginDraw()/FinishDraw()
	  before beginning/finishing 3d graphics.
	- res moved the NV/ATI fragment shader setup to the ps1 plugin.
	- res updated sprcal3d after Marten's recent changes.
	- res tried some more to get NR softrender3d to work. Not there yet,
	  though.
20-Mar-2004
	- Anders Stenberg fixed procedural textures in NR. Visit for
	  textures wasn't called, and is now called on access in the shader
	  plugin (XMLShader). Not sure that's the correct place, but it works
	  for now.
	- Anders Stenberg fixed a bug in SimpleFormer which made it reallocate
	  texture data on each access, i.e. leak enormous amounts of memory.
	- Jorrit disabled the use of VBO in the new renderer since this doesn't
	  appear to be working right at the moment.
	- res applied some changes needed by the cs-win32libs package.
	- res changed the manual to state cs-win32libs instead of msvc_libs
	  resp. csmingw-libs as the Win32 support package.
	- res generally updated some of the information in the Win32 build
	  docs.
	- res extended the "External Libraries" list somewhat.
	- res fixed a small formatting error in the VC build docs.
        - Philip Wyett eliminsted signed/unsigned warnings in simpleformer.
19-Mar-2004
	- res fixed compilation of the aseie plugin.
	- duhprey overrided the correct Write in null2d (from Jorrit)
	- Jorrit fixed a compile error with MSVC6 and the generic render
	  loop plugin. The following construct is not valid with that compiler:
	    for (int i = ...)
	    for (int i = ...)
	- Eric Sunshine updated MSVC build instructions in the manual so that
	  they state explicitly that the "Release" or "Debug" build modes must
	  be used when building wkstypical, and that "Release_NR" and
	  "Debug_NR" must be avoided.
	- Eric Sunshine augmented msvcgen/workspaces.mak so that the csjava,
	  csperl5, and cspython modules are not included in the wksnewrenderer
	  workspace.  The reason for this change is that the Swig-generated
	  code in these modules is configuration-specific.  For instance, if
	  Swig generates the code when configured for the old-renderer, then
	  the code will not be buildable when configured for the new-renderer.
	  Since the Swig-generated code stored in CVS is generated for the
	  old-renderer, it should not be built by wksnewrenderer.
	- Eric Sunshine re-ordered the "!MESSAGE "%project% - Win32 ..." lines
	  in the msvcgen/template6 project templates so that the "Release" or
	  "Debug" line is listed last rather than "Release_NR" appearing last.
	  This was necessary because MSVC6 chooses its default build
	  configuration by consulting the last such line it finds in the
	  "active" project, and we want people who use wkstypical, wksall, or
	  wkswalkall to build with "Release" or "Debug", not with "Release_NR"
	  (which is reserved for wksnewrenderer).  Defaulting to "Release_NR"
	  for the project files used by most people was a Bad Thing.
	- Eric Sunshine augmented the csRef<T> and csPtr<T> `out' typemaps in
	  javapre.i, perlpre.i and pythpre.i to work around MSVC complaint
	  about ambiguous assignment of SwigValueWrapper<csRef<T>> to csRef<T>
	  (or SwigValueWrapper<csPtr<T>> to csRef<T>).  GCC, on the other hand
	  did not have a problem such assignments.
	- res removed code from the plugin finalization code that set iSCF::SCF
	  to 0. As the documentation states, iSCF::SCF can be, dependent on the
	  platform, either module global or "truly" global. In the latter case,
	  setting it to 0 can be dangerous.
	- Eric Sunshine fixed bug in configure.ac where Java SDK check would be
	  run even if Java development tools were not found.
	- Eric Sunshine attempted to work around compile failure of glwin32 on
	  some Cygwin installations where it complained about missing
	  SetupWGLextStr(), and `extstrWGL'.
	- Eric Sunshine attempted to work around problem reported by Martin
	  Henne <martin.henne@web.de> where Flex on Debian 'sid' does not seem
	  to emit a #define for YY_PROTO().  This macro is used by the YY_DECL
	  macro in aws/skinlex.ll.
18-Mar-2004
	- Anders Stenberg changed the terraformer interface a bit (made Sample
	  functions return pointers to data instead of filling out supplied
	  preallocated blocks). Also made it actually work, at least to some
	  degree.
	- res augmented csappframe with CS_CSAPPFRAME_EXPORT. Also changed it
	  to not implement main(). The startup code is now in
	  csApplicationFramework::Main() and has to be called explicitly by the
	  client.
	- res augmented csgeom CS_CSGEOM_EXPORT.
	- res fixed an oversight from adding CS_CSGEOM_EXPORT to csgfx.
	- res augmented cstool with CS_CSTOOL_EXPORT.
	- res removed the csImage::dither variable.
	- res fixed csutil/tree.h. csTree is purely inline but was declared as
	  CS_CSUTIL_EXPORT, causing missing symbols when csTree was used
	  elsewhere.
	- res hacked around the fact that cs_static_var_cleanup was defined in
	  the app/plugins but used in the libs by using only one
	  cs_static_var_cleanup (contained in csutil) when building shared
	  libraries.
	- res changed the nada reftracker to being not exported via
	  CS_CSUTIL_EXPORT.
	- res augmented csws with CS_CSWS_EXPORT.
	- res removed a superflouos csTriangle from the ASE plugin.
	- Jorrit added better error reporting to walktest in order to find
	  out why CS is now broken.
	- Jorrit added better error reporting to the csparser plugin. From
	  this I discovered that the image loader plugins are not working.
	- Jorrit fixed a compile error in the image loader multiplexer. This
	  fixes CS again.
	- Jorrit added CS_ENTITY_INVISIBLEMESH and CS_ENTITY_NOHITBEAM flags.
	  The first flag controls the visibility of the mesh (ONLY the
	  visibility of the mesh, HitBeam() is not affected). The second flag
	  controls if HitBeam() will hit the mesh. The original
	  CS_ENTITY_INVISIBLE flag is redefined as a combination of
	  CS_ENTITY_INVISIBLEMESH and CS_ENTITY_NOHITBEAM.
	- Jorrit added equivalent flags to the loader: 'invisiblemesh'
	  and 'nohitbeam'.
	- Jorrit modified the culler plugins to respect the new
	  CS_ENTITY_NOHITBEAM flag. They will ignore CS_ENTITY_INVISIBLEMESH.
	- Jorrit modified the engine to respect CS_ENTITY_INVISIBLEMESH and
	  ignore CS_ENTITY_NOHITBEAM (for drawing).
	- Jorrit modified the engine to respect CS_ENTITY_NOHITBEAM when
	  calculating intersections.
	- Jorrit fixed the visibility cullers so that they now respect the
	  CS_ENTITY_INVISIBLEMESH flag when doing visibility
	  culling. Previously the engine had to do that later on after the
	  visibility culler did its job. This even fixes a bug with Dynavis
	  where an invisible mesh would still contribute to culling.
	- Jorrit did a significant change in the way visibility of child
	  meshes is handled. A child mesh is no longer considered to be
	  automatically invisible when the parent is invisible. You have to
	  set the invisible flag individually on every child if you want that.
	- Jorrit added a -silent commandline option for the standard reporter
	  listener plugin. If you give that option then it will no longer
	  pop up the yellow messages for warnings at startup.
	- Keith Fulton fixed very obvious bug in
	  csSpriteCal3DMeshObject::RecalcBoundingBox() where old bbox was not
	  cleared out before new points were added.
	- Keith Fulton added a skeleton update as soon as an animation cycle is
	  added, which makes the bbox update. This enables accurate colliders
	  to be created.
	- res changed the imgplex plugin to set the dither flag on all image
	  loaders.
	- Eric Sunshine augmented cspace.i to take into account the new
	  CS_CSUTIL_EXPORT, CS_CSTOOL_EXPORT, etc. export macros in order to
	  keep Swig from barfing on them.
	- Eric Sunshine augmented pubapi.dox and devapi.dox to take into
	  account the new CS_CSUTIL_EXPORT, CS_CSTOOL_EXPORT, etc. export
	  macros in order to keep Doxygen from barfing on them.
	- John Harger fixed the copying method in csAnonRenderBufferManager
	  that would cause a crash if you ever tried to actually use one in
	  certian configurations
	- John Harger added some necessary includes to make mdltool.cpp compile
	  as a DLL.
	- John Harger fixed genmesh, so that the anonymous buffers are
	  actually retrieved.
17-Mar-2004
	- Duhprey added a simple terraformer loader plugin
	- Eric Sunshine fixed copy/paste error in terraformer loader makefile
	  which broke it.  DIR.SIMPLEFORMERLDR referenced the wrong path.  Also
	  fixed formatting of help message.  Added appropriate SubInclude
	  invocation to its parent Jamfile to ensure that it gets built.
	- John Harger exported functions in csutil, via CS_CSUTIL_EXPORT, to
	  make csutil viable for compilation as a shared library.  So far I
	  have tested it on MSVC 7.1 and it has worked without error.
	- res removed '#define CS_CSUTIL_LIB' from the csutil sources. The idea
	  is to #define with a compiler (resp. preprocessor) option.
	- res augmented libcsgfx with CS_CSGFX_EXPORT.
16-Mar-2004
	- Jorrit fixed a bug in iSector->HitBeamPortals(). It would not
	  initialize the mesh to 0 which could cause bad errors in some
	  cases.
	- Eric Sunshine fixed copy/paste error in win32/csosdefs.h.  It defined
	  CS_IMPORT_SYM as __declspec(dllexport) rather than as
	  __declspec(dllimport).  Also fixed a few minor issues in csexport.h.
	- res fixed the software NR and software shader plugin to compile
	  again.
	- John Harger fixed csparser and xmlshader to report an error when
	  a shader file could not be found, rather than dereferencing a null
	  pointer.
	- Eric Sunshine worked around MSVC6 limitation where it barfed on
	  csRef<> when confronted with copy-constructors and assignment
	  operators for types T and T2.  It turns out that MSVC6 will accept
	  these as long as the templated versions (T2) appear before the
	  non-templated versions (T).
	- res renamed T& csHash<>::Fetch(key, fallback) to Get() and
	  T* csHash<>::Fetch(key) to GetElementPointer(). This way, familiar
	  name(s) are kept, but code utilizing the old-style Get() syntax will
	  fail to compile, thus forcing examination of the code as well.
15-Mar-2004
	- Anders Stenberg added a first version of a TerraFormer plugin. It
	  will be responsible for feeding data to other plugins like terrain
	  and vegetation renderers. Also introduced a new concept to CS:
	  Thoroughly commented code!
	- Eric Sunshine changed cs.mak so that "mkdir -p" for $(OUTDIRS) is now
	  performed silently since it provided very little useful information
	  to the viewer yet was extremely verbose.
	- Eric Sunshine re-enabled the assignment-compatible (<class T2>)
	  copy-constructor and assignment operator in csRef<>.  It turns out
	  that if T and T2 are the same class, then the compiler will not
	  invoke the T2 copy-constructor or assignment operator, but will
	  instead just perform memberwise copy/assignment.  For this reason, we
	  need to have copy-constructors and assignment operators for both T
	  and T2.
	- Eric Sunshine made the following changes to the new TerraFormer
	  plugin:
	    - Fixed nasty copy/paste errors in the makefile.
	    - Updated makefile to new style which does not pollute $(OUT).
	    - Added reference for plugin to user.mak.
	    - Added missing Jamfile.
	    - Added missing .csplugin meta-information file.
	    - Fixed several compilation errors and warnings.
	- Eric Sunshine renamed the csHash<>::Get() methods to Fetch(), and
	  GetAll() to FetchAll().  This was done in order to force people to
	  examine invocations of these methods and to adjust the code
	  appropriately.  This was necessary because the recent changes to the
	  Get() methods radically changed the return semantics but, in numerous
	  cases, did not cause the compiler to emit a diagnostic.  The result
	  of this situation was that the behavior of previously valid programs
	  would silently change, usually by breaking.
	- Eric Sunshine fixed a few cases where code had not been updated to
	  reflect the new return semantics of csHash<>::Get() -- now renamed to
	  Fetch().  The new name, Fetch(), made it possible to find and repair
	  these otherwise difficult-to-diagnose bugs, the most notable of which
	  was csKeyboardDriver::GetKeyState() which was returning bogus
	  results.
	- res changed some more occasions of csHash<>::Get() to Fetch().
	- res fixes some signed vs unsigned warnings in the xmlshader, cg, arb
	  and fixed shader plugins.
	- Eric Sunshine added java, javac, ant (Java build tool), and Java SDK
	  checks to configure.ac.  Also added new --with-java option which is
	  enabled by default.
	- Eric Sunshine made some changes to pacify SourceForge.  They are
	  concerned that we have been using >500MB of web server space even
	  though we are alloted only 100MB.  Therefore, CVS snapshots are now
	  only distributed in .tar.bz2 format (rather than .tar.bz2, .tgz, and
	  .zip), and we only keep one snapshot around at a time rather than
	  two.  This should free up about 130MB.  Further, we no longer publish
	  "apidev" for online viewing or download.  This will save another
	  100MB.  Finally, documentation offered for download is now only
	  published in .tar.bz2 format (rather than .tar.bz2, .tgz, and .zip).
	- John Harger fixed the warnings in glshader_ps1.
	- res fixed a problem in csPortalContainer::Draw() where a ref to an
	  object on the stack was stored (and thus the data was subsequently
	  corrupted).
	- res added a workaround to the generic render step for the issue that
	  the transforms in the rendermeshes will be changed to reflect the
	  portal transform. However, as meshes usually keep just 1 copy RM,
	  it'll affect the original mesh as well. Now the RMs are copied before
	  drawing behind the portal and restored afterwards. Makes the shape
	  room mirror in flarge work, but a better solution should be
	  researched.
	- John Harger added the beginnings of the macros for the DLL
	  compilation on Windows. Added include/csextern.h, modified
	  include/csdef.h and csutil/win32/csosdefs.h
14-Mar-2004
	- Keith Fulton committed Performance enhancements to sprcal3d
	  giving about 3x FPS in debug mode in viewmesh for a cal3d model.
	  Most of the enhancements are to minimize calls to
	  CalRenderer::getNormals due to a lot of unnecessary lighting updates.
	- Jorrit added back the Get() to csHash that res removed a while ago.
	  Having that Get() there does NOT restrict the csHash to be used on
	  objects that have a default constructor.  It only adds that
	  restriction if that Get() is actually used.  [Eric notes that for
	  slightly older compilers, the restriction is placed upon the entire
	  template, even if the Get() method is never invoked.]
	- Eric Sunshine reverted Jorrit's reversion to Frank's csHash<>::Get()
	  changes (after explaining why the original Get() method was so
	  undisirable that it warranted removal).
	- Eric Sunshine removed obsolete #include "iengine/statlght.h" from
	  simple.txi tutorial.
	- Eric Sushine augmented the csRef<> copy-constructor and assignment
	  operator so that they allow assignment from compatible csRef<> types,
	  rather than requiring assignment from the exact same type of csRef<>.
	  This means that the following type-compatible assignments will now
	  work as expected:
	    struct iFoo : public iBase {...};
	    csRef<iFoo> f = ...;
	    csRef<iBase> b(f);
	    b = f;
	- res disabled Eric's new csRef<> copy-constructor and assignment
	  operator, as it caused problems on VC7. Specifically, MSVC7 doesn't
	  seem to call that constructor, messing up reference counting.
13-Mar-2004
	- John Harger fixed the nVidia part of the PS1 plugin so that it will
	  use the correct texture target on a 'tex' instruction.
	- Jorrit reverted a change res made to the sprite3d normal calculation
	  on 7 August 2002. This change caused access to uninitialized memory.
	- Jorrit fixed the 'addghost' command in walktest so that it no longer
	  uses the deprecated SCF_QUERY_INTERFACE to get the polygon mesh
	  for collision detection.
	- Jorrit fixed a problem with the 'addghost' command. It caused an
	  overflow in the collision detection routine because that routine
	  was hardcoded to max 1000 triangles. The ghost was colliding with
	  the camera because it ended up at the same spot and also made sure
	  the table cannot overflow and cause memory corruption).
	- Jorrit fixed movement of ghosts in walktest.
	- res fixed a crash in CSWS caused by csApp::GetFont() having a wrong
	  prototype.
	- res changed glrender3d to not call G2D->FinishDraw() when finishing
	  3D graphics. This makes more sense as BeginDraw() isn't called when
	  beginning 3D gfx and fixes CSWS (it used to come up with black
	  components).
	- res changed the OR compatibility shader to respect the primary
	  color's alpha value.
12-Mar-2004
	- res augmented configure.ac to look for the OpenAL, Cg, and CgGL
	  libraries under a couple different names (differing by case) to
	  ensure that the libraries will be found when cross-building for
	  Windows from Linux.
	- Eric Sunshine fixed win32/csosdefs.h so that it only defines
	  CS_IMPLEMENT_PLATFORM_APPLICATION and CS_IMPLEMENT_PLATFORM_PLUGIN if
	  the client has not already provided definitions for these macros.
	- Eric Sunshine re-simplified the Cg and CgGL checks in configure.ac by
	  reverting Frank's changes and instead using the library name
	  "aliases" feature of CS_CHECK_LIB_WITH().
	- res added another alias for Cg resp. CgGL: the Linux Cg libs use a
	  mixed case 'Cg' in the names.
	- Eric Sunshine reverted Frank's last change to the Cg and CgGL checks.
	  The "Cg" and "CgGL" capitalizations are already accounted for by the
	  first argument of CS_CHECK_LIB_WITH(), which is the library's most
	  common name.
11-Mar-2004
	- Eric Sunshine performed an overhaul of the "Creating an External
	  Crystal Space Application" HOWTO since it was extremely outdated.
	  Also overhauled and simplified the related
	  cs-config/Makefile.template.
	- Eric Sunshine performed some minor cleanup of material recently added
	  to apimod98.txi.
	- Jorrit fixed a bug in csImageMemory. If the 'destroy' flag was set
	  to false it would still destroy the memory at destruction because
	  the superclass (csImageFile) does that. Solved by overriding the
	  destructor and FreeImage() and clearing the 'Image' pointer if
	  destroy_image is not set. This fixes a bug with map2cs.
	- res silenced some VC compiler warnings in regcomp.c.
	- res fixed some constness issues on VC6 in the freefnt2 and fontplex
	  plugins.
	- res removed some unused stuff from csfont.
	- duhprey removed collision detection for the sky in terrain
	- John Harger fixed a the constants, the SUB and the PHASE instructions
	  in the PS1 shader plugin for ATI cards.
10-Mar-2004
	- res made the following changes related to fonts:
	    - Removed iFontServer::GetFont() and GetFontCount().
	    - Removed iFont::SetSize(). The size is now a parameter to
	      LoadFont().
	    - Changed the behaviour of LoadFont() accordingly; now, only for
	      same font name/font size pairs instances of the same font will
	      be returned.
	- res added a note to the movie recorder HOWTO that the plugin can
	  also be loaded via the command line.
	- res partially rewrote the Custom Font HOWTO. It stated that the
	  best approach for custom fonts would be bitmap fonts converted from
	  truetypes. However, using fontplex offers better I18N support.
	- Eric Sunshine fixed `--plugin=' example in the movie recorder HOWTO
	  so that it shows the proper full SCF class name (which is required by
	  --plugin=), rather than only the final component of the name.  Also
	  fixed some typographical, grammatical, and Texinfo mark-up problems;
	  as well as TeX `hbox' warnings.
	- res updated cslight and g2dtest for his recent font changes.
	- res added an example of setting the font size in the old vs new way
	  to the resp. API mod paragraph.
	- res changed csHash<> interface to contain two variants of Get(); one
	  that returns a pointer to the contained data or 0, the other returns
	  a reference to the data or a user-specified fallback value. This
	  change removes the need for contained types to have a constructor
	  accepting a single parameter, which would be used to construct a
	  'zero' return value in case a key wasn't found in the hash.
	- res changed the csRefDocumentation slightly; at one place, 'csRef'
	  was used, tho 'csRefCount' would make more sense there.
	- res fixed the xwindow plugin after the csHash<>::Get() change.
9-Mar-2004
	- Wouter clarified a comment on iLightingInfo::InitializeDefault().
	- Reed added "relight" command to Walktest.
8-Mar-2004
	- Philip Wyett eliminated warning in odeparticles.cpp.
	- Jorrit fixed the old OpenGL renderer so that disabling texture
	  mapping again works correctly (only lightmaps are rendered).
	- Wouter removed old comment from iSector::GetLights() that
	  instructed the user not to add dynamic lights to the list,
	  but to use SetSector() instead. This method has been removed.
	- John Harger finally implemented the cylinder emitter type in
	  particles.
	- res fixed the movie recorder to emit a proper warning when the movie
	  couldn't be created.
7-Mar-2004
	- Jorrit added a db_mesh_name field to csRenderMesh (but only
	  in debug mode!). This field is updated by the engine (before
	  calling AddRenderMeshes()) and can be used for debugging
	  purposes. Without this field it is extremely hard to discover
	  the source of a csRenderMesh.
	- Jorrit again fixed a few errors throughout the Crystal Space
	  project as reported by valgrind.
	    - engine: portal containers didn't initialize the material field.
	      Although this material field is strictly not needed it was used
	      by the csRenderMeshList to sort two portals relative to each
	      other.
	    - NR OpenGL renderer: in the csVBORenderBuffer implementation there
	      was a potentially serious lack of initialization with the
	      'lastLock' field.
	    - Thing mesh: the useLightmap field was not initialized.
6-Mar-2004
	- Anders Stenberg finally found and fixed a clipper problem in NR,
	  which actually turned out to be more than a clipper problem.
	- Jorrit fixed a few errors throughout the Crystal Space project
	  as reported by valgrind. Please people! Remember to initialize
	  your variables!!!
	    - engine: current_visnr was not initialized in csSector.
	    - engine: with NR enabled the fog structure was not initialized
	      (but it was used in csPortalContainer).
	    - spr3d: single_step field was not initialized to false.
	    - spr3d: frame_increment field was not initialized to 1.
	    - explosion mesh: lighted_particles was not initialized to false.
5-Mar-2004
	- Jorrit changed 'userobject' in csKDTree to a csRef<iBase>.
	- Eric Sunshine increased robustness of CS_STATIC_VARIABLE_CLEANUP by
	  making it operate gracefully if invoked multiple times; rather than
	  simply crashing.  Also fixed it so that it does not realloc() a null
	  pointer since doing so is not portable.
4-Mar-2004
	- Eric Sunshine renamed the CS Java bindings package to
	  com.crystalspace (was net.sourceforge.crystal).
	- Jorrit fixed a 'verbose' message to use the reporter instead
	  of printf in thing mesh plugin.
	- Jorrit removed the iTextureManager->SetVerbose() function. This was
	  not used and it is also better to handle this using -verbose
	  commandline option if needed.
	- Jorrit fixed the handling of CS_ENTITY_CAMERA objects in the new
	  renderer. This fixes stuff like skyboxes (like the one used in the
	  csdemo space demo).
	- Jorrit fixed a few broken CS_ASSERT's in glrender3d.
	- Jorrit attempted to fix the stencil clipper in combination with
	  stencil shadows but failed so far (NR OpenGL renderer).
3-Mar-2004
	- Eric Sunshine added REGEX.AVAILABLE=no to msvcgen/required.mak to
	  ensure that generic/regex.c gets included in csutil project file.
	- Jorrit did a considerable cleanup of the NR OpenGL clipping system.
	  Only two options are now possible: stencil and glClipPlane. Stencil
	  is now default because it is usually (a lot) faster then glClipPlane.
	  This gives a huge performance boost in some cases.
	- Jorrit also added MaxTextureSize config option to r3dopengl.cfg.
	- Jorrit added PreferClipPlane config option to r3dopengl.cfg.
	- Jorrit added some more reporting to the NR OpenGL renderer if
	  -verbose is used. More specifically the maximum texture size,
	  VBO support, point sprite support, the use of nVidia extensions,
	  the use of ATI extensions, and if glClipPlane is prefered are now
	  all reported.
	- Jorrit optimized NR GL clipping a bit more by caching the current
	  values given to SetupClipper().
	- Jorrit added more reporting to the NR GL renderer. Also removed
	  the bugplug counter for triangles and meshes if verbose is not
	  given.
	- Jorrit added a small optimization to the NR GL renderer with
	  ApplyObjectToCamera().
	- Eric Sunshine converted csappframe.mak, csgeom.mak, csgfx.mak,
	  cstool.mak, and csws.mak to the new style where built resources are
	  placed in a target-specific subdirectory of $(OUT) rather than
	  directly polluting $(OUT).
2-Mar-2004
	- Jorrit modified the stdrep plugin (standard reporter listener) so
	  that it now prints all messages on standard output if the
	  -verbose commandline option is given.
	- Jorrit disabled the rule for GF Go and MX in gldrivers.xml since
	  it prevents proper operation of the r3dtest map (i.e. stencil
	  shadows no longer work then).
	- Jorrit fixed cs-config. For some reason it was adding
	  csappframe as a standard library. But csappframe should not be
	  standard because it adds things like CS_IMPLEMENT_APPLICATION
	  which many applications already have on their own.
	- John Harger added an experimental plugin to provide fragment program
	  support for DX8 type video cards (GF3/4,R8500-9200) using the
	  DX8 pixel shader language. Please read the readme.txt file before
	  you try to use this. I would like anyone interested to test it out
	  using PS 1.4 programs (for ATI) and PS 1.1 (for nVidia). Let me know
	  of any problems or errors. PS 1.4 emulation will work on all Radeon
	  8500 and up, while PS 1.1 will only work on nVidia GeForce 3 and up.
	- Norman Kraemer added the missing csGetMouseDesc, csGetJoystickDesc
	  and FromEvent methods/funtions in the csInputDefinition class.
	- John Harger fixed the Cg plugin so it works again. Also added a
	  <profile></profile> option to force a profile instead of using
	  whatever the newest supported profile is. (Useful for forcing
	  arbvp1 vertex programs so you can use the "glstate") Newest profile
	  is still the default behavior.
	- Eric Sunshine eliminated a few compilation warnings about potentially
	  uninitialize variables in glfontcache.cpp
	- Eric Sunshine eliminated a slew of compilation warnings from the new
	  glshader_ps1 plugin.
	- Eric Sunshine updated user.mak and shaderplugins/Jamfile so that the
	  new glshader_ps1 plugin actually gets built.  Also augmented
	  msvcgen/workspaces.mak to take this new plugin into account.
	- res removed regex.c from msvcgen/win32.mak again. Seems it appears
	  in some other place, and thus occurs twice in the generated VC
	  libcsutil project.
1-Mar-2004
	- res augmented the Win32 canvas to allow retrieval/setting of the
	  window rectangle (via PerformExtension()).
	- Eric Sunshine added missing LibDepends rule invocations to the
	  various "common" library Jamfiles throughout the project.  This
	  should fix the problem where "static" linking failed because the
	  libraries appeared in the wrong order in the emitted link command.
	  Also added explicit documentation to various Jamfiles stating that
	  the Jam rules are presently (and unfortunately) order-sensitive, such
	  that Jam must see LibDepends invocations before it sees associated
	  LinkWith invocations.
	- Eric Sunshine updated the OpenDivX "sufficiently recent" configure
	  check so that it tests for DEC_PARAM::color_depth rather than just
	  checking for DEC_PARAM.  Apparently, the color_depth member was added
	  to OpenDivX some time after DEC_PARAM was introduced.
	- Eric Sunshine fixed 'regexp' check in configure.ac so that it
	  actually works.  It needed to include <sys/types.h> before <regex.h>
	  as mandated by POSIX.
	- Eric Sunshine refactored csRegExpMatcher in order to avoid duplicated
	  code.  Also improved robustness of error handling.
	- Eric Sunshine privatized CS's copy of glibc's "regex" implementation.
	  It now resides in libs/csutil/generic, including regex.h which had
	  been in include/csutil.
	- Eric Sunshine restored csutil.mak and csutil/Jamfile so that they
	  once again perform wildcard on *.c.
	- Eric Sunshine eliminated compilation complaint from unix/instpath.cpp
	  about CS_CONFIGDIR and CS_PLUGINDIR being undefined when building
	  with GNU make.
	- res fixed a problem with the link library order when doing static
	  builds: the LinkStaticPlugins Jam rule didn't respect that the last
	  occurance of a lib has to remain when filtering out duplicates from
	  the list of libs later passed to the linker; instead, it preserved
	  the first.
	- Eric Sunshine converted csutil.mak, macosx.mak, unix.mak, and
	  win32gcc.mak to the new style where built resources are placed in a
	  target-specific subdirectory of $(OUT) rather than directly polluting
	  $(OUT).
	- res changed the data/config/Jamfile to also install .xml files.
	  Needed for the GL driver db.
	- res fixed mk/msvcgen/win32.mak to include generic/regex.c into the VC
	  projects of csutil.
	- Eric Sunshine fixed glrender.mak and gl_render3d.mak so that they
	  install data/config/gldrivers.xml, which is needed by the OpenGL
	  driver database.
	- Eric Sunshine fixed bugs in aws.mak and aws/Jamfile where they
	  neglected to set up a dependency for the derived skinlex.cpp upon the
	  derived skinpars.hpp.  As a result, by happenstance, skinlex.cpp,
	  which includes skinpars.hpp, was being compiled before skinpars.hpp
	  had been generated by Bison, thus skinlex.cpp incorrectly #included
	  the factory-supplied skinpars.hpp rather than the generated one.
	  This problem manifested, for instance, when Bison 1.875 was
	  installed.  skinlex.cpp would find the factory-supplied skinpars.hpp
	  (created by Bison 1.35) and define awslex(yystype), yet the generated
	  skinpars.cpp (created by the installed Bison 1.875) would be
	  expecting awslex(YYSTYPE).
	- res removed references to the old gl*.cfg configs from glrender.mak.
	- res disabled ARB_vertex_program ext in the GL driver db for GeForce
	  MX and Go hardware (known to emulate it in software.)
29-Feb-2004
	- Eric Sunshine augmented the configure.ac Python check so that it can
	  detect a working Python installation on MacOS/X despite the fact that
	  the Python link library is missing.  Apparently, the Python
	  installation on MacOS/X is still using the one-level linker
	  namespace, which means that undefined symbolic references in
	  extension modules will be satisfied by the executable itself as the
	  extensions are loaded, rather than being resolved by a link library.
	  This allows CS's pure Python `pythmod' extension to work on MacOS/X.
	  Unfortunately, however, it does not help for the CS plugin `cspython'
	  since none of the CS Python example programs will be able to link
	  against the missing link library.
	- Eric Sunshine augmented cspython/pythmod_setup.py so that it now
	  accepts additional compiler and linker flags, and so that multiple
	  library directories can be specified rather than only a single one.
	  It is also now possible to tell pythmod_setup.py which compiler to
	  use, rather than hard-coding g++.
	- Eric Sunshine added "-framework AppKit -framework Foundation" to the
	  linker flags for the `pythmod' extension to ensure that it can be
	  loaded on MacOS/X.
	- Eric Sunshine augmented pythmod_setup.py so that it filters out
	  "-arch i386" from the linker arguments if present.  This allows the
	  `pythmod' extension to build cleanly on MacOS/X for PowerPC.
	- Eric Sunshine fixed problem with Cygwin when linking the `pythmod'
	  extension where "-lgdi32 -lshell32" appeared in the link statement
	  before the standard CS libraries (cstool, csutil, etc.).  This
	  resulted in unresolved symbolic references since the CS libraries
	  rely upon gdi32 and shell32.
	- Eric Sunshine sanitized the definitions of CC, CXX, OBJC, and OBJCXX
	  in the makefile build system so that they no longer contain a
	  trailing "-c".  This makes these variables more consistent with
	  like-named variables in makefiles the world over.
	- Eric Sunshine fixed copy/paste bug in cspython.mak where
	  `cspythonclean' rule did not get defined if Swig was not detected.
28-Feb-2004
	- Philip Wyett removed reference to 'include/imesh/thing' dir from
	  CS spec file.
	- Vincent Knecht augmented CS spec file to compute flarge and partsys
	  lightmaps.
	- res simplified the GL color (de)composition in the canvases. No need
	  to juggle with pixel formats here.
	- res changed the GL canvases to use scissor instead of manual
	  clipping.
	- res fixed a few memory leaks in VFS.
27-Feb-2004
	- Jorrit enabled the Dynavis write queue again since it appears to
	  be giving better fps in most cases. Perhaps we need to come up with
	  a way to avoid the write queue overhead in cases where it would
	  be worse.
	- Jorrit fixed the walktest movement recording feature to also record
	  'perftest' command. That way it is possible to make walkthroughs
	  through a level with performance tests included.
	- Jorrit fixed playback of a recorded file in walktest so that it
	  ignores the sectors it cannot find. In that case it will simply
	  stay in the current sector. This makes it possible to use a
	  recorded sequence that was recorded while in a multi-sector
	  level and reuse that same sequence in a single-sector level (provided
	  it represents exactly the same geometry).
	- Jorrit removed the last remnants of perfstat usage in Walktest and
	  then he removed the perfstat plugin itself.
	- Jorrit added 'playonce' command to Walktest. This is similar to
	  'play' but it doesn't loop the recorded demo. Assigned alt-r to
	  this command.
	- Jorrit extended walktest demo playback so that it shows the fps after
	  finishing one run.
	- Jorrit fixed a bug in portals. The default polygon mesh for
	  visibility culling would be empty (because the VISCULL flag was
	  not set for the portals).
	- Jorrit extended Dynavis with a special case for single polygon
	  objects (portals are often such objects). Since portals are
	  expensive to render it is worth the effort to try to do a little
	  more work on them.
	- Jorrit changed Dynavis so that the polygon based culler is selected
	  if there are less then 10 polygons.
	- res fixed csutil.mak to not use all .c files, but only regexp_impl.c.
26-Feb-2004
	- Eric Sunshine fixed the old renderer gl3d, soft3d, null3d, and the
	  ISO engine plugins so that they once again build successfully
	  following Anders Stenberg's rewrite of the shader variable system.
	  Also eliminated some related compilation warnings.
	- Jorrit put a pointer to the meshwrapper in csPortalContainer so
	  that getting the movable is more correct and more efficient.
	- Jorrit added an optimization to Dynavis where it would insert
	  an inverted version of the portal clipper to the coverage buffer
	  to improve culling.
	- Jorrit added the 'toggle_invertedclipper' command to Dynavis to
	  switch the new feature on/off (default on).
	- Jorrit made all Dynavis switches static so that they operate on
	  all instances of Dynavis at once.
	- Jorrit fixed a bug in the NR texture manager for OpenGL. If the
	  sourceType of the texture is equal to GL_UNSIGNED_SHORT_5_6_5
	  (i.e. 16 bit) then it would allocate not enough memory to keep
	  the image_data in.
	- Jorrit modified the thing plugin so that by default it will only
	  give 10 warnings about bad UV coordinates unless the -verbose
	  commandline option is given.
	- Jorrit did a big optimization to the NR by removing a
	  CS_QUERY_REGISTRY in a critical spot (csGLShaderFVP::SetupState()).
	- Jorrit fixed a bug in the NR texture manager. It would use
	  SCF_QUERY_INTERFACE to get the shader manager from the object
	  registry instead of CS_QUERY_REGISTRY in some case.
	- Anders Stenberg optimized rendermesh sorting in NR to minimize
	  vertex buffer switches. This requires mesh plugins to supply an
	  ID for geometry to be effective, which currently only genmesh
	  and thing (through polygonmesh) is augmented to do.
	- Jorrit fixed a BIG BIG bug in Dynavis which had the effect that
	  Dynavis would do nearly all the work needed to cull objects but
	  nothing would be culled. This bug was introduced 19-Feb.
	- Jorrit temporarily disabled the write queue in Dynavis since it
	  now seems to cause a lot of overhead. To be investigated!
	  This might be related to nodes which don't get culled if the
	  write queue is enabled. This can possibly be solved by letting
	  the nodes respect the write queue too.
	- Eric Sunshine changed SCF_QUERY_INTERFACE(context, iMeshWrapper) in
	  csThingLoader::Parse() to use SCF_QUERY_INTERFACE_SAFE() since
	  `context' might be null.  Reported by Atis Elsts <atisel@inbox.lv>.
	- Eric Sunshine augmented the OpenDivX check in configure.ac so that it
	  tests for presence of DEC_PARAM since at least one user's
	  installation seems to be lacking this necessary typedef.
	- res made the following changes:
	    - Added sanity check to some csStrNew() variants.
	    - Added a iConfigFile implementation for XML format config. Only
	      reading, though.
	    - Added support for regular expressions. Uses implementation from
	      the system's runtime, if available, otherwise uses built-in
	      implementation borrowed from glibc.
	    - Added a "GL driver database". Depending on a set of rules
	      the GL canvases now load certain config settings. See
	      data/config/gldrivers.xml.
	- res fixed a cut'n'paste error in the regexp configure check.
	- Eric Sunshine removed empty & unused data/config/render3d/opengl.cfg
	  and data/config/render3d/render3d.cfg.  Also fixed a couple other
	  configuration file-related problems.
	- res fixed regexp_impl.c to actually honor the result of the regexp
	  check.
	- res merged the old config/gl*.cfg configs into the the new driver
	  database and removed the old mechanism for driver-specific settings.
	- res changed the driver DB implementation to report what rules have
	  been applied.
25-Feb-2004
	- Fritz Elfert fixed the following lighting related crash in sprcal3d:
	  Previously, csSpriteCal3DMeshObject managed a set of relevant lights
	  in a private set.  Since introduction of the new iLightManager API,
	  this internal set ran badly out of sync, resulting in various crashes
	  when lights were removed from a sector.  Now, csSpriteCal3DMeshObject
	  properly uses the light manager's GetRelevantLights() function.
	- Jorrit added a new 'colorsectors' command to BugPlug (default
	  assigned to ctrl-shift-c).  This command will set dynamic ambient of
	  all sectors to a different color (max 14 different colors).  This is
	  useful for debugging complex portal based levels so you can easily
	  see what object belongs to what sector.
	- Jorrit fixed a bug with the ball mesh where colors generated by the
	  special 'PaintSky()' and related routines were no longer being
	  honored.
	- Jorrit fixed the default clip plane that is set by csEngine::Draw().
	  It was currently not used by anything but it will now be used.
	- Jorrit enhanced Dynavis and Frustvis to use the clip planes as
	  defined by the last portal that was traversed. This can benefit
	  performance a bit.
	- Jorrit fixed a bug in waterdemo.  It would forget to call
	  Invalidate() after changing the genmesh vertices.  This bug triggered
	  after Jorrit made a modification so that simply calling GetVertices()
	  on a genmesh does not make the vertex buffers dirty in NR.
	- Eric Sunshine augmented the csRGBpixel constructor so that client can
	  optionally specify alpha value.
	- Anders Stenberg reworked the shader variable system, and hopefully
	  improved the performance of it quite a lot.
	- Anders Stenberg fixed a broken shader (lightmap.xml)
	- Duhprey fixed the scattering base, it probably wouldn't show up
	  otherwise
	- Eric Sunshine fixed vfs.cfg so that it mounts $@data/aws/.  This
	  allows the AWS example programs to locate their .def files following
	  relocation of those files from data/temp to data/aws on 10-Feb-2004.
	- Eric Sunshine removed the ugly "additional object files" hack from
	  the Library rule in library.jam which allowed clients to associate
	  additional object files with a library target.  This hack was needed
	  for a while before the cssys sources were merged physically into the
	  csutil sources.
	- Duhprey fixed a couple bugs with the shader vars change.
	- Eric Sunshine fixed bug in bison.jam where it was not
	  variant-friendly (variant.jam).  When the Bison rule was invoked
	  indirectly via the Plugin rule, this problem would cause generated
	  non-variant files to depend incorrectly upon generated files in the
	  "static" variant.  Also corrected some other inconsistencies and
	  strangeness in bison.jam.
24-Feb-2004
	- Fritz Elfert fixed conversion of bezier mesh factories in map2cs
	  and re-enabled them (With wrong cvs log-message: "Before big
	  camera change", sorry).
	- res added a "mesh" mixmode. Works similar to the "mesh" zmode, if
	  used as the mixmode in a shader pass the rendered mesh's resp.
	  mixmode will be used.
	- res made some fixes so NR properly respects the "alpha" mixmode.
	- Fritz Elfert fixed an msvc compile error in the null renderer.
	- Eric Sunshine added some content to the front page of the API
	  reference manual since people seem to be regularly been confused by
	  its emptiness and easily miss the links at the very top of the page.
	- Eric Sunshine fixed bugs in odivx.mak and odivx4.mak where $ prefix
	  was missing in a variable expansion.
	- Jorrit fixed a bug in the thing mesh object which he introduced
	  yesterday. This bug caused weird stripes on lightmapped polygons.
	- Duhprey made the software renderer compile with NR, but broke the
	  polyrenderer
	- Eric Sunshine replaced a few forward declarations in some Thing
	  headers with #includes to ensure that class declarations are seen
	  before the classes are used in csArray<> templates.  This should
	  pacify some older compilers.
	- Jorrit fixed the <float/> keyword for portals (g3d->OpenPortal())
	  for the OR OpenGL renderer. The problem was that with some clipping
	  modes the portal clipper would be disabled AFTER setting up the
	  clipper. This would cause the stencil clipper to be disabled
	  again with bad effects.
	- Jorrit partially reverted Eric's changes to including headers in
	  the thing mesh plugin because they break compilation. This will
	  now most likely break compilation on the older compiler but I'm
	  uncertain how to fix this.
	- Eric Sunshine re-applied Eric's changes which Jorrit reverted, but
	  this time with sufficient changes to work around the incredible
	  number of circular dependencies between Thing headers which tripped
	  it up the first time.
	- Eric Sunshine added a few more csGeom classes and interfaces to
	  cspace.i at user request.
	- Eric Sunshine augmented msvcgen/required.mak to ensure that null3d
	  renderer is included in wkstypical and wksall.
	- Eric Sunshine made the Jam 'distclean' rule safer.  If the build
	  directory differs from the source directory, then 'distclean'
	  attempts to remove the 'include' directory which is created by the
	  configure script.  If the build and source directories are the same,
	  then it deletes only volatile.h from include (since it would be
	  incorrect to delete all of CS/include).  Previously, though, the
	  logic for detecting if the build directory differed from the source
	  directory was flawed, and it was possible to fool it into deleting
	  the entire CS/include.  Now, 'distclean' deletes the 'include'
	  directory if and only if the directory contains one file: volatile.h.
	- Eric Sunshine updated several modules to reflect the fact that
	  iSCF::QueryClassList() now returns a csRef<> rather than a raw
	  pointer.
23-Feb-2004
	- Jorrit moved the Engine.Lighthing.LightmapQuality config option
	  from engine.cfg to thing.cfg (and renamed it
	  to Mesh.Thing.LightmapQuality). In addition also moved the flag that
	  is controlled by this option from csEngine to csThing. Lightmaps
	  are part of thing and the engine has nothing to do with them.
	  This move also fixes the -lightqual option which was broken since
	  things moved out of the engine.
	- Jorrit modified the engine to print out more information during
	  lighting only when -verbose is specified on the commandline.
	- Jorrit moved csPolyTextureMapping from include/imesh/thing/polygon.h
	  to include/ivideo/polyrender.h where it belongs.
	- Jorrit moved include/imesh/thing/thing.h to include/imesh/thing.h.
	- Jorrit made all fields in csPolyTextureMapping private and
	  added appropriate getters. Also added an '=' operator so that
	  the Clone() in csThings can use that. This also fixes a bug
	  because res2k added fields to csPolyTextureMapping and forgot
	  to update Clone().
	- res fixed a crash-at-exit in xmlread. An object was deleted,
	  although apparently instances of it were referenced in other places.
	  Now the object isn't forcibly deleted any more, and further, the
	  xmlread plugin won't get unloaded as long as documents (or document
	  systems) of it are still floating around.
22-Feb-2004
	- Duhprey made null renderer for the NR.  (Shaders currently try to
	  load with error, but it appears to be harmless.)
	- res made the following changes:
	    - Updated csRefArray<> to support the reference tracker.
	    - Leak and circular reference fixes.
	    - Fixed some classes which confused the reference tracker.
	    - Removed the custom DecRef() code from the stdrep plugin.
	    - Moved the code to access DbgHelp.dll on Win32 out of
	      callstack.cpp into a separate file. Also created a header for it.
	- Eric Sunshine fixed several makefile and Jamfile problems with the
	  new null renderer for the NR, including a sizable number of
	  copy/paste errors.
	- Eric Sunshine adjusted msvcgen/workspaces.mak to take into account
	  new nullrender3d module.
	- Andrew Craig fixed a ref problem in imgplex plugin that caused it
	  the initialization function to segfault.
	- res unified the shader var syntax for materials and shaders. Both
	  the material parser in csloader and the shaderparse in xmlshader
	  utilize iSyntaxService->ParseShaderVar(). The syntax for a shadervar
	  is now:
	    <shadervar name="..."
	     type="[float|vector2|vector3|vector4|int|texture]">
	     texture|x[,y[,z[,w]]]</shadervar>
	  For SV blocks in shaders the syntax is now
	  <shadervars>...</shadervars>.
20-Feb-2004
	- Jorrit added a csArray::GetIndex() function which will return the
	  index of an element in the array (as input you give a pointer to
	  the element in the array).
	- Fritz Elfert eliminated several MSVC6 compiler warnings.
	- Jorrit removed the index from every polygon. The polygons are
	  now stored in a csArray<csPolygon3D> instead of a
	  csArray<csPolygon3D*>. This saves memory and also makes polygon
	  handling a bit faster.
	- Jorrit made the rapid plugin a bit more optimal (memory usage) by
	  using indexed triangles instead of triangles containing vectors.
	- Jorrit optimized csHash by allocating the buckets with empty
	  elements instead of one.
	- Jorrit did a big optimization in genmesh by allocating the
	  hashes more efficiently (they don't need a hash that is preallocated
	  at 257 items).
	- Jorrit fixed a weird bug in walktest (introduced by res2k) which
	  simply disabled `coordshow' directly after enabling it.
	- Jorrit rewrote the csFrustum code to avoid the old vertex pools.
	  Instead the code now uses csBlockAllocator.
	- Eric Sunshine upgraded Jam's msvcgen.sh so that it can be invoked
	  from a build directory which differs from the source directory.
	- Eric Sunshine applied another ugly patch to msvcgen/Jamconfig to
	  allow it to inherit platform-specific configuration properties from
	  the generated Jamconfig instead of blindly using hard-coded values
	  for items which it could not possibly guess correctly.  (In the
	  future, as noted on numerous occassions previously, the entire ugly
	  hack embodied by msvcgen.sh and msvcgen/Jamconfig must be retired.
	  People should be able to build project files by invoking "jam
	  -sMSVC_VERSION=7 msvcgen" directly.)
	- Eric Sunshine eliminated an entirely superfluous and ugly hack in
	  msvcgen.jam which tried to insure that the resource file (.rc) had
	  the correct path in the generated project file.  The more correct fix
	  involved slightly re-ordering the --strip-root options given to
	  msvcgen.pl.  As a happy side-effect, removal of the hack also fixes a
	  bug in which it was unconditionally referencing mk/visualc7, despite
	  the fact that MSVC_VERSION might be "6".  Also fixed a couple other
	  minor bugs and did a bit of cleanup.
	- Eric Sunshine fixed problem in csXMLShaderCompiler::CompileShader()
	  where some compilers considered the return expression ambiguous.
	  Also fixed bug in ~csXMLShaderCompiler where it failed to invoke
	  SCF_DESTRUCT_IBASE().
	- Norman fixed the frequency conversion routine in the software sound
	  renderer where a float factor was determined by dividing two
	  integers.  When downsampling was performed the downsampled data was
	  zero bytes long (muted).
	- Eric Sunshine augmented cspace.i so that it also publishes csPixmap.
19-Feb-2004
	- res made the following changes:
	    - A few minor cosmetic changes.
	    - In the common texture manager code, 0 was assigned to a struct
	      in NR builds.
	    - The iBase implementation of csGenericRenderStepFactory
	      errorneously used SCF_IMPLEMENT_EMBEDDED_IBASE_END instead of
	      SCF_IMPLEMENT_IBASE_END.
	    - Enabled RTTI for VC debug builds.
	    - Commented out "RTTI enabled" #error in opcode.
	    - Added an interface to obtain call stacks.
	    - Added an call stack implementation for Win32. Pretty much only
	      supports VC debug symbols atm, tho.
	    - Added a mechanism to track where interfaces and references are
	      increased resp. decreased.
	- Neil Mosafi changed csvosa3dl plugin to listen to children as well
	  as properties and use child changes to initiate property listening.
	  This is a more correct way of doing things.
	- res removed a char too much.
	- Neil Mosafi changed vospolygonmesh to use iMeshObjectFactory to set
	  the CS_THING_NOCOMPRESS flag which was previously a flag of
	  iThingFactoryState.
	- res removed SCF_CONSTRUCT_IBASE/SCF_DESTRUCT_IBASE from the
	  csImageMemory ctor/dtor. csImageMemory inherits from csImageFile
	  which already invoked those macros.
	- res fixed a leak where shadervars were created with new, but not
	  properly DecRef()ed.
	- Jorrit fixed a bug in Dynavis with empty occlusion objects. It would
	  try to put those on the coverage buffer with bad initialized arrays.
	  The current solution is very optimal in that objects with no
	  occlusion objects will now be completely ignored for occlusion
	  writing as the old code always attempted to process them (and
	  failed later).
	- Jorrit removed another 16 bytes per polygon by removing the world
	  space plane from every polygon and putting that in a seperate array
	  in csThing. The array in csThing is only created if the object has
	  moved so for most static geometry this optimization will be useful.
	- Jorrit did some small optimizations on thing lighting.
	- Jorrit removed four bytes in every polygon by removing the unnused
	  material there. Also removed the API to set materials on polygons
	  in a thing. This should be done by using the ReplaceMaterials api.
	- Jorrit made thing a bit more memory efficient by calling
	  ShrinkBestFit() on the various arrays that are used during setup of
	  a thing. These arrays are typically not modified after they are
	  created so it is best that they have exactly the size that they need.
	- Jorrit removed 16 bytes from every lightmapped polygon by removing
	  unneeded fields from csGLRendererLightmap (in the GL renderer).
	  Also for software renderer.
	- Jorrit fixed a bug in csBlockAllocator::Compact() so that it actually
	  works.
	- Jorrit optimized thing a bit more by deleting the csSubRectangles2
	  structure after calculating the optimal lightmap distribution.
	- Jorrit fixed a problem with dynamic lighting and things. It would
	  call lm->CalcMaxStatic() all the time which is very slow. The
	  static lightmap doesn't change with dynamic lighting so calling
	  this function is totally wasted.
	- Jorrit implemented a big memory savings in the thing plugin. If a
	  lightmap contains all the same values it will be compressed to that
	  single value. This saves a considerable amount of memory on big
	  maps.
	- Eric Sunshine augmented the OpenAL check in configure.ac so that it
	  utilizes -lm (if available).	This seems to be needed by Suse 7.3
	  Linux.
	- res unbroke the VC7 plugin project templates which he broke (by
	  accident, presumably :-).
	- Eric Sunshine performed more cleanup and clarification of the Smart
	  Pointer HOWTO (smartptr.txi).
18-Feb-2004
	- Jorrit added the ability to specify defaults for mesh object types
	  in the map loader. Here is an example to demonstrate how this works:
	      <plugins>
		<plugin name="thingFact">
		  <id>crystalspace.mesh.loader.factory.thing</id>
		  <defaults>
		    ...
		  </defaults>
		</plugin>
		...
	      </plugins>
	  Basically you attach the defaults to the short plugin name that you
	  can later use in meshobj or meshfact definitions. These defaults
	  can be anything you can specify directly in the meshobj or meshfact
	  (NOT in the params section!). For example, priority, zfill, and
	  zuse are commands you can place there.
	- Jorrit addes the 'staticpos' and 'staticshape' keywords for mesh
	  objects and factories (only 'staticshape' for factories). These
	  options are hints for the engine. When you specify 'staticpos'
	  for a mesh object the engine knows that the object will never move
	  and can optimize for that (in the future, there are no such
	  optimizations at this moment). If you specify 'staticshape' for
	  mesh objects or factories then you tell the engine that the object
	  will never change shape (or animate). If you specify one of these
	  hints for an object but you violate what the hint means (i.e. you
	  move an object that has 'staticpos' set) then the result will
	  be undefined.
	- Jorrit added iMeshObject->GetFlags() and
	  iMeshObjectFactory->GetFlags() so that it is possible to specify
	  flags for mesh objects and factories.
	- Jorrit added the following flags:
		- CS_MESH_STATICPOS for mesh objects
		- CS_MESH_STATICSHAPE for mesh objects
		- CS_FACTORY_STATICSHAPE for mesh factories
	  These flags will be set by the 'staticpos' and 'staticshape'
	  keywords in the map loader.
	  Mesh objects may implement their own additional flags but these
	  flags must be equal to 0x00010000 or higher.
	- Jorrit removed iThingFactoryState->GetFlags(). The only flag that
	  was there (CS_THING_NOCOMPRESS) has now become a flag of
	  iMeshObjectFactory->GetFlags().
	- Jorrit also updated the level building document with information
	  on the new staticpos and staticshape flags.
	- Jorrit added csBlockAllocator::Compact(). This function will remove
	  all blocks that have no items.
	- Jorrit renamed 'static_data' to 'static_poly' in the thing mesh
	  object. This way it is less confusing because csThing also uses
	  'static_data' to refer to the static thing.
	- Jorrit removed two unnused functions from thing mesh plugin.
	- Jorrit removed 4 bytes for every polygon (removed a pointer back
	  to the polygon in csPolyTexture).
	- Jorrit removed 4 bytes for every polygon (removed lightmap_up_to_date
	  field which was actually not needed).
	- Jorrit removed at least 4 bytes by putting csPolyTexture directly
	  in csPolygon3D. This also avoids one of the block allocators.
	- Jorrit removed another 4 bytes from every csPolyTexture by avoiding
	  the redundant csPolyTextureMapping pointer.
	- Eric Sunshine augmented the OpenAL check in configure.ac so that it
	  utilizes -ldl (if available).	 This seems to be needed by Suse 7.3
	  Linux.
	- Eric Sunshine added a couple missing invocations of
	  SCF_IMPLEMENTS_INTERFACE(iParticlesStateBase) to the 'particles'
	  plugin.
	- Eric Sunshine made the following changes to configure.ac:
	    - Fixed typographical problems in OpenDivX check which resulted in
	      syntax error at run-time.
	    - Fixed bug where the OpenDivX version <4 check was not invoked
	      when the version >=4 check failed.
	    - Generalized the -I/usr/local/include and -L/usr/local/lib checks
	      so that the results apply to all subsequent checks automatically
	      rather than having to be applied manually to selected checks.
	- Eric Sunshine made some minor Texinfo mark-up corrections to
	  levbuilding.txi.  Also eliminated several 'hbox' warnings emitted by
	  TeX.
	- Fritz Elfert fixed a trivial compile error, introduced by the
	  addition of the pure virtual GetFlags() earlier today:
	  Implementation was missing in csChunkLodTerrainObject.
17-Feb-2004
	- Jorrit fixed a bug in csPolygonMeshTools::Triangulate(). It would
	  try to allocate a 0 size array in some cases.
	- Jorrit added support for csArray and csBlockAllocator to the
	  memory tracker. Unfortunatelly I found no way to convert the
	  templated type name 'T' to a string I could print out to make
	  the output more usable. So I'm now using the size of the
	  item that is in the array or block allocator. That should help
	  identify which array is using the memory but it is far from perfect.
	- Jorrit changed the csArray and csBlockAllocator memory tracker stuff
	  to use the 'typeid' RTTI function to get the type information. This
	  way we can produce better output.
	- Jorrit fixed another case where a 0-sized memory chunk is allocated.
	  This time in Dynavis.
	- Jorrit fixed csPolygonMeshTools::CalculateEdges() so it doesn't
	  allocate 0-sized chunks.
	- Jorrit added a bool parameter to Dump() for the memory tracker
	  so that you can get a summary alone. Also cleaned up the
	  total summary line a bit.
	- Jorrit fixed a memory leak in the NR OpenGL renderer which would
	  prevent texture images from being cleaned up properly. On big
	  maps this can save a lot of memory.
	- Jorrit fixed a few more ref-leak problems in the NR texture
	  manager.
	- Jorrit fixed a problem with memdebug which fails the build if
	  you build in optimize mode.
	- Fritz Elfert changed sprcal3d loader so that it defers scaling
	  until loading of all model data is completed. Before, scaling
	  randomly either crashed in cal3d or had no effect at all, depending
	  on the position of the <scale> attribute in the xml file. Standard
	  models that come with cal3d should work with this fix now (at least
	  skeleton does), providing a scale of ~ 0.02.
	- Eric Sunshine added an OpenDivX check to configure.ac.
	- Eric Sunshine fixed bugs in glshader_cg.mak, odvix4.mak, and
	  odivx.mak where they would send linker flags to $(AR) when
	  USE_PLUGINS=no.
	- Eric Sunshine moved more PLUGINS.DYNAMIC assignements out of
	  platform-specific makefiles and into user.mak.
	- Norman Kraemer introduced a csWrapTypedObject function to the swig
	  wrapper to get around those swig versions having SWIG_TypeQuery and
	  others declared as defines and not as functions. So refering to them
	  in the main cspython module would fail.
	  He also modified cspython.cpp to utilize the new function.
	- Steven Geens cleaned up the fountain creation code in the socket
	  test of viewmesh. You still have to move around a bit before you can
	  see the fountain, probably a culling problem.
	- Neil Mosafi added support to the csvosa3dl plugin for automatic
	  listening to movement and orientation changes of a3dl metaobjects
	  Also fixed orientation which was incorrectly using degress instead
	  of radians to set the CS angle.
16-Feb-2004
	- Jorrit fixed rain mesh object so it now has a reasonably default
	  box in case the user doesn't call SetBox().
	- Jorrit fixed csNewParticleSystem so that it first calls
	  SetupObject() before getting the bounds of the particle system.
	- Jorrit added csBox2 and csBox3 functions: AddBoundingVertexTest()
	  and AddBoundingVertexSmartTest(). These functions work the same
	  as the old none-Test() functions but in addition they return
	  true if the box was modified by adding the vertex.
	- Jorrit fixed the fountain particle system so that it correctly
	  updates the bounds. This avoids crashes in some cases. In addition
	  the code will also fire a 'ShapeChanged' to the object model
	  listeners (i.e. cullers) in case the bounding box changes.
	- Jorrit made csNewParticleSystem::UpdateBounds() a bit faster by
	  using AddBoundingVertexSmart() instead of AddBoundingVertex().
	- Jorrit fixed a bug in sprcal3d. It would not set the 'polygon_idx'
	  to -1 in HitBeamObject().
	- Jorrit added a new configure --enable-memory-tracker option. With
	  this option you can compile CS with memory tracking enabled
	  (CS_MEMORY_TRACKER define). Using memory tracking CS will keep
	  track of the amount of memory used per source file.
	- Jorrit implemented a new memory tracker (enabled with the
	  --enable-memory-tracker configure option) which tracks, per module
	  and per source file, the number of allocations and how much memory
	  is being allocated (both maximum and current). There is a new
	  object in the object registry that is registered at
	  'crystalspace.utilities.memorytracker' and that implements
	  iMemoryTracker. This object will keep track of all allocations per
	  'module' (plugin or app).
	- Jorrit added a new 'memorydump' command to BugPlug. This command
	  will try to find the memory tracker and then call Dump() on it.
	  Assigned to ctrl-m key.
	- Eric Sunshine applied some additional corrections to .chm creation
	  scripts/configurations to reflect documentation unification.
	- John Harger cleaned up the particles interface a bit, using Eric's
	  suggestion of the iParticlesBase SCF interface for all shared
	  functions
	- Andrew Craig added a GetDefaultMaterial() to the sprcal3d factory
	  that returns the name of the default material on a submesh.
15-Feb-2004
	- Norman Kraemer removed inclusion of recently removed av3dtxt.h in AWS
	  screencanvas header.
	- Norman Kraemer fixed the call to iEventOutlet::Key() method in SDL
	  and SVGA canvas where -1 was used instead of 0 to force a simple
	  cooked code computation from the supplied raw code.  This also
	  silenced the compiler comlaining about converting -1 to unsigned int.
	- Eric Sunshine improved the robustness of the new ALSA check in
	  configure.ac.
	- Eric Sunshine fixed copy/paste error in MSVC6 template files which
	  caused Release_NR and Debug_NR configurations of all projects
	  (applications, plugins, etc.) to appear to be static link libraries.
	- Eric Sunshine added a number of missing `const' qualifiers to
	  arguments of methods in video- and graphics-related interfaces.
	- Norman Kraemer added support for pre-1.0 version of ALSA.
	- Eric Sunshine changed msvcgen.mak so that the pseudo-group projects
	  are now named 'subproj_workspace' rather than 'subproj-workspace'
	  since MSVC6 seems incapable of groking the hyphen in the name.  Issue
	  reported by Luca Cappa (groton); debugged by Fritz Elfert
	  <fritz.elfert@millenux.com>.
	- Eric Sunshine added CS_PATH_NORMALIZE() macro to new path.m4.	 This
	  macro normalizes a pathname by transliterating Windows/DOS
	  backslashes to forward slashes.
	- Eric Sunshine augmented configure.ac so that it invokes
	  CS_PATH_NORMALIZE() on the CFLAGS, LFLAGS, and LIBS resulting from
	  the Perl and Python checks.  This should help to prevent build
	  problems on MSYS/Mingw and Cygwin since the backslashes tended to get
	  interpreted as escapes at inappropriate times.
	- Eric Sunshine made the following documentation-related changes:
	    - Normalized the stored documentation locations so that they are
	      now organized by output format and type:
		CS/docs/html/manual (was CS/docs/html)
		CS/docs/html/api    (was CS/docs/pubapi)
	      If, in the future, we decide to store an 'info' conversion of the
	      manual, for example, it would be placed in CS/docs/info/manual.
	    - Normalized the location of the documentation when installed via
	      GNU make so that it reflects the above layout:
		${prefix}/crystal/docs/html/manual (was crystal/docs/html)
		${prefix}/crystal/docs/html/api	   (was crystal/docs/pubapi)
	      This better mirrors the way documentation is installed by the Jam
	      build system.
	    - Normalized the built documentation locations for both Jam and GNU
	      make so that they mirror the above layouts:
		${builddir}/out/docs/html/api
		${builddir}/out/docs/html/apidev
		${builddir}/out/docs/html/manual
		${builddir}/out/docs/info/manual
		${builddir}/out/docs/dvi/manual
		${builddir}/out/docs/ps/manual
		${builddir}/out/docs/pdf/manual
	    - Normalized the documentation build target names in both Jam and
	      GNU make so that they reflect the documentation which is being
	      built and the output format:
		manualhtml (was htmldoc)
		manualinfo (was infodoc)
		manualdvi  (was dvidoc)
		manualps   (was psdoc)
		manualpdf  (was pdfdoc)
		manualchm  (was chmsupp)
		apihtml	   (was pubapi)
		apichm	   (was chmsupp)
		apidevhtml (was devapi)
	    - Fixed a lot of shell programming portability problems in the Jam
	      build's docs/support/runmakeinfo.sh, runtexi2dvi.sh, and
	      runtexi2html.sh scripts which caused documentation generation to
	      crash and burn horribly on some platforms.
	    - Fixed docs.mak so that it respects the discoveries of configure
	      rather than hard-coding texi2dvi, dvips, and makeinfo.
	    - Fixed bug in docs.mak where building public and developer API
	      references failed if build directory was not the same as source
	      directory.
	    - Eliminated some convolution from docs.mak by utilizing the
	      relatively new $(MKDIRS) and $(SRCDIR) variables.	 (These
	      variables did not exist when docs.mak was created, thus the
	      convolution was necessary at that time.)
14-Feb-2004
	- Norman Kraemer added an ALSA sound driver.  It can be used if you
	  disabled OSS emulation in your ALSA configuration.
	- Norman Kraemer changed the software renderer to check the commandline
	  for the -sounddriver option.	If that ain't given, the configuration
	  will be checked for Sound.Driver entry to contain a sounddriver to
	  use.	If that fails as well, the default system driver
	  (CS_SOUND_DRIVER) is tried.
	- Norman Kraemer changed unix.mak to include the ALSA plugin if
	  available as well as the configure.ac to check for the alsa
	  requisites.
13-Feb-2004
	- Jorrit updated the todo_newrenderer.txt document and added a list
	  of visual differences between walktest/NR and walktest/OR.
	- Jorrit changed csSubRectangles2 to use a global block allocator
	  instead of one allocator per instance.
	- Jorrit changed Dynavis so that it no longer checks the model
	  when it is inserted in dynavis but instead adds it to the queue
	  of models that need to be checked. By doing that the operation of
	  checking the model is delayed until the materials are prepared and
	  this means that things prepare a lot more efficiently. The way it
	  was before the checking of the object model would force a premature
	  prepare of the thing (before materials are ready) which causes the
	  thing to do only a partial prepare. This is inefficient as it will
	  then have to do the prepare again later. Also for some reason it
	  caused memory leaks. This is probably a bug in thing as there
	  should be no leak on multiple prepare calls.
	- Jorrit added a new bugplug 'unprepare' command to unprepare all
	  thing meshes. Assigned to alt-u.
	- Jorrit enhanced the iThingState->Prepare() function so that the
	  lighting is now also done in that stage. This means that the
	  -prepare option with WalkTest will now prepare things a bit
	  more. This option causes lag to disappear when new things come
	  into view.
	- Eric Sunshine completely overhauled the Texinfo formatting in the new
	  sprcal3d.txi so that it formats properly on the printed page, and
	  rewrote much of the discussion.
	- Jorrit changed the lightmap allocator in the OpenGL renderer to
	  use a global block allocator instead of one per superlightmap.
	  Also did this optimization to the NR OpenGL renderer.
	- Keith added iEngine::FindNamedMaterial() and FindNamedTexture() to
	  allow loaders to get materials and textures which have different
	  names from their filenames while not breaking backward compability
	  with prior behavior. This material change required changing .cal3d
	  file format so that <mesh> tags now require material names instead of
	  filenames.
	- Eric Sunshine fixed bugs in aws.mak and aws/Jamfile where they
	  neglected to link the plugin against txtmgr.o (from renderer/common)
	  despite the fact that AWS's csTextureHandleNull is derived from
	  csTextureHandle in txtmgr.o.
	- Jorrit added a note to levbuilding.txi talking about how thing
	  polygons should be quads for most optimal results.
	- Eric Sunshine removed the unused av3dtxt.{h|cpp} and av3dtxtm.{h|cpp}
	  from AWS.  As a happy side-effect, this eliminates AWS's ugly
	  dependency upon renderer/common/txtmgr.o.
12-Feb-2004
	- Jorrit did several documentation enhancements:
	    - Added a link to the new level building section in the
	      documentation guide.
	    - Added a link to the new genmesh creation HOWTO from the
	      features section.
	    - Added a link to the new genmesh creation HOWTO from the
	      genmesh object documentation.
	    - Added links to the meshobject documentation from the level
	      building section (in the node explaining the different mesh
	      object types).
	    - Added a new (but empty) document for the sprcal3d mesh object.
	      Someone please write this :-)
	    - Added links to the new sprcal3d document from the features
	      section.
	- Jorrit did several other documentation enhancements:
	    - Added mention of the isometric engine to the plugin overview
	      section and removed the sentence that claimed you could use
	      the engine as a library. That's no longer possible.
	    - Removed mention of the obsolete effect system from the
	      graphics section.
	    - Replaced 'effects' with 'shaders' in the XML format document.
	- Luca Pancallo added a new 3DS Max export script (in scripts/max).
	  The following things were changed:
	    - Fixes to genmeshes and thingmeshes, added documentation on how
	      to model those, pivot and rotation issues explained.
	    - Added support for right-handed and left-handed genmeshes and
	      sprites.
	    - Added ability to avoid export of some objects "_n_" prefix.
	    - Changed documentation to be more readable and complete (a new
	      guide!).
	- Eric Sunshine fixed bugs in xmlfmt.txi where it was using incorrect
	  section nesting directives (@section vs. @subsection, etc.).
	- Eric Sunshine fixed a lot of Texinfo markup problems in recently
	  added material.  Also fixed numerous grammatical and spelling
	  mistakes.
	- Jorrit did several particle system related changes:
	    - csNewParticleSystem now also implements iParticleState.
	    - csNewParticleSystem supports all the features of iParticleState
	      (more in particular: the rotation, scale, color, alpha, and
	      the self destruct).
	    - The fountain particle system now works through
	      csNewParticleSystem. This means that it is faster and also
	      works with the new renderer.
	- Jorrit fixed a bug in csNewParticleSystem. If lighting was enabled
	  it would pass an invalid color array to the renderer. This could
	  cause very funky but invalid lighting effects.
	- Eric Sunshine augmented the Python SDK check in configure.ac so that
	  it now works correctly with the Python package for Windows which is
	  distributed by www.python.org.
	- Steven Geens added some documentation about sockets and
	  morphanimations in sprcal3d.
	- Andrew Craig fixed a possible uninitialized idle_action in sprcal3d.
11-Feb-2004
	- Jorrit optimized the csNewParticleSystem slightly (used by the
	  rain mesh plugin) and also cleaned it up a bit.
	- Jorrit also simplified csNewParticleSystem by removing all
	  functions to use seperate materials, rotation, scale, ... for
	  particles. By doing that Jorrit managed to significantly optimize
	  csNewParticleSystem again.
	- Jorrit did a small optimization to csNewParticleSystem. If lighting
	  is not enabled it will not call GetRelevantLights() from the
	  light manager.
	- Jorrit restored bugplug screenshot to put screenshot back to /this
	  instead of /tmp.  Having them in /tmp is very confusing as this will
	  mix screenshots of different apps with no way to distinguish them.
	  [Note from Eric Sunshine: Placing them in /this is a bad idea since
	  /this is unpredictable on some platforms.  For instance, on
	  Macintosh, when you double-click to launch an application, /this is
	  not under your control (it may be your home directory, or it may be
	  /, or it may be within the application's wrapper directory).
	  Likewise, on Windows, if you double-click to launch a directory,
	  /this is entirely dependent upon whatever Windows thinks your current
	  directory is at any given moment (which is often not known to the
	  user).  In the long run, this should be changed back to use VFS /tmp
	  since it is more reliable and safer.]
	- Eric Sunshine updated movierec.txi HOWTO.  It still had a reference
	  to the obsolete user.cfg.
	- Jorrit added a new section in the documentation that tries to explain
	  how to build levels for Crystal Space. It discusses various
	  techniques and tells people what tricks they can use to get most
	  optimal performance.
	- Jorrit extended the new documentation about level building with a
	  note about closed vs non-closed objects and Dynavis.
	- Eric Sunshine added iSCF::GetPluginMetadata() which, given an SCF
	  class name, returns an iDocument containing the meta-information for
	  the plugin module which exports the named class.  This complements
	  the existing csGetPluginMetadata() which returns the same information
	  but expects the physical pathname of the plugin module.
	- Eric Sunshine fixed iSCF::QueryClassList() so that it returns
	  csRef<iStringArray> rather than a raw `iStringArray*'.
	- Eric Sunshine fixed a few Texinfo mark-up errors in levbuilding.txi
	  and untabified the @examples in order to ensure that they display
	  properly when formatted.  (Fixing other Texinfo mark-up problems will
	  have to wait until this document stabilizes.)
10-Feb-2004
	- Eric Sunshine fixed CS/data/Jamfile so that it no longer tries to
	  install the non-existent unifont.csf file.  (Bug reported by Frank
	  Richter.)
	- Eric Sunshine made the following changes:
	    - Relocated AWS resources (.def files) to CS/data/aws from
	      CS/data/temp.
	    - Renamed the VFS volume /temp to /varia in order to avoid
	      confusion with the like-named VFS volume /tmp, which is intended
	      to be user-writable, whereas /varia potentially will be read-only
	      since it represents ${prefix}/etc/crystal/varia.
	    - Walktest now tries to read and write the camera file using the
	      VFS volume /tmp rather than /varia (nee /temp) since /tmp is more
	      likely to be writable by the user.  If, at load time, it fails to
	      find a camera in /tmp, then it will fallback to /varia.
	    - Fixed partedit so that it no longer looks for its resources using
	      the unreliable /this directory.  Now looks in /varia.
	    - Fixed several applications and plugins to use more sensible VFS
	      directories (depending upon context) instead of using the
	      unreliable /this.
	- Jorrit fixed an initialization error in DrawSimpleMesh() of the
	  NR OpenGL renderer.
	- Jorrit fixed a bug in the NR OpenGL renderer DrawMesh implementation
	  which would not correctly set alpha and keycolor mode in some
	  situations.
	- Eric Sunshine made the following changes:
	    - Augmented configure.ac so that it propagates CS_USE_NEW_RENDERER
	      to $(SWIG.FLAGS).
	    - Fixed csperl5.mak, cspython.mak, and csjava/Makefile so that they
	      respect $(SWIG.FLAGS).
	    - Fixed several bugs in, and performed minor cleanup of
	      csjava/Makefile.
	- Eric Sunshine fixed bug in glrender.mak from 4-Feb-2004.  The
	  SRC.GL3D and INC.GL3D variables were not populated correctly when the
	  build directory differed from the source directory.  Specifically,
	  everything from the opengl/effects subdirectory was missed.
	- Eric Sunshine devised and implemented a scheme which allows `msvcgen'
	  to synthesize the familiar pseudo-group projects "grpall", "grpapps",
	  "grplibs", and "grpplugins" despite the fact that the contents of
	  these groups differ from workspace to workspace.  (These groups were
	  originally removed on 4-Feb-2004 with the introduction of multiple,
	  customized workspaces, because the old scheme of createing the group
	  projects was incompatible with customized workspaces.)
9-Feb-2004
	- Eric Sunshine fixed bug in csKeyValuePair where it was incorrectly
	  invoking SCF_CONSTRUCT_IBASE() even though it should not have been
	  doing so because its parent, csObject, already did so.
	- Eric Sunshine made the following changes to the event system:
	    - Eliminated extremely dangerous and potentially fatal assumption
	      in csEvent where, in several places, it blindly assumed that an
	      iEvent passed in by a client was a csEvent or csPoolEvent.
	    - Corrected very bizarre code in csEvent::UnflattenCrystal() which
	      performed a static cast of `this' to csPoolEvent, checked if the
	      result of the cast was zero (which will never be the case), and
	      then performed conditional behavior based upon that result.
	    - Fixed bug in csEvent::UnflattenCrystal().	 When unserializing a
	      data buffer, it incorrectly assigned CS_DATATYPE_STRING as the
	      attribute type rather than CS_DATATYPE_DATABUFFER.
	    - Unified the signatures of the iEvent::Find() methods so that they
	      all accept a reference in which to place the found item.
	      Previously, some Find() methods accepted a reference, while
	      others accepted a pointer.
	    - Added a number of missing `const' qualifiers to iEvent method
	      signatures.
	    - Rewrote the event-related section of apimod98.txi in order to
	      clarify what was otherwise confused mumbo-jumbo.
	- Eric Sunshine changed cspace.i so that it does a much more thorough
	  job of restricting the portions of csString which it exports to the
	  scripting side.  (All higher-level languages for which CS bindings
	  exist already have powerful string classes, so we can safely export
	  a bare-bones csString interface.)
	- Eric Sunshine pared down the methods exported by cspace.i for
	  csArray<csPluginRequest> to avoid problems with languages, such as
	  Java, for which Swig does not correctly handle the case of both const
	  and non-const versions of the same method.
	- Eric Sunshine renamed csString::GetData() to toString() in javapre.i
	  to be consistent with other Java classes from which a string
	  representation can be extracted.
	- Eric Sunshine fixed javapre.i and javapost.i so that they work
	  correctly in the presence of the CS_MICRO_SWIG and CS_MINI_SWIG
	  macros.
	- Vincent Knecht changed %doc to %docdir in cs.spec so documentation is
	  installed only once by rpm file. Also changed %prefix to /usr instead
	  of /usr/local/crystal.
8-Feb-2004
	- Eric Sunshine corrected Reed Hedges' changes to evdefs.h so that they
	  are correct for plain-C compilers.  This file is processed by non-C++
	  compilers (as noted by the comment at the very top of the file), so
	  please be careful when making changes.
	- Eric Sunshine made minor Texinfo mark-up changes to creategenmesh.txi
	  and converted tabs in @example blocks to spaces in order to ensure
	  proper formatted output.
	- Eric Sunshine moved handling of special `ranlib' requirements out of
	  configure script and m4 fragments, and into macosx.jam and
	  macosx.mak.  Specifically, work-around for Jam 2.4 bug which sets
	  RANLIB to "", and use of "-s" option with ranlib for MacOS/X Panther.
	  This allows the issues to be addressed in centralized locations, thus
	  giving external projects simpler access to the solutions.
	- Vincent Knecht updated cs.spec so we can build RPMs from CS current
	  snapshot.  Building is now done with Jam.
7-Feb-2004
	- Philip Wyett fixed make build of gl3d plugin after recent effects
	  changes.  Make did not know how to build the source files from the
	  'effects' subdirectory of 'engine/3d'.
	- Keith Fulton fixed bounding box calculation on setup of a sprcal3d
	  model, which was causing SECONDS of lag the first time any sprcal3d
	  was created and made visible.	 Now it happens more or less instantly.
	- Keith Fulton fixed compiler errors in Null Renderer for NR settings.
	- Luca fixed some uninitialized stuff in csEvent class (ie 'count').
	- Luca fixed some memory leaks in csMouseDriver and csJoystickDriver.
6-Feb-2004
	- Jorrit clarified the comment for iEngine::CreateBaseMaterial().
	- Jorrit corrected the HOWTO on creating a Thing. It was still
	  mentioning that Things support portals. But this is no longer true.
	- Jorrit added a HOWTO on creating genmesh objects.
	- Reed Hedges made some changes to Doxygen comments, and named some
	  anonymous enums, for event type codes.
5-Feb-2004
	- res added a small convenience wrapper arounf LoadLibrary() and
	  FreeLibrary() for Win32.
	- Eric Sunshine fixed a few global-search-replace problems in
	  configure.ac from yesterday's unification of make/Jam variables which
	  caused run-time errors in configure.
	- Eric Sunshine worked around gcc 2.95.x complaint about ambiguous
	  csRef<csFoo> to csRef<iFoo> assignment in particles plugin.
	- Eric Sunshine fixed bugs in walktest/Jamfile and walktest.mak where
	  `walkall' target unconditionally tried to build the OpenGL canvas and
	  renderer even if OpenGL was not detected.
	- Eric Sunshine fixed bug in aws/skinpars.yy.  The `expf' rule lacked a
	  terminating semi-colon.
	- Eric Sunshine fixed docs/Jamfile so that it also now installs
	  history.old, README.html, and doxygen.css.
	- Eric Sunshine fixed bug in data/Jamfile were it was installing some
	  maps directly into ${sharedir}/crystal and others into
	  ${sharedir}/crystal/maps.
	- Eric Sunshine added scripts/python/Jamfile to ensure that the Python
	  example scripts and very important cspace.py get installed.
	- Eric Sunshine added scripts/perl5/Jamfile to ensure that cspace.pm
	  gets installed.
	- res made a micro optimization in csHash<>::Grow.
	- res fixed a few leaks:
	    - csPoolEvents now have a weak ref to the event queue.
	    - csEvent::Remove() and RemoveAll() didn't free the attribute
	      array.
	    - Another superflouous csStrNew() in VFS.
	- res changed the Win32 port to remove the event listener of the old
	  keyboard driver before installing the new one.
	- res changed some errorneous free()s to delete[]s in
	  directdetection.cpp.
4-Feb-2004
	- Jorrit started the removal of the old effect system (used in OR).
	  This is unused and doesn't work properly as well.  Removed support
	  for the 'effect' and 'effects' keywords in the loader.  Removed
	  support for setting effects on materials.  The effect plugin is still
	  there because the old OpenGL renderer still needs it.
	- Jorrit moved the effects plugin source into the
	  plugins/video/renderer/opengl directory. So it is now private to the
	  old OpenGL renderer. This means that the effect system is not
	  essentially removed (it will be really removed when the old OpenGL
	  renderer is removed).
	- res fixed csProcTexture to unregister itself from the proctex event
	  handler upon destruction.
	- Eric Sunshine augmented the `msvcgen' facility so that it is capable
	  of creating multiple customized workspaces rather than always
	  creating only a single workspace (csall) containing all projects.
	  The following workspaces are now created:
	    - wkstypical: Projects which the typical CS users will use.
	    - wksall: All projects, even experimental and broken ones.
	    - wkswalkall: Walktest and plugins typically needed by Walktest.
	    - wksnewrenderer: Similar to wkstypical, but includes new renderer
	      and related modules rather than old renderer.
	  Most CS users should use the wkstypical workspace in place of the
	  obsolete csall workspace.  Project files also now contain two new
	  build modes: Release_NR and Debug_NR.	 These build modes ensure that
	  appropriate #defines are active for the new renderer, and should be
	  used when working with the wksnewrenderer workspace.
	- Eric Sunshine updated some out of date documentation in the user
	  manual; corrected some Texinfo mark-up errors; and eliminated a TeX
	  `underfull hbox' warning.
	- Eric Sunshine removed `caltocs' tutorial since the associated program
	  was removed some time back.  Perhaps, in the future, someone might
	  want to update this tutorial to explain use of sprcal3d plugin.
	- Eric Sunshine renamed the following makefile variables to be
	  consistent with their Jamfile counterparts:
	    FLEXBIN	  --> CMD.FLEX
	    BISONBIX	  --> CMD.BISON
	    SWIGBIN	  --> CMD.SWIG
	    NASM.BIN	  --> CMD.NASM
	    USE_XFREE86VM --> XFREE86VM.AVAILABLE
	    HAS_CAL3D	  --> CAL3D.AVAILABLE
	- Jorrit fixed awstest and awstut so they no longer use /this.
	- Eric Sunshine fixed the following problems related to the new MSVC
	  workspaces (reported by Jonathan Tarbox):
	    - Template files accidentally #defined USE_NEW_RENDERER instead of
	      CS_USE_NEW_RENDERER.
	    - win32/volatile.h contained `#undef CS_USE_NEW_RENDERER', thus
	      effectively undoing #define in the project files.
	    - When the new Release_NR and Debug_NR build modes were added,
	      missed configuration in msvcgen/template7/wscfg.tpi which needed
	      to be updated to reflect the new modes.
	- res fixed a stupid leak in win32.cpp.
	- res changed ::CreateSolidBrush() to ::GetStockObject() in win32.cpp.
	  Latter has the advantage that the brush doesn't need to be destroyed
	  with DeleteObject() later.
	- res fixed a leak in VFS MountRoot(). A string allocated with
	  csStrNew() was passed to an scfStringArray, which howeverallocates
	  the strings itself.
	- Neil Mosafi changed csvosa3dl plygin:
	   - No longer store iObjectRegistry in a csRef<>.
	   - Use size_t to iterate against STL classes as it's portable.
	   - Use pointer instead of csRef<> as arguments to functions.
	- Neil Mosafi added support for a3dl:clone class to csvosa3dl plugin.
	  This new type of object will construct a mesh using the factory of
	  the template mesh.
3-Feb-2004
	- Eric Sunshine fixed syntax error in aws.mak introduced yesterday
	  which manifested when running 'msvcgen' targets.
	- Eric Sunshine worked around more fallout from recent changes to the
	  Jam build facility.  Jambase in Jam 2.4 incorrectly defines RANLIB as
	  "" on MacOS/X, and this bogus setting overrides the `RANLIB ?=
	  "ranlib"' emission from CS's configure script.  Worse, when configure
	  detected MacOS/X Panther and tried to append "-s" to the value of
	  RANLIB as required by Panther, it was really appending "-s" to
	  Jamconfig's empty definition of RANLIB, thus resulting in an
	  altogether broken value for RANLIB.
	- Eric Sunshine added an `unconditional' option to
	  CS_JAMCONFIG_PROPERTY() which, when used, causes it to emit the Jam
	  property using `=' rather than `?='.
	- Jorrit removed the obsolete simplevp application.
	- Jorrit enabled csVideoPreferences compilation with NR.  It seems to
	  compile fine without changes.	 This also fixes compilation of simpvs.
	  Note that simpvs with OpenGL still crashes though.  simpvs with
	  software works fine.	'simpvs' with NR crashes even earlier before
	  showing the AWS dialog.
	- Jorrit fixed csVideoPreferences so it no longer uses the VFS /this
	  path.
	- Jorrit fixed simpmap after res2k accidently changed partsys to some
	  'street' level.
	- Jorrit fixed the genmesh GetVertices() and related functions in NR
	  so that they now call SetupFactory() (this was for some reason not
	  done with NR) and also no longer set the 'dirty' flags to true. The
	  Invalidate() function should set those flags to true but simply
	  getting the vertices should not make it dirty.
	- Eric Sunshine fixed a problem in win32.jam which prevented the
	  USE_DLLWRAP=yes option from working correctly.  Specifically, the
	  -shared flag which was discovered by configure for use in "gcc
	  -shared" was being sent to dllwrap, and dllwrap was not at all happy
	  about it.
	- Eric Sunshine fixed bug in cspython.mak where SRC.CSPYTHON
	  incorrectly included cs_pyth.cpp from both the source directory and
	  from $(OUTDERIVED).  It was supposed to include only the one from
	  $(OUTDERIVED).  Also simplified msvcgen special case; thus allowing
	  removal of CSPYTHON_MSVC_EXCLUDE hack.
	- res fixed sprcal3d.mak to include cal3d.lib in the generated VC
	  project.
2-Feb-2004
	- Eric Sunshine changed STREAMMAX and TEXTUREMAX constants in
	  csXMLShaderCompiler::shaderPass from 'static const int' to 'enum'
	  since MSVC used by Bruce Williams <midnightcoder@midnightcoder.com>
	  could not grok the 'static const int'.  The 'enum' is accepted by all
	  the compilers used for CS.
	- Keith Fulton updated for more accurate bounding box calculations in
	  very latest cal3d cvs, and attempted to update ./configure to check
	  for new cal3d API.
	- Eric Sunshine changed the Flex rules in Jam files and makefiles so
	  that they no longer insist upon using a custom skeleton file since
	  several users report "flex: fatal internal error, bad line in
	  skeleton file" when using the custom skeleton file.  Instead of using
	  a custom skeleton file, the build rules now pass the generated file
	  through 'sed' to massage it into not including <unistd.h> on Windows.
	- Eric Sunshine changed Flex rule in Jam so that it uses -L always to
	  suppress #line directives, rather than only using it if gcc is being
	  used.	 We must suppress #line directives always because the generated
	  file might get checked into CVS, and then it would be used by MSVC
	  users whose compiler dislikes these directives.
	- Eric Sunshine fixed several Jam file and makefiles which were
	  hard-coding 'sed' rather than using $(SED).
	- Eric Sunshine fixed aws.mak to use $(FLEXBIN) and $(BISONBIN) rather
	  than hard-coding 'flex' and 'bison'.
	- Eric Sunshine relocated default definitions of SED, DEEPCOPY, and
	  DELTREE into helper.jam from various other Jam files.
	- Eric Sunshine migrated Keith Fulton's change to the Cal3D check from
	  configure to configure.ac where it belongs so that it won't get
	  clobbered the next time someone re-generates configure from
	  configure.ac.
	- Eric Sunshine fixed the sed invocation in static.mak which emits the
	  #ifdef/#endif around SCF_REGISTER_FACTORY_FUNC().  Problem was that
	  'make' was eating the newlines in the sed expression, causing the
	  output to appear all on one line.
	- Eric Sunshine fixed bug in static.mak.  It was not cleaning up the
	  files it created when the 'clean' target was invoked.
	- Eric Sunshine changed behavior of aws.mak so that Flex and Bison
	  output files are placed into a subdirectory of $(OUTDERIVED) rather
	  than being placed back into the source tree.	This allows AWS to be
	  built even when the source code is on a read-only volume or on a
	  shared drive, etc.  Added 'awsgen' target which forcibly runs Flex
	  and Bison.  Added 'awsinst' which copies the generated files back
	  into the source directory so that they can be committed to CVS.
	- Eric Sunshine eliminated need for DO_SWIGPYTHINST conditional from
	  cspython.mak by slightly reorganizing the rules.
	- Eric Sunshine eliminated need for DO_SWIGPERL5INST conditional from
	  csperl5.mak by slightly reorganizing the rules.
	- Eric Sunshine added check to configure.ac which determines how to
	  disable warnings about unused variables.  The result of this check is
	  used by a few Jamfiles and makefiles when building auto-generated
	  code (such as that from Flex, Bison, Swig) which often contains many
	  unused variables.  Previously, these Jamfiles and makefiles made the
	  potentially bogus assumption that all compilers understand
	  -Wno-unused.
	- Eric Sunshine fixed copy/paste error in _GetCollisionPairs() in
	  perlpost.i which resulted in syntax error.
	- Jorrit added two parameters to the new
	  iLightManager->GetRelevantLights() function. The first parameter
	  is the maximum number of lights the caller needs and the second
	  parameter indicates if sorting on relevance is desired. Mesh
	  objects can use these parameters to get more control on the list
	  of lights they get from the light manager.
	  This is currently not implemented. It is just an API change.
	- Eric Sunshine fixed more serious brokeness resulting from Matze's
	  recent changes to the Jam build facility:
	    - GUI application install rule in macosx.jam was totally borked.
	      It had not been updated at all for the new installation scheme.
	    - General borkness of macosx.jam caused build of GUI and console
	      applications to fail while trying to invoke `mkdir -p ""'.
	    - Application rule in application.jam neglected to send "options"
	      (such as "console") to SystemInstallApplication.	This further
	      broke installation on MacOS/X since SystemInstallApplication was
	      given to believe that it was always installing GUI applications.
	    - Install targets ignored $(CMD.INSTALL) which is emitted by
	      configure and were instead using $(INSTALL).  Fixed by having
	      configure emit $(INSTALL) instead of $(CMD.INSTALL).  For
	      consistency, also renamed $(CMD.RANLIB) to $(RANLIB).
	    - Fixed bug in Install1 in install.jam where it was applying
	      $(INSTALLFLAGS) at the wrong position in the command invocation.
	- Neil Mosafi added support for "a3dl:model" to the csvosa3dl plugin (a
	  Sprite3D wrapper).
1-Feb-2004
	- Eric Sunshine applied a couple small patches from Randall Foreman
	  <eidpers@comcast.net> for Borland C++Builder which fix re-declaration
	  of loop variable in 'for', and which ensures that "Press a key to
	  close this window" is flushed to console window.
	- Philip Wyett removed cast to int causing signed / unsigned mismatch
	  in csString& csString::RTrim ().
	- Neil Mosafi added Cone and Billboard classes to the csvosa3dl plugin.
	  This provides support for constructing CS meshwrappers corresponding
	  to "a3dl:cone" and "a3dl:billboard" metaobjects on a VOS site.
30-Jan-2004
	- res augmented csThing::InitializeDefault() to unprepare the thing
	  when the 'clear' flag is set.
	- res added a sanity check to csThingObjectType::Initialize().
	- Jorrit removed an obsolete constructor from csMeshWrapper.
	- Jorrit did the following lighting related changes:
	    - Added iLightManager. This interface must be implemented by an
	      engine (and registered to the "iLightManager" tag in the object
	      registered) and mesh objects can then use this light manager to
	      find out which lights affect them. In the end this will replace
	      the DeferUpdateLighting() system.
	    - Removed iMeshObject->UpdateLighting(). Mesh objects now have
	      to use the light manager to request the lights they need (if
	      any). All mesh objects have been modified to reflect this.
	    - Changed iParticle->UpdateLighting() to use a csArray instead
	      of an iLight**.
	    - Added a temporary implementation of GetRelevantLights() in
	      csMeshWrapper. This implementation works exactly like
	      UpdateDeferedLighting() used to do in the past. This means
	      the current system is just as efficient as the old one.
	      In future we need to update this so that the array of
	      lights doesn't have to be recalculated if nothing has changed.
	      Also we need to sort lights on relevance so we can return
	      the most relevant lights to the object.
	    - Completely removed the obsolete DeferUpdateLighting() call.
	    - Replaced this with a SetLightingUpdate() call. Using this
	      call the application can control what lights should be
	      returned to the mesh object upon calling GetRelevantLights()
	      and in what order. With this function you can control the
	      number of lights that should be used for lighting the object
	      and also what kind of relevance sorting should be used (not
	      implemented yet).
	    - Changed iso engine to call SetLogicalParent() on the mesh
	      objects so that the iIsoMeshSprite is set on the mesh.
	    - Iso engine also implements iLightManager now so that mesh
	      lighting works the same as in the 3D engine.
	    - Removed the obsolete flag parameter on
	      iEngine->GetNearbyLights().
	    - Updated the documentation for these changes.
	- Eric Sunshine fixed bug in msvcgen.mak introduced on 28-Jan-2004
	  (during csutil/cssys merge) where it neglected to ensure that
	  $(OUTBASE)/mk/msvcgen existed before trying to create subdirectories
	  of that directory, thus leading to a crash.
	- Jorrit did the following lighting related changes:
	    - Added a new CS_LIGHTINGUPDATE_ALWAYSUPDATE flag to indicate
	      that lighting should be updated all the time. By default
	      this is not set which means that lighting is only updated
	      when the object moves or when the list of lights that are
	      currently affecting the object changes. This is ok in almost
	      all cases but it can fail when a light indirectly affects an
	      object through a portal and the portal changes in some way (i.e.
	      is removed or moves). In that case the default behaviour will
	      not catch the lighting change.
	    - Made all DrawTest() implementations call GetRelevantLights() only
	      when they think the object is visible instead of all the time.
	      This is more optimal.
	- Jorrit changed csArray<Bot> to the safer csPDelArray<Bot>.
	- Jorrit fixed a bug in one of the engine CreateMeshWrapper()
	  functions.  It would set the logical parent of the created mesh to
	  the iBase of the csObject instead of the iMeshWrapper. This caused
	  the bots to crash with the new lighting system.
	- res fixed a few 64bit portability issues in csutil reported by VC7.
	- res removed the unused csSymbolTable class.
	- Jorrit updated the MeshAnim HOWTO about automatic lighting.
	- res made some small optimizations to csHash<>.
	- res made some more small optimizations to csHash<> and fixed the
	  GetAll() argument.
	- duhprey fixed partphys_ode to compile.
29-Jan-2004
	- Eric Sunshine made the following changes to clean up after Matze
	  changed the return type of csGetConfigDir(), csGetResourceDir(),
	  csGetAppDir(), and csGetAppPath() to return csString instead of char
	  const*.
	    - Completely restored the functionality of the platform-independent
	      csGetPluginPaths(), most of which Matze had removed for some
	      reason.  Most importantly, this makes csGetPluginPaths() once
	      again search for installed Crystal Space plugin modules, which is
	      something that no longer occurred following Matze's changes, and
	      would easily account for the fact that external projects on
	      MacOS/X and Windows -- both of which use this implementation of
	      csGetPluginPaths() -- could no longer locate any CS plugins.
	    - Fixed bugs where he was returning 0 (null) for functions which
	      were supposed to be returning csString.
	    - Updated Doxygen comments for these functions since they were
	      quite invalid following Matze's changes.
	    - Eliminated unnecessary obfuscation in OSXGetDirs.cpp and
	      winsyspath.cpp which was introduced with this change.
	    - Upgraded csGetConfigPath() for MacOS/X since Matze forgot to
	      update this implementation.
	    - Changed Windows port to use generic/appdir.cpp since
	      winsyspath.cpp was simply duplicating its functionality.
	    - Fixed bug: Following Matze's changes, platform-independent
	      csGetAppPath() would leak `envPATH' string if program was not
	      found in $PATH.
	    - Fixed csGetConfigPath() for Unix so that it once again checks
	      $CRYSTAL/etc for vfs.cfg.	 Likewise, csGetPluginPaths() for Unix
	      once again checks $CRYSTAL/lib.
	    - Restored error checking code which had been removed, the removal
	      of which could potentially cause csPluginPaths::AddOnce() to
	      misbehave.
	    - Generally cleaned up the code.  Also eliminated compilation
	      errors and warnings.
	- Eric Sunshine fixed several syntax errors in CS/mk/jam/*.jam files.
	- John Harger changed shaderVarAccessor in the genmesh and particles
	  plugins into proper embedded SCF interfaces (which eliminated a
	  warning about using "this" in member initialization)
28-Jan-2004
	- Eric Sunshine removed a slew of csengine library references from the
	  project since the csengine library no longer exists.
	- Eric Sunshine documented removal of csengine in apimod98.txi.
	- Eric Sunshine eliminated TeX 'hbox' warning from render.txi.
	- Eric Sunshine physically merged the cssys resources (headers,
	  sources, and resources) into the csutil directory structure.	cssys
	  has now been abolished completely.
	- Jorrit fixed mk/jam/win32.jam which Matze forgot to change
	  after changing the PACKAGE.xxx to PACKAGE_xxx.
	- Eric Sunshine fixed all the places in the project where Matze forgot
	  to change Jam/make variable PACKAGE.xxx to PACKAGE_xxx (except for
	  win32.jam which Jorrit already patched).
	- Eric Sunshine fixed Jorrit's fix to win32.jam, in which Jorrit
	  incorrectly changed PACKAGE.VERSION.LIST to PACKAGE_VERSION.LIST.
	- Eric Sunshine augmented win32.jam so that the "File Description"
	  attribute emitted to the version .rc file has a reasonable default
	  value if the target's Jamfile did not invoke the Help rule.
	- John Harger fixed the particles interface to avoid the dangerous
	  csArray references.
	- Norman Kraemer replaced in viewmesh the call to SetRenderScale() with
	  RescaleFactory().
27-Jan-2004
	- Dentoid added a missing CS_IMPLEMENT_PLUGIN to the engine plugin.
	- John Harger moved everything from iParticlesObjectState::Update into
	  the physics plugin. This will allow better control over the particles
	  and especially make the ODE particle physics plugin a lot easier and
	  cleaner.
	- Keith Fulton re-enabled factory scaling in sprcal3d.	Using a <scale>
	  tag in the .cal3d file now rescales the bones, meshes and all anims
	  for you.  Put it after all the other items are loaded in your file.
	- Keith Fulton fixed an error message on bad mesh name in sprcal3dldr.
26-Jan-2004
	- Eric Sunshine updated CS/scripts/jamtemplate/cs_check_host.m4 to
	  reflect all the MacOS/X-specific fixes Eric applied to
	  CS/configure.ac over the last several months (i.e. "ranlib -s",
	  "gcc -E", etc.).
	- Eric Sunshine inlined the functionality from CS/docs/html/Jamfile and
	  CS/docs/pubapi/Jamfile into CS/docs/Jamfile because the Jamfiles in
	  those two subdirectories get deleted automatically by jobber.pl
	  (since all content of those directories is generated automatically by
	  jobber.pl).
	- Jorrit removed the csengine library and merged all sources into
	  the engine plugin. include/csengine and libs/csengine are now
	  gone. Jorrit also fixed walktest so it no longer includes files
	  from include/csengine.
	- Luca added a very informative message in the bottom of the screen
	  for the waterdemo application.
	- Matze removed csengine from cs-config.
	- res made the following changes to data/config/opengl.cfg:
	    - Improved comment for Video.OpenGL.TextureDownsample.
	    - Added GL font cache settings.
	- Eric Sunshine removed plugine/engine/3d/enginep.cpp since it is no
	  longer needed.  This file existed solely to force a reference from
	  the plugin to libcsengine.a to ensure that the library was actually
	  linked into the plugin module.  Since all engine sources now reside
	  in engine/3d and libcsengine.a is gone, this is no longer necessary.
	- Eric Sunshine fixed bug in plugins/engine/3d/engine.mak where it
	  failed to install engine.cfg.	 This functionality should have been
	  relocated here when libs/csengine.mak was removed.
	- Eric Sunshine converted plugins/engine/3d/engine.mak to the new style
	  which does not pollute the $(OUT) directory.
	- Eric Sunshine fixed bug in bugplug.mak where it failed to install
	  bugplug.key.
25-Jan-2004
	- Matze did some updates to the jam rules:
	    - I decided not to fight autoconf while using custom variable
	      names.  This gives more trouble than necessary.  So we're using
	      bindir, includedir, etc., for installation directories now.
	    - Rewrote installation rules and used the ones from autojam.
	    - Fixed and simplified header install rules.
	    - Added new targets to install documentation.
	- Matze changed the csGet*Dir functions to return csString and
	  introduced CRYSTAL_PLUGIN and CRYSTAL_CONFIG in the unix variant and
	  changed the order in the linux variant a slight bit.
	- Eric Sunshine fixed a couple more places in particleldr.cpp where
	  false was being returned as a csPtr<>.  Reported by Randall Foreman's
	  Borland compiler.
	- res corrected the Help statement in the cscursor Jamfile.
23-Jan-2004
	- Jorrit fixed a crash bug in the engine.  At destruction it was
	  forcing a get of the thing plugin.  However this also happens at
	  cleanup if nothing else has been initialized yet (i.e. if there is
	  an error doing application initialization).  This caused crashes
	  because thing plugin was trying to do stuff to the renderers which
	  were not initialized yet.
	- Eric Sunshine fixed configure's "-shared" flag check so that it works
	  with Autoconf >= 2.58, as well as with earlier releases.  This check
	  needs to examine conftest.err, which normally is not created by
	  AC_LINK_IFELSE() in <= 2.57, so the check had to perform some m4
	  magic to fool AC_LINK_IFELSE() into creating conftest.err.  As of
	  Autoconf 2.58, however, AC_LINK_IFELSE() always creates conftest.err,
	  but it also deletes conftest.err before the "-shared" check has a
	  chance to examine the file.  In addition to fixing this problem, the
	  functionality of examining conftest.err has also been generalized and
	  is now available as a standard option to all callers of
	  CS_BUILD_IFELSE(), CS_CHECK_BUILD(), and CS_CHECK_BUILD_FLAGS(),
	  rather than being implemented as a special case for the "-shared"
	  check.
22-Jan-2004
	- Jorrit added the engine target to both jam and make 'walkall' since
	  the engine plugin is now required.
21-Jan-2004
	- Eric Sunshine made some minor updates to cygwin.txi, the most
	  important of which was to replace "make all" with "make -k all" in
	  the CS build instructions.
	- Jorrit did the following array related changes:
	    - Added csSafeCopyArrayMemoryAllocator which is a memory allocator
	      that takes care to properly re-construct all objects upon
	      reallocation of the array.  This memory allocator can be used
	      when you have an array of objects that cannot be safely moved
	      around in memory otherwise.
	    - Added csSafeCopyArray convenience class which is a version of
	      csArray that uses the csSafeCopyArrayMemoryAllocator.
	    - Changed csWeakRefArray to inherit from csSafeCopyArray.
	    - As a consequence of the above changes the dangerous
	      csWeakRef::Link() and Unlink() functions could be made private so
	      they cannot be misused.
	- res made the following changes:
	    - Fixed "Independent target ../../../mk/visualcX/foobar.rc" Jam
	      warnings, for real now.
	    - Fixed "..\..\out\mk\fragment7\..\..\..\mk\visualc7\foobar.rc"
	      style paths VC projects.
	- res made the following changes:
	    - Changed walktest so it doesn't link in csengine statically any
	      more.
	    - Removed some unused stuff from csengine.
	    - Cosmetic change in msvcgen.jam.
	- Luca added a friend declaration to access a private member from an
	  enclosed class in the class csSpriteCal3DMeshObject.	He also added
	  the needed dependencies for sprcal3d and sprcal3dldr (CSGFX CSGEOM
	  CSUTIL).
20-Jan-2004
	- Jorrit added a new MemoryAllocator template parameter to csArray.
	  With this parameter it is possible to use another memory allocator
	  that csArray uses for its allocation of the table. The default
	  memory allocator uses malloc/realloc/free.
	- Jorrit added csWeakRef<T>::Link() and Unlink() which are functions
	  that nobody should ever call.
	- Jorrit added csWeakRefArray<T> which is an array of weak references.
	  This is needed because csArray<csWeakRef<T> > does not work because
	  you cannot reallocate an array of weak references.
	- John Harger cleaned up the particles plugin interface a bit, and
	  changed the loader syntax a little.
	- Eric Sunshine added new interface iParticlesColorCallback.  This
	  replaces the ugly functional-style color callback used by
	  iParticlesObjectState and iParticlesFactoryState with a more
	  object-oriented and normalized approach.
	- Eric Sunshine cleaned up particle related headers and added some
	  missing documentation to ensure that Doxygen will actually produce
	  output for the interfaces.
	- Eric Sunshine eliminated several compilation warning in the particles
	  and particlesldr plugins.
19-Jan-2004
	- Steven Geens changed the calling of PositionChild to a hierarchical
	  scheme.
	- Norman Kraemer changed render3d Jamfile to include shader subdir
	  only if new renderer is configured or msvc project file generation
	  is in progress.
	- Eric Sunshine reverted Norman's change since MSVC_QUIET is not a
	  reliable way to check if the MSVC project file generation is in
	  progress.  This variable is just an optional variable used by
	  the generation process itself, and is not guaranteed to be set during
	  generation.  If you need to generate render3d shader project files,
	  it should be sufficient to invoke mk/msvcgen/msvcgen.sh with the
	  argument "-sUSE_NEW_RENDERER=yes".
	- Eric Sunshine updated EAX URLs in msvc6.txi and msvc7.txi since the
	  old ones were out of date.  New URLs provided by David Calkins
	  <dcalk@dejazzd.com>.
	- Eric Sunshine fixed a bunch of Texinfo mark-up problems in msvc6.txi
	  and msvc7.txi.
	- Eric Sunshine fixed bugs in particlesldr.cpp which were reported by
	  Randall Foreman's Borland compiler.  Was returning 'false' from a
	  couple functions declared to return csPtr<>.
	- Eric Sunshine fixed a few additional problems reported by the Borland
	  compiler.  Please use "#ifdef CS_DEBUG" rather than "#if CS_DEBUG".
18-Jan-2004
	- Jorrit removed unused 'next'/'prev' fields in csLight. These
	  are no longer needed after the redesign of two days ago.
	- Jorrit added iPortal->GetWorldVertices() to get the world space
	  vertices of a portal.
	- Jorrit fixed iEngine->GetNearbyObjects() and GetNearbyMeshes()
	  to actually use this so that these functions now use the correct
	  world space vertices.
	- Luca compiled the new renderer with VC6 and did some fixing:
	    - Added a "friend MeshTreeNode" to the class
	      csChunkLodTerrainFactory to let the former to access private
	      members of the latter.
	    - Converted a "for (int i =" to "int i; for (i = " in
	      mesh/partgen/particle.cpp
	    - Added CSGFX dependency (DEP.XXX in the makefile) to emit.mak,
	      fountain.mak, fire.mak, explo.mak, genmesh.mak, rain.mak,
	      spiral.mak, snow.mak, spr3d.mak.
	    - Fixed a compilation error in odedynam.h.
	- Luca modified his last commit, upon advice of res, using the right
	  order for the libraries' dependency, id est: cstool csgfx csgeom
	  csutil.
	- Andrew Craig fixed two problems in sprcal3d.	First was a check to
	  make sure it does not attach the same mesh more then once.  Second is
	  a fix to SetMaterial() to use the right mesh ID.
17-Jan-2004
	- Steven Geens added HitBeamOutline and HitBeamObject for sprcal3d.
	  He's not completely sure it works, but it doesn't seem to break
	  anything.
	- Steven Geens updated a test of configure.ac and configure so it
	  checks correctly for the cal3d cvs version.
16-Jan-2004
	- Jorrit started work on the unification of all types of lights in
	  CS. Moved a lot of general stuff from csDynLight/csStatLight (and
	  also iDynLight and iStatLight) to csLight/iLight.
	- Jorrit removed the iStatLight and iDynLight interfaces. All
	  useful functionality that used to be there has been moved to
	  iLight. Various functions in iEngine have been changed to
	  work with iLight instead of iStatLight or iDynLight.
	- Jorrit added a now a iLight->GetDynamicType() function that
	  returns one of the following:
	    CS_LIGHT_DYNAMICTYPE_STATIC
	    CS_LIGHT_DYNAMICTYPE_PSEUDO
	    CS_LIGHT_DYNAMICTYPE_DYNAMIC
	- Jorrit added mention of the above changes to the apimod98.txi
	  document.
	- Jorrit modified the tutorials in the documentation to reflect
	  the changes.
	- Jorrit unified iLightingInfo->DynamicLightDisconnect(),
	  DynamicLightChanged(), StaticLightDisconnect(), and
	  StaticLightChanged() so that only LightDisconnect() and
	  LightChanged() remain.
	- Jorrit removed iLight->IsDynamic(). This is now obsolete since
	  you can use iLight->GetDynamicType() for this.
	- Jorrit removed csStatLight and csDynLight internally in the engine.
	  All lights are now csLight instances. Turned out that nearly all
	  code was identical anyway.
	- Jorrit removed all functions that deal specifically with dynamic
	  lights. Instead dynamic lights are now created exactly like
	  normal static lights and have to be added to the sector list.
	  CreateDynLight() has been removed. The last parameter of
	  CreateLight() is now one of the dynamic types (instead of a boolean).
	- Jorrit removed iLight->SetSector(). It is not valid to manually set
	  the sector of a light. This is done automatically when you add
	  a light to a sector by calling sector->GetLights()->Add().
	- Eric Sunshine performed some Texinfo markup corrections in simple.txi
	  and apimod98.txi, and eliminated TeX underfull hbox complaint from
	  apimod98.txi.
	- Jorrit removed a few warnings here and there.
	- Eric Sunshine fixed a bug in csSocketListener where it failed to
	  initialize its mcast_in member.  This addresses bug #873491, however,
	  this is only the tip of the iceberg since UDP support in cssocket is
	  fundamentally and fatally flawed in almost every way possible.
	  Fixing it will be a major, major undertaking, and will require either
	  implementing a proper, complete, and comprehensive
	  connection-oriented emulation (rather than the broken, incomplete,
	  and highly buggy emulation currently implemented), and by eliminating
	  the conceptual flaw that UDP sockets are always non-blocking; or by
	  revising the API to support connection-oriented, connectionless, and
	  multicast modes.
15-Jan-2004
	- Peter Amstutz changed the keyboard movement in the "simple" tutorials
	  (along with the associated texinfo documentation) to follow more
	  conventional controls for the first person view on the assumption
	  that most people start writing CS applications by copying "simple1"
	  and so they should have a better set of default controls from which
	  to work.  :-)
	- Jorrit fixed the .csplugin file in the ODE based physics plugin for
	  particles.  It was using the same plugin ID as the simple physics
	  plugin.
	- Jorrit attempted to convert the rain mesh to the NR.	It doesn't yet
	  work though.
	- Jorrit fixed the bugs in the rain mesh object.  It now works mostly
	  with NR except that portals seem to overwrite it.
	- Jorrit fixed the transform of the rain particle system so it renders
	  at the correct spot with NR.
	- Jorrit fixed a bug in the loader.  By delaying to set the render
	  priority of an object up to the end the automatic portals generated
	  from old map files wouldn't inherit the right object priority.  This
	  could cause render errors.  With OR these errors didn't come up due
	  to coincidence but with NR they were very visible.
	- Eric Sunshine greatly enhanced the Doxygen documentation for
	  iNetworkSocket so that it explains precisely what the interface
	  represents, and how & when clients might want to use it.
	- Eric Sunshine fixed classes csMetaMaterial and csMetaTexture in
	  csvosa3dl plugin.  They were accidentally and incorrectly using
	  private inheritance.	Note that "class Foo : public Bar, Cow, Smoo"
	  is not the same as "class Foo : public Bar, public Cow, public Smoo".
	- Eric Sunshine updated csvosa3dl.mak so that it links the plugin
	  against csgeom.
	- Marten removed the now deprecated iRenderBufferSource.
	- Jorrit optimized NR version of genmesh a little bit. Render
	  buffers are now only recreated when really needed and not every
	  time the dirty bit was set. Also removed the copy of the triangle
	  array to an int* buffer. That's not needed.
	- Eric Sunshine simplified a number of macros in checkbuild.m4,
	  checklib.m4, and configure.ac by removing some unnecssary
	  m4_default() invocations.
	- Eric Sunshine fixed outdated documentation for CS_EMIT_BUILD_FLAGS()
	  macro in configure.ac.
	- Eric Sunshine fixed aesthetic problem in configure.ac where output of
	  the results of certain tests for build flags (such as -Werror, -Wall)
	  could differ between cached and uncached runs.
	- Eric Sunshine added new enable-exceptions test to configure.ac which
	  complements the existing disable-exceptions test.  Both tests now
	  emit custom makefile/Jam variables which can be used by modules which
	  need fine-grained control over exceptions.
	- Eric Sunshine fixed problem in configure.ac's -fvtable-thunks check
	  where it was hard-coding the flag -Werror, rather than using the
	  computed value $cs_prog_cxx_enable_errors.
	- Eric Sunshine fixed VOS check in configure.ac so that it no longer
	  hard-codes -D_REENTRANT and -fexceptions CFLAGS, since doing so makes
	  the invalid assumption that all compilers will understand these
	  flags.  Instead, now uses the result of the new enable-exceptions
	  configure.ac check, and takes advantage of the fact that each build
	  system provides a portable way to specify preprocessor defines.
	- Eric Sunshine added const and non-const operator[] methods to
	  Opcode's Point class (OPC_Point.h).  This works around problem with
	  Borland compiler where it considered the following code ambiguous:
	    Point p; float x = p[0];
	  Other compilers correctly apply Point's float* operator and then
	  treat the returned result as an array.  Borland, however, was unable
	  to choose if it should use the const or non-const float* operator.
	- Eric Sunshine revised outdated and incomplete Doxygen comments for
	  iNetworkEndPoint, iNetworkConnection, iNetworkListener,
	  iNetworkDriver, and csNetworkDriverCapabilities.
	- John Harger fixed a sorting problem (though the back2front sorting
	  is broken still in libcstool/rendermeshlist) and enabled selecting
	  other physics plugins for the particles plugin.
	- res updated the ball mesh plugin makefile to link against csgfx, too.
	- res fixed AWS to compile with NR.
	- res fixed Opcode after the recent operator-related changes. MSVC was
	  confused by the presence of both a float* and float[] operator.
	  Removed float* version.
	- Jorrit added a sequence to the terrain level so that the sun
	  moves. This gives nice realtime lighting effects on the landscape.
	- Keith added timeFactor for slow motion and reversible anims for
	  sprcal3d. Improved error reporting on bad loads of .cal3d files.
	  Added stopLock flag to animation mixer so that animation stops on
	  the last keyframe if true.
14-Jan-2004
	- res changed glrender3d to not depend on GLU any more. Though a GLU
	  header was #included, no GLU function was used anyway.
	- res sanitized line endings in ivideo/custcursor.h and the custom
	  cursor plugin.
	- Eric Sunshine fixed copy/paste error in the new partphys_ode.mak
	  which broke the makefile.
	- Eric Sunshine fixed awsScrollBar::Setup() so that it positions the
	  components of the horizontal scrollbar properly.  Previously, it was
	  using magic constants (2, 4, 6) to adjust the component positions,
	  but these constants were incorrect even for the default skin.
	  Positioning of the components is now completely independent of magic
	  constants, and is also entirely consistent with the way the
	  components of the vertical scrollbar are positioned.
	- Norman Kraemer changed Frame's Height access from Frame.Height() to
	  Frame().Height()
	- Norman Kraemer made the glshader_cg compileable once again, but says
	  that it certainly won't work.	 I adjusted include paths, structure
	  names and method spurs.  Since i added the missing Compile method as
	  a false returning dummy method it certainly won't work.  I guess
	  there should go the code from the now defunct Prepare() method.
	- Peter Amstutz rewrote the GenerateBox() method in the genmesh plugin
	  to create a box with better texel settings (the old code had texture
	  warping bugs on certain sides of the box)
	- Peter Amstutz added support for textures and materials to the
	  csvosa3dl plugin.  It also loads "a3dl:object3D.cube" into the
	  engine.
	- Peter Amstutz modified the configure.ac script to add the flags
	  -D_REENTRANT and -fexceptions to the VOS cflags variable.
13-Jan-2004
	- Jorrit added a version of Top() to csArray that is not const.
	- Jorrit multiplied the values in the two glPolygonOffset() calls
	  with 3 (in the NR OpenGL renderer) to avoid flickering in case
	  stencil lighting is used. This still doesn't completely avoid
	  flickering but it helps considerably.
	- Neil Mosafi changed the custom cursor plugin to use iReporter instead
	  of a comment and also to use csHash<> instead of csHashMapReversible.
	- Eric Sunshine fixed memory leak in csVosA3DL::GetSector().  It was
	  assigning a 'new' csVosSector directly to a csRef<>, thus leaking a
	  reference.
	- Eric Sunshine fixed a number of cases in the csvosa3dl plugin where
	  it was accidentally and incorrectly using private inheritance.  Note
	  that "class Foo : public Bar, Cow, Smoo" is not the same as "class
	  Foo : public Bar, public Cow, public Smoo".
	- Eric Sunshine fixed csVosA3DL and csVosSector so that they do not use
	  csRef<> for storing iObjectRegistry, since this tends to lead to
	  reference loops.
	- Eric Sunshine removed numerous unnecessary #includes from csvosa3dl
	  plugin.
	- Eric Sunshine fixed bug in csVosObject3D.  It failed to invoke
	  SCF_CONSTRUCT_IBASE() and SCF_DESTRUCT_EMBEDDED_IBASE().
	- Eric Sunshine fixed bug in csMetaObject3D.  It was leaking a
	  csVosObject3D.
	- Eric Sunshine fixed bug in csVosSector.  It failed to invoke
	  SCF_CONSTRUCT_IBASE().
	- Eric Sunshine added a makefile for the csvosa3dl plugin.
	- Eric Sunshine fixed bug in csvosa3dl Jamfile.	 It was incorrectly
	  assigning $(COMPILER.CFLAGS) to the global C++FLAGS, which impacts
	  _all_ modules.  Presumably, this was done to work around some
	  unspecified issue, but it was an incorrect solution.	(Peter, if you
	  can provide information about the issue you were dealing with,
	  perhaps we can devise a more appropriate solution.)
	- Eric Sunshine fixed vosa3dl.h so that it #includes headers for
	  classes used as template arguments, rather than simply forward
	  declaring them.  This will allow it to work correctly with older
	  compilers, such as the Borland compiler, which must see the entire
	  class declaration before the class is used as a template argument.
	- Eric Sunshine protected vostest.mak via a conditional so that the
	  vostest application is built only if VOS has been detected.
	- Eric Sunshine fixed bad copy/paste error in the configure.ac VOS
	  check, where it was testing against $(SDLCONFIG), thus VOS would only
	  be found if SDL was also present.
	- Eric Sunshine fixed incorrect m4 quoting in the VOS configure.ac
	  check.
	- Eric Sunshine changed the VOS configure.ac test so that it no longer
	  unnecessarily emits the HAS_VOS makefile property.
	- Eric Sunshine added cache support to the VOS, SDL, FreeType2, Perl,
	  and cslibs configure.ac checks.
	- Eric Sunshine fixed bug in configure.ac's Perl SDK check where it was
	  accessing Config.pm's `sitearch' value, when it should have been
	  accessing `archlib'.
	- Eric Sunshine fixed configure.ac's Perl SDK check so that it wraps
	  all invocations of external programs inside AC_RUN_LOG().
	  Previously, it only wrapped some such invocations.
	- Eric Sunshine fixed bug in sprcal3d.mak.  It neglected to add
	  $(CAL3D.LFLAGS) to LIBS.EXE for static build.	 Also updated makefile
	  to new style in which object files are placed in custom subdirectory
	  of $(OUT) rather than polluting $(OUT).
	- Eric Sunshine fixed bugs in gl_render3d.mak where it failed to
	  utilize GLU.CFLAGS.
	- Eric Sunshine fixed bug in render3d/opengl/Jamfile where it failed to
	  utilize GLU.CFLAGS and GLU.LFLAGS.
	- Eric Sunshine fixed bugs in csvos3adl.mak and sprcal3d.mak where they
	  were incorrectly utilizing VOS.LFLAGS and CAL3D.LFLAGS, respectively.
	  The error would cause static link builds (USE_PLUGINS=no) to fail.
	- duhprey added an ODE based particle physics plugin. (alpha)
12-Jan-2004
	- Peter Amstutz added a preliminary version of a VOS
	  plugin for CS, along with a test program.  The configure script
	  checks for VOS and will not build the plugin or
	  test program unless VOS is available.
	- Jorrit fixed a compile error with syntax services. You can't
	  forward declare an enum (csZBufMode).
	- Jorrit fixed a big bug in csHash::DeleteAll(). If the size of
	  the bucket table happened to exceed the initial modulo size then
	  DeleteAll() would simply crash. In fixing this function Jorrit
	  also removed the 'bool' return value from DeleteAll(). This
	  is useless. If application code needs to know if values are
	  going to be deleted it can call GetSize() right before calling
	  DeleteAll().
	- John Harger comitted Daniel Duhprey's patch for particles, changing
	  the internal update loop a bit. Also a few new features were added
	  such as variable mass and improved start/stop features including
	  an option to turn of autostarting.
11-Jan-2004
	- Jorrit fixed a compile error and some warnings in the new particles
	  system.
	- Eric Sunshine eliminated some unnecessary $(addprefix) invocations
	  from bugplug.mak.
	- Eric Sunshine converted particles.mak, particlesldr.mak, and
	  partphys_simple.mak to the new-style makefile which emits its working
	  files to a custom subdirectory of $(OUT).
	- Eric Sunshine removed some highly questionable and unnecessary
	  implicit rule goop from particles.mak and partphys_simple.mak.
	- Eric Sunshine fixed formatting of 'help' messages from particles.mak,
	  particlesldr.mak, and partphys_simple.mak.
	- Eric Sunshine eliminated bogus cssys reference from particles.mak.
	- Eric Sunshine ported particles.cpp to MacOS/X by eliminating
	  invocation of unportable tanf().
	- Eric Sunshine fixed particles/simplephys.h to #include
	  csutil/randomgen.h rather than the deprecated csutil/rng.h.
	- Eric Sunshine added particles, particlesldr, and partphys_simple
	  plugins to user.mak.
	- Eric Sunshine changed the particles, particlesldr, and
	  partphys_simple plugins to #include appropriate header files rather
	  than using forward declarations for a number of interfaces which were
	  used as template arguments.  This will allow the code to build
	  correctly with older compilers, such as Borland C++Builder.
	- Eric Sunshine removed a good number of unnecessary #includes and
	  forward delcarations from the particle-related plugins and fixed
	  numerous formatting goofs.
	- Eric Sunshine worked around problem where configure.ac's GLU and GLUT
	  checks could export incorrect build flags on MacOS/X if user had
	  installed XFree86.  In this case, it would find the GLU and GLUT
	  resources from XFree86 rather than utilizing GLU.framework and
	  GLUT.framework.
	- Eric Sunshine fixed problem in configure.ac where the OpenGL and
	  related checks were not sensitive to Darwin cross-building from
	  MacOS/X (via the --with-x switch).  In this case, the checks were
	  still incorrectly trying to locate OpenGL.framework, GLU.framework,
	  and GLUT.framework, rather than the XFree86 resources.
	- Steven Geens fixed sprite sockets. They wouldn't work correctly
	  if morph targets were used.
	- res made the following changes:
	    - Changed the syntax service plugin to use tokenlist.h for it's
	      token list setup.
	    - Added a method to parse Z modes to the syntax service plugin.
	    - Added a zmesh2 zmode.  Works similar to zmesh, but with the
	      difference that it sets a zmode suitable for passes >= 2 (eg if
	      the mesh has a zmode of zuse, zmesh2 will result in an effective
	      zmode of ztest.)
	    - Shader passes can now override the zmode of the renderer.
	    - Updated the OR lighting shader to utilize zmesh2 in the 2-pass
	      technique.
	- John Harger fixed the quads mode in the particles plugin. The test
	  level should work now too. (And has a nice fire effect, courtesy of
	  Daniel Duhprey)
10-Jan-2004
	- res added a facility to draw meshes with less render buffer juggling
	  etc. required from the client.
	- res updated the csfx* functions to use that facility on NR.
	- In csutil/inpnames.{h|cpp}, Oktal added functions csTypeOfInputDef
	  and csParseJoystickDef.
	- Keith Fulton added ability to override default material in sprcal3d
	  mesh.
	- res made the following changes:
	    - Moved 'Help' statement in Jamfiles in front of Application /
	      Plugin / etc. statements.  This way, the Win32 version .rc
	      generator can use them.
	    - Fixed "Independent target ../../../mk/visualcX/foobar.rc" Jam
	      warnings.
	    - Changed the AWS Jamfile to use the out/...  directory as an
	      additional inlude path, to work around problems caused by
	      different versions of Bison used for the local build and the
	      generated stuff in CVS (the file skinpars.hpp was slightly
	      different, but enought to cause a link error when the CVS version
	      was used, as opposed to the locally generated one.)
	- res changed the point sprite caps test in glrender3d to consider both
	  the ARB_point_sprite and ARB_point_parameters extensions.
	- res made some cosmetic changes to the particles and partphys_simp
	  plugins.
	- res changed the particle_basic shader to not use fixed function
	  lighting any more.
	- Philip Wyett moved decleration of 'iPortal *po' into better scope.
	- Andrew Craig added the ability for sprcal3dldr to name materials
	  inside the .cal3d file new material tag is where name is optional:
	    <material file="image file" name="material name"/>
	- John Harger changed the internal memory structure of the particles
	  there is no longer an upper maximum, and it should work better
	  overall.  Quads are currently unfunctional, only point sprites work.
9-Jan-2004
	- Jorrit fixed a warning in memimage.cpp.  It was trying to delete a
	  void* which is undefined.
	- Jorrit totally reverted the deletes in memimage.cpp. The superclass
	  (csImageFile) was already doing those deletes.
	- Marten made a first attempt to preliminary fix for re-entrant portals
	  and disabled floating portals for new renderer.
	- Jorrit reverted Marten's last portal fix as it causes totally new and
	  much worse problems.
	- Jorrit fixed the /temp path in vfs.cfg.  It used ./data instead of
	  @data.
	- Jorrit fixed a bug in the generic renderloop step plugin.  When
	  render portals it was not flushing the list of meshes with the same
	  shader.
	- Jorrit fixed a bug in the csList::Iterator.  It was always skipping
	  the first element.
	- Jorrit fixed the NR object handling in csSector so that it now uses a
	  csArray instead of a csList to cache the visibility results and it
	  also uses the render context instead of only the render view.
	  Unfortunatelly this still doesn't fix the problems.
	- Jorrit replaced DeleteAll() with Empty() in csRenderMeshList for more
	  efficiency.
	- Jorrit removed the sorting of the renderMeshListInfo structures in
	  csRenderMeshList.  This is not needed since they are already inserted
	  sorted.
	- Jorrit optimized csRenderMeshList->GetSortedMeshList() a bit more by
	  avoiding the two iterator loops over the render priorities.
	- Jorrit considerably optimized the generic render loop by avoiding an
	  unneeded csArray for keeping the sorted meshes.
	- Jorrit did another small optimization to avoid the construction of
	  the dynDomain array if the material didn't change (in
	  csGenericRenderStep::RenderMeshes).
	- Jorrit changed the array parameter in iShaderProgram->SetupState() to
	  const.
	- Jorrit also changed the array parameter in iShader to const.	To do
	  that I had to move the adding of the dynamic domain to the caller.
	- Jorrit reverted the optimization to avoid the construction of the
	  dynDomain array.  It was wrong.
	- Matze changed bison and flex jam rules to build into the out
	  directory instaead of the source directory and added a rule to copy
	  the generated files.
	- Marten made some more fixes to portals.
	- Eric Sunshine applied a patch from Randall Foreman
	  <eidpers@comcast.net> to allow AWS to be built with the Borland C++
	  compiler.  Specifically, Borland did not like class-scoped 'static
	  const int's being used in array declarations or 'case' statements.
	  Now instead uses 'enum' to declare constants.
	- Eric Sunshine made a bunch of Doxygen comment corrections in AWS
	  headers.
	- Jorrit clarified some Doxygen comments for iMovable.
	- Jorrit changed the shader compiler to give more verbose diagnostics
	  when -verbose commandline option is given.
	- res fixed sprcal3d to compile with OR again after his latest changes.
	- John Harger finally comitted the new particle system plugin.	Also
	  made some changes in render3d/opengl to allow for interleaved
	  renderbuffers.  Expect this plugin to be incomplete, and to change
	  often during the next few days/weeks.	 The interface shouldn't change
	  much, though.
8-Jan-2004
	- Jorrit moved include/ivideo/rendersteps directory to
	  include/iengine/rendersteps. Apparently this was forgotten during
	  the move from the renderloop stuff from plugins/video to
	  plugins/engine.
	- Jorrit avoided a number of virtual calls in the sector visibility
	  callback that is used for the new renderer (5 virtual calls per
	  object per frame).
	- Eric Sunshine added csgeom to library list for ptanimimg and stdpt
	  plugins to pacify Borland compiler which reports an unsatisfied
	  references to operator-(csVector2,csVector2).	 Reported by Randall
	  Foreman <eidpers@comcast.net>.
	- Marten Svanfeldt made the following fixes:
	    - Added a default constructor and initializer for
	      csPolyTextureMapping.
	    - Fixed a leak in csImageMemory.
	    - Write outside array in the loading from cache in genmesh.
	    - Fixed a leaking GDI resource in glwin (2d canvas for opengl).
	    - Fixed a few leaks in xmlshader.
	    - Fixed a leak in the glshader_ffp loader.
	- res made the following changes:
	    - Removed unused csRefHash class from csMaterial, changes
	      csMaterial to store shaders in a csHash<> instead of a csHashMap.
	    - Changed sprcal3d so the bounding box is properly updated when the
	      mesh animates.
	    - Added a 1-TU version of the OR lighting shader.  Still has issues
	      with transparency, tho.
	- Marten updated todo_newrenderer.txt
	- Philip Wyett eliminated warnings of init from int to float in
	  'include/imesh/thing/polygon.h'.
7-Jan-2004
	- Andrew Craig fixed the Jamfile for sprcal3dldr to link in the
	  required CAL3D library.
	- Jorrit did some cleanups on the imposter code.
	- Daniel Duhprey fixed scattering for 2 texture units for the terrain
	  engine.
	- Eric Sunshine updated configure.ac's Cal3D check to test for the very
	  recently added features required by sprcal3d.
	- Eric Sunshine fixed a syntax error in OPC_Collider.h which was
	  pointed out by Randall Foreman <eidpers@comcast.net>.	 For non-GCC,
	  it was declaring "virtual const char* ValidateSettings() = 0 {...}",
	  which is an obvious syntax error.
	- Eric Sunshine changed csjoywin.h so that it also #includes
	  <dinputdefs.h> since this is needed by Borland C++Builder.  Reported
	  by Randall Foreman <eidpers@comcast.net>.
	- Eric Sunshine fixed clean/distclean targets in cs.mak and Jamfile so
	  that they aslo clean up configure.lineno and config.status.lineno.
	- Eric Sunshine fixed a number of copy/paste errors in shadermgr.mak,
	  waterdemo.mak, and xmlshader.mak.
	- Eric Sunshine converted shadermgr.mak and xmlshader.mak to the new
	  format for makefiles.
	- Eric Sunshine fixed formatting of "help" messages in terrainldr.mak
	  and waterdemo.mak.
	- Eric Sunshine added xmlshader to user.mak.
	- Eric Sunshine added the auto-generated dinputdefs.h file to
	  joystick/csjoywin since it is needed by Borland C++Builder.
	  http://bbx.hp.infoseek.co.jp/dikeyboard.html
	  http://bbx.hp.infoseek.co.jp/archive/GetDIDF.zip
	  References provided by Randall Foreman <eidpers@comcast.net>.
	- John Harger added point sprite support to the NR for use in the
	  upcoming particle system plugin
6-Jan-2004
	- Eric Sunshine changed the libbfd check in configure.ac so that it is
	  not performed on Windows.  Newer versions of Mingw supply libbfd and
	  libiberty, and people did not like seeing these GPL-licensed
	  libraries mentioned in the link statement for plugin modules.	 (Note,
	  however, that in reality these libraries were not actually being
	  linked into plugin modules on Windows since there are no symbolic
	  references to libbfd or libiberty within the CS object files when
	  building on Windows, and linkers are smart enough to ignore libraries
	  which to which there are no symbolic references.)
	- Eric Sunshine changed the CS_CHECK_PROG_VERSION() Autoconf macro so
	  that it reports the discovered program's version in all cases.
	  Previously, it only reported the version number if the version check
	  failed.
	- Eric Sushine added missing forward declaration for csRandomGen to
	  imesh/spritecal3d.h.
	- Eric Sunshine added copy constructor and assignment operator to
	  csMatrix3.  Also moved implementation of axis-angle specifier
	  constructor to .cpp file.  Removed unnecessary 'inline' keywords.
5-Jan-2004
	- res fixed sprcal3d so render buffers are created correctly for
	  multi-mesh models.
	- Keith Fulton added more functionality to sprcal3d and updated
	  bbox calcs to be more efficient.   This requires cal3d cvs as
	  of Jan-04-04, or later.
	- Jorrit fixed a compile error in glrender3d.
	- Jorrit fixed a few occurances of 'crystalspace.renderer.stringset'
	  and replaced them with the correct 'crystalspace.shared.stringset'.
	- Eric Sunshine applied some changes to various headers and sources in
	  order to pacify Borland C++Builder based upon a list of compiler
	  diagnostic messages (and very loosely based upon a patch) provided by
	  Randall Foreman <eidpers@comcast.net>.
	- duhprey updated ODE so it now optionally updates on
	  cscmdPreProcess instead of calling Step
	- duhprey attemped to fix the sky in terrain on ATI cards (from
	  thebolt)
4-Jan-2004
	- Luca fixed a compilation error for the VC6 compiler.
	- res added the creation of a global string set to InitApplication().
	  Previously, code to create such string set could be found at multiple
	  places throughout CS.
	- Philip Wyett continued a general cleanup of CS code formatting.
	- Eric Sunshine changed the default Perl SDK option in configure.ac
	  from --with-perl to --without-perl since csperl5 still fails to build
	  on numerous platforms.
	- Jorrit removed a csReversibleTransform from genmesh objects. This
	  was added for the new renderer but was actually not used.
	- Jorrit optimized the ball mesh object in a similar manner by also
	  removing tr_o2c.
	- Jorrit optimized the thing mesh object in a similar manner by also
	  removing tr_o2c.
	- Jorrit optimized the spr3d mesh object in a similar manner by also
	  removing tr_o2c.
	- res fixed the stenciltest level from coming up black by including
	  the needed shaders in the material definition.
	- res made the following changes:
	    - Minor cosmetic change in initapp.h.
	    - Fixed csHash<>::GlobalIterator::Reset(): it failed to properly
	      skip to the first element to be returned.
	    - Made iShaderVariableAccessor a descendant of iBase (so it can be
	      refcounted.)
	    - Changed sprcal3d lighting to properly update when the sprite is
	      animated.
	    - Updated sprcal3d to work with NR.
	- res made sure the bounding box of sprcal3d objects is correct.
3-Jan-2004
	- Philip Wyett continued a general cleanup of CS code formatting.
	- Steven Geens fixed a very fatal typo in sprcal3dstate.
	- Steven Geens added a fast way to check the sockets of a cal3d sprite
	  in viewmesh.
	- res made the following changes:
	    - Enclosed the 'WINVER' #definition in win32/csosdefs.h in an
	      #ifdef, so an already (possibly user-)defined WINVER doesn't
	      cause problems.
	    - csRenderMesh was forward declared as 'class' at some places,
	      causing problems with VC7.
	    - Changed bugplug so the font used for text output is cached.
	    - Fixed the stencil plugin to fall back to a TinyXML docsys if no
	      iDocumentSystem is present for shader loading.
	    - Changed the generic render step to restore zOffset and zmode
	      after drawing a portal.
	    - The GL canvases now do a sanity check for the minimum required
	      OpenGL 1.1.
	    - Changed the GL font cache to change texture a bit less often.
	    - The currently active TU is now also managed by the GL state
	      manager.
	    - The GL state manager doesn't accept a TU parameter to
	      SetTexture() etc any more. Those functions now always use the
	      currently selected TU.
	    - Changed the NR GL ActivateTexture() to be a bit more sane. It
	      also tracked the currently bound texture, something the state
	      manager already did.
2-Jan-2004
	- Jorrit added an optimization to the portal container so that
	  a more optimal transfrom from camera->2D is used in case no
	  clipping is required at all.
	- Jorrit added PointOnPolygon() to iThingStatic to test if a point
	  is on a polygon.
	- Steven Geens added sockets to the cal3d XML loader.
	- Eric Sunshine made the following changes to the csperl5 module:
	    - Fixed fatal bug in perlpost.i's overrides of
	      csInitializer::RequestPlugins() and SetupEventHandler().	They
	      were incorrectly checking if the first argument was of type
	      iObjectRegistry reference _after_ they had already dereferenced
	      the argument, which meant that the reference type information had
	      already been thrown away.	 Thus, the tests _always_ failed.  The
	      iCollideSystem::GetCollisionPairs() override suffered from the
	      same bug when checking if its first argument was an
	      iCollideSystem reference.	 They now use the high-level
	      SWIG_ConvertPtr() to check the type and perform the dereference,
	      rather than low-level Perl API.
	    - Fixed fatal bug in perlpost.i's override of
	      csInitializer::RequestPlugins() where it completely ignored the
	      number of incoming arguments and requested plugins based upon
	      whatever random garbage existed in memory off the end of the Perl
	      argument stack following the last of the actual requested
	      plugins.
	    - Fixed fatal bug in perlpost.i's override of scfInitialize().  It
	      constructed its own argv[] array, but then sent zero (0) for argc
	      to the C++ scfInitialize(), thus it always appeared that there
	      were no arguments; not even the program path (argv[0]), which is
	      absolutely required by scfInitialize() for proper functioning.
	    - Fixed fatal bug in perlpre.i's "out" typemap for extracting the
	      object pointer from csRef<>, csPtr<>, and csWrapPtr<>.  The
	      typemap neglected to inform Perl that it was returning an object,
	      with the result that _all_ csRef<>, csPtr<>, and csWrapPtr<>
	      objects appeared to be invalid.
	    - Fixed fatal bug in perlpre.i's "out" typemap for extracting the
	      object pointer from a csWrapPtr<>.  It neglected to invoke
	      iBase__DynamicCast() to retrieve the pointer's _true_ value for
	      the given object's type.	This value can differ from the iBase
	      pointer value when multiple-inheritance is involved or when
	      embedding is involved.  Treating the iBase pointer as though it
	      was the actual object pointer was incredibly dangerous and often
	      incorrect.  The dynamic cast is mandatory.
	    - Fixed fatal bug in several perlpre.i's array-based "in" typemap
	      where they were checking if the incoming argument itself was an
	      array (an impossibility in Perl), whereas they needed to first
	      dereference the argument before checking the object's type.
	    - Fixed potentially fatal bug in numerous perlpost.i functions
	      which were using low-level Perl API (SvIV + blind cast) to
	      convert SWIG references into CS objects by attempting to manually
	      extract the object pointers from the references.	Unfortunately,
	      this simple approach was not always appropriate since it did not
	      replicate the deep Voodoo that Swig's own SWIG_ConvertPtr()
	      employs.	Changed all functions to use SWIG_ConvertPtr() instead.
	    - Fixed bug in numerous perlpost.i functions which were manually
	      and incorrectly constructing Swig references using low-level Perl
	      API (sv_setref_iv), rather than high-level Swig functionality.
	      Changed to use SWIG_MakePtr() instead.
	    - Fixed perlpost.i's csInitializer::RequestPlugins() override so
	      that it now invokes the C++ RequestPlugins() just once rather
	      than once per requested plugin since invoking it once per plugin
	      made it impossible for the C++ RequestPlugins() to perform proper
	      dependency resolution between requested plugins.
	    - Fixed bug in perlpost.i's scfGetVersion().  It was incorrectly
	      trying to call intfname_scfGetVersion() rather than
	      cspace::intfname::scfGetVersion().
	    - Fixed problem in perlpost.i's scfGetVersion() where it was
	      invoking call_pv() with the G_NOARGS flag.  Although legal, the
	      Swig-generated intfname::scfGetVersion() would sometimes throw an
	      exception because it would see arguments on the stack from some
	      other procedure further up in the call chain and think that the
	      arguments were meant for it (even though it is not expecting any
	      arguments).  Fixed by removing G_NOARGS from the invocation.
	    - Fixed bug in perlpost.i's CS_QUERY_REGISTRY() and
	      CS_QUERY_REGISTRY_TAG().	They were incorrectly managing the
	      reference count of the returned object when wrapping it inside
	      csWrapPtr<>, thus leaking a reference.
	    - Fixed bug in perlpost.i's WRAP_SCRIPT_CLASS()'s "in" typemap in
	      which it mismanaged the class' reference count, leading to
	      double-delete when the incoming object was of precisely the
	      script class' type (rather than a subclass, in which case the
	      reference count was managed correctly).
	    - Fixed perlpre.i's "in" typemap for argc/argv[] so that it is once
	      again utilized.  Problem was that Swig typemaps do not seem to
	      understand that 'const char*' and 'char const*' represent the
	      same type, and it also had the wrong signature (was missing a
	      'const').
	    - Fixed to %ignore the C++ scfInitialize(argc,argv) since a
	      Perl-specific scfInitialize() is provided by perlpost.i.
	    - Fixed problem which made it impossible to load the pure Perl
	      cspace module directly from Perl since it lacked a definition of
	      cs_static_var_cleanup which comes from the
	      CS_IMPLEMENT_STATIC_VARIABLE_CLEANUP macro.  Fixed this by
	      creating the new perl5mod.cpp which is linked only into the pure
	      Perl module; not into the csperl5 CS plugin.  This source file
	      contains goop needed by cspace.so (.dll), but not by csperl5.
	    - There is no possible way that this module could ever have worked
	      with all these (now fixed) fatal flaws present.  It seems that
	      this module had never been tested.  My testing was fairly limited
	      on account of minimal computing resources, so it is entirely
	      possible that other fatal flaws may yet manifest.
	- Eric Sunshine made the following changes to the cspython module:
	    - Fixed pythpost.i's csInitializer::RequestPlugins() override so
	      that it now invokes the C++ RequestPlugins() just once rather
	      than once per requested plugin since invoking it once per plugin
	      made it impossible for the C++ RequestPlugins() to perform proper
	      dependency resolution between requested plugins.
	    - Fixed bug in pythpost.i's _CS_QUERY_REGISTRY() and
	      _CS_QUERY_REGISTRY_TAG().	 They were incorrectly managing the
	      reference count of the returned object when wrapping it inside
	      csWrapPtr<>, thus leaking a reference.
	- Eric Sunshine made the following changes to the csjava module:
	    - Fixed bug in javapost.i's _CS_QUERY_REGISTRY() and
	      _CS_QUERY_REGISTRY_TAG().	 They were incorrectly managing the
	      reference count of the returned object when wrapping it inside
	      csWrapPtr<>, thus leaking a reference.
	- Eric Sunshine made the following changes to cspace.i:
	    - Fixed csInitializer::InitializeSCF() so that it is once again
	      recognized by Swig typemaps, thus the Python/Perl/Java typemaps
	      for this function once again work correctly.  Problem was that
	      Swig typemaps do not seem to understand that 'const char*' and
	      'char const*' represent the same type.
	    - Now publishes csArray<csPluginRequest>.
	    - Now publishes csInitializer::RequestPlugins(iObjectRegistry*,
	      csArray<csPluginRequest>).
	    - Eliminated the broken _RequestPlugin() interface published by
	      cspace.i.	 The problem with this approach was that it called the
	      C++ csInitializer::RequestPlugins() once per requested plugin,
	      rather than calling RequestPlugins() just once total, which is
	      the way RequestPlugins() is meant to be called.  By calling it
	      once per plugin, it was impossible for RequestPlugins() to
	      perform proper dependency resolution between requested plugins.
	    - Added CS_MINI_SWIG and CS_MICRO_SWIG defines to cspace.i.	 Define
	      one of these macros if you are trying to debug or test the
	      scripting build systems or the scripting facilities themselves
	      but despair of having to wait 30 minutes for each compile attempt
	      to complete.  Define CS_MINI_SWIG to avoid publishing most of the
	      CS interfaces except for csInitializer, object registry, VFS,
	      SCF, event queue & handlers, 2D & 3D drivers, and font & font
	      server.  This should cut compilation time down considerably.  If
	      this is still too long, however, then define CS_MICRO_SWIG, which
	      will publish only csInitializer, object registry, SCF, and VFS.
	      This is about the bare minimum of exports which are still useful
	      for testing various bits of functionality, and should reduce
	      compilation time as much as possible.  CS_MICRO_SWIG implies
	      CS_MINI_SWIG.
1-Jan-2004
	- Marten Svanfeldt made the first commit of 2004. Changes are:
	    - Added basic portal support to new renderer. It still lacks
	      support for <float> portals, fogs and a few other bits.
	    - Fixed clipping with the new renderer.
	    - Added portal sorting to the csRenderMesh sorting routines.
	- Jorrit changed iPortalContainer->Draw() so it no longer does
	  SCF_QUERY_INTERFACE to get the mesh wrapper (and movable) but
	  uses the movable parameter instead.
	- Jorrit reverted his latest change to iPortalContainer since
	  it appears the movable is not passed along. Nevertheless the
	  SCF_QUERY_INTERFACE should be avoided there so we need to
	  rethink this.
	- Marten provided the correct fix for the issue above. It is to use the
	  movable passed to DrawTest (through the transform stored in rmesh)
	- Jorrit performed a considerable optimization with the new renderer
	  by avoiding one or more SCF_QUERY_INTERFACE calls per object (per
	  frame) and in some cases a loop. This SCF_QUERY_INTERFACE was there
	  to get the z-buffer mode in the csRenderMesh structure (so the
	  mesh object implementation could get the z-buffer mode from the
	  mesh wrapper). Instead this is now done in
	  csRenderMeshList->AddRenderMeshes() where there was a loop over
	  all render meshes anyway and csRenderMeshList also has direct
	  access to the csMeshWrapper.
	  Note: this also fixes z-buffer mode for some mesh objects like
	  ball which simply assumed CS_ZBUF_USE in all cases.
	- Jorrit fixed a compile error in the new renderer terrain plugin.

Please see "history.old" for less recent historical entries.
