Crystal Entity Layer (CEL) detailed change log.
http://cel.sourceforge.net/

The history order is reversed so that new features are at the top.

8-Mar-2005
	- Jorrit added a new 'SetPosition' action to pclinmove.
	- Eric Sunshine removed the CS_IMPLEMENT_APPLICATION from celtest which
	  was added yesterday. It turns out that this macro was already present
	  in a different compilation unit in that project.
	- Jorrit fixed a memory leak in the celentity addon by using
	  weak references to pl and syntax services instead of a full ref.
	- Jorrit fixed cally.cal3d so that it no longer uses an absolute
	  path. Additionally made it a library instead of only a meshfact
	  so that the materials no longer have to be defined inside the
	  meshfact file (that usage is deprecated).
	- Jorrit fixed celtest to use SetPath() so that the relative path
	  works.
	- res made the following changes:
	    - Made blcel.i use %import instead of %include for the cspace 
	      stuff.
	    - Ported SWIG_init -> SWIG_init_<module> change from CS.
	    - Augmented blpython to include the SWIG stuff from the cspycommon
	      library.
	    - Added a small starter script for smallgame.
	    - Updated smallgame fro blpython changes and some other interface
	      changes.
7-Mar-2005
	- Eric Sunshine added missing CS_IMPLEMENT_APPLICATION to celtest.
	  This fixes "undefined reference to `scfStaticallyLinked'" error at
	  link time.
6-Mar-2005
	- Jorrit fixed CEL for the removal of CS_ID in CS.
4-Mar-2005
        - Andrew Craig fixed meshfact and stdphydlayer plugins for csIntersect3
	  changes in CS.
	- David Bronke changed FixAngle in engfact.cpp to use PI instead of
	  3.14159f and 3.14169f.
2-Mar-2005
	- Jorrit added a patch from David Bronke which implements mouse
	  and joystick support for pckeyinput. 'pckeyinput' is now renamed
	  to 'pccommandinput'! Please change your programs!
1-Mar-2005
	- Jorrit added a patch from Manuel A. Fernandez Montecelo which
	  adds some functions to iPcActorMove so that you can see what
	  the actor is doing. Also fixes a bug with wrong animation direction
	  being set after jumping.
28-Feb-2005
	- Eric Sunshine updated Autoconf, Jam, and Msvcgen files from master
	  copies in CS repository.
	- res copied some doxygen settings changes over from CS.
29-Jan-2005
	- Jorrit added a patch from David Bronke to support bool, long,
	  and float attributes for the CEL entity loader addon.
	- Jorrit applied a fix to
	  iCelPropertyClassList::FindByInterfaceAndTag() from David Bronke. The
	  function wouldn't work in case a tag was given.
23-Jan-2005
	- Eric Sunshine fixed bug in
	  celPcLinearMovement::PcLinearMovement::SetOnGround() where it was
	  trying to return a value despite being declared void.
14-Jan-2005
	- Eric Sunshine updated Autoconf and Jam files from master copies in
	  CS repository, and updated configure.ac to reflect new facilities.
7-Jan-2005
	- Jorrit worked further on the entity tracker. Not finished yet.
	- Jorrit added lots of missing SCF_DESTRUCT_EMBEDDED_IBASE calls.
	- Jorrit finished the new entity tracker implementation. This is
	  completely untested code! Use at your own risk!
30-Dec-2004
	- Andrew Dai fixed another bug in NumRegLists::RegisterWithID
	  where the list was not being cleared after being grown.
28-Dec-2004
	- Jorrit fixed a bug with NumRegLists::RegisterWithID(). First it
	  would not update the listsize if the list grew. Secondly it would
	  not grow the list enough if the id is a lot bigger.
26-Dec-2004
	- Jorrit added missing SCF_DESTRUCT_IBASE to all classes in CEL.
	- Jorrit started a new entity tracker in CEL which can be used
	  to keep track of nearby entities of a specific type. This will
	  be more efficient then the global FindNearbyEntities() as it will
	  not have to iterate over all nearby meshes in the level. Not
	  finished though.
21-Dec-2004
	- Eric Sunshine relocated the HTML version of the user manual from
	  docs/html to docs/html/manual.
	- Eric Sunshine added the API reference to the project at
	  docs/html/api. The 'jam install' target now also installs the API
	  reference.
	- Eric Sunshine added a \mainpage section to docs/doxygen/doxygrps in
	  order to make the front page of the API reference more friendly and
	  user-accessible.
	- Eric Sunshine added a jobber configuration file, jobber.cfg, which
	  will allow the project's resources to be updated automatically. It
	  performs the following tasks:
	    - Repairs broken Texinfo @node directives and @menu blocks.
	    - Converts Texinfo documentation to HTML format.
	    - Builds the public API reference manual.
	    - Re-builds Visual-C++ DSW/DSP and SLN/VCPROJ project files.
	    - Re-builds the Swig-generated Python files.
	    - Publishes generated HTML (manual and API) for online browsing.
	    - Publishes archives of generated HTML for download.
	- Eric Sunshine refined the new jobber.cfg file so that it actually
	  works:
	    - Now also checks out the Crystal Space headers from CVS since they
	      are needed by the Swig run.
	    - Added some missing fake Jamconfig entries specifying compiler and
	      linker. Without these, Jam complained bitterly.
	    - Installed local TemplateToolkit2 on SF shell machine and added
	      fake Jamconfig entries for it. This allows MSVC project file
	      repair to work.
	    - Disabled Texinfo @node and @menu repair for now since CEL build
	      system does not yet provide this feature.
	- Eric Sunshine published the CEL manual and API reference at the CEL
	  web site. They are available for online viewing and download.
	- Eric Sunshine upgraded the CEL web site:
	    - Added a "Documentation" page which contains links to the manual
	      and API reference, plus links to offsite tutorials.
	    - Populated the "Links" page (which was completely empty).
	    - Removed broken links.
	    - Cleaned up a number of problems with the site.
19-Dec-2004
	- Jorrit completed the quest manager. This is all untested. It will
	  be tested for the first time when there is a quest property
	  class which is the next task todo.
	- Jorrit got a patch from Cirilo Bernardo which adds the 'cally'
	  model to celtest instead of the box. If cal3d is not present
	  then you will get alerts but the program will not fail. Instead
	  the original box model will be used.
	- Eric Sunshine fixed 'jam install' so that it installs the new 'cally'
	  model.
16-Dec-2004
	- Jorrit fixed a bug in the CEL_REMOVE_PROPCLASS macro which would
	  cause a reference leak because QueryInterface() was used but the
	  returned reference was never released.
	- Jorrit extended CEL with the notion of adding multiple property
	  classes of the same type to some entity. This done by adding the
	  concept of a 'tag'. By default property classes have no tag (i.e.
	  tag is 0). But you can add a tag to them in by doing that you
	  can distinguish between different versions of the same property
	  class for an entity. To support this the following functions
	  and macros have been added:
	    - iCelPropertyClassList->RemoveByInterfaceAndTag(): equivalent to
	      RemoveByInterface() but will only remove with the correct tag.
	    - iCelPropertyClassList->FindByNameAndTag(): equivalent to
	      FindByName() but will only find with the given tag.
	    - iCelPropertyClassList->FindByInterfaceAndTag(): equivalent to
	      FindByInterface() but will only find with the given tag.
	    - CEL_QUERY_PROPCLASS_TAG: same as CEL_QUERY_PROPCLASS but with
	      tag.
	    - CEL_QUERY_PROPCLASS_TAG_ENT: same as CEL_QUERY_PROPCLASS_ENT but
	      with tag.
	    - CEL_REMOVE_PROPCLASS_TAG: same as CEL_REMOVE_PROPCLASS but with
	      tag.
	    - CEL_REMOVE_PROPCLASS_TAG_ENT: same as CEL_REMOVE_PROPCLASS_ENT
	      but with tag.
	    - Added iCelPlLayer->CreateTaggedPropertyClass() which is a
	      conveniance function to create a tagged property class.
	    - Added iCelPropertyClass->SetTag() and GetTag() to set and get the
	      tag for a property class.
	  The celPcCommon class has been extended with a SetTag() and GetTag()
	  implementation so if your property class implementation uses
	  celPcCommon it will be ok.
	  Note that the original methods FindByInterface() and FindByName()
	  from iCelPropertyClassList have been modified so that they will 
	  preferably return the property class with no tag (tag is 0). If no
	  such property class is present then it will pick a random one
	  from the property classes that have a tag.
	  RemoveByInterface() in iCelPropertyClassList will remove all
	  property classes implementing that interface (i.e. it will completely
	  ignore the tag).
	- Jorrit extended the celentity addon so that you can also create
	  tagged property classes. Add the 'tag' attribute to the
	  <propclass> statement.
	- Jorrit fixed CEL for latest CS changes.
13-Dec-2004
	- Jorrit removed the OLD_RENDERER ifdef in CEL now that the old
	  renderer has been removed from CS.
	- Eric Sunshine removed the obsolete --enable-old-renderer option from
	  configure.ac.
11-Dec-2004
	- Andrew Dai added a SetOnGround(bool) function to iPcLinearMovement
	  which will be needed in future as a result of removing gravity from
	  iPcCollisionDetection.
10-Dec-2004
	- Eric Sunshine disabled generation of the `blpython' MSVC project file
	  for now since we do not presently support Python plugin building from
	  MSVC (even CS does not yet support this).
	- Eric Sunshine updated msvcgen templates and Jam files from master
	  copies in CS repository.
8-Dec-2004
	- Andrew Dai made it so that it is possible for gravity to be applied
	  to linear movement even if collision detection is turned off. This
	  can be done by forcing onground to be false.
	- Luca removed the constness of 
	  celEnterSectorTriggerFactory::entity_name_par and
	  celEnterSectorTriggerFactory::sector_name_par and 
	  celDebugPrintRewardFactory::msg_par and created a new string using
	  csStrNew() every time a string is assigned to one of those 
	  variables. This way we do not try anymore to delete in the destructor
	  of those classes a string already created and destroyed elsewhere 
	  (this happened when we were deleting the string returned by
	  an iDocumentNode::GetAttributeValue() call).
7-Dec-2004
	- Eric Sunshine fixed libs/celtool/Jamfile so that its `Library' rule
	  invocation mentions its related public header files in
	  include/celtool.
	- Eric Sunshine added cel/data/Jamfile which arranges to have all of
	  the data files installed by the `install_data' target.
	- Eric Sunshine augmented cel/Jamfile to install the CEL-specific
	  vfs.cfg file. (Unfortunately, however, the CEL vfs.cfg does not yet
	  work correctly since VFS does not look at the CEL installation
	  directory when scanning for configuration files. Also the installed
	  CEL vfs.cfg incorrectly mounts directories relative to the
	  application resource directory ($*) rather than relative to the CEL
	  installation location, so the mounts are incorrect. We need instead
	  to install a specially modified vfs.cfg which contains the correct
	  mounts.)
	- Andrew Dai added two new methods: GetPortalDisplacement() and
	  ClearPortalDisplacement() to the iPcLinearMovement property class.
	  They return the total displacement caused by travelling through space
	  warping portals so far and allow that displacement to be reset to 0.
	  This allows applications to more easily cope with the side-effects
	  due to space warping portals.
	- Andrew Dai fixed a bug in which portals did not affect an object's
	  linear movement if that object had collision detection turned off.
6-Dec-2004
	- Eric Sunshine fixed long-term spelling errors:
	    iCelPersistance         --> iCelPersistence
	    iCelPersistanceContext  --> iCelPersistenceContext
	    cel.persistance.classic --> cel.persistence.classic
	  Though deprecated, the old names (iCelPersistance,
	  iCelPersistanceContext, and cel.persistance.classic) are still
	  recognized for backward compatibility.
	- Eric Sunshine updated Jam files from master copies in CS repository.
	- Eric Sunshine fixed bug in Jamfile 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 re-generated MSVC project files to take into account
	  sources/headers recently added to the 'quests' module.
	- Eric Sunshine added a new celInitializer class to the celtool
	  library. This class is analogous to csInitializer. It provides the
	  following facilities:
	    - SetupCelPluginDirs(): Instructs SCF to also scan the CEL plugin
	      directory or directories. It consults the CEL environment
	      variable and the CEL_PLUGIN_DIR compile-time constant (if
	      present).
	    - RequestPlugins(...), RequestPlugins(csArray<csPluginRequest>),
	      and RequestPluginsV(va_list): These are convenience wrappers
	      around the corresponding csInitializer methods. They invoke
	      SetupCelPluginDirs(), if necessary, before calling the wrapped
	      methods.
	- Eric Sunshine augmented the applications `bootstrap' and 'celtst' so
	  that they invoke celInitializer::RequestPlugins() rather than
	  csInitializer::RequestPlugins(). This allows them to work correctly
	  even when CEL has been installed. (Previously, they worked only when
	  run from the development/build directory.)
	- Eric Sunshine removed non-CEL entries from CEL's local vfs.cfg since
	  VFS now merges all discovered vfs.cfg files (rather than loading only
	  the first found), which means that we no longer need to duplicate
	  entries from CS's master vfs.cfg. (Note, however, that CEL's vfs.cfg
	  is not yet installed, nor would it work correctly if it was
	  installed, nor would VFS even discover it at its installed location.
	  These problems all need still to be addressed.)
3-Dec-2004
	- Jorrit did more work on the quest manager:
	    - Completed implementation of the 'entersector' quest
	      trigger.
	    - Added a new predefined 'debugprint' reward which is
	      useful for debugging purposes.
	    - Added ActivateTrigger()/DeactivateTrigger().
	    - Implemented Load() for quest factories.
	    - Lots of other small changes.
	- Jorrit started work on celQuest. The callback system is missing
	  so currently it will not actually work.
2-Dec-2004
	- Jorrit restarted work on the quest manager. Added quest
	  factory implementation.
	- Jorrit redesigned the quest manager interfaces a bit. There
	  are now (similar to mesh objects) trigger type, factory, and
	  instance interfaces and also reward type, factory, and
	  instance interfaces. Also completed implementation of a few
	  more interfaces in the quest manager.
	  Additionally added a lot more documentation to the quest
	  manager interfaces.
	- Jorrit continued working on the quest manager. The first predefined
	  trigger (cel.questtrigger.entersector) is created. This trigger
	  is not functional yet.
30-Nov-2004
	- Eric Sunshine worked around problem where MSVC6 barfed when the
	  embedded celPcLinearMovement::PcLinearMovement::RotateV() attempted
	  to invoke the private celPcLinearMovement::RotateV().
29-Nov-2004
	- Jorrit fixed CEL so that it compiles again after the change
	  of CS_USE_NEW_RENDERER to CS_USE_OLD_RENDERER.
	- Eric Sunshine made the following changes:
	    - Upgraded msvcgen so that synthesized project files search for
	      CRYSTAL libraries in likely locations: ../CS & $(CRYSTAL)
	    - Updated project for new official crystalspace3d.org domain.
	    - Updated out-of-date README.txt.
	    - Updated to reflect that new-renderer is now default. Renamed
	      configure option --enable-new-renderer to --enable-old-renderer.
	    - Updated Autoconf files from master copies in CS repository.
	    - Updated Jam files from master copies in CS repository.
	    - Updated msvcgen files from master copies in CS repository.
	    - Updated texi2html from master copy in CS repository.
	    - Removed TemplateToolkit and AppConfig Perl modules
	      re-distributions.  Very few people need to generate MSVC project
	      files, so this extra bulk is 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).
27-Nov-2004
	- Jorrit added a patch from Cirilo Bernardo which exposes the
	  SetDistance() method of celPcCamera via iPcCamera.
19-Nov-2004
	- Keith Fulton fixed a bug which caused entities with a pccolldet
	  present but CD disabled from ever having their positions updated 
	  when moving.
13-Nov-2004
	- Andrew Dai fixed a bug with the field lastDRUpdate not being
	  updated in celPcLinearMovement::SetDRData().
	- Andrew Dai added a celPcLinearMovement::TimeDiff() method to get
	  the time between the last DR update and the current time.
12-Nov-2004
	- Jorrit fixed a bug in the camera class where it would
	  incorrectly test if fixed distance clipping was needed.
	  Thanks to propfan for spotting this.
8-Nov-2004
	- Eric Sunshine fixed fragility in celIDRegistry::AddScope() where it
	  would perform an uninitialized registration if the `impl' argument
	  was not of a known type.
29-Oct-2004
	- Remi Bonnet added ID scopes to the physical layer to ease
	  management of IDs when cel is used in a client <-> server
	  application.
28-Oct-2004
	- Eric Sunshine updated Autoconf and Jam utility files from master
	  copies in CS repository.
	- Eric Sunshine updated pubapi.dox and devapi.dox, which were rather
	  outdated. Among other issues, this fixes problem where the API
	  documentation had become unbuildable (the output directory was
	  incorrectly specified).
	- Eric Sunshine fixed a number of problems reported by Doxygen when
	  generating the public and developer API documentation.
	- Eric Sunshine altered the blpython Jamfiles so that it deposits the
	  generated .py 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 the modules PYTHONLIB can now be pointed at the
	  top of the build tree.
26-Oct-2004
	- Andrew Dai fixed a bug with slopes in which you would always slide
	  down slopes slowly even though onground == false at that time, this
	  was inconsistent behaviour.
21-Oct-2004
        - Philip Wyett eliminated garray.h deprecation warnings.
17-Oct-2004
	- Remi Bonnet added a basic hash implementation of the num reg.
16-Oct-2004
	- Andrew Dai made some performance improvements to
	  iPcCollisionDetection.
	- Remi Bonnet made the auto rendering of pccamera optional (with
	  default yes). Also added a REMOVE macro to ease the removal of
	  specific propclass types (by interface).
14-Oct-2004
	- Eric Sunshine updated Autoconf and Jam utility files from master
	  copies in CS repository.
8-Oct-2004
	- Andrew Dai improved player rotation handling with pcmove,
	  the no longer needed SetAngularDeltaLimit() was removed
	  and QueryRevert() was added to pccolldet to find when the player
	  cannot move.
4-Oct-2004
	- Jorrit started work on the quest manager. Still the base basics.
3-Oct-2004
	- Jorrit added patch from David Bronke which makes several of
	  the methods in camera and linmove public by also publishing
	  them in the SCF interfaces. Should make mouselook possible.
1-Oct-2004
	- Jorrit fixed a problem in actormove. It now uses
	  sprcal3d->SetVelocity(-z) which for some reasons lets the animations
	  play right.
22-Sep-2004
	- *** RELEASED STABLE 0.98.2 ***
21-Sep-2004
	- Eric Sunshine updated msvcgen templates from master copies in CS
	  respository.
	- Andrew Dai stopped collisions affecting mid-air velocity since
	  there is no distinction between physics engine estimated velocity
	  and user controlled velocity at the moment.
	- Andrew Dai improved angular delta calculation in cases where
	  angularVelocity == 0 or vel == 0 and added SetAngularDeltaLimit()
19-Sep-2004
	- Eric Sunshine updated msvcgen templates from master copies in CS
	  respository.
17-Sep-2004
	- Jorrit started work on a new pctrigger property class. Currently
	  only the include file is there.
	- Jorrit added the implementation files for pctrigger but without
	  real functionality in it for now.
	- Jorrit changed PointMesh() and PointCamera() in the zone manager
	  so that they more actively look for a valid sector in case no good
	  start position is found.
	- Jorrit enhanced the trigger api a bit more and implemented nearly
	  all functionality of it. It is now possible to trigger for a single
	  entity alone (is a lot faster). The only thing that is not yet
	  implement is the trigger area on a box. Currently it only works
	  on a sphere.
16-Sep-2004
	- Jorrit fixed a bug in celtest. Because of a misplaced
	  engine->Prepare() lighting would be bad if -relight was not
	  given.
	- Jorrit added functions to iPcCamera to set and get the pitch.
	  Also added a function to get pitch velocity.
	- Eric Sunshine fixed a few compilation errors reported by Cygwin
	  compiler.
15-Sep-2004
	- Eric Sunshine updated the Autoconf utility files from master copies
	  in CS repository and augmented configure.ac to emit RANLIB with an
	  unconditional '=' rather than conditional '?='. This works around
	  problem where default RANLIB value in Jambase is wrong on some
	  platforms, and unsuitable for cross-building.
14-Sep-2004
	- Eric Sunshine updated Jam and msvcgen utility files from master
	  copies in CS repository.
13-Sep-2004
	- Jorrit merged npcmove property class into actormove plugin.
	  The two classes will be very similar and share a lot of code
	  in the future so it makes sense for both to be in the same
	  code space.
12-Sep-2004
	- Andrew Dai changed movement control so that characters can be given
	  any velocity while in midair and which will be applied instantly.
	  This shifts the burden of ensuring realistic movement mid-air to
	  the CEL library user.
	- Eric Sunshine updated Jam files from master copies in CS repository.
	- Eric Sunshine upgraded msvgen configuration so that generated MSVC
	  project files will now search for CS headers in the following
	  additional locations:
	    ../CS/include
	    $(CRYSTAL)/include
	    $(CRYSTAL)/include/crystalspace
10-Sep-2004
	- *** RELEASED STABLE 0.98.1 ***
9-Sep-2004
	- Jorrit changed pcmesh so that it uses the new iLoader->Load()
	  function that is in CS. That means that you can now easily use
	  mesh factories and libraries for specifying meshes.
	- Jorrit added iPcMesh->SetPath(). With that function you can set
	  a path that will be used before loading the mesh (pcmesh
	  will call vfs->ChDir() to that path and later restore the VFS
	  path). Also added a new LoadMeshPath action.
	- Jorrit started very preliminary work on a new pcnpcmove (NPC
	  movement) property class. Currently this class does nothing else
	  but set the animation cycle of the model to 'stand'.
8-Sep-2004
	- Jorrit added iPcCamera::CenterCamera() to put the camera behind
	  the actor.
	- Jorrit added iPcCamera::SetPitchVelocity() so that you can change
	  pitch velocity (useful for looking up/down).
	- Jorrit fixed a big bug in the handling of the timers in the
	  standard physical layer. In case a property class was deleted
	  but the ref table was not yet compressed the hash still contained
	  an index to that property class (even though the weak ref table
	  entry was 0 for that pc). This caused the function to register
	  a new callback to fail because it thought there was already a
	  callback for that pc. This could cause pctimer (among others) to
	  fail in some cases.
3-Sep-2004
	- Eric Sunshine upgraded CEL to completely new (from scratch) msvcgen
	  facility based upon TemplateToolkit.
	- Eric Sunshine fixed problems reported by <cbarney1509@earthlink.net>
	  where invocations of the variable argument
	  iCelPlLayer::CreateEntity(...) were incorrectly being terminated with
	  plain `0' rather than `(void*)0'. This broke on 64-bit platforms
	  where plain `0' was only 32 bits, but the vararg code was expecting a
	  64-bit null terminator.
2-Sep-2004
	- Jorrit changed celPcCamera to use the new csColliderHelper
	  TraceBeam() function in CS. This should speed up third
	  person camera handling considerably in combination with
	  complex models (HitBeamPortals() which was used before would
	  get very slow with high poly objects).
30-Aug-2004
	- Jorrit added two new functions to the zone manager:
	    - FindStartLocations() will return a list of all region
	      and start names that are valid for the given world.
	      You can use any of those for PointCamera(). Note that
	      this only works for all loaded regions.
	    - GetLastStartLocation() will return the last used start
	      region and name for PointCamera().
28-Aug-2004
	- Andrew Dai fixed a bug with movement through space warping
	  portals caused by a change of behaviour in the
	  iSector::FollowSegment() function.
28-Aug-2004
	- Jorrit fixed a bug in the physical layer when broadcasting
	  TickOnce and TickEveryFrame. The problem was when in such
	  a tick handler entities got removed and this causes the
	  iterator to become invalid. Solved this by first making a
	  copy of all property class pointers.
27-Aug-2004
        - Remi Bonnet fixed CEL_QUERY_PROPCLASS so that it use the new
          scfInterface<Interface>::GetID() function instead of the old
	  one that can't be used inside templates (stringify an 
	  argument)
24-Aug-2004
	- Remi Bonnet added a GetRegion() function to the pcregion 
	  propclass and fixed some functions that searched for sectors
	  in the whole engine instead of only the region.
20-Aug-2004
	- Jorrit changed the zone manager so that it has the notion of
	  VFS path and file. The optional path is used to set the VFS
	  directory too. The file is relative to that path (if path is
	  given).
	- Jorrit also made sure the cache manager is set to the current
	  VFS dir when loading a new map.
18-Aug-2004
	- Thomas Degris fixed RotateTo() in iPcActorMove.
16-Aug-2004
	- Jorrit added a call to PrecacheDraw() to the zone manager in
	  CEL. Also for pcregion.
12-Aug-2004
	- Andrew Robberts fixed a bug with camera going through space
	  warping portals.
	- Jorrit fixed CEL to use the new way to parse key names in CS.
	- Jorrit fixed CEL again due to latest Oktal change.
8-Aug-2004
	- Jorrit fixed the cel camera so that it makes the entire mesh
	  hierarchy invisible instead of only the parent in first person
	  mode.
7-Aug-2004
	- Jorrit finally fixed the python plugin in CEL.
	- Jorrit added iPcLinearMovement->GetCDDimensions() so that you can
	  ask the parameters that were used to do initialize the
	  pclinmove.
4-Aug-2004
	- Eric Sunshine copied the latest msvcgen templates from CS repository
	  and re-generated project files.
	- Eric Sunshine removed the obsolete JAMCONFIG_READ configuration
	  property. As of 20 May 2004, the more standardized `Jamfile.in -->
	  Jamfile' configuration mechanism for determining if the project has
	  been configured is instead used.
3-Aug-2004
	- Eric Sunshine made the following changes:
	    - Updated Autoconf and Jam utility files from master copies in CS.
	    - CEL include files are now installed into ${includedir}/cel rather
	      than directly into ${includedir} in order to avoid polluting the
	      top-level global include directory.
	    - Updated cel-config to report the new installed header location
	      for the --includedir and --cflags options.
	    - Added a 'cel-configclean' target.
1-Aug-2004
	- Jorrit renamed some badly named macros (CEL_FETCH_..._VAR to
	  CEL_FETCH_..._PAR).
	- Jorrit continued work on pcmover. Still unfinished.
	- Jorrit fixed CEL for latest CS changes.
19-Jul-2004
	- Jorrit fixed a gcc >= 3.3 compile error in pctest property class
	  related to not casting size_t to the right type in celData->Set().
	- Jorrit changed celtest to use opcode instead of rapid.
	- Jorrit cleaned up celtest considerably. Made the code a lot nicer
	  (a bit like Crystal Core), uses pclinmove now for movement and
	  some other cleanups too.
18-Jul-2004
	- Jorrit fixed the bltest behaviour layer to correctly test if the
	  parameter to SendMessage() actually contains an entity.
16-Jul-2004
	- Jorrit extended pccamera with the option to set the far clipping
	  plane. There are three modes:
	    - Don't do this (how it used to be).
	    - Fixed distance clipping. Just use a plane at a fixed distance
	      from the camera.
	    - Adaptive distance clipping. Try to maintain a minimum and
	      maximum fps by modifying the far clipping plane.
	  This code is based on a recent change in the equivalent PlaneShift
	  camera class.
15-Jul-2004
	- Jorrit extended the very useless pctest property class so that it
	  now supports nearly everything a PC can support:
	    - A SendMessage() with one parameter.
	    - An action.
	    - One property that is handled automatically.
	    - One property that is handled manually.
	    - Working persistance.
	  This is done to make pctest a good template to start creating a new
	  property class from.
	- Jorrit did another optimization on the timing facility in
	  the physical layer.
	- Jorrit added the basic 'pcmover' property class. Only the stub
	  implementation for the property class is there. It doesn't do
	  anything yet.
	- Jorrit optimized all implementations of PerformAction() in the
	  property classes so that they now also use prefetched ID's instead
	  of fetching them at that point. Also made the code more readable
	  by using new CEL_FETCH_..._VAR macros as defined in
	  include/celtool/stdparams.h.
	- Jorrit removed the sand monsters from the main level in the
	  boulderdash game as they don't work properly yet.
14-Jul-2004
	- Jorrit added a weak reference to the physical layer to celPcCommon
	  so that all property classes have it automatically.
	- Jorrit implemented a new timing facility in the CEL physical layer.
	  Basically there are four new functions in iCelPlLayer:
	    - CallbackPCOnce()
	    - RemoveCallbackPCOnce()
	    - CallbackPCEveryFrame()
	    - RemoveCallbackPCEveryFrame()
	  Also iCelPropertyClass has been extended with two new functions:
	    - TickOnce()
	    - TickEveryFrame()
	  Using these new functions property classes can now register
	  themselves as being interested in receiving events once or every
	  frame.  This system has two main advantages:
	    - A lot easier to use (no longer needed to implement an internal
	      event handler)
	    - More efficient as CS only gets to see one event handler instead
	      of an event handler for every property class that needs
	      that.
	- Jorrit modified all property classes to use the new system. This
	  makes the implementation of those property classes a lot easier
	  to read.
	- Jorrit fixed the bootstrap Jamfile so that it again works for
	  the 'bootstrap_static' target. This doesn't make the target
	  work fully though. There is still some problem.
	- Jorrit changed the new timing system in the physical layer by
	  avoiding realloc of the weak ref arrays. The current way is much
	  more optimal.
	- Jorrit did another optimization on removal of PC callbacks.
	- Eric Sunshine upgraded Jam files from master copies in CS repository.
	  This should fix problem where _static_init.cpp file for
	  bootstrap_static target was compiled without CRYSTAL.CFLAGS (thus it
	  was unable to find cssysdef.h, scf.h, etc.).
13-Jul-2004
	- Eric Sunshine renamed celData::SetBool() to Set(), and
	  celDataBufHelper::SetBool() to Set() in order to fix numerous
	  ambiguous invocations of Set(bool) throughout the project.  The
	  SetBool() variations are no longer needed since we no longer support
	  old compilers lacking a bool type.
	- Eric Sunshine eliminated numerous warnings about incorrect printf()
	  formatting directive mismatches.
	- Jorrit revered Eric's change for incorrect printf formatting
	  directives because those cause lots of warnings like this:
	    long unsigned int format, unsigned int arg (arg 3)
	- Jorrit reverted a few changes from SetBool to Set and put them
	  back to SetBool(). The SetBool() is the SetBool() from csFlags
	  there which is a totally different function.
	- Jorrit fixed a problem in pccamera. When there was no associated
	  mesh or linmove, the camera view wouldn't be updated anymore.
12-Jul-2004
	- Jorrit fixed a dependency for addon_celentity plugin (with
	  celtool).
	- Jorrit added support for vectors (3d and 2d) to the addon_celentity
	  plugin (for actions).
	- Jorrit added a new 'InitCD' action for pclinmove.
	- Jorrit did some more API doc enhancements for the property classes.
	- Jorrit fixed the pcproperties property class which was broken
	  due to the recent size_t changes.
	- Jorrit changed all actions to use 'cel.action.' instead of
	  'cel.property.'.
	- Jorrit fixed bootstrap to use OPCODE.
	- Jorrit did a fix to please gcc 3.3 for the pczonemanager.
	- Jorrit fixed pczonemanager so that it detects if the physical layer
	  is still present during unload. That fixes a crash at exit for
	  Crystal Core.
11-Jul-2004
	- Jorrit added the ability for the pcspawn property class to
	  also send an initialization message with parameters to the
	  behaviour of the new entity.
	- Jorrit raised the version check for Crystal Space in configure
	  from 0.97 to 0.99 since CEL now requires latest CVS of CS
	  again.
	- Jorrit extended the CEL API docs so that the supported properties
	  are now also documented for every property class.
	- Jorrit added a new 'LoadMesh' action to pcmesh property class so
	  that you can now load a mesh in a generic way.
	- Jorrit extended celentity addon so that it can now also execute
	  actions with parameters (currently string only) on property
	  classes.
10-Jul-2004
	- Jorrit started working on the new pcspawn property class. This
	  property class is responsible for spawning new entities at
	  regular or random intervals. Perhaps it already works but it is
	  untested.
9-Jul-2004
	- Jorrit added a new CEL_DATA_IBASE type to celData so that you
	  can store generic iBase pointers in a celData.
	- Jorrit changed the pczonemanager property class so that it now
	  sends 'pczonemanager_addregion' and 'pczonemanager_remregion'
	  messages to the behaviour in addition to the callback system
	  when new regions are loaded or unloaded. After Crystal Core
	  is fixed to use this instead of the callbacks the callback
	  system will be removed.
	- Jorrit added doxygen documentation to all property class
	  headers indicating all SendMessage id's that you can possibly
	  get for every property class.
	- Jorrit fixed a memory leak in the pczonemanager property class.
	  It was keeping a real ref to the physical layer. Changed to a
	  weak ref.
	- Jorrit removed the obsolete pczonemanager callback system.
	  The proper way is now to listen to pczonemanager_addregion and
	  pczonemanager_remregion.
	- Jorrit changed the pczonemanager to also send out three new
	  messages:
	    pczonemanager_startloading: loading starts
	    pczonemanager_stoploading: loading stops
	    pczonemanager_errorloading: loading stops with error
	  This can be used for setting up a loading screen.
	- Jorrit extended the API documentation for all property classes
	  so that every message also shows the parameters that are valid
	  for that message.
	- Jorrit fixed pcregion and pczonemanager so that they will also
	  register entities created by addon's to the list of entities to
	  remove when the region is removed.
	- Jorrit fixed pczonemanager so that it also removes entities that
	  are connected to a mesh and that are not in other sectors (and
	  were not already removed earlier).
	- Jorrit fixed the pczonemanager so it correctly uses the 'Start'
	  position if none is specified.
	- Jorrit changed pccamera so that it only sets the sector of the
	  camera if it is different from the sector that is already set.
	  That way it avoids calling sector changed callbacks too many times.
	- Jorrit fixed pczonemanager so that it really works now with regards
	  to dynamic loading. There is still one problem:
	  If you use a 3rd person camera in combination with zoning
	  then there is a problem if the mesh is in one sector and the
	  camera is in another. In that case it is possible for a region
	  to be loaded/unloaded constantly because the camera positioning
	  works by first placing the camera at the mesh location and
	  then moving it back.
	  Note that you MUST mark portals between regions with <autoresolve/>
	  for this feature to work!
	- Jorrit fixed the bug with too much region loading by letting the
	  pczonemanager look at the location of the mesh (if there is one)
	  instead of the camera.
	- Jorrit made the zone manager follow the mesh more closely (by
	  subscribing to the mesh movable as a listener) in case
	  iPcZoneManager->PointMesh() is used. If PointMesh() is not used then
	  the camera will be followed. This fixes a bug where you could go
	  through a portal and then back a bit and CEL would not know what
	  the current region was.
	- Jorrit protected the pczonemanager and pccamera classes so that
	  they don't crash if they are operating on a mesh for which the
	  sector is not (yet) set.
8-Jul-2004
	- Jorrit started work on a new property class pczonemanager.
	  Currently only the iPcZoneManager interface is partially
	  defined. The idea is that this property class can be used instead
	  of iPcRegion if your game needs zone handling (bigger maps
	  with partial loading/unloading of regions).
	- Jorrit fixed iPcRegion so it uses weak references to the entities
	  that it created. That fixes the rare case where an automatic entity
	  created from a loaded map file would be deleted during the game.
	- Jorrit started implementing the new zone manager property class.
	  There are four levels:
	    - 'map': this is the lowest level map file (or world file). A
	      game can be made out of different map files.
	    - 'region': a region is a collection of map files. A region is
	      always loaded and unloaded from the engine as a unit. A region
	      can be made from several map files which are loaded/unloaded
	      together.
	    - 'zone': a zone is a collection of regions. A region can be
	      in multiple zones. As soon as the player is in some region all
	      zones that contain that region will be loaded.
	    - 'level' (the iPcZoneManager itself). This is the entire playing
	      ground. A level is a collection of zones and regions.
	  The zone manager basically works except for one thing: it currently
	  doesn't follow where the camera goes so loading/unloading of new
	  zones is not automatic yet. This will be added soon.
	  If you use iPcZoneManager then you will not use iPcRegion.
	  The zone manager is a more powerful alternative for the simple
	  iPcRegion.
	- Jorrit added support for the zone manager to the pccamera property
	  class (added iPcCamera->SetZoneManager()).
	- Jorrit implemented dynamic loading in the zone manager by
	  using the new iCameraSectorListener in CS.
6-Jul-2004
	- Jorrit got a patch from Thomas Degris <thomas.degris@lip6.fr>
	  to set the looking direction of an actor directly through
	  iPcActorMove->RotateTo() and a new version of
	  iPcLinearMovement->SetAngularVelocity().
5-Jul-2004
	- Jorrit fixed several warnings in CEL caused by a few places
	  where size_t was not fixed.
	- Jorrit added a new iEntityLoader interface which is implemented
	  by the celentity addon. Using that interface one can now
	  more easilly access the celentity addon to load entities from
	  XML description files.
3-Jul-2004
	- Jorrit fixed a compile error in CEL.
2-Jul-2004
	- res fixed CEL for the csArray<> size_t change.
29-Jun-2004
	- Andrew Craig fixed ambiguous csVector::Set() invocation in
	  celPcMeshSelect::HandleEvent()
28-Jun-2004
	- Andrew Dai fixed celPcLinearMovement so it now performs collision
	  detection at the correct interval.  Also added reaction to collisions
	  so your current velocity will be affected after a collision.  This
	  will be most noticeable with mid-air collisions.
25-Jun-2004
	- Andrew Dai added a UseCD() function to iPcCollisionDetection to
	  allow temporary disabling of collision detection on an entity.
	  Turning while in mid-air (mid-air acrobatics) has been reenabled
	  since the collision response system is not robust.
	  Fixed linmove so that warp portals are handled correctly.
23-Jun-2004
	- Eric Sunshine fixed more bugs in cel-config.  It was almost
	  completely broken for the case when CEL has been installed.  Also
	  cleaned up much inconsistency in the script.
22-Jun-2004
	- Eric Sunshine fixed bugs in CelConfigGen rule (Jamfile.in) where it
	  was using non-existent and obsolete Jam variables, as well as broken
	  logic for determining installation locations.  The result was that
	  cel-config was unable to respond correctly to --prefix,
	  --exec-prefix, --includedir, and --plugindir.
16-Jun-2004
	- Andrew Robberts added a patch by Ondrej Hurt that prevents an array
	  bound to be crossed
15-Jun-2004
	- Keith made several fixes to the way time deltas are handled in DR
	  updating.  The first update cannot update for 100's of seconds,
	  because that large time interval leads to incredibly long update
	  times due to the number of iterations.  Also, fixed and clarified
	  function name semantics as to what is expecting a time delta and what
	  is expecting a clock ticks value.
13-Jun-2004
	- Eric Sunshine upgraded msvcgen from master copy in CS.
3-Jun-2004
	- Jorrit fixed CEL for latest CS change in relation to CollidePath().
30-May-2004
	- Eric Sunshine upgraded Jam build system from master copies in CS.
27-May-2004
	- Keith made big cleanup of linmove PC.  Took out all networking
	  packing functions that were special for PlaneShift.  Also renamed
	  some APIs to be more descriptive.
23-May-2004
	- Eric Sunshine eliminated numerous compilation errors regarding
	  ambiguous assignment of csRef<> to csWeakRef<>.
20-May-2004
	- Eric Sunshine replaced Jamfile with Jamfile.in.  The configure script
	  now creates 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
	- res updated the msvcgen stuff from CS repository.
17-May-2004
	- Eric Sunshine updated msvcgen.pl and msvcgen.jam from the master
	  copies in CS, and also grabbed new msvcgen template files from
	  CS/scripts/jamtemplate. These templates should now be sufficiently
	  generic for use by many external projects, so there should no longer
	  be any need to modify them locally.
	- Eric Sunshine upgraded to most recent Autoconf .m4 files from CS
	  repository.
15-May-2004
	- Jorrit added a new function iCelPropertyClass->
	  PropertyClassesHaveChanged(). This function is called by the parent
	  entity whenever a sibling property class has been added or removed
	  (sibling means property class in the same entity). Extended
	  celPcCommon with support for this so that all property classes that
	  use celPcCommon can call HavePropertyClassesChanged() to test and
	  clear the dirty flag. This new system should make it easier to
	  keep track of references to other property classes from within
	  a property class implementation. In the old implementation many
	  property classes only looked for a sibling property class once but
	  when that property class would later change they will never notice
	  it.
	- Jorrit changed pclinmove and pccamera to use the new property
	  class change system.
	- Jorrit fully implemented the new pcactormove property class.
	  The only thing it doesn't do yet is control animation of spr3d
	  meshes. But it does work correctly with sprcal3d.
14-May-2004
	- Eric Sunshine made the following changes:
	    - Updated to the latest master copies of the .m4 and .jam files
	      from the CS repository.
	    - Removed the custom Python configure check. Now uses the
	      project-agnostic check from the new checkpython.m4, so the test
	      is identical to the one used by CS itself.
	    - configure.ac invokes the new CS_CHECK_MKDIR to glean correct
	      values for CMD.MKDIR and CMD.MKDIRS.
	    - Added the missing runmakeinfo.sh, runtexi2dvi.sh, and
	      runtexi2html.sh scripts to docs/support. These are presently
	      needed by the Jam system when building documentation (though this
	      dependence will be eliminated in the future, allowing these files
	      to be retired).
	    - Fixed broken @node and @menu directives in cel.txi.
	- res updated the msvcgen settings to utilize the new "debug settings" 
	  feature.
	- res fixed some double vs float MSVC warnings.
	- res fixed the celtool jamfile to employ ExternalLibs for CS.
	- Jorrit started working on a new pcactormove property class. This
	  property class will make the connection between a pclinmove and
	  pccamera and it will also support animation with sprcal3d and spr3d.
	  Currenlty doesn't do anything yet.
	- Jorrit and Andrew Robberts fixed the pccamera so that it works
	  correctly with portals.
	- Jorrit and Andrew fixed camera handling a bit more. It is a more
	  robust fix now.
	- Jorrit changed several csRef's to csWeakRef's in CEL. This avoids
	  circular references and then leaks. It uses the new feature in CS
	  to assign a csPtr directly to a csWeakRef.
13-May-2004
	- Jorrit ported the camera handling code that is used in PlaneShift
	  to pccamera. This is a very significant change which considerably
	  changes the API of iPcCamera (new methods to set the modes, new
	  modes, and also some removed modes: follow and rotational are
	  removed). However, it is worth it. The new camera is a LOT
	  better. There are now four nicely working camera modes:
	  	- firstperson
		- thirdperson
		- m64_thirdperson
		- lara_thirdperson
	  Note that temporarily camera persistance is broken. I need
	  to write out and read the new fields.
	- Jorrit added iPcCamera->SetModeName(), GetModeName() and
	  GetNextNode().
	- Jorrit fixed pccolldet so that the 'shift' value now works
	  correctly.
11-May-2004
	- Jorrit added a new iCelPlLayer->CreateEntity() conveniance function
	  so you can easily create an entity, set a name, create a behaviour,
	  and then create all property classes with a single call. This should
	  make entity creation in code look a bit nicer.
	- Jorrit added CEL_QUERY_PROPCLASS_ENT() which is a variant of
	  CEL_QUERY_PROPCLASS() but you don't have to add
	  GetPropertyClassList() yourselves. Slightly easier to read and use.
	- Keith Fulton committed significant debugging patch to linmove and CD
	  from Andrew Dai (Khaki).  Improvements include better handling of
	  going up and down (like on stairs), and corrections to extrapolations
	  of movement when moving forward and turning at the same time.
8-May-2004
	- res made some fixes to the VC project templates; the Release
	  configuraion was ignored by VC, the templates contained absolute
	  paths (and were missing the '..' include path), and the post-build
	  step had a bogus 'copy' command (used to copy the metadata, which is
	  unnecessary as it is linked into the binary).
5-May-2004
	- Eric Sunshine made the following changes:
	    - Upgraded all the Autoconf and Jam utility files from the master
	      sources in the Crystal Space repository. The local copies were
	      extremely outdated.
	    - Updated configure.ac to take advantage of new utility macros in
	      order to simplify and unify.
	    - Updated Jamfiles throughout the project to take advantage of new
	      and improved facilities provided by the updated Jam utility
	      files. In particular, Swig generation, documentation generation
	      and installation, and header installation saw significant
	      changes.
	    - Added targets for converting the manual to HTML and Info formats.
	      (Previously, there was no mechanism at all for dealing with the
	      Texinfo sources.)
	    - Enabled msvcgen support. New targets are msvc6gen, msvc7gen, and
	      msvcgen (which generates all versions). In the future, there will
	      also be "freeze" targets for copying the generated project files
	      from the build directory to the source directory. Presently, you
	      must perform the copy by hand.
	    - Performed a lot of maintenance on the msvcgen template files to
	      eradicate and correct much cruft and incorrectness.
	    - Enabled and cleaned up 'help' messages, so "jam help" now
	      actually presents useful information.
	- Jorrit fixed CEL for the removal of CS_FX_GOURAUD.
	- Eric Sunshine fixed mk/msvcgen/template6/wsgroup.tpi and
	  template7/wsgroup.txi to take into account the fact that the
	  workspace files (wkscel.dsw/wkscel.sln) now reside in the cel/msvc
	  directory, rather than directly in cel.
	- Eric Sunshine fixed Jamfile so that it invokes MsvcGenConfig with
	  appropriate keys and values to prevent Unix-specific Python build
	  flags from polluting the generated MSVC project files.
	- Eric Sunshine updated to the latest Jam files from CS/mk/jam. This
	  fixes a problem with path munging in generated icon .rc files and
	  adds a manifest entry to .rc files for applications.
	- Eric Sunshine added a --without-cs option to configure.ac which
	  allows the project to be configured without having a Crystal Space
	  SDK available. This is useful only for cases when one needs to
	  perform maintenance tasks, such as generating project files or
	  converting documentation, when a Crystal Space SDK is not available.
9-Apr-2004
	- Keith Fulton added function from Ondrej Hurt to dynamically set
	  the max extrapolation interval in linmove instead of hardcoding
	  it.  This helps with very slow frame rates.
24-Mar-2004
	- Jorrit updated CEL for rename of csHash<>::Fetch() to Get().
15-Mar-2004
	- Eric Sunshine updated CEL for rename of csHash<>::Get() to Fetch().
14-Mar-2004
	- Jorrit continued to fix CEL for recent CS changes. Apparently
	  res nor Keith have MSVC project files that include the billboard
	  manager and the XML behaviour layer.
12-Mar-2004
	- Keith Fulton committed a patch from res2k to fix CEL for CS changes.
28-Feb-2004
	- Norman Kraemer added some macros to the swig file that cut down 
	  overall size of the file by a third.
	  He also changed augmented the list of include paths given to swig
	  to include the $(TOP)/include
	- Norman added an --includedir flag to cel-config and augmented cel.m4
	  to determine and emit the cel includedir to variable CEL.INCLUDE_DIR
23-Feb-2004
	- Norman Kraemer fixed python behaviourlayer where const char*
	  path to behaviour was modified.
21-Feb-2004
	- Norman Kraemer added --lflags directive to cel-config
	- Norman also augmented cel.m4 to emit the CEL.LFLAGS variable
	  containing the linker flags to link all public cel libraries.
19-Feb-2004
	- Norman Kraemer modified Jamfile to fix reference of a non existent
	  variable (PACKAGE.VERSION instead of PACKAGE_VERSION).
          Furthermore action CelConfigGen created empty if/then/else
	  branches in cel-config.
	  He also modified cel.m4. Function CS_PATH_CEL sent it's parameters
	  unembraced to CS_PATH_CEL_HELPER, so if, say, the FAILED-ACTION 
	  block contains an errormessage which in turn contains commatas the
	   resulting output (the configure script) will be royally screwed.
18-Feb-2004
	- Norman Kramer reported that the python scripts were still using
	  VFS path celdata instead of cellib. Jorrit fixed it.
	- Norman also sent in a patch to the python plugin in CEL.
17-Feb-2004
	- Eric Sunshine added a mount for 'partsys' to vfs.cfg since celtest
	  tries to load it.
10-Feb-2004
	- Jorrit fixed the CEL billboard manager so that it also works with
	  New Renderer in CS.
	- Eric Sunshine added an --enable-new-renderer option to configure.ac
	  so that CEL can be tested against the new renderer.
	- Jorrit used CS_IMPLEMENT_STATIC_VAR to make sure the global arrays
	  in the billboard manager are properly constructed on all platforms.
8-Feb-2004
	- Eric Sunshine upgraded .m4 and .jam files to latest versions from
	  Crystal Space CVS repository.  Centralized special-case handling of
	  RANLIB on MacOS/X.
5-Feb-2004
	- Eric Sunshine upgraded documentation install Jam rules to work with
	  latest cel/mk/jam/*.jam files.  This eliminates Jam warning about
	  unknown `InstallDocDir' rule.
3-Feb-2004
	- Eric Sunshine upgraded cel/mk/autoconf files from master copies in
	  CS repository and upgraded RANLIB check in configure.ac to work
	  around Jam 2.4 bug on MacOS/X.
2-Feb-2004
	- Jorrit changed the behaviour of iCelBlLayer->CreateBehaviour().  This
	  function will now automatically set the behaviour in the entity (i.e.
	  call entity->SetBehaviour()) so it is no longer necessary to do this
	  yourselves.
	- Jorrit added iBillboard->StackUp() and iBillboard->StackDown().
	- Jorrit added bb_up and bb_down commands to the XML behaviour layer.
	  Also extended bb_up, bb_down, bb_tofront, bb_toback, and bb_move with
	  an optional 'pc' parameter so you can call it on other entities with
	  a billboard.
	- Eric Sunshine updated Jam (*.jam) and Autoconf (*.m4) from master
	  copies in Crystal Space repository.  This fixes a number of serious
	  build and install problems on MacOS/X which were caused by buggy Jam
	  files which were committed to the CS repository several days ago.
30-Jan-2004
	- Jorrit fixed CEL after latest lighting related CS changes (removal of
	  DeferUpdateLighting()).
29-Jan-2004
	- Jorrit fixed the python plugin after recent changes in CS.
	- Jorrit fixed cssys->csutil after recent changes in CS.
	- Eric Sunshine updated mk/jam from master copies in Crystal Space
	  repository which contain fixes for syntax errors.
28-Jan-2004
	- Jorrit reverted a change in win32.jam which causes CEL not to
	  compile.
	- Eric Sunshine updated mk/autoconf and mk/jam from master copies in
	  Crystal Space repository which contain fixes for build problems
	  introduced when buggy Jam files were installed on 23-Jan-2004.
27-Jan-2004
	- Eric Sunshine fixed bug in cel/Jamfile.  It was incorrectly invoking
	  InstallApplication rather than InstallShellScript to install
	  cel.cex.  This caused installation to fail on MacOS/X.
26-Jan-2004
	- Eric Sunshine replaced the broken and exceptionally outdated
	  cs_check_host.m4 with a modern one from the master location at
	  CS/scripts/jamtemplate/cs_check_host.m4.
	- Eric Sunshine fixed bug in cel/Jamfile.  It was incorrectly invoking
	  InstallApplication rather than InstallShellScript to install
	  cel-config.  This caused installation to fail on MacOS/X.
	- Eric Sunshine fixed bug in CelConfigGen action in cel/Jamfile.  It
	  caused cel-config to fail to emit `celtool' in response to the --libs
	  option.
	- Keith fixed header files for csengine changes.
23-Jan-2004
	- Jorrit added an optional profiler to the XML behaviour layer.
	- Jorrit fixed a big memory leak in CEL by replacing a lot of csRef's
	  to iCelPlLayer with csWeakRef.  This avoids circular references.
	- Jorrit added a new notation in the XML behaviour layer to have a
	  faster way to emulate arrays:
	    ?array[<expr>]
	  is equivalent to:
	    ?('array_'+<expr>)
	- Eric Sunshine updated cel/mk/autoconf and cel/mk/jam from master
	  copies in Crystal Space CVS repository.
22-Jan-2004
	- Jorrit fixed 'expr' in the XML behaviour layer so that it clear the
	  stack instead of drop.
	- Jorrit fixed a bug in the XML behaviour layer where the local
	  variables would be cleared for the inside of a 'for' loop.
	- Jorrit added a new iBillboard->SetMaterialNameFast() function to set
	  a material without recomputing the clickmap.
	- Jorrit fixed the XML behaviour layer so that 'default' in 'switch'
	  statement works.
21-Jan-2004
	- Jorrit added 'reporterror' command to the XML behaviour layer and the
	  'readfile', and 'writefile' functions.
20-Jan-2004
	- Jorrit and Eric added a 'bootstrap_static' to CEL so you can make a
	  static version of boostrap.
	- Jorrit fixed profiling flags for jam.
	- Jorrit optimized the pcproperties property class considerably.  It
	  now is a lot faster to manipulate properties.  This has a great
	  effect on speed for the XML behaviour layer.
	- Jorrit did another similar optimization on entity finding.
19-Jan-2004
	- Jorrit added new 'bb_tofront' and 'bb_toback' commands to the XML
	  behaviour layer.
16-Jan-2004
	- Jorrit added entity name to the call stack for XML behaviour layer.
	- Jorrit fixed CEL for the latest light related CS changes.
15-Jan-2004
	- Jorrit fixed another bug reported by valgrind in pctimer.
	- Jorrit fixed another bug reported by valgrind in XML behaviour layer.
	- Keith committed a new set of vc7 project files to make the new
	  library-based scheme work more easily for new people.
14-Jan-2004
	- Jorrit did the following changes to the XML behaviour layer:
	    - Changed the meaning of converting strings to boolean.  An empty
	      string becomes false and a non-empty string becomes true (as
	      opposed to only the 'true' string becoming true like it was
	      before).
	    - Fixed logical not for strings. It was working reversed.
	    - Added the ability to convert entity and pclass to bool too.
	    - Added the 'expr' keyword which evaluates an expression and then
	      throws the result away.
	    - Added the ability to inherit parameters from the caller to
	      functions being called.
	- Jorrit added an optimization to the XML behaviour layer so that some
	  operations with constants are more efficient.
	- Jorrit fixed a bug in pckeyinput with relation to modifiers.  Binding
	  keys with modifiers (shift and so on) was simply not possible.
	- Jorrit fixed two bugs as reported by valgrind.
13-Jan-2004
	- Jorrit added support for scoped functions to the XML behaviour layer
	  (i.e. calling a function from another entity script using ::
	  operator).
	- Jorrit cleaned up the XML scripter a bit.
	- Jorrit added a new MoveToPosition() method to iBillboard.  This will
	  implement a gradual move (given a certain delta value).
	- Jorrit added a new version of bb_move to the XML behaviour layer that
	  actually uses this new function (if 'delta' parameter is given).
	- Jorrit changed the pctimer property class so you can now specify both
	  WakeUpFrame as WakeUp at the same time.
	- Jorrit added logical not to the XML behaviour layer.
	- Jorrit added a new scope operator (::) to the XML behaviour layer.
	  With this operator you can call functions from other entities that
	  are not hardcoded.
12-Jan-2004
	- Jorrit fixed a memory leak bug in the XML behaviour layer.  The
	  behaviour was using csRef's to property classes which prevented
	  proper cleanups of the entity.
	- Jorrit added support for local variables to the XML behaviour layer.
	  These are a lot faster, use less memory, and can prevent programming
	  errors in recursive functions.
	- Jorrit added celVariableParameterBlock conveniance class to celtool
	  library.
	- Jorrit added the ability to call events as functions from within an
	  expression in the XML behaviour layer.
11-Jan-2004
	- Jorrit did the following XML behaviour layer changes:
	    - Added the ability to return values through a
	      behave->SendMessage() call.
	    - Fixed a bug in callstack so that it now also prints internal
	      calls.
	    - Added 'return' statement so it is now possible to return values
	      through 'call'.
	- Jorrit added new bb_move conveniance command to the XML behaviour
	  layer to move a billboard.
9-Jan-2004
	- Jorrit added 'traceon' and 'traceoff' commands to the XML behaviour
	  layer.  With these commands you can enable tracing of all changes to
	  properties and variables.
8-Jan-2004
	- Jorrit added new 'variables' debugging command to the XML behaviour
	  layer.
	- Jorrit added new 'callstack' debugging command to the XML behaviour
	  layer.  This command prints out the current callstack.  On error the
	  callstack and variables are also dumped.
7-Jan-2004
	- Keith added velocity handling for sprcal3d to linmove DR msg
	  handling.
5-Jan-2004
	- Eric Sunshine fixed compilation bug.  celPcDynamicBody was trying to
	  invoke iPcMesh::IncRef() and DecRef() (via csRef<>) before the
	  compiler had seen the full declaration of iPcMesh (it had only seen a
	  forward declaration).
4-Jan-2004
	- Jorrit did several optimizations on the XML behaviour layer.
	- Jorrit fixed a bug in the XML behaviour layer which could cause
	  crashes in some cases.
3-Jan-2004
	- Jorrit added an optimization to the billboard manager in case a
	  clickmap is completely full.
	- Jorrit added clipping for billboards in the billboard manager.  That
	  way billboards will no longer crash the software renderer if they go
	  beyond screen boundaries.
2-Jan-2004
	- Jorrit added the ability to use parameters for the 'call' operation
	  in the XML behaviour layer.
	- Jorrit added a shorthand notation in the XML behaviour layer:
	  @parameter instead of param(parid(parameter)).
28-Dec-2003
	- Jorrit added new 'stridx' function to the XML behaviour layer.
	- Jorrit added new 'strsplit' operation to the XML behaviour layer.
23-Dec-2003
	- Jorrit added a 'switch' command to the XML behaviour layer.  Complete
	  with 'case' and 'default'.  One difference with C++ is that the case
	  values don't have to be constant.  At runtime this switch simply
	  translates to a series of 'if'/'else' statements so it is not that
	  efficient.
	- Jorrit did a huge optimization to the XML behaviour layer by making
	  sure that the A2S() statements are not evaluated in case
	  script-debugging is not enabled.  The problem was that the #if to
	  disable debugging was inside the routine that prints out the debug
	  info.  but the A2S() calls were done in the calls and this means that
	  the compiler still generated code for them.  Current solution does
	  some preprocessing magic but it has the unfortunate consequence that
	  there are a huge amount of warnings in case the script debugger is
	  enabled:
	    plugins/behaviourlayer/xml/xmlscript.cpp:2590:57:
	    warning: pasting "dump_exec" and "(" does not give
	    a valid preprocessing token
	  I don't know how to avoid those.  Luckily the warnings are not
	  present in the default build.  BTW, this optimization increases fps
	  with 100 (from 320 to 420) for one of the games in xmlgames :-)
	- Jorrit renamed the 'testcollide' function in the XML behaviour layer
	  to 'bb_testcollide' to make it clearer that this function is specific
	  to billboards.
	- Jorrit added the notion of layers to the billboard manager.  Every
	  billboard can be associated with some layer and you can move a layer
	  which has the effect that all billboards on that layer will move.
	  This is nice for scrolling games.  You can use the iBillboardLayer
	  interface to access layers.
	- Jorrit added the 'layer' property to the billboard property class.
	- Jorrit added 'bb_movelayer' command to the XML behaviour layer.  With
	  this comment you can move layers.
	- Jorrit fixed the pckeyinput property class so that key repeats are
	  now also sent to the behaviour layer with '_' appended (i.e.  append
	  of '0' is key press, append of '1' is key release).
	- Jorrit fixed the XML behaviour layer so that 'bb_movelayer' now also
	  works if the layer doesn't exist yet.  In that case the layer will be
	  created.
22-Dec-2003
	- Daniel added comments to iCelEntity and iCelEntityList.
	- Jorrit added the 'super' keyword to the XML behaviour layer.  With
	  this keyword you can call the routine of the same name in the
	  superscript.
	- Andreas Busch added doxygen targets.
21-Dec-2003
	- Jorrit added 'strlen' and 'strsub' functions to the XML behaviour
	  layer.
	- Jorrit fixed a bug in standard parameters.  By specifying the type in
	  SetParameterDef() it actually caused crashes when setting a string
	  later on because the celData expected a string to clean up.  Fixed
	  this by simply removing the unneeded type parameter.
	- Jorrit added 'Bind' action for pckeyinput.
	- Jorrit fixed a bug in the XML behaviour layer which prevented boolean
	  parameters from working (for <action> command).
	- Jorrit added the notion of super-scripts for the XML behaviour layer.
	  This is a bit similar to a superclass and it allows scripts to depend
	  on other scripts for common behaviour.
20-Dec-2003
	- Jorrit fixed three bugs which prevented a script from deleting its
	  own entity:
	    - First while a script is executing we will now keep an additional
	      reference to the entity to prevent deletion until the script has
	      finished.
	    - In case a billboard is firing mouse messages we will set a flag
	      to prevent deletion of that billboard.  If the billboard has to
	      be deleted then that flag is tested and if true we set another
	      flag so that the billboard can delete itself later.
	    - In pcbillboard we now remove the event handler on the billboard
	      before deleting that event handler.  This is now needed since the
	      billboard can actually remain in memory a little longer because
	      of the previous fix and then deleting the event handler without
	      first removing it would cause bad effects.
19-Dec-2003
	- Jorrit worked a little on xmlgames. Added a new maze game.
	  Unfinished.
18-Dec-2003
	- Jorrit added a local vfs.cfg for CEL to specify the following CEL
	  mount points:
	    /cellib/sounds
	    /cellib/images
	    /cellib/objects
17-Dec-2003
	- Jorrit changed the bootstrap loader so that it also attempts to load
	  the sound plugins now.
	- Jorrit added a <sound> keyword to the XML behaviour layer.
15-Dec-2003
	- Jorrit did the following to the XML behaviour layer:
	    - Implemented support for setting entity variables in the XML
	      behaviour layer.  So in all commands where you need to specify an
	      entity you can now give both a name or an entity itself.
	    - Added an 'ent' function to the XML behaviour layer for getting an
	      entity from an entity name.
	    - Added an inline version of 'for' so that you don't have to
	      specify the inner code of a for loop in another event (although
	      that is still possible).
	    - Added inline and none-inline version of 'while'.
	    - Added 'inventory_count' and 'inventory_get' functions.
	- Jorrit performed an optimization in the physical
	  layer->CreatePropertyClass().  It will use a hash to find the right
	  property class factory instead of scanning a list.
	- Jorrit did a big optimization in the billboard manager with the
	  creation of the clickmap for images.  For big images this can make a
	  huge difference in setup time.
14-Dec-2003
	- Jorrit added the following commands to the XML behaviour layer:
	    - 'inventory' to set the current inventory on which further
	      commands will operate.
	    - 'inventory_add' to add an entity to a inventory.
	    - 'inventory_rem' to remove an entity from a inventory.
	- Eric Sunshine added --with[out]-python option to python.m4 to allow
	  users to disable this module if desired.
	- Eric Sunshine fixed python.m4 so that the "Python SDK usable" check
	  is run only if the Python SDK is detected.  (Previously the "SDK
	  usable" check was run even if the SDK was not detected.)
11-Dec-2003
	- Eric Sunshine upgraded the Autoconf and Jam utility files to the
	  latest versions from CS.
	- Jorrit added a new celtool library.  At this moment this library
	  contains everything that used to be in plugins/propclass/common (that
	  directory has now been removed): mainly the common code for making
	  property class factories and also code for making parameter blocks.
	- Jorrit modified iCelPropertyClass->PerformAction() to take an
	  iCelParameterBlock instance to pass the parameters instead of the old
	  const char* pointer.
	    - celPcRegion: PerformAction has no parameters.
	    - celPcGravity: PerformAction takes a parameter with id
	      'cel.parameter.force' (a vector3).
	    - celPcTimer: PerformAction for the WakeUp action takes the
	      parameters 'cel.parameter.time' (a long) and
	      'cel.parameter.repeat' (a bool).
	- Jorrit replaced the prefix id for property class parameters from
	  'cel.behaviour.parameter.' to 'cel.parameter.'. Modified the
	  'parid()' function the XML behaviour layer accordingly.
	- Jorrit modified the XML behaviour layer to support the new parameter
	  system for PerformAction ('action' command).  You can now supply
	  parameters using <par id="parid(...)" value="..." /> inside the
	  <action> block.
	- Eric Sunshine upgraded compiler.m4 from CS's master copy.  This fixes
	  problem where configure's -shared check was failing.
10-Dec-2003
	- Jorrit fixed the physicstest python script so that it works again
	  (converted to the new thing API in CS).
9-Dec-2003
	- Jorrit extended 'call' in the XML behaviour layer so that the entity
	  attribute is now optional. If not given the current entity is
	  assumed.
	- Jorrit added the 'entname' function to return the current name of the
	  entity (XML behaviour layer).
	- Jorrit fixed two bugs in string handling for the XML behaviour layer.
	  One of these bugs could cause crashes.  The other could cause wrong
	  computations.
7-Dec-2003
	- Jorrit renamed the string ID's for properties from
	    cel.property.pccamera.bla
	  to
	    cel.property.bla
	  It is redundant and unneeded to specify the property class there.
	- Jorrit implemented a new notation in the XML behaviour layer for
	  'if'.  If there is now 'true' or 'false' child or attribute then the
	  child of 'if' is considered a 'true' child.
6-Dec-2003
	- Jorrit implemented cross product and modulo operator for the XML
	  behaviour layer.
	- Jorrit implemented bitwise and, or, xor, and not for the XML
	  behaviour layer.
	- Jorrit fixed operator precedence for the unary operators (! and ~).
	- Jorrit implemented the 'if' function in the XML behaviour layer.
	  Works a bit like the C++ ?: operator.  An important difference is
	  that the 'if' function will always evaluate both the true and the
	  false expression.
	- Eric Sunshine imported newer crystal.m4 from CS/mk/automake.  Also
	  made minor aesthetic improvements to configure.ac.
5-Dec-2003
	- Jorrit changed 'testcollide' to be a function in the XML behaviour
	  layer.
	- Jorrit implemented a variant of 'if' in the XML behaviour layer which
	  supports inlined code instead of the requirement to fire seperate
	  event handlers.
	- Jorrit implemented 'destroyentity' in the XML behaviour layer.
	- Jorrit added new 'call' operation to call events in other entities.
	- Jorrit fixed a memory leak in pcbillboard caused by an embedded
	  listener interface.  Fixed this by avoiding the embedding.
	- Jorrit fixed a bug in the RemoveBillboard() method of the billboard
	  manager.  It crashed.
	- Matze fixed Jam rules so that cel-config builds correctly when
	  building outside of the source tree.
	- Eric Sunshine updated out-of-date mk/autoconf/*.m4 files, including
	  the new crystal.m4 which now publishes CRYSTAL.INCLUDE_DIR.
	- Eric Sunshine fixed behaviorlayer/python/Jamfile so that it passes
	  only -I$(CRYSTAL.INCLUDE_DIR) to Swig, rather than all of
	  $(CRYSTAL.CFLAGS), which was clearly incorrect, and which caused Swig
	  to complain in some cases.
	- Eric Sunshine eliminated several compilation warnings from the
	  project.
	- Eric Sunshine fixed Jamfile so that it cleans up the generated
	  cel-config script.
4-Dec-2003
	- Jorrit simplified the XML behaviour layer by removing support for
	  multiple arguments for operations and only allowing one.  Also
	  unified the type system so that the CEL_TYPE_...  enum is now gone
	  and instead CEL_DATA_...  is used.
        - Daniel made some minor edits to the documentation and added
	  preliminary build instructions for the Windows platform.
	- Jorrit changed the way parameters are passed through SendMessage
	  (from the property class to the behaviour).  Instead of the generic
	  iBase there is now a new iCelParameterBlock interface that is
	  implemented by the property class and that the behaviour can use to
	  access the parameters from the message.
	- Jorrit fixed the python and thest behaviour layers to support this
	  new system.
	- Jorrit added celGenericParameterBlock in plugins/propclass/common.
	  This can be used by property class implementations to make it easier
	  to implement parameters.
	- Jorrit added celOneParameterBlock in plugins/propclass/common.  This
	  can be used by property class implementations to make it easier to
	  implement parameters when only one parameter is needed.
	- Jorrit changed the pcbillboard property class to use the new
	  iCelParameterBlock system (with parameters 'x', 'y', and 'button').
	- Jorrit changed the pcinventory property class to use the new
	  iCelParameterBlock system (with parameter 'entity').
	- Jorrit changed the pcproperties property class to use the new
	  iCelParameterBlock system (with parameter 'index').
	- Jorrit removed iPcMeshSelectData (which was previously used to pass
	  coordinates from pcmesh to behaviour) and changed it to use
	  iCelParameterBlock instead (with parameters 'entity', 'x', 'y', and
	  'button').
	- Jorrit extended the XML behaviour layer parser with a more generic
	  way to handle functions.  Now CEL_TOKEN_FUNCTION is returned and a
	  string hash is used to see which function it is.  This is both faster
	  and more general.
	- Jorrit extended the XML behaviour layer with a new 'arg' function to
	  get a parameter from the iCelParameterBlock that is given by
	  SendMessage.  By doing that XML behaviour layer scripts can now
	  access the parameters from property classes.
	- Jorrit added a new 'parid' function to the XML behaviour layer which
	  is a conveniance for getting ids for parameters (it adds the prefix
	  'cel.behaviour.parameter.').
	- Jorrit fixed a bug in the billboard manager. It was not properly
	  sending out the x, y, and button information to the behaviour.
	- Jorrit converted all functions in the XML behaviour layer to be
	  parsed by the new CEL_TOKEN_FUNCTION.
	- Jorrit added 'abs', 'min', 'max', 'sign', 'intpol', 'int', and
	  'float' functions to the XML behaviour layer.
	- Jorrit added a new 'rand' function to the XML behaviour layer.
	  Returns a random number.
	- Jorrit added 'elapsedticks' and 'currentticks' parameters to the
	  pctimer WakeUpFrame message.
	- Jorrit replaced 'arg(' with 'param(' to be more consistent with the
	  rest of CEL where it is called a parameter.
2-Dec-2003
	- Jorrit extended the XML behaviour layer to recognize identifiers as
	  an easier way to make strings consisting only of '_', alphanumeric
	  characters and digits.
	- Jorrit re-enabled cleanup of temporary strings in the XML behaviour
	  layer.
	- Jorrit optimized string handling a bit in the XML behaviour layer.
	  It now attempts to minimize string allocation.
	- Jorrit fixed the pc(entity,propclass) operator in the XML behaviour
	  layer. Removed 'getpropclass' command since that is now obsolete.
	- Jorrit added support for 'id' operator in the XML behaviour layer.
	  This can be used to calculate id's for properties. Also added
	  support for 'propid' which is a short-hand that also adds
	  'cel.property.' in front of the id name.
	- Jorrit changed expresion evaluation so that expressions are evaluated
	  from left to right instead of right to left.
	- Jorrit changed all other operations in the XML behaviour layer to
	  use the new stack based system.
	- Jorrit removed 'getproperty' by adding a 'property' operator to the
	  XML behaviour layer.
	- Jorrit removed the property class resolver system from the XML
	  behaviour layer. This is no longer needed.
	- Jorrit added new 'default' keyword for the XML behaviour layer so
	  that you can now set a default property class to use for the
	  'property' and 'action' operations and also for the 'property'
	  operator.
	- Jorrit added the 'for' command to the XML behaviour layer.
	- Jorrit fixed a bug in parsing of the variable deref operator ('?').
	- Jorrit implemented ==, !=, <, <=, >, and >= operators in XML
	  behaviour layer.
	- Jorrit implemented an optimization in pcproperties so that properties
	  are found faster using a hash. This helps the XML behaviour layer
	  considerably.
	- Jorrit implemented && and || operators in XML behaviour layer.
	- Jorrit implemented 'stop' operation in the XML behaviour layer.
	- Jorrit added iPcTimer->WakeUpFrame() so that you can get a timer
	  that sends a message every frame. The message that is sent is
	  'pctimer_wakeupframe'.
	- Jorrit added three actions to pctimer so that you can control the
	  timer from the XML behaviour layer.
	- Jorrit changed the 'property' command in the XML behaviour layer so
	  that it looks at the type of the property instead of the type
	  of the item on the stack.
	- Jorrit added a new notation to make it easier to access variables
	  from another entity (XML behaviour layer): use ?entityname.var.
	- Jorrit added an optional 'entity' parameter to 'var' so that you
	  can set a variable in another entity.
1-Dec-2003
	- Jorrit added error reporting to the XML behaviour layer (scripting
	  module).
	- Jorrit started a big rework of the XML behaviour layer by using a
	  powerful expression evaluator and a stack. This allows us to use
	  expressions and variables everywhere in the scripts.
	  Not finished and even crashes right now.
	- Jorrit fixed a crash in the XML behaviour layer. It is now again
	  working properly but not all commands are converted to the new
	  system.
	- Jorrit converted 'var' operation to the new system.
30-Nov-2003
	- Jorrit made attribute parsing in the XML behaviour layer and 
	  the celentity addon a bit more efficient.
	- Jorrit enhanced 'getproperty', 'property', and 'action' in the XML
	  behaviour layer so that they have an optional 'entity' parameter
	  to work on properties and actions in another entity.
	- Jorrit optimized iCelPlLayer->FindEntity() with an additional
	  hash to find the entities faster.
	- Jorrit added 'createentity' to the XML behaviour layer.
	- Jorrit added 'createpropclass' to the XML behaviour layer.
	- Eric Sunshine updated very outdated m4 files in cel/mk/autoconf from
	  master copies in CS/mk/autoconf.
	- Eric Sunshine removed platform-specfic checks from configure.ac which
	  duplicated checks performed by CS's configure script.  This
	  duplication is no longer needed since Eric fixed a bug in
	  CS/scripts/cs-config/Jamfile which caused the generated cs-config's
	  --cflags and --cxxflags options to always return an empty string.
	  These options now return proper flags, thus duplicate checking by
	  cel's configure script is not required.
29-Nov-2003
	- Jorrit added support for csVector2 properties to the pcproperties
	  property class, to the generic property system, to the
	  persistance layer, and the XML behaviour layer.
	- Jorrit added support for setting different uv ranges for a billboard
	  so that you can now show part of a texture.
	- Jorrit completed support for 2D vectors in the XML behaviour layer
	  and the celentity addon. It is now possible to set 2D vector
	  properties and variables.
28-Nov-2003
	- Jorrit changed the billboard manager internally so that billboard
	  locations and size are now stored in billboard space instead of
	  screen space. This doesn't change anything from the outside (API)
	  but it gives more accuracy when manipulating billboard positions
	  and sizes.
	- Jorrit fixed billboard image handling so it works correctly in both
	  software and OpenGL renderer. This requires fixes on the CS side
	  too.
	- Jorrit removed some debug info.
	- Jorrit changed billboard space to 307200x307200. The reason for this
	  change is that this number is divisible by 320, 480, 640, 600,
	  800, 1024, 1280, and 1600 and is thus very suitable for representing
	  both horizontal and vertical resolutions. It is also square which
	  is easier to use.
27-Nov-2003
	- Jorrit added support for 'width', 'height', 'x', and 'y'
	  properties to the pcbillboard. Also added persistance for these
	  values and fixed a bug in persistance too.
	- Jorrit fixed a bug in the XML behaviour layer with regards to
	  arguments and some types of those arguments.
	- Jorrit added support for using 'var' for setting a property
	  in the XML behaviour layer (instead of only constant values).
	- Jorrit added support for assigning vars to other vars in the
	  XML behaviour layer.
	- Jorrit changed the XML behaviour layer so that it automatically
	  creates a pcproperties property class if needed (for example, to
	  support variables).
	- Jorrit fixed the billboard manager so that clicking on a scaled
	  image still works correctly and collision detection with scaled
	  images also works correctly.
	- Jorrit added the ability to set size of billboard in percentage
	  relative to size of image.
	- Jorrit changed the billboard manager so that it always works
	  in a coordinate system of 1024000 x 614400. By doing this you
	  can make 2D applications that are fully resolution independent.
	  The values above where chosen because they are divisible by
	  most common screen resolutions so that no fraction is required.
	- Jorrit did some additional corrections to the resolution independent
	  billboard manager.
26-Nov-2003
	- Daniel added first draft of CEL documentation.  Any feedback welcome.
	- Jorrit added first primitive version of TestCollision() function
	  in the billboard manager. Currently only uses the bounding
	  rectangle and ignores transparent areas.
	- Jorrit implemented generic property support for the pcproperties
	  property class.
	- Jorrit added support for setting 'long' properties to the XML
	  behaviour layer.
	- Jorrit added support for setting 'long' properties to the 'celentity'
	  addon.
	- Jorrit implemented <getproperty> in the xml behaviour layer. With
	  this command you can get a property from any property class and
	  set it to a property of the 'pcproperties' property class for that
	  entity.
	- Jorrit added support for property class and entity properties in
	  the pcproperties property class (in addition to long, float, bool,
	  and string). This uses weak references so it should be relatively
	  safe to use.
	- Jorrit extended iCelPropertyClass with methods to get and set
	  generic property class and entity properties. Extended pcproperties
	  to implement those too.
	- Jorrit fixed the python behaviour layer for the latest move of
	  the billboard manager from 'managers' to 'tools'.
	- Jorrit optimized handling of properties in the XML behaviour layer
	  by storing the iPcProperties pointer in the behaviour where the
	  script can get it.
	- Jorrit implemented a new 'var' command in the XML behaviour layer.
	- Jorrit implemented a new 'getpropclass' command in the XML behaviour
	  layer.
	- Jorrit implemented a new 'print' command in the XML behaviour
	  layer.
	- Jorrit implemented a new 'if' command in the XML behaviour layer.
	- Jorrit fixed a bug in the iCelPlLayer->FindEntity(). It would crash
	  if there were entities without a name.
	- Jorrit implemented a new 'testcollide' command in the XML behaviour
	  layer.
	- Jorrit implemented a more accurate TestCollision() routine in the
	  billboard manager. Currently very slow though. It should be optimized
	  with some quadtree structure.
	- Jorrit added SetColor/GetColor to iBillboard so that you can change
	  the color of a billboard.
	- Jorrit extended pcproperties property class with support for colors
	  and vectors.
	- Jorrit extended iCelPropertyClass with functions to get and set
	  color properties in a generic way.
	- Jorrit extended the XML behaviour layer with support for color and
	  vector properties.
	- Jorrit extended the 'celentity' addon with support for color and
	  vector properties.
25-Nov-2003
	- Jorrit fixed the billboard manager so that it will now ignore
	  clicks on transparent parts of the objects.
	- Eric Sunshine upgraded CEL to use scfInterface<> instead of
	  name_VERSION and name_scfGetID().
24-Nov-2003
	- Jorrit fixed all CEL hashes that used const char* as a key.
	  In CS there is now a new csStrKey that safely makes copies of
	  the key so that is now used.
	- Jorrit implemented moving of billboards.
	- Jorrit added 'movable' and 'visible' properties for pcbillboard.
	  Also renamed 'events' to 'clickable'.
	- Jorrit implemented stacking order in the billboard manager. By
	  default the most recently created object will be in front of
	  all others.
	- Jorrit added various stacking functions to iBillboardManager.
	- Jorrit added a CEL_BILLBOARD_RESTACK option to billboards. With
	  this option the billboard will automatically restack to front
	  if it is clicked on. Also added a 'restack' property for
	  pcbillboard.
	- Jorrit fixed a bug in the xml behaviour layer. If the same
	  behaviour scfript was reused for multiple entities then the
	  property classes would not be resolved again.
	- Jorrit changed the billboard manager so that by default the
	  width and height are set to -1. When this size is used it will
	  get the size from the texture the first time it is drawn.
	- Jorrit added some real objects (with keycolor transparency) to
	  xmltest.xml.
	- Jorrit renamed the 'managers' directory to 'tools' so that it is
	  more general.
	- Jorrit enhanced the celentity addon plugin so it can now also
	  be used to set properties for the created property classes.
	  See scripts/xmltest.xml for some examples.
23-Nov-2003
	- Jorrit fixed the 'materialname' property in the pcbillboard plugin
	  by overriding SetProperty() and GetPropertyString() from
	  celPcCommon and handling this property seperately.
	- Jorrit enhanced the celentity addon so that it is now also possible
	  to define entities without a mesh. Just place the 'addon' out
	  a meshobj definition to do this.
	- Jorrit extended the xml behaviour layer so that you can now also
	  set string properties using the <property> command (instead of
	  only float).
	- Jorrit implemented some missing functions in the billboard
	  manager.
	- Jorrit added a billboard entity to the xmltest.xml script.
	  The first billboard is visible! (in the lower-left corner).
	- Jorrit added iBillboardEventHandler interface. Users of the
	  billboard manager can use this to get notified about when a
	  billboard is selected.
	- Jorrit implemented a few additional functions in a billboard
	  (to move and resize it).
	- Jorrit added a new property to pcbillboard property class to
	  enable/disable events.
	- Jorrit implemented select, unselect, move, and doubleclick events
	  for billboards. They translate to similar named property class
	  events for the billboard property class (but with 'pcbillboard_'
	  added in front of the message name (i.e. 'pcbillboard_select').
	- Jorrit extended the xml behaviour layer so that you can now also
	  set boolean properties using the <property> command.
	- Jorrit changed the billboard manager to that the 0,0 location
	  is now top-left of screen.
21-Nov-2003
	- Jorrit added a new billboard manager plugin. This plugin will be
	  responsible (when it is ready) for managing billboards. A billboard
	  is basically a 2D image that can be moved and manipulated in other
	  ways.
	- Jorrit added a pcbillboard property class. This class allows one
	  to attach billboards to an entity. It will use the billboard
	  manager to actually create the billboards.
	- Jorrit added all needed stuff for accessing the new billboards
	  from python.
	- Jorrit notes that all billboard related classes don't yet work.
	  This is work in progress.
	- Jorrit implemented the first two operations in the XML behaviour
	  layer: 'property' and 'action'. These operations can operate
	  on generic property classes that support generic properties
	  and action.
        - Matze added a autoconf detection script for cel.
	- Jorrit changed the API of iBillboard so it now works with materials
	  instead of iImage.
	- Jorrit added an event handler to the billboard manager so it will
	  draw the billboards in the postProcess event.
	- Jorrit added the first drawing code to billboards. Untested.
	- Jorrit added two properties for billboards. The material name
	  property will not work yet.
20-Nov-2003
	- Jorrit added a new iCelBlLayerGenerate interface. Some behaviour
	  layers can implement this interface in addition to iCelBlLayer.
	  If they do implement this interface then it is possible to create
	  new scripts dynamically by using the API in this interface.
	- Jorrit added a new blxml behaviour layer. This is a very simple
	  behaviour layer which will be used for simple games. There is
	  one premade 'bootstrap' script which has an 'load' method that
	  can be used by the bootstrap utility to load the initial level.
	- Jorrit added a new xmlscripts addon which is able to create
	  XML scripts for the bmxlm behaviour layer.
	- Jorrit extended bootstrap so that you can now give the name
	  of a behaviour method and one string argument. This method will
	  be called on the behaviour right after creating the entity.
	- Jorrit added iCelPlLayer->LoadPropertyClassFactory(). This is
	  a conveniance function to check if a property class factory plugin
	  is already loaded and if not try to load it.
	- Jorrit added LoadPropertyClassFactory() to the python behaviour layer
	  and changed celRegisterPCFactory() to use this instead of simply
	  always loading the plugin.
	- Jorrit added scripts/xmltest.xml as a first example 'game' using
	  the new XML behaviour layer. This is still very primitive and
	  can't be called a game really but it will be enhanced soon.
	  To fire up the xmltest.xml example you can use the following
	  command (on one line):
	    bootstrap cel.behaviourlayer.xml bootstrap load /this/scripts
	    	xmltest.xml 
	- Jorrit fixed a bug in the property list of the pcregion property
	  class. It set 5 properties but only 4 are defined. In addition
	  there was a bogus first property set which was immediatelly
	  overwritten.
	- Jorrit added a standard weight property to the pcgravity property
	  class.
	- Jorrit added a 'ApplyPermanentForce' action to the pcgravity
	  property class (works with PerformAction()).
	- Jorrit changed the API of iCelBlLayerGenerate a bit so that it
	  now returns false on failure. Errors are reported using the error
	  reporter as usual.
19-Nov-2003
	- Jorrit made iPcLinearMovement->IsOnGround() use 'const' again.
	  For some reason this was changed in Keith's latest commit but
	  this caused the blpython behaviour layer to not compile.
	- Jorrit performed a very fundamental change to the physical layer.
	  Previously if you created an entity using pl->CreateEntity() you
	  would get back the only reference to that entity. i.e. the physical
	  layer didn't keep a ref and you were responsible for maintaining
	  that ref on your own. This is now changed. The physical layer now
	  maintains its own references. The consequence of this is that it is
	  no longer sufficient to release your reference to get rid of an
	  entity but you have to do a manual pl->RemoveEntity() call.
	- Jorrit fixed smallgame.py for the latest collision detection changes
	  in linmove.
	- Jorrit added a new plugin: 'addon_celentity'. This plugin can
	  be registered as an addon in a map file and you can use it to
	  attach entities to meshes. You can use a syntax like this:
	      <meshobj name=...>
	          ...
		  <addon plugin="cel.addons.celentity" entityname="bla">
		    <behaviour layer="python" name="mybehaviour" />
		    <propclass name="pcsolid"/>
		    <propclass name="pctimer"/>
		    ...
		  </addon>
	      </meshobj>
	  Here are a few remarks:
	      - If you don't specify 'entityname' then the name from the mesh
	        itself will be used.
	      - The 'layer' name will be used to query for a behaviour layer
	        from the object registry. If you don't specify that name
		then the addon will try to get the default behaviour layer
		(registered with name "iCelBlLayer").
	      - You don't have to create a 'pcmesh' as that property class
	        is automatically created.
	- Jorrit changed the pcregion property class so that it no longer
	  creates an entity for a mesh if there is already an entity. This
	  means you can safely use the cel.addons.celentity addon for meshes
	  in your map file. Note that pcregion normally creates a 'pcsolid'
	  property class in addition to the 'pcmesh'.
	- Jorrit added iCelPlLayer->FindEntity(). This is a slow function so
	  only use it when you really need it.
	- Jorrit added scfQuery_iPcGravity and scfQuery_iPcMovable functions
	  to the python behaviour layer.
	- Jorrit also added celGet...() to the python behaviour layer for all
	  property classes. This is similar to the celCreate...() functions.
	- Jorrit changed 'portal_world' and 'smallgame.py' to use the new
	  feature of creating an entity through an addon.
17-Nov-2003
	- Keith separated pc linmove from collision detection code in
	  preparation for making a new linmove pc for sprcal3d sprites.
	  This way they can both share the same CD code. Linmove will
	  auto-create iPcCollisionDetection if one is not supplied to it in
	  InitCD(). If you want one other than the default, supply one here.
11-Nov-2003
	- Keith changed link directories not to be hardcode to his local
	  machine's paths.
9-Nov-2003
	- Chris Matuszewski added SetMaxSelectionDistance() to iPcMeshSelect to
	  allow the user to specify a maximum distance to use for mesh
	  selection.  This value is used in the call to HitBeam in
	  meshfact.cpp.  A default max_distance value is set to 100000 in
	  meshfact.cpp.  This change allows meshselect to work for objects that
	  are farther than the previously arbitrary distance of 60 units.
4-Nov-2003
	- Chris Matuszewski changed the return value of HandleEvent() in
	  inpfact.cpp to false to allow other entities that may have
	  registered for the same input to process the same event.
	- Added vel and ang vel to CEL persistence so that objects in motion
	  at persist time will be in motion on the receiving end.  Note that
	  position and angle are persisted as part of the mesh/movable and
	  don't have to be persisted here.
3-Nov-2003
	- Chris Matuszewski updated the swig generated python wrapper files.
	- Keith Fulton took out some debugging printfs related to finding
	  meshfact names.
20-Oct-2003
	- acraig fixed some more keyboard event related changes in CS.
18-Oct-2003
	- Jorrit fixed CEL for latest event related changes in CS.
	- Jorrit fixed python plugin in CEL.
01-Oct-2003
	- Matze fixed a problem in cel-config after some include dirs have been
	  renamed
21-Sep-2003
	- Keith made the sector param of pcmesh->MoveMesh() optional, so that
	  position alone can be updated.
18-Sep-2003
	- Eric Sunshine removed a bunch of obsolete and useless
	  SCF_EXPORT_CLASS() invocations from the various plugin modules.
	- Eric Sunshine corrected some spelling errors pointed out by Andreas
	  Busch: proprty --> property
16-Sep-2003
	- Eric Sunshine updated the Autoconf files, Jam files, project files,
	  project templates, etc. to reflect the recent cssys+csutil merge.
10-Sep-2003
	- Jorrit fixed SetMesh() so it returns false on failure.
9-Sep-2003
	- Jorrit fixed CEL for latest iPolygonMesh change in CS.
8-Sep-2003
	- Jorrit fixed CEL for latest iPolygonMesh change in CS.
5-Sep-2003
	- Jorrit fixed CEL for latest CS change (python plugin still broken).
1-Sep-2003
	- Eric Sunshine added ranlib check to configure.ac; needed for MacOS/X.
27-Aug-2003
	- Jorrit moved the apps/celtest/data directory to data so that the
	  Python scripts don't have to fetch stuff inside celtest directory.
	- Jorrit extended the python behaviour layer so that you can now call
	  CreateBehaviour with a path in front of the behaviour name.  That way
	  you can place scripts inside other directories.
	- Jorrit moved the physicstest script inside scripts/physicstest. Run
	  it with:
	    bootstrap cel.behaviourlayer.python scripts/physicstest/physicstest
	  (note: do not add the '.py' at the end!).
	- Jorrit moved smallgame to scripts/smallgame.
	- Jorrit fixed CreateEmptyThing() in pcmesh.  It was broken more than
	  seven months ago without anyone noticing :-)
	- Jorrit reverted an accidental slow-down in the dynmove property
	  class.
	- Jorrit added a visible floor to physicstest.py.
	- Jorrit added a forces system to the new dynmove system.  With this it
	  is possible to add forces to objects that are fired exactly once, for
	  a given time, or for the next frame.
	- Jorrit changed the comments in dynmove to reflect that 'ms' is
	  actually not milliseconds but seconds.  Also changed the 'ms' to
	  'seconds'.
25-Aug-2003
	- Jorrit added first version of the pfdynmove property class. This
	  property class supports ODE for physics. This version works but is
	  not complete yet because it lacks correct persistance.
	- Jorrit added iPcRegion->CreateEmptySector(). This way it is easy
	  to create a region that just represents an empty sector (that
	  will be filled later with other objects).
	- Jorrit fixed the CEL python plugin to a recent CS change.
	- Jorrit also extended the CEL python plugin with the new
	  CreateEmptySector() and the dynamics property classes.
	- Jorrit added iPcCamera functions to add the possibility to clear
	  z-buffer and screen every frame. This is used in case the loaded
	  map itself doesn't specify this. Extended the python plugin with
	  these new functions.
	- Jorrit added scripts/physicstest.py which is a small python script
	  that you can use with 'bootstrap' to test the new dynamics
	  property classes. This script is not really 100% ok atm.
21-Aug-2003
	- Eric Sunshine fixed problems in Makefile.in where SRCDIR was not
	  always being respected.
17-Aug-2003
	- Eric Sunshine made the following changes:
	    - Added missing %cflags%, %lflags%, %libs%, and %delaylibs%
	      invocations to the msvcgen (6 and 7) template files.
	    - Added "/D SWIG_GLOBAL" to blpython project files (reported by
	      Chris Matuszewski <ganamide@yahoo.com>).
	    - Corrected name of meta-info file reference in makefile and
	      project files: plpython.csplugin --> blpython.csplugin (reported
	      by Chris Matuszewski).
10-Aug-2003
	- Keith committed patch by Ondrej Hurt to improve key binding
	  handling.
3-Aug-2003
	- Jorrit removed various usages of csVector.
2-Aug-2003
	- Jorrit fixed CEL for latest CS changes (DeleteIndex instead
	  of Delete).
31-Jul-2003
	- Keith fixed a couple of compiler warnings.
29-Jul-2003
	- Jorrit fixed CEL for latest CS changes (iStrVector removal).
27-Jul-2003
	- Keith fixed CEL to at least compile now that csPArray<> has
	  been removed for some reason.
17-Jul-2003
	- Jorrit fixed a stupid bug in the collider creation of pclinmove.
	  It was using a plane instead of a box for the collider. Thanks
	  to Hudbrog <hudbrog@mail.ru> for spotting that.
	- Keith Fulton added support for csPath following in linmove.
13-Jul-2003
	- Keith fixed crash in new collider code for meshes without
	  associated entities.
11-Jul-2003
	- Jorrit replaced the custom celPolygonMeshCube class with the new
	  csPolygonMeshCube from Crystal Space in the pcmove property class.
	- Jorrit greatly simplified pclinmove by using the new
	  csPolygonMeshCube class.
	- Jorrit renamed csPolygonMeshCube to csPolygonMeshBox.
10-Jul-2003
	- Jorrit changed linmove property class to use a beam that is
	  at 5% height of player to check for portal traversal. That is
	  better than using 50% because using 50% might not work correctly
	  for horizontal portals.
	- Fixed linmove so it no longer falls through the floor when going
	  through a portal. The problem was that CEL uses pcsolid which
	  delays creation of csColliderWrapper until pcsolid->GetCollider()
	  is called. But pclinmove doesn't use pcsolid so GetCollider() was
	  never called. pclinmove will now try to find a pcsolid and use
	  that if present.
9-Jul-2003
	- Jorrit optimized CEL by using the new GetNearbyMeshes() function
	  that was added to CS today. This optimization affects
	  iCelPlLayer->FindNearByEntities() and pclinmove.
	- Jorrit added another optimization to stdphyslayer. The engine
	  from the object registry is now remembered and no longer queried
	  every time it was needed.
	- Jorrit optimized cpersist plugin by remembering VFS.
	- Keith fixed a compile error in linmove.h.
	- Keith added UpdateDR method to linmove.  This function takes a
	  csTicks value and calls ExtrapolatePosition with delta relative to
	  the last DR update ticks value in the PC already.  This function
	  allows a server to synchronize positions across many entities as
	  of a point in time, even when those entities are being updated
	  at all different times by clients.
8-Jul-2003
	- Jorrit fixed a bug in pclinmove where it would register collisions
	  with the same object. Now pclinmove ignores collisions from the
	  object which belongs to the mesh that contains pclinmove.
	- Jorrit fixed a bug in pclinmove where it would not correctly do
	  collisions with hierarchical objects. The problem was that
	  GetTransform() was used instead of GetFullTransform().
	- Jorrit fixed a bug in pclinmove where it would call PlaceMesh()
	  AFTER changing the current sector but BEFORE moving the object to
	  the new position. The result was that the PlaceMesh() function
	  would fail to find all neighbouring sectors.
	- Jorrit clarified the InitCD() function in pclinmove. Instead of
	  'top' and 'bottom' the parameters are now called 'body' and 'legs'
	  to indicate that these are the dimensions of the body and the
	  legs of the colliders. Also added a 'shift' parameter so that
	  you can relocate the collider if the 0,0,0 origin of the actor
	  mesh is not at the bottom-center of the model.
	  Note that this 'shift' feature doesn't work yet! So keep it
	  at 0,0,0 for now.
	- Unfortunatelly all bug fixes above still don't prevent smallgame.py
	  from falling through the floor as soon as a portal is traversed.
7-Jul-2003
	- Jorrit received a patch from Steve Cook (steve.cook1@excite.com)
	  for an AI pathfinding property class. I haven't yet got time
	  to really look at it but I cleaned it up slightly. Still needs
	  a lot more cleanup though. I also seperated the public include
	  file so that you can actually include from it.
	  This is untested code (from my point of view at least).
	- Jorrit did more cleanups to the new AI pathfinding class and
	  also added a small testcase to celtest.
	- Jorrit modified the pcsolid property class so that it use
	  csColliderWrapper to create the collider. That way pclinmove also
	  works with pcregion and other users of pcsolid.
	- Jorrit extended smallgame to use pclinmove correctly. Still a few
	  bugs here and there.
	- Eric Sunshine made the following changes (100% untested):
	    - Added msvcgen facility to project.  It is now possible to
	      generate MSVC6 and MSVC7 project files in an automated fashion by
	      invoking the new `msvcgen' Makefile target.
	    - Moved the .csplugin files out of the root directory and into the
	      specific plugin directory where each one belongs.  Having them in
	      the root directory was incorrect.
	    - Upgraded the makefile so that it copies the .csplugin files
	      alongside the .dll/.so file at build time.
	    - Upgraded the MSVC project files so that they copy the .csplugin
	      files alongside the .dll.
	    - Upgraded Makefile so that it is possible to build the project
	      outside of the source directory.  (This was already possible with
	      the Jam build system.)
	    - Removed Makefile and replaced it with Makefile.in.  Makefile is
	      now generated at configure time.
	    - Fixed clean targets in Makefile and Jamfile to be more thorough.
	      Added distclean target.  (This target, in both Makefile and
	      Jamfile, still misses at least one file, though: the Jamfile
	      hack which is created when building outside the source directory.
	      I don't care for this hack, and would prefer to create Jamfile
	      from Jamfile.in at configure time, but Matze prefers the hack, so
	      I left it alone.)
	    - Fixed formatting of .csplugin files.
	- Eric Sunshine made the following additional changes:
	    - The `msvcgen' Makefile target now passes --xml-protect to
	      msvcgen.pl when building MSVC7 project files.
	    - The cel.sln (MSVC7) and cel.dsp (MSVC6) workspace files are now
	      also generated by the `msvcgen' makefile target.
	- Eric Sunshine relocated cel.sln and cel.dsw back to the root
	  directory (where they were prior to the last change) after figure out
	  a simple way to have the workspace files reside in a location
	  different from the project files, even when building with msvcgen.
6-Jul-2003
	- Jorrit fixed the problem with GetPythonObject(). It now calls
	  Py_INCREF() on the returned python object so that it is
	  reference counted correctly.
4-Jul-2003
	- Jorrit added iCelBehaviour->GetInternalObject(). This slightly
	  dirty function is intended for implementations of behaviour layers
	  so they can get the internal object that represents the behaviour.
	  For example, in case of the python behaviour layer this will return
	  a pointer to the Python object handle (PyObject pointer). This is
	  a rather dirty solutions. Feel free to suggest me cleaner approaches.
	- Using the above function Jorrit added a GetPythonObject() function
	  which you can use from inside Python scripts to get access to the
	  real Python object that belongs with a Python iCelBehaviour.
	  This avoids the global variable 'room' in the smallgame.py script.
	- Jorrit removed the 'name' parameter from celCreateCamera() in the
	  Python behaviour layer. It is not needed.
	- Jorrit added support for the pclinmove property class in the Python
	  behaviour layer.
	- Jorrit added support for the pcinput property class in the Python
	  behaviour layer.
	- Jorrit cleaned up blcel.i a bit.
	- blcel.i: scfQuery_iPcCamera, scfQuery_iPcMesh, scfQuery_iPcInventory,
	  and scfQuery_iPcTimer do IncRef() now.
	- Protected most IncRef()'s in blcel.i with if's.
	- Jorrit fixed blcel.i for pckeyinput and pclinmove.
	- Jorrit added names to the meshfactories in celtest so they are
	  not loaded again all the time.
	- Report: GetPythonObject() is not yet working properly. It causes
	  weird crashes later.
3-Jul-2003
	- Jorrit cleaned up the python plugin a bit.
	- Box in smallgame now has gravity.
1-Jul-2003
	- Jorrit renamed celpython to bootstrap. The idea is that the
	  'bootstrap' tool will be a generic utility with which you can
	  take any behaviour layer plugin and create a basic entity that
	  will execute a behaviour from that plugin. This can be used to
	  fire up a game using CEL.
	- 'bootstrap' now basically works.
	- Jorrit changed the celCreateEntity() function in the blcel.i
	  swig wrapper to use an iCelPlLayer argument instead of an
	  iObjectRegistry. That's a lot more efficient and you can easily
	  get the current iCelPlLayer by using the 'physicallayer_ptr'
	  in python scripts.
	- Jorrit changed a few other celCreate... functions to also accept
	  an iCelPlLayer instead of an iObjectRegistry.
	- Jorrit changed more functions like that. Also renamed all Create
	  property classes to start with celCreate....
	- Jorrit renamed LoadBehaviour() to CreateBehaviour() in python.
	  Also changed the object registry parameter to iCelBlLayer instead.
	- Jorrit added celRegisterPCFactory() to the python behaviour plugin.
	  With that function it is possible to load property class factory
	  plugins if they don't already exist.
	- Jorrit replaced %addmethods with %extends to avoid swig warnings.
	- Jorrit added scripts/smallgame.py which can be used together with
	  bootstrap. Doesn't do much yet.
	- Jorrit removed the code from celCreateCamera (in python behaviour
	  layer) to set the region. This should be done in the python script
	  and not there. Also removed the 'world' parameter since this is
	  no longer needed.
	- The smallgame.py script now loads partsys and displays it.
29-Jun-2003
	- Eric Sunshine replaced the outdated mk/autoconf/progver.m4 with an
	  up-to-date version from the Crystal Space project.  This fixes the
	  Swig version check in the configure script which was failing.
27-Jun-2003
	- Jorrit moved celtest to apps/celtest.
	- Jorrit added apps/celpython. The purpose of this application will
	  be to have a very thin app that only initializes CEL and fires
	  up a python script then. The python script will take over from there
	  and set up the game entities and everything related to the game.
	  Note that this does not work correctly!
	- Matze added Jam rules to rebuild the swig files
	- Eric Sunshine removed several outdated and unused .m4 macro files
	  from cel/mk/autoconf.  This fixes the problem where the Swig version
	  check failed to emit a meaningful result.  The problem was that a
	  much older version of CS_CHECK_PROG_VERSION() in vd.m4 was overriding
	  the newer version in progver.m4.  (Unfortunately, progver.m4 itself
	  is employing bogus sed expressions, so the version check is still
	  inaccurate, but that is a different issue which will be addressed
	  separately.)
26-Jun-2003
	- Jorrit added iCelPlLayer->GetBehaviour() as a convenience function
	  to directly get the behaviour associated with an entity ID.
	- Jorrit performed a huge reorganization of the directory structure
	  used inside CEL itself. Here it is now:
	  	- include
		- plugins
			- stdphyslayer (formerly plimp)
			- propclass (formerly pf dir)
				- ... various property classes
			- persist
				- standard
			- behaviourlayer
				- test (bltest)
				- python (blpython)
		- celtest
	- Jorrit renamed include/pf to include/propclass. This will break
	  all games that use CEL. The change is easy though.
	- Jorrit renamed include/bl to include/behaviourlayer and
	  include/pl to include/physicallayer.
	- Keith fixed up the msvc7 project files to use correct dirs.
25-Jun-2003
	- Jorrit ported pslinmove from the PlaneShift project to CEL. The
	  code is currently mostly unchanged except for a few things:
	    - The code no longer assumes that the mesh is a sprite. It should
	      now work for objects that don't have actions.
	    - It uses the reporter (Report) to report errors instead of
	      printf.
	    - The cheat Warning call is currently disabled because CEL has
	      no alternative for that yet.
	  The code is untested and there are still a few things I'd like to
	  do with it to make sure it is general enough to be used in games
	  other than PlaneShift.
	- Jorrit reports: Conforming to the C++ standard I replaced all NULL
	  with 0 (like was done in CS some time ago).
	- Jorrit fixed scripts/printer.py so that it works again.
24-Jun-2003
	- Jorrit fixed the CEL python plugin to latest CS.
	- Jorrit made celtest use OpenGL by default.
	- Jorrit removed the <name> from the .csplugin files.
	- Matze updated jam rules from CS
20-Jun-2003
	- Jorrit fixed CEL for recent region related CS changes.
5-Jun-2003
	- Keith Fulton fixed a bunch of broken things resulting from the
	  CS SCF changes today.  Thanks to Andrew Craig for figuring out
	  these fixes.
4-Jun-2003
	- Keith Fulton fixed two places in CEL for the new CS iterator
	  functions.
27-May-2003
        - Boyan implemented new iScript interface extension methods
	- Matze updated jam rules and moved over all improvements made in CS.
25-May-2003
	- Jorrit changed pcsolid property class to use GetObjectModel() for
	  the CD mesh instead of the deprecated SCF_QUERY_INTERFACE.
16-May-2003
        - Boyan added celFindNearbyEntities() function
12-May-2003
	- Boyan added some error handlings to blpython and fixed bug in
	  celCreateEntity.
10-May-2003
	- Boyan updated Python plugin to use low level Python API.
09-May-2003
	- Boyan updated blpython plugin:
	   -SWIG 1.1p5 -> SWIG 1.3.19
	   -added scfQuery_iPcMesh
	   -added scfQuery_iPcTimer
06-May-2003
	- Boyan fixed wrong iterator cycle in FindNearByEntities:
	  while (objit->Next ()) changed to while (!objit->IsFinished ()).
30-Apr-2003
	- Matze updated jamrules and autoconf macros to latest CS rules.
28-Mar-2003
	- Fixed Python plugin in CEL for latest CS changes.
25-Mar-2003
	- Fixed Python plugin in CEL for latest CS changes.
14-Mar-2003
	- Jorrit Tyberghein made a change in CS allowing more accurate
	  mesh selection. pcmeshsel property class now uses this.
11-Mar-2003
	- Keith Fulton committed a fix by Andrew Mann to handle regions
	  correctly, changing engine->GetMeshes()->Remove(mesh) to
	  engine->RemoveObject(mesh).
28-Feb-2003
	- Matze Braun fixed cel.cex to not report deps which aren't needed.
	  Esp. -lcsengine isn't needed!
26-Feb-2003
	- Matze Braun added configure to cvs and made the check for
	  CrystalSpace looking for version 0.96 and above
25-Feb-2003
	- Matze Braun fixed jam install rules
11-Feb-2003
	- Release of CEL 0.96r001.
24-Jan-2003
	- Eric Sunshine updated Makefile to work correctly with new -makevars
	  fragments from cs-config which might now contain references to
	  makefile variables such as $(OUT), $(CFLAGS.I), $(LFLAGS.L), etc.
23-Jan-2003:
	- Keith Fulton added a SetID to iCelEntity so it is possible
	  for an external app to override the CS_ID assigned to an
	  entity.  This is necessary when objects across networks
	  have different lifespans, to prevent reuse of the same CS_ID
	  to represent different objects and confusion of the
	  underlying entities.
	- Matthias Braun then reverted this change based on design
	  principles. Jorrit agrees.
	- Jorrit then put back Keith's patch after discussion with Matthias.
	  It seems to be the only fast solution to solve the problem right now.
	  It is a hack though and another solution MUST be found.
	  Personally I feel most for letting NumReg return numbers that
	  are never reused. Perhaps requires some thinking.
21-Jan-2003:
	- Fixed a ref leak on 'view' in the engine property class.
	  The 'new csView' wasn't properly embedded in a csPtr<iView>.
17-Jan-2003:
	- Keith Fulton fixed circular refcount issue which prevented all
	  prop class factories from ever being deleted.
	- Keith Fulton added many specific error msgs for things which
	  could go wrong with CEL persistence loading on the client.
	  Added a Report function to all files involved which should
	  probably be in a libary, but he cannot create the library on
	  on Windows himself.
15-Jan-2003:
	- Fixed CEL for latest CS changes (growing arrays).
	- In the mean time fixed some memory leaks while doing that.
13-Jan-2003:
	- Fixed the python plugin.
07-Jan-2003:
 	- Keith Fulton added a SetReverseAction convenience function to
	  iPcMesh.
05-Jan-2003:
	- Keith Fulton changed iPcCamera to not always require an iPcRegion.
30-Dec-2002:
	- Matze fixed several refcount problems introduced by the change to
	  csRef. But still a leak here :-/
24-Dec-2002:
	- Wouter Wijngaards fixed a small compilation error in pf/mesh/
	  meshfact.cpp, introduced by the separation of Engine and Thing
	  in CS.
01-Oct-2002:
	- Keith Fulton added Yaw (Y-axis) adjustment to iPcCamera.  Yaw,
	  Pitch and Roll together change the camera viewing angle without
	  affecting the LookAt vector.
20-Sep-2002:
	- Patch from Michael Dale Long for improved Python support
		- Added embedded iScript interface to celBlPython.  Now
		  applications can get access to the underlying scripting
		  interface if one is available.
		- Modified CreateBehaviour() so it passes an iCelEntity
		  instead of an iCelEntity * to the behaviour constructor.
		  This frees the scriptwriter from having to wrap the pointer
		  before using it.
		- Added some csQueryRegistry_* functions.  This is to
		  facilitate a Python csQueryRegistry() function that performs
		  CS_QUERY_REGISTRY() type lookups.
		- Added the LoadBehaviour() method to iCelEntity to simplify
		  loading and setting behaviours in scripts.  Note that
		  actions in the behaviour may or may not take affect in the
		  running environment depending on how you run the interpreter.
		- Added celCreate* (i.e. celCreateEntity, celCreateCamera) to
		  simplify creation of these objects in a script.
		- Removed iCelBehaviour::SendMessageV() wrapper and added a
		  wrapper for SendMessage() which excludes the varargs.
		- Added celQueryPC_iPcRegion() to facilitate a Python
		  celQueryPC() function that performs CEL_QUERY_PROPCLASS()
		  type lookups.
		- Added scfQuery_iPcRegion() to facilitate a Python
		  scfQuery() function that performs SCF_QUERY_INTERFACE()
		  type lookups.
		- Added wrappers for iPcRegion, iPcCamera, iPcMeshSelect,
		  iPcMesh, iPcTimer, iPcSolid, iPcGravity, iPcMovable,
		  iPcInventory, and iPcCharacteristics.  Each one has a
		  corresponding celCreate* function.
17-Sep-2002:
	- Fixed CEL for the new csPtr(csRef) constructor in CS.
13-Sep-2002:
	- Did a full smart pointer fix for entire CEL.
20-Aug-2002:
	- MatzeB removed broken automake system and replaced it with a Jam
	  and autoconf based one
19-Jul-2002:
	- MatzeB fixed indentation and an LPVOID issue in engfact.cpp.
	- Readded the firstperson camera mode that I accidently removed
	  yesterday by applying's Anders patch.
18-Jul-2002:
	- Several months ago I received a patch from Anders Stenberg.
	  This patch does the following:
	      - Added the blcel.physicallayer_ptr variable so that python
	        scripts can access the pl more easily.
	      - blpython.i contains lots more interfaces to CEL stuff
	        (entities and property classes).
	      - Getting a description string of a property. Will be useful
	        for stuff like entity editors/viewers (within a level
		editor for example).
	      - Enable the subclass to just "register" a property, bind it
	        to one of its members, and then all handling of
		SetProperty/GetProperty is done "automatically". (Of course
		it can be overloaded if you want some special voodoo. For
		example, you can handle just one property with some special
		stuff, and release it to celPcCommon::SetProperty in all other
		cases.)
	      - pcregion uses the new system described above.
2-Jul-2002:
	- Fixed CEL for the latest CS changes with regards to the _FAST
	  macros.
11-Jun-2002:
	- pcmovable property class now fires a callback with ID
	  CEL_PCMOVEABLE_PROPERTY_POSITION whenever the position is changed
	  in preparation for pclocater.
10-Jun-2002:
	- Added first person camera mode from amin
5-Jun-2002:
	- Added CreateEmptyEntityList() to the pl in CEL.
28-May-2002:
	- Fixed include for polymesh.h.
	- pcmesh property class now fires a callback with ID
	  CEL_PCMESH_PROPERTY_MESH whenever the mesh changes.
22-Apr-2002:
	- Fixed several bad bugs in NumReg:
	    - In Register() a 'memset' was done with only
	      (newsize-listsize) bytes but this needs to multiply
	      by the size of (void*).
	    - 'memset' was also done on the OLD value of 'list' so this
	      could potentially corrupt memory if a reallocation caused
	      in a new pointer.
	    - 'freelistend' points to the first free item in 'freelist'.
	      However the loop in Register() was first doing 'freelistend++'
	      which means there was a gap.
15-Apr-2002:
	- Matze removed some warning printfs
30-Mar-2002:
	- Matze added an extra parameter to pcmesh->SetAction. If resetaction
	  is false like the default it doesn't set the action if it's the same
	  like the current action
26-Mar-2002:
	- Matze added a RemoveEntity callback, that makes it possible for the
	  persistance layer contexts to only keep soft refs to entities
	- Applied a patch from Loic Dachary, it adds autoconf support to cel
	  which brings a nice install and build system (on platforms that
	  support autoconf/automake). He also included the license into some
	  headers that missed it... I just replaced the COPYING file by a
	  LGPL one...
6-Mar-2002:
	- Matze made the internal mapping of persistance (ids from localhost
	  to ids from other host) accessible through some functions in
	  iCelPersistContext. You can now also choose if mapping should be
	  used. By default mapping is performed while loading a file and not
	  while reading one.
5-Mar-2002:
	- Added iPcCamera::GetFollowPos() and GetMode().
	- Matze fixed pckeyinput for latest CS changes
28-Feb-2002:
	- Matze changed persistance to not IncRef entities while reading,
	  everyone who reads an entity with persistance has to IncRef this
	  itself now. On the other hand this solves an issue when multiple
	  persisted things refer to the same entity. Note that this is only for
	  datatbuffers, the LoadEntity function still returns an IncReffed
	  entity.
	- Matze added Clear to persistace context to clear the internal hash
	  tables of the persistance plugin.
27-Feb-2002:
	- Matze fixed a wrong return.
	- Matze removed the persistance Set(int) function.
	- Fixed the python behaviour layer.
	- Added some sanity checks to NumReg code using CS_ASSERT.
	- fixed a bug in camera persistance
26-Feb-2002:
	- improved followmode. It now accepts 2 relative positions:
	    -the position of the camera relative to the mesh
	    -the position of the point the camera looks at, rel. to the mesh
21-Feb-2002:
	- Renamed celData->Set(bool) to SetBool() to avoid problems on
	  platforms that don't have the bool type.
20-Feb-2002:
	- Fixed a bug in celPcRegion::SetWorldFile() it would delete
	  its own copy in some cases.
	- Did some small reformatting of history.txt.
19-Feb-2002:
	- jtarbox added a rotational camera mode a few days back and then
	  changed it so that the distance from the object can be changed as
	  well.
12-Fev-2002:
	- Matze changed order of entity saving/loading. behaviour is the last
	  processed piece now.
20-Jab-2002:
	- Matze changed ref behaviour for Region: Camera is taken ref to
	  region now. This fixes camera loading.
17-Jan-2002:
	- Matze fixed several bugs/cleaned up/commented in ID registry
	- introduced celDataBufHelper class to make the Save/Load functions
	  easier
	- more fixes, persistance at least doesn't crash anymore now
15-Jan-2002:
	- Fixed more of the bugs I introduced and cleaned stuff up alot
	- persistance is working now, but some property classes seem to be
	  buggy
	- reenabled the csMemFile buffer, after fixing a bug in CS
14-Jan-2002:
	- Matze changed persistance plugin, to accept streams thourgh iFile
	  interface.
	- Also changed persistance to use ID's instead of entity names
	- Added some macros that help debugging save/load functions
	- Saving seems to work, while loading fails for some reasons... I
	  suspect a bug in csMemFile (I'll investigate tomorrow), but also
	  when reading files directly from disk something goes still wrong...
7-Jan-2002:
	- Updated CEL for new CS.
2-Jan-2002:
	- Matze added support for ID's:
	     Each Entity is assigned a unique ID now, a list of ID's is
	     stored in the PhysicalLayer now, so this also has the nice
	     effect, that you can check if all entities are properly removed
	     at destruction time.
	- Matze added CEL_DEBUG constant.
31-Dec-2001:
	- The new 'pcgravity2' property class works a lot better now with
	  the new CollidePath() function in CS iCollideSystem. Friction
	  and proper collision response still have to be implemented though.
	- Again improved gravity handling a little.
	- Removed the old celPcGravity and renamed celPcGravity2 to
	  celPcGravity.
	- Renamed iPcGravity::IsOnGround() to IsResting() to indicate if
	  an object is resting.
	- Added iPcGravity::ApplyPermanentForce() and
	  iPcGravity::ClearPermanentForces() to work with permanent forces.
	- Added iPcGravity::SetActive() and IsActive() with which you can
	  activate/deactivate physics handling for that object temporarily.
	- Added iPcGravity::ResetSpeed(). This will leave the forces alone
	  but reset the speed to zero.
	- iPcGravity::ClearForces() will no longer reset the speed.
29-Dec-2001:
	- Philip Wyett updated MSVC project files for CEL.
28-Dec-2001:
	- Renamed 'pcinput_' messages to 'pckeyinput_'.
	- Implemented persistance in pckeyinput property class.
	- Added the first version of the 'blpython' plugin. This is
	  a general behaviour layer for python scripting. It compiles
	  and links but it otherwise not functional.
	- Further work on the blpython layer. It now actually implements
	  iCelBlLayer correctly and also returns iCelBehaviour instances.
	- Added GetName() to iCelBlLayer. Behaviour layers can now have
	  names. This allows CEL to distinguish between different behaviour
	  layers that may be loaded at the same time.
	- Added a registry of behaviour layers to the physical layer.
	- Added GetBehaviourLayer() function to iCelBehaviour.
	- Made the persistance plugin independent from the behaviour
	  layer that is chosen by also writing and reading the name
	  of the behaviour layer. This allows persistance to work correctly
	  if multiple behaviour layers are in memory (and behaviours from
	  various behaviour layers are used).
	- The python behaviour layer plugin is now actually working and
	  being used for two small entities.
	- Started work on a new pcgravity property classes (for now
	  called pcgravity2 until it is working fine and can replace the
	  old pcgravity). Celtest already uses this new property class
	  for a all entities and it seems to work a bit already.
	  Note that it is highly unfinished though!
27-Dec-2001:
	- Added a string registry to the physical layer. This can be used
	  for various things but in the first time it is going to be used
	  for a generic property setter for all property classes. CEL
	  convention on string names will be 'cel.xxx.yyy.zzz'. With 'xxx'
	  equal to the type of string (i.e. 'property'), 'yyy' equal to the
	  scope of the property (i.e. 'pccamera') and 'zzz' the name of the
	  given type (i.e. the property name). An example:
	  'cel.property.pccamera.startsector'.
	- Extended iCelPropertyClass with a number of methods for a generic
	  property setter. This will allow string based scripting languages
	  to access all property classes without requiring knowledge
	  of the SCF interface that is specific to that property class. Of
	  course it will be less efficient but the efficiency loss is solved
	  a bit by using the string registry.
	- celPcCommand already provides empty implementations of all
	  these new classes so that existing property classes don't have
	  to be modified. None of the property classes currently implement
	  the new interface though.
	- Implemented the new property interface in celPcRegion. It now
	  supports the following three properties:
	    cel.property.pcregion.worlddir
	    cel.property.pcregion.worldfile
	    cel.property.pcregion.regionname
	- Added support for csVector3 as a type for properties in
	  iCelPropertyClass.
	- Added a PerformAction() function to iCelPropertyClass which uses
	  the same system as the properties in iCelPropertyClass and allows
	  scripting languages to perform generic actions. Convention for
	  action names is:
	    cel.action.pcregion.load
	  Actions are included with properties in the rest of the API.
	  So you can also perform the following functions on actions (note
	  that these functions have been renamed):
	    - HasPropertyOrAction()
	    - GetPropertyAndActionCount()
	    - GetPropertyOrActionID()
	    - GetPropertyOrActionType() (new function)
	- Added celPropertyActionType enumeration type.
	- Seperated celData and celDataType from persist.h into its own
	  pl/datatype.h.
	- There were already three places where some kind of datatype
	  was defined:
	    - persistance (celData and celDataType).
	    - iPcProperties (CEL_PROPERTY_... define).
	    - The new properties in iCelPropertyClass (type_...).
	  Rationalized this by using the celData and celDataType definitions
	  everywhere. To do this celDataType had to be extended with csVector3.
	- Updated the persistance layer to also support csVector3 directly
	  now (CEL_DATA_VECTOR3). Updated several of the property classes
	  load/save functions to use csVector3 instead of three floats.
	- Added CEL_DATA_ACTION to celDataType. This is not supported by
	  the persistance layer though and only needed for iCelPropertyClass.
	  Added celData->SetAction() to set an action.
	- Fixed a memory leak in the pcinput property class which was
	  not deleting the event handler.
	- Fixed a memory leak in celtest. The actor entity was not added
	  to the room inventory.
	- Changed persistance in pcgravity to use the new CEL_DATA_VECTOR3.
	- Fixed a few memory leaks in bltest.
	- Rationalized the SendMessage names to the convention:
		'pcbla_msgname'.
	  In particular for pcinput this means that some changes are
	  needed. Instead of +run (and similar) it will now be
	  	pcinput_run1 (and pcinput_run0 for disable).
	  This change was done to make the name compitible with scripting
	  language routines.
26-Dec-2001:
	- Added new iPcProperties property class. This is a general property
	  class to store string, float, long or boolean properties.
	  The message prop_setproperty is sent to the behaviour layer when
	  a property is set. The message prop_clearproperty is sent when
	  a property is cleared. The index of the property is given as
	  a parameter.
	- Added SetRectangle() to iPcCamera. With this you can set the part
	  of the screen that this camera will use. Also implemented
	  persistance.
	- Added persistance for the camera mode in iPcCamera implementation.
20-Dec-2001:
	- Matze added cel.cex, which makes cel usable together with cs-config.
16-Dec-2001:
	- Matze fixed a memory leak: pllayer was holding references to
	  factories and these to pl. Now only pllayer holds the ref.
	- Matze added a mode switch to camera property, in follow mode the
	  camera, stays behind it's assigned mesh and even does collision
	  detection.
14-Dec-2001:
	- Matze reports: keyboard input works now, but for some strange
	  reason CS transmits each key multiple times, and on the other side
	  when pressing a key only short it isn't transmitted sometimes...
	- Matze cleaned up celtest a bit.
12-Dec-2001:
	- Added iCelPropertyChangeCallback interface. Using this it will
	  be possible to listen to property changes in all property classes.
	- Extended iCelPropertyClass with methods to remove and add
	  callbacks.
	- Added pf/common directory containing common code for all property
	  class implementation. There is now a celPcCommon class which can
	  be used by a property class implementation to make things easier.
	  This celPcCommon already implements the two functions above
	  to handle the callbacks. In addition it also implements a
	  function to fire a callback.
	- Changed all current property class implementations to inherit
	  from celPcCommon.
	- Nothing is using this callback system at the moment.
	- Matze started work on keyboard input.
10-Dec-2001:
	- Matze added #defines for template Factories, you can now easily use
	  CEL_DECLARE_FACTORY(bla) and later CEL_IMPLEMENT_FACTORY(bla). Also
	  changed behaviour to register exact 1 Factory for each Property
	  class, which reduces the need for all the factory pointers.
		TODO: -Do the same for behaviour factory
		      -change FindPropertyClassFactory to use hash table to
		       speed the thing up.
		      -unreleased instances because some plugins implement
		       multiple components (at least I think it's because of
		       that)
7-Dec-2001:
	- Fixed for latest CS.
20-Nov-2001:
	- Added a minimal test level to make debugging easier.
	  You can enable this minimal test by defining MINIMAL as 1
	  in celtest.
	- Fixed a bad bug in the persistance loader. It was acccidently
	  adding every property class twice to the entity.
	- Fixed a ref count leak on entities in the inventory loader.
	- Fixed a bug in persistance layer which prevented persistance
	  from working properly. It turned out that the entity was not
	  set for the property classes.
	- Fixed a bug in the mesh loader. It would not correctly call
	  DeferUpdateLighting() after loading from the persistance layer.
	- Persistance is now ALMOST working. For simple situations I managed
	  to get it working fully.
	- Implemented correct persistence for pccamera so that the current
	  position of the camera is also remembered.
	- Fixed a crash bug in cel with persistance and inventory.
	  Related to ref counting again.
19-Nov-2001:
	- CS now has a feature to remove an object from the engine in general.
	  The plimp Cache will use that new function so that the extreme
	  hack I made yesterday can be avoided.
	- With some additional CS fixes there are now only two objects
	  (one material and one texture) that leak when celtest cleans
	  up game entity.
	- All leaks are now gone.
	- Philip Wyett updated MSVC project files for CEL.
18-Nov-2001:
	- Debugging with DG_TYPE for 'celEntity'.
	- Added 'c' key to clear game (debugging too).
	- Implemented an extreme hack in the cache. It turns out that you cannot
	  simply remove factory wrappers by doing DecRef() on them. You need
	  to remove them from the engine. I have to find a better solution
	  for this.
16-Nov-2001:
	- Implemented a cache in the physical layer. This cache will hold
	  objects of type iBase and keeps a reference to them. This cache
	  can be used to store pointers to objects that are useful in the
	  game and that you don't want to be removed while the game is
	  in progress even if the object is not used at some specific point.
	  A good example is mesh factories. Even though there may be no
	  mesh object using a particular mesh factory you still do not
	  want to delete the loaded mesh factory. Otherwise there would be
	  a delay when the factory is suddenly needed.
	- 'pcmesh' now uses this cache to store a reference to the factory
	  that is used. In addition every mesh that uses a mesh factory
	  will also increase the ref count. Added CleanCache() to celtest
	  so that the cache will be cleaned if a new game starts. This
	  solves another memory leak with the mesh object factories this
	  time.
	- celEntity (as implemented in plimp) is now also a csObject.
	- Added QueryObject() to iCelEntity.
	- Added more DG_LINK's to link more objects with each other.
	- Fixed a few links now that iCelEntity no longer is an iObject.
15-Nov-2001:
	- Fixed a memory leak in 'pctooltip' and 'pctimer' with event queue.
	- Added lots of DG_... lines to help debugging.
	- Fixed a bad memory leak in pcgravity. It was leaking the list
	  of entities returned by FindNearbyEntities().
	- Fixed huge memory leaks with the property classes caused by
	  the event handlers being embedded interfaces of the property classes.
	  The problem is that the event handlers were being unregistered
	  in the destructor of the property class. But since the event
	  handler was part of the property class and since the event queue
	  increments the reference of the event handler the ref count could
	  never get zero so the property class never got deleted.
	  Fixed this by making the event handlers seperate objects. This
	  means that additional references on them will not cause a higher
	  ref count for the property class.
	- Enabled persistance again (loading). Still crashes though.
	- Remove the region in pcregion::Unload().
	- Fixed another big memory leak in the gravity property class.
	  It was leaking pcsolid instances.
14-Nov-2001:
	- Few changes for debugging using the new graph debug tool in CS.
13-Nov-2001:
	- Modified pcmeshsel property class to work through
	  the pccamera property class instead of using iCamera
	  directly. This also fixes the bug with saving of the
	  pcmeshsel property class.
	- Added an event handler to pccamera. It is now responsible for
	  drawing and moving the camera. celtest no longer contains code
	  for this. In the future it will be possible to say how the camera
	  should move (first person, third person, fixed camera position,
	  user defined movement strategy, ...).
	- Extended pcregion with the ability to initialize a pccamera to
	  a given starting position. Also extended pcregion with the ability
	  to go to a named starting position as opposed to only the default
	  one.
	- 'celtest' no longer has a pointer to the default view. It doesn't
	  even know what entity holds the view or camera.
	- Classic persistance module now writes a marker 'CEL0' in front
	  of the saved file. That makes it easier to recognize saved CEL
	  files.
	- Fixed the crash at exit in CEL by actually fixing a bug in CS :-)
	- Use the reporter for error reporting in classic persistance module.
	  Only for loading at this moment and only for the persistance module
	  itself. The individual property classes do not yet use the
	  reporter to report their errors.
	- Fixed a bug in pcregion loader.
	- Fixed a bug in pcmesh loader. Forgot to save the factory name
	  and properly initialize the mesh.
	- Implemented loading in CEL persistance module. At this moment loading
	  itself seems to work (i.e. it does not crash). However celtest
	  crashes right after loading so I have to investigate why.
	- Fixed a bad bug in pcmesh::SetMesh().
	- Added loading/saving of position of mesh. This doesn't fix the
	  loading problem though. Loading still crashes.
12-Nov-2001:
	- Created new cpersist plugin. This plugin will implement
	  'classic persistance' for CEL. This plugin does not do
	  anything at the moment except compile and register.
	- Philip Wyett updated the MSVC project files for the new
	  persistance plugin.
	- Added GetName() to iCelBehaviour. This is needed to be able
	  to save the associated behaviour name in the persistance layer.
	- Added GetFactoryName() to iCelPropertyClass. This is needed
	  to be able to save the associated factory name in the
	  persistance layer.
	- Worked on persistance a lot now. All property classes now have
	  full support for loading and saving (untested).
	- Implemented saving in the classic persistance plugin.
	  At this moment it doesn't work yet (crashes) and I also need
	  to implement a system to avoid saving the same entity or
	  property class twice or more then once.
	- Added 's' key to save the current world to 'savefile'. Since
	  saving in general does not work yet I advice you NOT to press
	  this key :-)
	- Fixed a bug in implementation of celDataBuffer. It was not
	  properly allocating new entries when the buffer growed.
	- Fixed handing of saving NULL property class or entity. Now
	  a marker is always saved which says what will follow. ENT0
	  is a NULL entity pointer. ENTI is the definition of an entity.
	  ENTR (not used yet) will be a reference to an entity.
	  Similar for property classes: PCL0, PCLI, and PCLR.
	- Fixed a bad bug in inventory saving.
	- The three fixes bug make sure that at least saving doesn't crash
	  anymore. However there is still too much information saved as
	  duplicate entities/property classes are not detected.
	- The current implementation of CEL/persistance assumes that
	  all entities have a unique name. I have to think more about this
	  issue (like having a unique name generation utility or something)
	  but in the mean time I fixed celtest so that the boxes have
	  a distinct name and also fixed bltest so that it only looks at the
	  first three letters of the name to see if an entity is a box (here
	  again we need a different way to detect this, maybe object classes?).
	- Entities and property classes are now only saved once. The second
	  time the same entity or property class comes back in the save
	  tree a reference is used.
11-Nov-2001:
	- Even though persistance is not operational yet I already
	  decided on a redesign. I removed the notion of 'named data
	  entries'. Everything works positional. It is now much simpler
	  and also allows for smaller persistant data. Additionally
	  I added the notion of a serial number for a databuffer. This
	  is useful for testing what version we are trying to load
	  and depending on that either rejecting the load or else trying
	  to convert the old data.
10-Nov-2001:
	- Further work on persistance. Not functional yet.
9-Nov-2001:
	- Fixed CELTEST for latest changes in CS (CreateEnvironment...).
	- Started working on pcregion property class. This property class
	  represents a region in the world.
	- 'pcregion' will automatically create individual entities for
	  all meshes in a world. These entities will get a pcmesh
	  and pcsolid property class so that the collision detection system
	  works nicely. Note that there is a crash at exit in the destruction
	  of this. I have to investigate this later.
	- Changed celtest to use the new pcregion property class. It will now
	  load the partsys level from CS and put the entities there (boxes
	  and objects). Note that there are still several problems.
	  The 'pcmovable' does not yet support moving through portals so
	  don't try to drag an object out of the starting room yet or it
	  will drop through the floor.
	- Fixed a bug in the FindNearbyEntities(). Now it only returns
	  entities for meshes that are actually visible. Without this fix
	  it was very easy for objects to become stuck after too much
	  box/object manipulations. Now it is still not perfect but a lot
	  better already. An object in the box no longer affects collision
	  detection of objects not in the box.
8-Nov-2001:
	- Started work on persistance. Nothing works yet. Created
	  iCelDataBuffer which the persistance system will use to save/load
	  information.
	- Slightly changed prototype of Load() and Save() so that they
	  now expect a pointer to the data buffer on which they must operate.
	- Added stub code for persistance to all property classes.
	- Fixed a bug in the gravity property class which could cause
	  celtest to hang on very fast systems.
	- Added iCelPersistance interface.
6-Nov-2001:
	- Started work on 'pcgravity' property class (in 'pfmove' factory).
	  This property class is an almost exact copy of the movable property
	  class from Dreams Eternal. It implements primitive gravity
	  for objects. It also has an ApplyForce so you can apply a force
	  in any direction.
	- Added 'Move' to iPcMovable which will do a relative move.
	  This routine will also correctly update the current sector if
	  a portal is traversed.
	- Cleaned up celtest a little.
	- Right clicking on a box opens/closes it (that was already the
	  case yesterday). If you now right-click on the box to open it
	  all objects that are in the box will jump out (using a force
	  and gravity).
	- Added a timer property class to 'pftools'. The message
	  'timer_wakeup' will be sent to the Behaviour.
	- The timer is now used by the box so that the entities in the box
	  are thrown out of the box one by one. Gives a nice effect :-)
	- Added a few more objects and boxes to celtest.
	- Note that gravity is not perfect yet. It is rather easy to get
	  everything stuck. It would be nice to have the ability to push
	  objects while dragging them.
	- Removed the now obsolete conf_mingw.mak.
5-Nov-2001:
	- Added a box mesh object for celtest.
	- Made four dummy objects visible. Changed selection code in
	  celtest so that the room behaviour will now control selection
	  and dragging of all other objects.
	- Added conveniance iPcMesh::SetAction() function which will
	  work if the mesh is a 3D sprite.
	- Added 'box' behaviour to 'bltest'.
	- Fixed a bug in 'pcmeshsel' where it would not deselect the entity
	  if follow mode is unset (the default).
	- Added Show(), Hide(), and IsVisible() to iPcMesh.
	- Added iCelPlLayer::GetHitEntity() to find the entity on a specific
	  screen position.
	- Added iPcCamera for a property class representation of a camera.
	- Added 'pfengine' factory with engine related property classes.
	  Currently it only contains 'pccamera'.
	- Added general superclass for all behaviours in bltest.
	- It is now possible to drag objects on the box. If they fit they
	  will be added. It is not yet possible to get them out the box
	  and they will also be added if the box is closed.
4-Nov-2001:
	- Wouter Wijngaards did the following:
	    - CEL makefile now uses the new cs-config --makevars option.
	      This should make the conf_*.maks superfluous.
	    - The makefile is also updated to be an adapted copy of the
	      new template makefile in CS.
	    - Tested on linux, and removed conf_linux.mak.
	    - If it works on mingw too that .mak can also be removed.
	  How to work with the new makefile?
	  Simply update your CS, and copy the new (make csconfig) cs-config
	  script to the cel directory. csconfig.mak depends on the cs-config
	  script, so it should be remade when you next make depend or make all.
3-Nov-2001:
	- 'pcinventory' sends an 'inv_addchild' messages to the entity
	  containing the inventory when an entity is added.
	- 'pcinventory' sends an 'inv_added' messages to the entity
	  that is being added.
	- Also added 'inv_removechild' and 'inv_removed' messages.
2-Nov-2001:
	- Added iPcMesh::CreateEmptyThing() which can be used instead
	  of SetMesh().
	- Changed celtest so that 'room' is now also an entity and uses
	  pcmesh property class for the room walls.
	- Added iCelPlLayer::AttachEntity(), UnattachEntity(), and
	  FindAttachedEntity(). This functionality used to be present
	  ad-hoc in the pcmesh property class but it is generally useful.
	  Using those functions property classes can attach an entity
	  to some iObject (usually an engine object).
	- Changed pcmesh to use the new iCelPlLayer::AttachEntity()
	  functions.
	- Changed celtest to load the pl/bl plugins using CS_REQUEST_PLUGIN
	  so that they are registered to the object registry.
	- Actually implemented the 'global' option in pcmeshselect. I
	  forgot to do that earlier.
	- After adding an object to an inventory it is usually best
	  to call DecRef() as the inventory now holds a reference
	  (unless you also need to have the reference). Changed celtest
	  for this. Unfortunatelly this does not fix the ref leaks in
	  celtest yet.
	- Added iPcSolid which is a property class that is going to be
	  used for collision detection. iPcSolid is implemented by
	  the 'pfmove' factory.
	- Added iPcMovableConstraint and extended iPcMovable so that you can
	  add constraints.
	- Extended 'pfmove' factory with pcmovableconst_cd implementation of
	  iPcMovableConstraint which uses iPcSolid to implement a constraint
	  based on collision detection. This implementation is currently
	  not operational yet.
	- Added iCelEntityList and celEntityList implementation in plimp.
	- Added iCelPlLayer::FindNearbyEntities() which will return a list
	  of all entities within a certain radius of a given position.
	  This function will use the attached entities to find the
	  entities from the engine objects.
	- Partially implemented 'pcmovableconst_cd' so that it actually
	  uses collision detection but it has the following two shortcomings:
	    - Movement either succeeds or fails. There is no partial result.
	    - A path between start and end should be used for collision
	      detection. Now only the end position is checked which means
	      that objects at high speed may actually pass through walls.
	  In practice this limitation means that in celtest when you drag
	  the object, it will only temporarily be blocked by the walls. If
	  you drag further it will go through.
	- Collision detection with 'pcmovableconst_cd' works better in the
	  sense that it is no longer possible to go through walls. A
	  one-triangle collider with the size of the path is used to
	  detect collisions along the movement path.
	- Philip Wyett updated MSVC project files for CEL.
	- Added iPcMeshSelect::SetFollowAlwaysMode(). When this is true
	  move messages will be send whenever the mouse is over an entity
	  regardless of selection.
	- Added a new behaviour class to bltest for the 'room'. Added
	  a new pcmeshselect property classes to the room entity which
	  has follow-always set to true.
	- Added new 'pftools' factory. This will contain general tools.
	  The only tool it now contains is a 'pctooltip' property class
	  for displaying tooltips. This property class is not functional
	  yet.
	- Implemented tooltips.
	- Celtest now shows tooltip for the object over which the mouse
	  rests.
	- Fixed a bug in 'pcmeshsel' when the mouse was over nothing.
1-Nov-2001:
	- Slightly changed the way that csconfig.mak works.
	- Implemented dragging. You can define a plane on which the
	  object will be constrained while dragging. This plane can
	  be defined in either camera or world space giving maximum
	  control.
	- Modified celtest with a demo of this dragging. With left
	  mouse button you will drag to the 0,1,0 plane in world space.
	  This means orthogonal to the floor. With right mouse
	  button you will drag to the 0,0,1 plane in camera space.
	- Added 'pfmove' factory and implemented iPcMovable. At this
	  moment this property class is only a thin wrapper on top
	  of moving an iPcMesh directly but in the future it will
	  be able to contrain movement by using attached
	  iPcMovableConstraint property classes (not implemented yet).
	- Extended iPcMeshSelect so it will by default look for a movable.
	  If that cannot be find it will look for an iPcMesh instead (old
	  behaviour).
31-Oct-2001:
	- Split 'selectmesh' message from 'pcmeshselect' property class
	  'selectmesh_up' and 'selectmesh_down'.
	- Added a lot more control to iPcMeshSelect interface. Now you can
	  indicate if you want 'follow' mode or not. With follow mode the
	  mouse will track the selected object and immediatelly send
	  up/down messages when the mouse leaves/enters the object.
	  Otherwise an 'up' message is only sent when the mouse button
	  goes up regardless of the position of the mouse.
	  Also added the ability to disable up/down mouse events if you
	  don't need them.
	  Added a few other functions that are not yet implemented (dragging).
	- Fixed a missing DecRef() in the destructor of 'pcmeshselect'
	  property class.
	- Optimized 'pcmeshselect' by only registering the event handler
	  for the right events depending on the settings. i.e. don't listen
	  to mouse move events if you are not dragging or in follow mode.
	- Added the ability to control for which mouse buttons you want
	  to use 'pcmeshselect'. By default it will only react on mouse
	  button one. You can use multiple 'pcmeshselect' property classes
	  on one entity to have different behaviour depending on the mouse
	  button.
30-Oct-2001:
	- Renamed iCelBlEntity to iCelBehaviour and made the corresponding
	  changes throughout the project (i.e. CreateBlEntity->CreateBehaviour
	  and so on...).
	- Added iBase* parameter to iCelBehaviour::SendMessage(). So a
	  message from property classes to the behaviour part of an entity
	  now has three parts:
	  	- A message id.
		- An iBase pointer with possible additional arguments
		  for the message.
		- A list of additional strings.
	- Removed several bugs in cleanup of inventory which prevented proper
	  cleanup. In particular RemoveAll() was not right.
	- Extended pcmesh property class so that a csObject is attached
	  to the mesh in the engine with which it is possible to find the
	  entity again.
	- The 'pcmeshselect' property class now sends a 'selectmesh' message
	  to the behaviour. 'bltest' reacts on this message and prints out
	  the selected entity (try clicking on the small object in celtest).
	- Added declarations for FAST SCF queries to include/pl/pl.h.
	- Extended 'pcmeshselect' property class with the ability to switch
	  between 'global' and 'local' selection. Local selection is default
	  and this means that the Behaviour will only get messages when
	  it's own mesh is selected. With global selection the Behaviour
	  will get messages on selection of all meshes.
	- Added a few additional FAST declarations for SCF.
29-Oct-2001:
	- Basic inventory handling seems to work now. Celtest demonstrates
	  (in text form only at the moment) one box entity and four
	  dummy entities. Two of them fit and the two others don't.
	  Some provisions are made for inherited characteristics
	  but this is not fully implemented yet.
	- Added iCelPropertyClassList::FindByInterface() to return the
	  property class implementing some interface. Also added
	  CEL_QUERY_PROPCLASS which is a define to make this easier.
	- Changing of property values is now properly restricted by
	  the parent inventory and the new values are also propagated
	  to the inventory.
	- Inherited characteristics now work. It is possible to modify
	  the characteristic of the contents (i.e. for the NetHack
	  Bag of Holding which reduces the weight of all objects inside).
	- Small optimization on GetInheritedCharProperty(). If factor is very
	  close to 0 it will not ask characteristics of inventory.
	- Fixed 'make clean' target.
	- Completely rewrote the inventory checking system. Now it
	  may be *slightly* less optimal (but only slightly) but it
	  is MUCH more robust and easier to understand. It is also completely
	  safe now. Unless there are bugs in the code there is NO
	  way to have an inventory with contents that doesn't satisfy
	  the inventory constraints:
	      - You are not allowed to change constraints for an
	        inventory while objects are in the inventory that
		violate that constraint.
	      - You are not allowed to add/remove entities to an
	        inventory if that would violate constraints.
	      - You are not allowed to change characteristics of
	        an entity if that would violate constraints of
		parent inventories.
	  If I made no bugs the system should be water-tight.
	- Added a new property class 'pcmeshselect' to the 'pfmesh'
	  property class factory. With this property class the behaviour
	  layer will be notified when a mesh is selected. At this
	  moment this property class works but doesn't send a
	  message to the BL yet.
	- Eric Sunshine enabled CVS update notification via the cel-cvs-update
	  mailing list.
28-Oct-2001:
	- Started work on the 'pfmesh' factory. This factory will support
	  the 'pcmesh' property class so that you can attach a mesh object
	  with an entity.
	- 'celtest' now shows an entity that has a mesh attached to it.
	- Started work on the 'pvinv' factory for inventories. This inventory
	  supports two property classes: 'pcinventory' and 'pccharacteristics'.
	  The 'pccharacteristics' is typically used for entities that are
	  put in the inventory. The entity that has the inventory
	  property class will use the characteristics to see if the object
	  fits in the inventory.
	- Fixed a bug with current constraints not being updated correctly
	  when entities are removed from the inventory.
	- Constraints where not cleaned up at destruction time.
	- Constraints are now also checked when properties change. i.e. it
	  is impossible to change a property when the entity is in an
	  inventory and changing that property would cause the inventory
	  constraints to be invalidated. Not fully implemented yet!
	  We also still have to define hierarchical constraints (i.e. for
	  nested inventories).
	- Philip Wyett created/added MSVC project files for the CEL project.
27-Oct-2001:
	- Updated csconfig.mak with entries for linux. Uncomment the
	  entries suitable for your system.
	- Changed the executable name for celtest to celtst. Otherwise
	  it would be the same as the directory name on linux.
	- Implemented first bl entity in 'bltest'. No functionality yet.
	- Added definition of iCelMessage.
	- Added iCelPlLayer::CreateMessage().
	- Added implementation of iCelMessage to plimp. Unfinished.
	- Changed iCelBlEntity so that targetted messages to an entity
	  no longer use iCelMessage but directly pass the information
	  to the bl entity.
	- Further work on bltest and celtest. A message is now printed.
26-Oct-2001:
	- Added iCelPropertyClassFactory interface. A property class
	  factory is responsible for creation of property classes. Every
	  factory will handle a number of property class types.
	- Extended iCelPlLayer with a number of methods to register and
	  query property class factories.
	- Added include/pf dir which will contain public SCF interfaces
	  for specific property class factories. Added include/pf/test.h
	  which will be a test interface for our test property class
	  factory.
	- Added 'pf/test' dir which will contain the implementation of the
	  'test' factory. This resuls in the third plugin.
	- Added temporary code to celtest so the plugins of CEL are registered.
	  In the (near) future we will define a better solution for this
	  problem on the CS side (removal of scf.cfg).
	- 'celtest' now loads the three CEL plugins (plimp, bltest, and
	  pftest) and uses them. It all seems to work nicely but there is
	  no real functionality yet.
	- Added 'name' parameter to iCelBlLayer::CreateBlEntity().
	- Started adding support for 'printer' behaviour entity in 'bltest'.
24-Oct-2001:
	- Added the very first code for CEL. Today I added:
	    - The include files for PL and BL. These are SCF interfaces.
	    - The start of PLIMP which is the implementation of the PL.
	    - The start of CELTEST which is a test application for CEL.
	  The test application works (i.e. it opens a CS window) but other
	  than that there is nothing functional yet.
	- Fixed a bug in factory definition of 'plimp'.
	- Started work on 'bltest'.
