2008-06-23  Xu Yuan  <xuyuan.cn@gmail.com>

	* RELEASE:
	* NEWS:
	- release version 0.6

	* app/simspark/rsg/agent/ball.rsg:
	- change ball's angular drag to 0.00005

	* app/simspark/Makefile.am:
	- add missing rsg file

2008-06-22  Sander van Dijk  <sgvandijk@gmail.com>

	* lib/kerosin/renderserver/renderserver.cpp
	- remove No camera warning
	
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp
	* plugin/soccer/soccerruleaspect/soccerruleaspect.h
	* app/simspark/naosoccersim.rb
	- Added GoalKickDist soccer variable and set to realistic value
	- Fixed penalty area size to match field teture
	
2008-06-20  Xu Yuan  <xuyuan.cn@gmail.com>

	* app/simspark/rsg/agent/nao/goal.rsg:
	- add collider for the goal
	- scale the goal mesh a little to match the collider of goal

	* app/simspark/Makefile.am:
	* configure.ac:
	* RELEASE:
	* README:
	* NEWS:
	- ready for release 0.6

	* plugin/soccer/trainercommandparser/trainercommandparser.cpp:
	- add move command for the agent training
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- enable the ball's body after set its position, otherwise it
	holds on the sky

	* app/simspark/rsg/agent/soccerbot058/soccerbot.rsg:
	* app/simspark/rsg/agent/soccerbot058/lowerarm.rsg: 
	* app/simspark/rsg/agent/soccerbot058/head.rsg: 
	* app/simspark/rsg/agent/soccerbot058/foot.rsg: 
	* app/simspark/rsg/agent/nao/naoneckhead.rsg: 
	* app/simspark/rsg/agent/nao/nao.rsg:
	- make sure the Vision perceptor behavior as last year

2008-06-20  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/Makefile.am:
	- removed voidmeshimporter

	* lib/kerosin/Makefile.am:
	- removed helper/ subdirectory files

2008-06-15  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/simspark/textures/naogoalnet.png:
	- added texture for the goal net

	* app/simspark/materials/leftgoal.mtl:
	* app/simspark/materials/rightgoal.mtl:
	- added materials for the goals

	* app/simspark/models/leftgoal.obj:
	* app/simspark/models/rightgoal.obj:
	- added 3D models for the goals

	* plugin/objimporter/objimporter.cpp:
	- fixed a small bug related to importing values for material shininess

	* lib/kerosin/sceneserver/staticmesh.cpp:
	- enabled alpha blending for textures with transparency; not sure
	whether this is the best way though, might need to be reviewed later

	* app/simspark/rsg/agent/nao/goal.rsg:
	- loading new goal models; colliders for the goal posts, vertical
	bar, and back of the goal still need to be adjusted!

2008-06-13  Feng Xue  <henry519@mail.ustc.edu.cn>
	* app/simspark/rsg/agent/nao/nao.rsg:
	* app/simspark/rsg/agent/nao/naoneckhead.rsg:
	* app/simspark/rsg/agent/nao/naoarm.rsg:
	* app/simspark/rsg/agent/nao/naoleg.rsg:
	- disabled inner collision of Nao
	- move restricted vision perceptor, add
	  vision perceptor of Atlanta.

2008-06-13  Xu Yuan  <xuyuan.cn@gmail.com>

	* app/simspark/materials/skybox.mtl:
	* app/simspark/models/skybox.obj:
	* app/simspark/rsg/agent/nao/soccer.rsg:
	* app/simspark/textures/skyrender0001.jpg:
	* app/simspark/textures/skyrender0002.jpg:
	* app/simspark/textures/skyrender0003.jpg:
	* app/simspark/textures/skyrender0004.jpg:
	* app/simspark/textures/skyrender0005.jpg:
	* app/simspark/textures/skyrender0006.jpg:
	- add skybox for the soccer field

2008-06-06  Hedayat Vatankhah  <hedayat@grad.com>

	* TODO:
	* README:
	* AUTHORS:
	- converted to UTF-8

	* linux/rcssserver3d.desktop:
	* linux/rcssserver3d-rsgedit.desktop:
	* linux/rcssserver3d.png:
	- added icon and .desktop files to add menu entries for simspark & rsgedit

	* app/simspark/Makefile.am:
	- remove executable permission only for files

2008-06-06  Sander van Dijk <sgvandijk@gmail.com>

	* plugin/soccer/visionperceptor/visionperceptor.h
	* plugin/soccer/visionperceptor/visionperceptor.cpp
	- port RestrictedVisionPerceptor changes to VisionPerceptor so it can also be installed anywhere

2008-06-05  Hedayat Vatankhah  <hedayat@grad.com>

	* app/rsgedit/Makefile.am:
	- checking NO_RPATH instead of BUNDLE_SUPPORT

	* acinclude.m4:
	- set NO_RPATH on mac to disable using rpath

	* app/simspark/Makefile.am:
	- remove executable flag from installed data files
	- checking NO_RPATH instead of BUNDLE_SUPPORT

	* configure.ac:
	- gcc 4.3 compile fix: do not use hash_map when backward/hash_map exists. (Not a
	  good solution. the better solution is to try to compile using std::hash_map
	  to see if it works. or even better is to trying to use tr1/unordered_map (?!)
	  gcc's hash_map is not in std namespace, so backward/hash_map cannot be used
	  (which is in gcc 4.3's default include path)
	- added --disable-rpath option to disable using rpath to hardcode library
	  paths into executables

2008-06-04  Hedayat Vatankhah  <hedayat@grad.com>

	* app/rcssmonitor3d/lib/communit.cpp:
	- gcc 4.3 compile fix: added cstring inclusion for strerror.

	* utility/rcssnet/addr.cpp:
	- gcc 4.3 compile fix: added cstring inclusion for memset.

2008-06-03  Xu Yuan  <xuyuan.cn@gmail.com>

	* doc/users/robots.tex:
	- correction frome Feng

2008-06-02  Xu Yuan  <xuyuan.cn@gmail.com>

	* doc/users/definitions.tex:
	* doc/users/robots.tex:
	* doc/users/user-manual.tex:
	* doc/users/fig/naojoints.png:
	* doc/users/fig/realNao.png:
	* doc/users/fig/virtualNao.png:
	- add contents about Nao from Feng

2008-06-01  Xu Yuan  <xuyuan.cn@gmail.com>

	* app/simspark/rsg/agent/soccerbot058/lowerarm_body.rsg:
	- fix bug in setting value

	* app/simspark/rsg/agent/soccerbot058/head.rsg:
	- fix bug in setting the anchor of head

2008-05-31  Xu Yuan  <xuyuan.cn@gmail.com>

	* NEWS:
	* README:
	* RELEASE:
	* configure.ac:
	- ready for rcssserver3d-0.5.9

	* app/simspark/simspark.rb:
	* lib/kerosin/renderserver/renderserver.cpp:
	* lib/spark/spark.rb:
	* plugin/openglsyssdl/openglsystemsdl.cpp:
	* plugin/soccer/initeffector/singlematiniteffector.cpp:
	* plugin/voidmeshimporter/voidmeshimporter.cpp:
	- remove verbose print

	* app/simspark/Makefile.am:
	* app/simspark/rsg/agent/soccerbot058/box.rsg:
	* app/simspark/rsg/agent/soccerbot058/box_with_handler.rsg:
	* app/simspark/rsg/agent/soccerbot058/box_with_hj.rsg:
	* app/simspark/rsg/agent/soccerbot058/box_with_hj_with_ccylinder.rsg:
	* app/simspark/rsg/agent/soccerbot058/box_with_uj.rsg:
	* app/simspark/rsg/agent/soccerbot058/contactjointhandler.rsg:
	* app/simspark/rsg/agent/soccerbot058/foot.rsg:
	* app/simspark/rsg/agent/soccerbot058/head.rsg:
	* app/simspark/rsg/agent/soccerbot058/lowerarm.rsg:
	* app/simspark/rsg/agent/soccerbot058/soccerbot.rsg:
	* app/simspark/rsg/agent/soccerbot058/soccerbottorso.rsg:
	- add head with universal joint
	- use restrict vision perceptor
	- use configuration the same as nao (import rsg files from nao directly)

	* app/simspark/rsg/agent/nao/naoneckhead.rsg:
	- comment out the camera, it is not useful currently

	* app/simspark/rsg/agent/nao/goal.rsg:
	- move the OjectState to the corner of goal(this is just like the
	server with sphere agent)

	* app/simspark/naosoccersim.rb:
	- change the field size to 12mx8m

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	- allow the kick off agent enter the center circle

2008-05-30  Xu Yuan  <xuyuan.cn@gmail.com>

	* app/monitorspark/soccerbindings.rb:
	* app/simspark/internalsoccerbindings.rb:
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp:
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.h:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	* plugin/soccermonitor/soccerinput.cpp:
	* plugin/soccermonitor/soccermonitor.cpp:
	* plugin/soccermonitor/soccermonitor.h:
	- set the camera position according to the field size

	* app/monitorspark/main.cpp:
	- rename the class name to distinguish it with SimSpark


2008-05-30  FengXue  <henry519@mail.ustc.edu.cn>
	* lib\oxygen\physicsserver\collider.h:
	* lib\oxygen\physicsserver\collider.cpp:
	* lib\oxygen\physicsserver\collider_c.cpp:
	* lib\oxygen\physicsserver\space.cpp:
	- Add the feature that a collider can be set not
	  colliding with another collider

	* app\simspark\rsg\agent\nao\nao.rsg:
	* app\simspark\rsg\agent\nao\naoleg.rsg:
	- Enable the inner collision
	- Torso will not collide with the two thighs
	- Foot and shank in the same leg will not collide with each other
	- Change the foot size and hip drift size to the original value.
	  The old value is not good, thanks Ben!

	* lib\spark\spark.rb:
	- Set the global cfm to 1e-5, the old value is 1e-3.
	  This solves two problems:
	  1. The extra error when doing forward kinematics
	  2. The drift of joint stops when pushed by a large force.

	* app\simspark\rsg\agent\nao\hingejoint.rsg:
	- Refined the hingejoint parameters

	* app\simspark\rsg\agent\ball.rsg:
	- Refined the ball parameters


2008-05-28  Ben  <benpwd@users.sourceforge.net>

	* app/simspark/rsg/agent/nao/naoneckhead.rsg
	* app/simspark/rsg/agent/nao/naoleg.rsg
	* app/simspark/rsg/agent/nao/naoarm.rsg
	- make 'RestrictedVisionPerceptor' as default vision perceptor,
	the view range is set to 120(horizontal), 120(latitude)

	* plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp:
	- do not exclude visible node of oneself. for example,
	the robot can see its own foot

2008-05-28  Xu Yuan  <xuyuan.cn@gmail.com>

	* app/simspark/rsg/agent/ball.rsg:
	- adjust the drag parameters of ball, otherwise the ball is too fast

	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp:
	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.h:
	- remove function SoccerControlAspect::GetFieldRecorder()

	* app/simspark/rsg/agent/soccer.rsg:
	* app/simspark/rsg/agent/nao/soccer.rsg:
	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	* plugin/soccer/ballstateaspect/ballstateaspect.h:
	- remove the field box, which is used to check whether the ball is
	on the field, however, it collides every geometries in the field!

	* lib/oxygen/sceneserver/basenode.cpp:
	- do not set the mLocalBoundingBox the same value time by time

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- make the agent bounding box only encapsulates Collider, to fix
	bug that the agent is moved by mistake

	* app/simspark/naosoccersim.rb:
	* app/simspark/soccersim.rb:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- use mFreeKickMoveDist (instead 1.0 meters) as the moved distance
	when agent fouls

2008-05-23  Ben  <benpwd@users.sourceforge.net>

	* plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.h:
	* plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp:
	* - correct player information according to 'AgentState', 'AgentAspect'
	is doublely checked to make sure it can be installed anywhere.

2008-05-22  FengXue <henry519@mail.ustc.edu.cn>
	* lib/oxygen/physicsserver/contactjointhandler.cpp:
	- Add the slip value check

	* app/simspark/rsg/agent/ball.rsg:
	- Better ball parameter

	* app/simspark/rsg/agent/nao/touchperceptorhandler.rsg:
	* app/simspark/rsg/agent/nao/contactjointhandler.rsg:
	- Disable the bounce of robot and add slip

	* app/simspark/rsg/agent/nao/ccylinder_physics.rsg:
	- Fixed a bug.


2008-05-19  Ben  <benpwd@users.sourceforge.net>

	* plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.h:
	* plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp:
	* - use a map (from nodes to object list) to integrate information of
	robot part (such as head, foot) into a player predicate

2008-05-19  Xu Yuan  <xuyuan.cn@gmail.com>

	* app/simspark/Makefile.am:
	* app/simspark/materials/nao.mtl:
	* app/simspark/models/naobody.obj:
	* app/simspark/models/rthigh.obj:
	- modify for using number textures

	* app/simspark/textures/num1.png:
	* app/simspark/textures/num10.png:
	* app/simspark/textures/num11.png:
	* app/simspark/textures/num2.png:
	* app/simspark/textures/num3.png:
	* app/simspark/textures/num4.png:
	* app/simspark/textures/num5.png:
	* app/simspark/textures/num6.png:
	* app/simspark/textures/num7.png:
	* app/simspark/textures/num8.png:
	* app/simspark/textures/num9.png:
	- player number textures ( in Arial Black Font)

	* plugin/sparkmonitor/sparkmonitor.cpp:
	- describe the materials of StaticMesh

	* app/simspark/rsg/agent/nao/nao.rsg:
	* app/simspark/rsg/agent/nao/naoarm.rsg:
	* app/simspark/rsg/agent/nao/naoleg.rsg:
	* app/simspark/rsg/agent/nao/naoneckhead.rsg:
	- use StaticMesh instead SingleMatNode

	* app/simspark/materials/lfoot.mtl:
	* app/simspark/materials/llowerarm.mtl:
	* app/simspark/materials/lshank.mtl:
	* app/simspark/materials/lthigh.mtl:
	* app/simspark/materials/lupperarm.mtl:
	* app/simspark/materials/naobody.mtl:
	* app/simspark/materials/naohead.mtl:
	* app/simspark/materials/rfoot.mtl:
	* app/simspark/materials/rlowerarm.mtl:
	* app/simspark/materials/rshank.mtl:
	* app/simspark/materials/rthigh.mtl:
	* app/simspark/materials/rupperarm.mtl:
	- these file are no need, since the whole nao robto use material
	defined in nao.mtl

	* app/simspark/Makefile.am:
	* app/simspark/materials/nao.mtl:
	* app/simspark/models/lfoot.obj:
	* app/simspark/models/llowerarm.obj:
	* app/simspark/models/lshank.obj:
	* app/simspark/models/lthigh.obj:
	* app/simspark/models/lupperarm.obj:
	* app/simspark/models/naobody.obj:
	* app/simspark/models/naohead.obj:
	* app/simspark/models/rfoot.obj:
	* app/simspark/models/rlowerarm.obj:
	* app/simspark/models/rshank.obj:
	* app/simspark/models/rthigh.obj:
	* app/simspark/models/rupperarm.obj:
	- modify the obj file manually for setting team material
	- use only one .mtl file for the whole nao robot

	* lib/kerosin/sceneserver/staticmesh_c.cpp
	* lib/kerosin/sceneserver/staticmesh.cpp:
	* lib/kerosin/sceneserver/staticmesh.h:
	- add ChangeMaterial to changle material by given name
	- add GetMaterialNames to get a vector of material names
	- add ResetMaterials to reset all the materials

	* plugin/soccer/Makefile.am:
	* plugin/soccer/export.cpp:
	* plugin/soccer/initeffector/staticmeshiniteffector.cpp:
	* plugin/soccer/initeffector/staticmeshiniteffector.h:
	* plugin/soccer/initeffector/staticmeshiniteffector_c.cpp:
	- new StaticMeshInitEffector which change 'matTeam' material of
	static mesh of agent to 'matLeft' or 'matRight' according to team
	side
	- change 'matNum' to 'matNum*' according to player's number

	* app/simspark/naosoccersim.rb:
	- change the AgentRadius, since the AgentAspect is moved

	* app/simspark/rsg/agent/nao/nao.rsg:
	* app/simspark/rsg/agent/nao/naoneckhead.rsg:
	- move AgentAspect to torso, so that the robot will be seen at the
	torso

2008-05-18  Xu Yuan  <xuyuan.cn@gmail.com>

	* doc/users/robots.tex:
	- change configuration table of Nao according Feng's modification

2008-05-17  Feng Xue  <henry519@mail.ustc.edu.cn>:
	* lib/oxygen/physicsserver/joint.h:
	* lib/oxygen/physicsserver/joint.cpp:
	* lib/oxygen/physicsserver/joint_c.cpp:
	* plugin/sparkagent/hingeeffector.cpp:
	* plugin/sparkagent/universaljointeffector.cpp:
	- Add max joint speed limit for hingejoint and universaljoint

	* app/simspark/rsg/agent/nao/hingejoint.rsg:
	- Respect to the real nao, set the max abs joint speed of all
	  the hingejoint to 351.77 deg/s


2008-05-16  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/kerosin/imageserver/imageserver.cpp (ImageServer::Load):
	- Using OpenResource to load images (so that it'll search for textures
	  in the install path.

2008-05-16  Feng Xue   <henry519@mail.ustc.edu.cn>
	* app/simspark/rsg/agent/nao/nao.rsg:
	* app/simspark/rsg/agent/nao/naoarm.rsg:
	* app/simspark/rsg/agent/nao/naoleg.rsg:
	- Taking the real Nao as a reference:
	  1. Change the parameters a tiny little
	  2. Switch joint2 and joint3 in the leg

	* app/agentspark/naobehavior.cpp:
	- Change lle2 rle2 command to lle3 rle3 for the switch of
	  joint2 and joint3.


2008-05-16  Xu Yuan  <xuyuan.cn@gmail.com>

	* app/simspark/rsg/agent/nao/soccer.rsg:
	- fix bug in soccer field base position value

	* app/simspark/rsg/agent/ball.rsg:
	* app/simspark/models/soccerball.obj:
	- increase the model size to match the geometry

	* doc/users/definitions.tex:
	* doc/users/robots.tex:
	- add table of Nao's configuration

2008-05-10  Feng Xue  <henry519@mail.ustc.edu.cn>
	* app/simspark/rsg/agent/nao/nao.rsg:
	* app/simspark/rsg/agent/nao/naoneckhead.rsg:
	- Fixed the bug: perceptor installed twice on the torso.


2008-05-07  Xu Yuan  <xuyuan.cn@gmail.com>

	* app/simspark/naosoccersim.rb:
	* app/simspark/rsg/agent/nao/goal.rsg:
	* app/simspark/rsg/agent/nao/soccer.rsg:
	- correct the goal name in vision as before (thanks Feng)

	* NEWS:
	- correct the directory of integrated agent (thanks Ben)

	* app/simspark/rsg/agent/nao/goal.rsg:
	- fix bug (thanks Feng)

2008-05-05  Xu Yuan  <xuyuan.cn@gmail.com>

	* NEWS:
	* README:
	* configure.ac:
	- ready for releasing rcssserver3d-0.5.8

	* plugin/soccer/agentintegration/soccerbotbehavior.cpp:
	* plugin/soccer/agentintegration/soccerbotbehavior.h:
	- use mCycle instead of mInit, and send init command in the second
	cycle

	* app/simspark/simspark.rb:
	* lib/spark/spark.rb:
	- add addIntegratedAgent and sparkSetupTrain to help using the
	integrated agent (from Ben)

	* app/simspark/materials/naosoccerfield.mtl:
	* app/simspark/models/naosoccerfield.obj:
	* app/simspark/rsg/agent/nao/soccer.rsg:
	- use the plane model instead of box for the soccer field

	* lib/spark/spark.rb:
	- set the camera's ZNear parameters ( default 0.1 ), since we need
	to see the robot closely

	* app/simspark/Makefile.am:
	* app/simspark/rsg/agent/soccerbot058/box.rsg:
	* app/simspark/rsg/agent/soccerbot058/box_with_handler.rsg:
	* app/simspark/rsg/agent/soccerbot058/box_with_hj.rsg:
	* app/simspark/rsg/agent/soccerbot058/box_with_hj_with_ccylinder.rsg:
	* app/simspark/rsg/agent/soccerbot058/box_with_uj.rsg:
	* app/simspark/rsg/agent/soccerbot058/contactjointhandler.rsg:
	* app/simspark/rsg/agent/soccerbot058/foot.rsg:
	* app/simspark/rsg/agent/soccerbot058/lowerarm.rsg:
	* app/simspark/rsg/agent/soccerbot058/lowerarm_body.rsg:
	* app/simspark/rsg/agent/soccerbot058/soccerbot.rsg:
	* app/simspark/rsg/agent/soccerbot058/soccerbottorso.rsg:
	- soccerbot058 based on soccerbotcomp, its size can be scaled by a
	variable(default is 0.1)
	- the joint limits are enabled

2008-05-04  Feng Xue  <henry519@mail.ustc.edu.cn>
	* app/simspark/models/lfoot.obj:
	* app/simspark/models/rfoot.obj:
	- The original foot model is too thick. Thanks devilxjk@mail.ustc.edu.cn!


2008-05-03  Xu Yuan  <xuyuan.cn@gmail.com>

	* app/simspark/Makefile.am:
	* app/simspark/rsg/agent/nao/goal.rsg:
	* app/simspark/rsg/agent/nao/soccer.rsg:
	* app/simspark/textures/rcs-naofield.png:
	- the soccer field for Nao

	* app/simspark/soccersim.rb:
	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- use soccer variables which defined in script instead of static
	variables which defined in the C++ code

	* app/simspark/simspark.rb:
	- modify for Nao simulation

	* app/simspark/naosoccersim.rb:
	- soccer simulation for Nao

	* app/simspark/materials/lfoot.mtl:
	* app/simspark/materials/llowerarm.mtl:
	* app/simspark/materials/lshank.mtl:
	* app/simspark/materials/lthigh.mtl:
	* app/simspark/materials/lupperarm.mtl:
	* app/simspark/materials/naobody.mtl:
	* app/simspark/materials/naohead.mtl:
	* app/simspark/materials/rfoot.mtl:
	* app/simspark/materials/rlowerarm.mtl:
	* app/simspark/materials/rshank.mtl:
	* app/simspark/materials/rthigh.mtl:
	* app/simspark/materials/rupperarm.mtl:
	* app/simspark/models/lfoot.obj:
	* app/simspark/models/llowerarm.obj:
	* app/simspark/models/lshank.obj:
	* app/simspark/models/lthigh.obj:
	* app/simspark/models/lupperarm.obj:
	* app/simspark/models/naobody.obj:
	* app/simspark/models/naohead.obj:
	* app/simspark/models/rfoot.obj:
	* app/simspark/models/rlowerarm.obj:
	* app/simspark/models/rshank.obj:
	* app/simspark/models/rthigh.obj:
	* app/simspark/models/rupperarm.obj:
	* app/simspark/rsg/agent/nao/nao.rsg:
	* app/simspark/rsg/agent/nao/naoarm.rsg:
	* app/simspark/rsg/agent/nao/naoleg.rsg:
	* app/simspark/rsg/agent/nao/naoneckhead.rsg:
	- add models and materials for the Nao robot, it looks like the
	real robot now

2008-05-02  Sander van Dijk <sgvandijk@gmail.com>
	* app/simspark/internalsoccerbindings.rb
	* lib/oxygen/sceneserver/camera.cpp
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.h
	* lib/kerosin/renderserver/renderserver.cpp
	* lib/kerosin/renderserver/renderserver.h
	- Added possibility to rotate through cameras to RenderServer and soccer input
	- Fixed deg/rad bug in Camera::Bind (and changed camera angles accordingly)

	* app/simspark/rsg/agent/nao/naoneckhead.rsg
	* app/simspark/rsg/agent/soccerbot056.rsg
	- Added cameras to soccerbot and nao models


2008-04-21  Feng Xue <henry519@mail.ustc.edu.cn>
	* app/simspark/rsg/agent/nao/naoleg.rsg:
	- Fixed the bug of joint1 axis. Thanks wjq from Apollo.


2008-04-21  Feng Xue <henry519@mail.ustc.edu.cn>
	* app/simspark/rsg/agent/nao/nao.rsg:
	* app/simspark/rsg/agent/nao/naoneckhead.rsg:
	- Move VisionPerceptor to Head, hope it will work.


2008-04-16  Feng Xue <henry519@mail.ustc.edu.cn>
	* app/simspark/rsg/agent/nao:
	- Fixed the joint issue. We now have a version 1.0 Nao model :)


2008-04-15  Xu Yuan  <xuyuan.cn@gmail.com>

	* utility/sfsexp/Makefile.am:
	- complie fixing for x86_64: add AM_CFLAGS = -fPIC


2008-04-15  Feng Xue  <henry519@mail.ustc.edu.cn>
	* app/simspark/Makefile.am:
	- Add dependency of the new files in app/simspark/rsg/agent/nao

	* app/simspark/rsg/agent/nao:
	- Installed visionperceptor and frp
	  Fixed the bug of beameffector



2008-04-14  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/zeitgeist/core.cpp (Core::CatchSignal):
	- using c++filt to demangle function names. (addr2line doesn't work
	  when debugging symbols are not available)

2008-04-14  Xu Yuan  <xuyuan.cn@gmail.com>

	* plugin/sparkmonitor/sparkmonitor.cpp:
	- do not include the std::endl in scene description
	- do not need to judge whether full state in SceneDescribe

	* plugin/soccer/initeffector/singlematiniteffector.cpp:
	- set the scene modified when perform the init action, so the
	monitor will be updated fully

	* lib/spark/spark.rb:
	- use monitorLoggerStep(in seconds) instead monitorLoggerInterval (in cycle)

	* lib/oxygen/simulationserver/simulationserver.cpp:
	- do not need to call Scene::SetModified(false) every cycle

	* lib/oxygen/simulationserver/simcontrolnode.cpp:
	* lib/oxygen/simulationserver/simcontrolnode.h:
	- add function GetActiveScene()

	* lib/oxygen/simulationserver/monitorlogger.cpp:
	* lib/oxygen/simulationserver/monitorlogger.h:
	* lib/oxygen/simulationserver/monitorlogger_c.cpp:
	* lib/oxygen/simulationserver/monitorcontrol.cpp:
	* lib/oxygen/simulationserver/monitorcontrol.h:
	* lib/oxygen/simulationserver/monitorcontrol_c.cpp:
	- remove mMonitorInterval, the interval is controled by mStep(in
	SimControlNode)
	- log the full state when secen's modified number is greater than
	mFullStateLogged
	- log std::endl in file logger only

	* lib/oxygen/sceneserver/scene.cpp:
	* lib/oxygen/sceneserver/scene.h:
	- add mModifiedNum to indicate whether the monitor need full update

	* lib/kerosin/sceneserver/singlematnode.cpp
	(SingleMatNode::SetMaterial):
	- check if the material is null

	* app/simspark/simspark.rb:
	- add enableInteralMonitor to toggle the interal monitor

2008-04-13  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/oxygen/physicsserver/space.cpp (Space::OnUnlink):
	- DisableInnerCollision() should be called first since the second call
	  will destroy mODESpace

	* plugin/inputsdl/inputsystemsdl.cpp (InputSystemSDL::Init):
	- do not set video mode here. it's up to OpenGLSystem.


2008-04-12  Feng Xue <henry519@mail.ustc.edu.cn>
	* /lib/oxygen/physicsserver/odeobject.h:
	- revert GetSpace to the protected scope

	* /lib/oxygen/physicsserver/collider.h(cpp):
	- add a space member to store the parent space

	* /lib/oxygen/physicsserver/space.cpp:
	- instead GetSpace() call of GetSavedParentSpace() to improve
	  ode performance

	* Summary:
	- Thanks for Markus's suggestions, criticism makes things go ahead.
	- Now the system is very stable, I hope a 5 vs 5 match in RoboCup2008!



2008-04-11  Feng Xue <henry519@mail.ustc.edu.cn>
	* /lib/oxygen/physicsserver/space.h(cpp):
	- Removed the original "disable inner collision" code and add
	  a generic code(not a hack) proposed by Markus Rollmann, hope it will work.
	- Add function: void DisableInnerCollision() to set the tag.
	- Add function: void IsDisableInnerCollision() to get the tag.

	* /lib/oxygen/physicsserer/space_c.cpp:
	- Add functio: disableInnerCollision to call in the rsg files.

	* /app/simspark/rsg/agent/nao/nao.rsg:
	- add the script code (disableInnerCollision true) to disable the inner
	  collision of nao.


2008-04-10  Feng Xue <henry519@mail.ustc.edu.cn>
	* /app/agentspark/:
	- Add a sample nao actions, see naobehavior.cpp

	* /app/simspark/rsg/agent/nao/*.rsg:
	- Fixed some bugs


2008-04-10  Feng Xue <henry519@mail.ustc.edu.cn>
	* /app/simspark/rsg/agent/nao/nao.rsg:
	- replace space name from "spaceman" to "spacenao"

	* /lib/oxygen/physicsserver/odeobject.h:
	- make GetSpace() public for call in space.cpp

	* /lib/oxygen/physicsserver/space.cpp:
	- In HandleCollide() function: removed internal collide
	  of robot.
	  This is done by simply check the nearest space of the collider(e),
	  If they are the same space and their space names are both "spacenao",
	  then no collide happens. Hope it will work.



2008-04-10  Feng Xue <henry519@mail.ustc.edu.cn>
	* /app/simspark/rsg/agent/nao/*.rsg:
	- Instead the universal joint of two hinge joints for
	  the universal joint is hard to do the joint limits.
	- Fixed some bugs.


2008-04-10  Feng Xue <henry519@mail.ustc.edu.cn>
	* /plugin/rubysceneimporter.cpp:
	- Boost up rsg fetures: add string
	  The syntax is like this
	  (def $Feng Feng)
	  (def $Xue  Xue)
	  (def $XueFeng (join My Name is $Feng $Xue))



2008-04-09  Hedayat Vatankhah  <hedayat@grad.com>

	* acinclude.m4:
	- added --with-wxWidgets (and --without-wxWidgets) options to configure

	* plugin/collisionperceptor/forceresistanceperceptor.h:
	* plugin/collisionperceptor/forceresistanceperceptor.cpp
	 (ForceResistancePerceptor::Percept):
	- added storing the last calculated force and center values since ODE sets
	  them to zero when a contacting body is disabled. FRP reports the last
	  calculated values in such situations now.

2008-04-08  Feng Xue  <henry519@mail.ustc.edu.cn>
	* app/simspark/Makefile.am:
	- add universaljoint.rsg

	* app/simspark/rsg/agent/*.rsg:
	- fixed some bugs
	- merge leg joint1 and joint2 to joint1_2 via universal joint

2008-04-08  Xu Yuan  <xuyuan.cn@gmail.com.cn>

	* plugin/collisionperceptor/forceresistanceperceptor.cpp:
	- do not send anything when the force is zero

	* lib/oxygen/simulationserver/simulationserver.cpp:
	* lib/oxygen/simulationserver/simcontrolnode.h:
	* lib/oxygen/simulationserver/simcontrolnode.cpp:
	* lib/kerosin/inputserver/inputcontrol.h:
	* lib/kerosin/inputserver/inputcontrol.cpp:
	- remove old multi-threaded code
	- fix bug in fixing for rounding errors in time comparsion

2008-04-08  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/oxygen/simulationserver/simulationserver.cpp (SimulationServer::SimControlThread):
	- added the fix for rounding errors in time comparsion here too.

	* plugin/collisionperceptor/forceresistanceperceptor.cpp
	 (ForceResistancePerceptor::Percept):
	- added testing to see if force is not zero.

	* app/simspark/Makefile.am:
	- added materials to the list of directories to be copied to installation
	  path

2008-04-07  Feng Xue  <henry519@mail.ustc.edu.cn>
	* /app/simspark/Makefile.am:
	- add nao/*.rsg
	- It is a new model!
	  Nao robot is used for "Standard Platform" which is a brand new
	  league for this year.
	  See:
	  http://www.aldebaran-robotics.com/eng/index.php
	  http://www.robocup-cn.org/en/league_sub.php?subleague=2-Legged%20Robot

	* /app/simspark/rsg/agent:
	- add nao directory and rsg files, the detail rsg files, draft only :-)

	* /lib/oxygen/physicsserver/joint.h:
	* /lib/oxygen/physicsserver/joint.cpp:
	* /lib/oxygen/physicsserver/joint_c.cpp:
	- add function: SetFudgeFactor()
	- add function: GetFudgeFactor()

	* /lib/oxygen/physicsserver/hingejoint_c.cpp:
	- modified FUNCTION(HingeJoint,setAxis)
	- can accept 3 parameters now.

2008-04-03  Xu Yuan  <xuyuan.cn@gmail.com.cn>

	* app/simspark/Makefile.am:
	- add missing rsg files

2008-04-01  Xu Yuan  <xuyuan.cn@gmail.com.cn>

	* utility/rcssnet/socket.cpp:
	- fix bug when the socket can not send too long message (11584B in
	my system) once

	* lib/oxygen/monitorserver/monitorserver.h:
	* lib/oxygen/monitorserver/monitorserver.cpp:
	- cache the current scene data (described string), then different
	monitor can use it again (include external monitor andmonitor
	logger)

	* lib/oxygen/simulationserver/monitorcontrol.cpp:
	- send the full state while active scene is modified

	* lib/oxygen/simulationserver/monitorlogger.cpp:
	- log the header information at the first cycle
	- log the information while the	active scene is modified

	* lib/oxygen/simulationserver/simulationserver.cpp:
	- move Step() calling (in singled-thread ) for making sure the
	sense timing
	- fix the rounding errors in time comparsion
	- set the active sence's modified flag to false in Cycle()


2008-03-31  Joschka Boedecker  <jboedeck@uni-koblenz.de>
	* plugin/objimporter/objimporter.cpp:
	* plugin/objimporter/objimporter.h:
	- Extended OBJ importer to handle material library files
	  that are created on export by Blender. When importing
	  the OBJ meshes, care should be taken to rotate them correctly
	  since the Blender coordinate system is different from SimSpark's
	  (e.g. SetLocalRotation 90 180 0, see soccerbottorsocomp.rsg).
	  Another important point when exporting a mesh from Blender is that
	  normals have to be exported, and the mesh should be triangulated.
	  Everything else can be left as default values in the OBJ exporter
	  of Blender (I'll try to do a tutorial in the Wiki soon).

	* app/simspark/rsg/agent/soccerbottorsocomp.rsg:
	- rotate the torso mesh so that the unum is on the back

	* app/simspark/textures/rcs-torso-01.png:
	* app/simspark/textures/rcs-torso-02.png:
	* app/simspark/textures/rcs-torso-03.png:
	* app/simspark/textures/rcs-torso-04.png:
	* app/simspark/textures/rcs-torso-05.png:
	* app/simspark/textures/rcs-torso-06.png:
	* app/simspark/textures/rcs-torso-07.png:
	* app/simspark/textures/rcs-torso-08.png:
	* app/simspark/textures/rcs-torso-09.png:
	* app/simspark/textures/rcs-torso-10.png:
	* app/simspark/textures/rcs-torso-11.png:
	- updated textures (corresponsing to the updated torso model)

	* app/simspark/textures/rcs-soccerball.png:
	- added PNG texture for the soccerball

	* app/simspark/materials/soccerball.mtl:
	* app/simspark/materials/soccerbottorso.mtl:
	- added material definitions exported by Blender

	* app/simspark/models/soccerbottorso.obj:
	- updated model and material lib

	* app/simspark/models/soccerball.obj:
	- updated model and material lib

	* app/agentspark/main.cpp:
	- added conditional includes for the network stuff

2008-03-28  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/soccer/ballstateaspect/ballstateaspect.h:
	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	- using new CachedPath object for mGameState

	* lib/oxygen/controlaspect/controlaspect.h:
	* lib/oxygen/controlaspect/controlaspect.cpp:
	- using new CachedPath class in GetControlAspect()

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- removed MoveAgent method and directly call SoccerBase::MoveAgent
	- implemented testing agent's bounding box instead of its COM
	- some code cleanup

	* plugin/soccer/soccerbase/soccerbase.h:
	* plugin/soccer/soccerbase/soccerbase.cpp:
	- added new method GetAgentBoundingRect

	* lib/salt/bounds.h (AABB2.Encapsulate):
	- added new method which receives x and y directly

2008-03-23  Xu Yuan  <xuyuan.cn@gmail.com>
	* NEWS
	* RELEASE
	- the documents are still in progress

	* doc/users/robots.tex
	- fix the parameters of soccerbot table according to soccerbot055.rsg

2008-03-26  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* lib/oxygen/physicsserver/odewrapper.h:
	- define a dummy for uint32 before including ode.h and
	  undefine after the include to prevent conflict with
	  typedef in a system (Mac OS X 10.5) header (thanks Markus).

2008-03-26  Hedayat Vatankhah  <hedayat@grad.com>

	* utility/wxutil/Makefile.am:
	- fixed the headers' installation path. (are they really intended to be installed?!)

	* lib/spark/spark.rb:
	- enabled auto disable flag by default

	* plugin/sparkagent/hinge2effector.cpp:
	* plugin/sparkagent/hingeeffector.cpp:
	* plugin/sparkagent/universaljointeffector.cpp:
	- added enabling disabled bodies.

2008-03-25  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/oxygen/simulationserver/simulationserver.cpp (SimulationServer::SimControlThread):
	(SimulationServer::RunMultiThreaded):
	- enabled protection for PrePhysicsUpdate()

2008-03-24  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* lib/oxygen/simulationserver/netmessage.cpp:
	- added Apple specific include for missing types

	* Makefile.am:
	- added macosX directory to EXTRA_DIST

	* doc/users/Makefile.am:
	- changed comment (we have a manual now ;-) )

	* lib/oxygen/physicsserver/body.cpp:
	- set center of body mass explicitly to 0.0 after translation
	  to prevent rounding errors and ODE complaints (thanks Sander!)

2008-03-23  Xu Yuan  <xuyuan.cn@gmail.com>
	* NEWS
	* README
	* RELEASE
	- correct the manual's path

	* doc/Makefile.am
	- include rsgedit.txt

	* doc/users/Makefile.am
	- include user-manual.pdf

	* doc/devel/Makefile.am
	- include manual.pdf

2008-03-23  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/oxygen/simulationserver/simulationserver.cpp (SimulationServer::SimControlThread):
	- Added a check so that EndCycle() is called only when enough time has been
	  passed. (Thanks Ben)

2008-03-22  Xu Yuan  <xuyuan.cn@gmail.com>
	* NEWS
	* README
	* RELEASE
	* configure.ac
	- ready for releasing 0.5.7

	* app/rsgedit/Makefile.am
	- change the LDADD
	- include resourse files

	* lib/oxygen/Makefile.am
	* utility/wxutil/Makefile.am
	* plugin/inputwx/Makefile.am
	- include missing header files

	* app/simspark/Makefile.am
	- include soccerbotcomp rsg files

2008-03-11  Hedayat Vatankhah  <hedayat@grad.com>

	* app/simspark/rsg/agent/soccerbottorsocomp.rsg:
	- removed absolute address

	* lib/oxygen/simulationserver/simulationserver.cpp:
	- check to see if renderControl is valid
	- moved PostPhysicsUpdate() out of while loop in Step()

2008-03-11  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/agentspark/soccerbotbehavior.cpp:
	- changed behavior to load the new soccerbotcomp.rsg file by default

	* app/rcssmonitor/lite/glserver.cpp,
	* app/rcssmonitor/lite/monitor.cpp:
	- added #ifdef for GLUT includes on the Mac

	* app/simspark/rsg/agent/soccerbotcomp.rsg:
	- added hear perceptor and say effector

2008-03-11  Sander van Dijk  <sgvandijk@gmail.com>

	* acinclude.m4
	- improved ruby library detection through ruby configuration

	* lib/zeitgeist/leaf.h
	- added (Leaf::ListShallowChildrenSupportingClass)

	* lib/oxygen/physicsserver/body.h
	* lib/oxygen/physicsserver/body.cpp
	- composite bodies' mass is positioned correctly in (Body::AddMass), their
	  colliders and sibling/descendant transforms are positioned correctly in
	  (Body::PrePhysicsUpdateInternal)

	* plugin/soccer/agentstate/agentstate.cpp
	* plugin/soccer/agentstate/agentstate.h
	* plugin/soccer/gamestateaspect/gamestateaspect.cpp
	* plugin/soccer/gamestateaspect/gamestateaspect.h
	- when agent disconnects, his uniform number is freed so it can be used again
	  by a new agent

2008-03-08  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/collisionperceptor/forceresistanceperceptor.h:
	* plugin/collisionperceptor/forceresistanceperceptor.cpp:
	* plugin/collisionperceptor/touchperceptorhandler.cpp:
	- dJointFeedback structs are allocated by ForceResistancePerceptor now

	* lib/oxygen/simulationserver/simulationserver.cpp:
	- (SimulationServer::Step) fixed the skipped simulation time error message
	- (SimulationServer::RunMultiThreaded)
	  - replaced Step() function call with a loop over SceneServer::PhysicsUpdate()
	    (Thanks Yuan for suggestions)
	  - added check for running descreet simulations only in multi-threaded mode
	- (SimulationServer::UpdateDeltaTimeAfterStep) new function which updates
	   mSumDeltaTime.
	- EndCycle() functions are called in parallel (except RenderControl)

2008-03-04  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/openglsyswx/Makefile.am:
	- added check for BUILD_WXWIDGETS

2008-03-03  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/sceneeffector/sceneeffector.h:
	* plugin/sceneeffector/sceneeffector.cpp:
	- reverted the changed which have been made when porting simspark to
	  sserver3d. it uses PrePhysicsUpdateInternal instead of Realize function so
	  that it won't generate errors in multi-threaded mode

2008-03-02  Markus Rollmann  <rollmark@users.sourceforge.net>

	* app/rsgedit/mainframe.cpp:
	- use wxString::fn_str() to convert to ascii (fix problems with non unicode builds)


2008-03-01  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/collisionperceptor/forceresistanceperceptor.cpp
	 (ForceResistancePerceptor::Percept):
	 - bugfix: while the vectors were translated, they were not rotated. they
	   are in correct local coordinates now (hopefully!).


2008-02-29  Markus Rollmann  <rollmark@users.sourceforge.net>

	* doc/rsgedit.txt: - added a very rough rsgedit guide

	* utility/wxutil/Makefile.am:
	- enable Scintilla lexer support to enable syntax highlighting in editor

2008-02-29  Markus Rollmann  <rollmark@users.sourceforge.net>

	* app/fonttest/Makefile.am: - remove font from 'all-local:

2008-02-29  Hedayat Vatankhah  <hedayat@grad.com>

	* acinclude.m4:
	- set have_glut under mac and try to compile and link against glut only when
	  it is true. as I don't have a mac, I won't go furthur. (it doesn't have
	  checking for glu and also GLUT is still in LDFLAGS even if have_glut is
	  not set)

2008-02-29  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* acinclude.m4:
	- added BUILD_GLUT conditional for the mac part also,
	  extended check for boost threads lib to try
	  -lboost_thread-gcc

	* lib/oxygen/Makefile.am:
	- added @BOOST_THREADS_LIB@ to LIBADD for oxygen
	  to fix unresolved references during runtime (on the mac)

2008-02-28  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/soccer/internalsoccermonitor/internalsoccerrender.cpp
	 (InternalSoccerRender::OnLink):
	- added fonts/ directory so that it can find VeraMono.ttf

	* app/fonttest/Makefile.am:
	- removed rules for extracting VeraMono.ttf.gz as it doesn't exist anymore

	* app/simspark/internalsoccermonitor.rb:
	- SparkGetFontServer() -> sparkGetFontServer()

	* app/simspark/simspark.rb:
	- soccersim.rb should be called before internalsoccermonitor.rb

	* lib/kerosin/kerosin.rb:
	- font path is fonts/

2008-02-28  Markus Rollmann  <rollmark@users.sourceforge.net>

	* app/rsgedit/rsgedit.rb: - use the OpenGLSystemWX

	* configure.ac: - added plugin/openglsyswx

	* plugin/Makefile.am, plugin/openglsyswx/.cvsignore,
	plugin/openglsyswx/Makefile.am, plugin/openglsyswx/export.cpp,
	plugin/openglsyswx/openglsystemwx.cpp,
	plugin/openglsyswx/openglsystemwx.h,
	plugin/openglsyswx/openglsystemwx_c.cpp:
	- added dummy OpenGLSystemWX class. This is needed to enable proper texturing in
	  the OpenGLServer

	* lib/spark/spark.rb: - reset registered materials in sparkResetScene

	* lib/kerosin/materialserver/materialserver.cpp,
	lib/kerosin/materialserver/materialserver.h,
	lib/kerosin/materialserver/materialserver_c.cpp:
	- added method ResetMaterials that remove all registered materials and
	  (re-)creates the default material

	* lib/kerosin/materialserver/material2dtexture.cpp, lib/kerosin/materialserver/material2dtexture.h:
	- cache the OpenGLServer reference (it was lookup up again each frame)

	* plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp:
	- compile fix: make cast from double to int explicit

	* app/simspark/Makefile.am: - add resources to EXTRA_DIST

	* app/simspark/scripts/rcs-materials-textures.rb: - fix a type

	* app/simspark/scripts/rcs-materials-textures.rb:
	- use rcs- prefix for soccer texture names

	* app/simspark/Makefile.am: - install textures

	* app/simspark/Makefile.am: - install model files

	* lib/kerosin/imageserver/imageserver.cpp:
	- use FileServer::LocateResource to expand the given image name

	* app/simspark/scripts/rcs-materials-textures.rb:
	- use canonical texture names

	* app/rsgedit/rsgedit.rb:
	- restore rsgedit specific materials when resetting the scene

	* app/simspark/scripts/rsgedit-materials.rb:
	- added rsgedit specific materials

	* app/rsgedit/materials-default.rb, app/rsgedit/rsgedit.rb:
	- use installed default materials

	* app/monitorspark/monitorspark.rb, app/monitorspark/soccersim-monitor.rb:
	- use installed material scripts

	* app/simspark/Makefile.am:
	- remove local materials from dist_pkgdata_DATA

	* app/simspark/internalsoccermonitor.rb, app/simspark/simspark.rb:
	- use canonical font location

	* app/simspark/materials.rb, app/simspark/soccersim.rb:
	- use installed soccer simulation materials

	* app/simspark/scripts/rcs-materials-textures.rb, app/simspark/scripts/rcs-materials.rb:
	- added soccersim specific material scripts

	* app/simspark/materials-default.rb, app/simspark/simspark.rb:
	- removed local materials-default.rb
	- use canonical scripts/materials.rb to setup common materials

	* app/simspark/Makefile.am: - refactored installation of resource file
	- install scripts/ directory

	* app/simspark/scripts/materials.rb:
	- added default material setup file

	* app/monitorspark/Makefile.am, app/monitorspark/VeraMono.ttf:
	- removed local VeraMono font copy

	* app/monitorspark/soccersim-monitor.rb, plugin/soccermonitor/soccerrender.cpp, app/fonttest/main.cpp:
	- use canonical font name

	* app/simspark/Makefile.am, app/simspark/fonts/VeraMono.ttf:
	- added font VeraMono.ttf
	- modified Makefile.am to install the font directory

	* app/simspark/rsg/agent/ball.rsg:
	- remove left over debug output 'pwd'

	* app/simspark/rsg/agent/soccerbottorso.rsg:
	- remove hardcorded path to model. The FileServer expands the path
	with the install prefix.

	* app/simspark/rsg/agent/ball.rsg:
	- remove hardcorded path to soccerball object. The FileServer expands
	the path with the install prefix.

	* lib/zeitgeist/fileserver/fileserver.cpp: - added missing newline

	* plugin/objimporter/objimporter.cpp:
	- use FileServer::LocateResource() to expand the filename

	* plugin/rosimporter/rosimporter.cpp:
	- use FileServer::OpenResource() to open the .ros file

	* lib/oxygen/sceneserver/sceneserver.cpp:
	- use FileServer::LocateResource() to figure out the full path to the scene
	  file

	* lib/zeitgeist/fileserver/fileserver.cpp, lib/zeitgeist/fileserver/fileserver.h:
	- added method LocateResource() that expands the given resource name to the
	  full path

	* lib/oxygen/sceneserver/sceneserver.cpp: - ws changes

	* plugin/rubysceneimporter/rubysceneimporter.cpp:
	- use FileServer::OpenResource to locate the referenced scene

	* lib/kerosin/fontserver/fontserver.cpp:
	- use FileServer::OpenResource() to open the font file

	* lib/kerosin/fontserver/fontserver.cpp: - added copyleft
	- ws changes

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	- use FileServer::OpenResource() to locate the script file

	* lib/zeitgeist/fileserver/fileserver.cpp, lib/zeitgeist/fileserver/fileserver.h:
	- added function OpenResource that expands the given filename to well know
	  resource locations (currently the install prefix only). This method is
	  refactored from ScriptServer::Run() method

	* app/simspark/rsg/agent/ball.rsg, app/simspark/rsg/agent/soccerbottorso.rsg:
	- revert to /usr/local

	* app/rsgedit/simspark.cpp: - disable debug channel by default

	* app/simspark/materials.rb, app/simspark/simspark.rb, app/simspark/soccersim.rb:
	- setup materials commom to all simulation from the simspark.rb script
	- setup soccer specific materials from soccersim.rb

	* app/rsgedit/materials-default.rb, app/rsgedit/platform.h, app/rsgedit/rsgedit.rb:
	- moved material setup to materials-default.rb (currently a copy of
	  app/simspark/materials-default.rb)
	- restore default material definitions when resetting the scene

	* app/simspark/materials-default.rb, app/simspark/materials.rb:
	- use 'sparkCreate' instead of 'new' to install materials. This allow us to
	  run the material scripts multiple times without creating duplicate
	  material instances

	* app/simspark/Makefile.am, app/simspark/materials-default.rb,
	app/simspark/materials.rb, app/simspark/rsg/agent/ball.rsg,
	app/simspark/rsg/agent/soccerbottorso.rsg:
	- move common default materials to materials-default.rb and load them from
	  materials.rb and materials-textures.rb
	- update Makefile.am

	* app/rsgedit/rsgedit.rb:
	- remove call to sparkResetSimulationServer (not existing)

	* app/rsgedit/simspark.cpp:
	- sparkResetScene() now called from within the simspark.rb script

	* app/rsgedit/rsgedit.rb:
	- re-init spark completely from when resetting a scene (this removes any
	  custom control node etc.)

	* lib/oxygen/simulationserver/simulationserver.cpp:
	- remove previous instances when registering a SimControlNode

	* lib/oxygen/simulationserver/simulationserver.cpp: - ws changes

	* lib/spark/spark.rb:
	- added function sparkCreate() that installs a new object instance and
	removes any previous instance at the same location
	- replaced 'new' with 'sparkCreate'
	- added function sparkGetRenderServer, sparkGetImageServer,
	sparkGetTextureServer

	* app/monitorspark/monitorspark.rb:
	- move setup logging setup after monitor setup is complete

	* lib/spark/spark.rb:
	- added function sparkGetOrCreate that checks for an existing object instance
	  or creates a new one if that fails
	- added functions sparkGetXXXServer that create server instances on demand
	- changed sparkSetupXXX functions to use sparkGetXXXServer. This allows it
	  to call them in abitrary order

	* lib/zeitgeist/core.cpp:
	- changed failed Get() to from Error to Warning


2008-02-27  Hedayat Vatankhah  <hedayat@grad.com>

	* acinclude.m4:
	* app/rcssmonitor3d/lite/Makefile.am:
	- glut is not a requirement now. when not found, rcssmonitor3d-lite won't be
	  built. (for non-macs)
	- added check for GLU (for non-macs)

2008-02-26  Hedayat Vatankhah  <hedayat@grad.com>

	* app/rsgedit/Makefile.am:
	- added rsgedit.rb as package data file to be installed.

	* utility/Makefile.am:
	- added wxutil directory (fix a compile error)

2008-02-25  Markus Rollmann  <rollmark@users.sourceforge.net>

  	* app/rsgedit/Makefile.am, app/rsgedit/mainframe.cpp, app/rsgedit/platform.cpp, app/rsgedit/platform.h:
  	- move some platform specific details into class Platform

  	* app/rsgedit/rsgedit.rb, app/rsgedit/simspark.cpp:
  	- no need to log to cerr when we have a nice gui log window

  	* app/rsgedit/simspark.cpp, app/rsgedit/simspark.h:
  	- the LogServer takes ownership of the registered stream

  	* lib/zeitgeist/logserver/logserverstreambuf.cpp:
  	- all streams other than cout and cerr are in fact delete. remove a
  	lying comment

  	* lib/zeitgeist/core.cpp:
  	- handle SIGABRT. This produces a stack trace when an assertion aborts
  	the server

  	* lib/oxygen/simulationserver/netcontrol.cpp:
  	- check for valid socket ptr

  	* app/rsgedit/agentframe.cpp: - compile fixes (unused paremter...)

  	* app/rsgedit/mainframe.cpp:
  	- added sanity checks for valid SimulationServer ptrs

  	* app/rsgedit/propertylist.cpp:
  	- compile fix

2008-02-25  Markus Rollmann  <rollmark@users.sourceforge.net>

	* lib/oxygen/sceneserver/transform.cpp, lib/oxygen/sceneserver/transform.h:
	- removed member mOldLocalTransform
	- removed function GetOldLocalTransform()
	- the only user of this was the SparkMonitor that now implements
	  a local cache

	* plugin/sparkmonitor/sparkmonitor.cpp, plugin/sparkmonitor/sparkmonitor.h:
	- implemented a node cache that stores the type and last state of each node
	  that was send to the client. This solves two issues:

	- The previous implementation depended on the 'old' transformation matrix
	  that was stored in the Transform nodes itself. It was updated every cycle.
	  The monitor however was updated with a lower frequency and therefore could
	  miss some changes as the current and old transform matrix was identical
	  (due to the higher update frequency). This bug was reported by the Apollo
	  3D Team.

	- The second issue was that invisible scene graph nodes could safely be
	  removed from the monitor update (thanks to Carlos Bustamante from
	  Borregos3D), thus saving bandwidth. The problem here were repeated type
	  checks (dynamic casts) to test for node types that can be skipped. This is
	  also solved through the node cache now as it stores the type of each node.

2008-02-24  Markus Rollmann  <rollmark@users.sourceforge.net>

	* app/Makefile.am:
	- added rsgedit directory

	* configure.ac:
	- added wxutil lib and rsgedit app

	* app/rsgedit
	- ported rsgedit from the simspark repository. This version
	compiles and works but still has some quirks

	* utility/wxutil/
        - added wxutil library that contains non standard wxWidgets
	classes.  Currently wxScintilla, a wxWidgets wrapper for the
	Scintilla and wxFlatNotebook

	* plugin/Makefile.am:
	- added inputwx directory

	* lib/oxygen/simulationserver/simulationserver.cpp:
	- allow Cycle() to be called without an InputControlNode

	* acinclude.m4:
	 - include opengl libraries in wxWidgets dependencies

	* configure.ac:
	- test for the presence of wxWidgets and set BUILD_WXWIDGETS accordingly
	- added plugin/inputwx directory

	* plugin/inputwx/
	- added class InputSystemWx and InputWx. This implements an
	inputsystem that tranlaster gui events of the wxWidgets library to
	input events for the InputServer

	* acinclude.m4:
	- added macros RCSS_OPTIONS_WXCONFIG and RCSS_CHECK_WXWIDGETS to check for
	  the presence of the wxWidgets library

	* lib/oxygen/physicsserver/space.cpp:
	- destroy the ode contact group from within DestroyODEObject()

2008-02-23  Markus Rollmann  <rollmark@users.sourceforge.net>

	* app/monitorspark/monitorspark.rb, app/simspark/simspark.rb:
	- reset logging prior to setting up application specific loggin

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	- removed std::cerr output as the default LogServer config shows these
	  messages now
	- repeated name a finished script on a separate line as scripts can be
	  nested and produce their own output

	* lib/zeitgeist/core.cpp:
	- modify the initial logging setup to be useful during early init time.
	  Normal, Warning and Error messages are now visible to stderr and stdout.
	  Application specific scripts can change the defaults later on.

	* lib/spark/spark.rb:
	- added utility function sparkResetLogging() that deregisters all streams
	  from the LogServer. This is useful in order to get to a known state before
	  setting up a logging configuration

	* lib/zeitgeist/logserver/logserver.cpp,
	lib/zeitgeist/logserver/logserver.h,
	lib/zeitgeist/logserver/logserver_c.cpp,
	lib/zeitgeist/logserver/logserverstreambuf.cpp,
	lib/zeitgeist/logserver/logserverstreambuf.h:
	- added method RemoveAllStreams that deregisters all streams from the
	  LogServer

	* lib/zeitgeist/logserver/logserverstreambuf.cpp:
	- added missing gpl header, ws changes

	* app/simspark/internalsoccermonitor.rb, app/simspark/soccersim.rb, lib/spark/spark.rb:
	- check returned object references (i.e. compare to nil) before using them

	* lib/oxygen/physicsserver/space.cpp:
	- use GetSpace() instead of FindSpaceId(). Using FindSpaceID() prints an
	  error message if no parent space is found. It is ok for the global space
	  to have no parent space.

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	- removed left over debug cerrs
	- added missing cerrs (missing new lines)

2008-02-23  Markus Rollmann  <rollmark@users.sourceforge.net>

	* lib/kerosin/imageserver/imageserver.cpp, lib/kerosin/imageserver/imageserver.h:
	- add image filename to error message

2008-02-23  Xu Yuan  <xuyuan.cn@gmail.com.cn>

	* lib/oxygen/physicsserver/odeobject.cpp
	Bugfix: (thanks goto Ben from team Apollo) the salt::Matrix was
	not fully assigned in ConvertRotationMatrix,it cause problem while
	this matrix multiply another matrix

	* plugin/soccermonitor/soccermonitor.cpp
	bugfix GetScoreRight()

	* plugin/soccermonitor/soccerrender.cpp
	bugfix calling GetTeamNameXXX()

2008-02-22  Hedayat Vatankhah  <hedayat@grad.com>

	* linux/rcssserver3d.spec:
	* linux/rcssserver3d-data.spec:
	- added simple spec files which can be used to create RPM packages for the
	  rcssserver3d and rcssserver3d-data packages. only tested in Fedora

	* plugin/soccer/Makefile.am:
	* plugin/soccer/export.cpp:
	- added SoccerNode related material

	* plugin/soccer/driveeffector/driveeffector.cpp:
	- added transform.h header

	* plugin/soccer/objectstate/objectstate_c.cpp:
	* plugin/soccer/objectstate/objectstate.cpp:
	* plugin/soccer/objectstate/objectstate.h:
	* plugin/soccer/agentstate/agentstate.h:
	* plugin/soccer/agentstate/agentstate.cpp: battery status is float in simspark (?!)
	* lib/spark/spark.cpp:
	* lib/spark/spark.h:
	* plugin/sparkagent/universaljointeffector.h:
	* plugin/sparkagent/universaljointeffector.cpp:
	* plugin/sparkagent/universaljointperceptor.h:
	* plugin/sparkagent/universaljointperceptor.cpp: replaced name with n
	* plugin/sparkagent/hingeeffector.cpp:
	* plugin/sparkagent/hingeeffector.h:
	* plugin/sparkagent/hingeperceptor.cpp: replaced name with n
	* plugin/sparkagent/hingeperceptor.h:
	* plugin/sparkagent/hinge2perceptor.cpp: replaced name with n
	* plugin/sparkagent/hinge2perceptor.h:
	* plugin/sparkagent/hinge2effector.h:
	* plugin/sparkagent/hinge2effector.cpp:
	* plugin/sexpparser/sexpparser.cpp:
	(SexpParser::ListToString): set output precision to 2 as before
	* plugin/sceneeffector/sceneeffector.cpp:
	* plugin/sceneeffector/sceneeffector.h:
	* plugin/rubysceneimporter/rubysceneimporter.h:
	* plugin/rubysceneimporter/rubysceneimporter.cpp:
	* plugin/rubysceneimporter/rubysceneimporter_c.cpp:
	* plugin/openglsyssdl/openglsystemsdl.cpp:
	* lib/kerosin/kerosin.h:
	* lib/kerosin/textureserver/textureserver.h:
	* lib/kerosin/textureserver/textureserver.cpp:
	* lib/kerosin/textureserver/texture.h:
	* lib/kerosin/textureserver/texture.cpp:
	* lib/kerosin/textureserver/texture2d.cpp:
	* lib/kerosin/textureserver/texture2d.h:
	* lib/kerosin/sceneserver/staticmesh.h:
	* lib/kerosin/sceneserver/staticmesh.cpp:
	* lib/kerosin/sceneserver/staticmesh_c.cpp:
	* lib/kerosin/sceneserver/singlematnode.cpp:
	* lib/kerosin/sceneserver/light.cpp:
	* lib/kerosin/sceneserver/light.h:
	* lib/kerosin/sceneserver/axis.h:
	* lib/kerosin/sceneserver/axis.cpp:
	* lib/kerosin/kerosin.cpp:
	* lib/kerosin/renderserver/renderserver.h:
	* lib/kerosin/renderserver/renderserver.cpp:
	* lib/kerosin/renderserver/renderserver_c.cpp:
	* lib/kerosin/renderserver/rendercontrol.h:
	* lib/kerosin/renderserver/rendercontrol.cpp:
	* lib/kerosin/renderserver/rendercontrol_c.cpp:
	* lib/kerosin/imageserver/imageserver.h:
	* lib/kerosin/imageserver/imageserver.cpp:
	* lib/kerosin/imageserver/imageserver_c.cpp:
	* lib/kerosin/imageserver/image.h:
	* lib/kerosin/imageserver/image.cpp:
	* lib/kerosin/Makefile.am:
	* plugin/inputsdl/timersdl.h:
	* plugin/inputsdl/timersdl.cpp:
	* plugin/inputsdl/mousesdl.cpp:
	* plugin/inputsdl/keyboardsdl.cpp:
	* plugin/inputsdl/inputsystemsdl.h:
	* plugin/inputsdl/inputsystemsdl.cpp:
	(InputSystemSDL::Init): added timer initialization, removed grab input for now
	* plugin/inputsdl/inputdevicesdl.h:
	* lib/kerosin/inputserver/scancodemap.h:
	* lib/kerosin/inputserver/scancodemap.cpp:
	* lib/kerosin/inputserver/inputsystem.cpp:
	* lib/kerosin/inputserver/inputsystem.h:
	* lib/kerosin/inputserver/inputserver.h:
	* lib/kerosin/inputserver/inputserver.cpp:
	* lib/kerosin/inputserver/inputcontrol.h:
	* lib/kerosin/inputserver/inputcontrol.cpp:
	* lib/oxygen/oxygen.cpp:
	* lib/oxygen/oxygen.h:
	* lib/oxygen/simulationserver/simulationserver.cpp:
	* lib/oxygen/simulationserver/simulationserver.h:
	* lib/oxygen/simulationserver/simulationserver_c.cpp:
	* lib/oxygen/simulationserver/netmessage.cpp:
	* lib/oxygen/simulationserver/netcontrol.h:
	* lib/oxygen/simulationserver/netcontrol.cpp:
	* lib/oxygen/simulationserver/netclient.cpp:
	* lib/oxygen/simulationserver/monitorcontrol.h:
	* lib/oxygen/simulationserver/agentcontrol.h:
	* lib/oxygen/simulationserver/agentcontrol.cpp:
	* lib/oxygen/sceneserver/sceneserver.cpp:
	* lib/oxygen/sceneserver/transform.h:
	* lib/oxygen/sceneserver/sceneserver.h:
	* lib/oxygen/sceneserver/transform.cpp:
	* lib/oxygen/sceneserver/sceneimporter.h:
	* lib/oxygen/sceneserver/scenedict.cpp:
	* lib/oxygen/sceneserver/scenedict.h:
	* lib/oxygen/sceneserver/fpscontroller.h:
	* lib/oxygen/sceneserver/fpscontroller.cpp:
	* lib/oxygen/sceneserver/fpscontroller_c.cpp:
	* lib/oxygen/sceneserver/camera.h:
	* lib/oxygen/sceneserver/camera.cpp:
	* lib/oxygen/sceneserver/camera_c.cpp:
	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/simulationserver/monitorlogger.cpp:
	* lib/oxygen/simulationserver/monitorcontrol.cpp:
	* lib/oxygen/monitorserver/monitorserver.cpp:
	* lib/oxygen/monitorserver/monitorserver.h:
	* lib/oxygen/Makefile.am:
	* lib/oxygen/geometryserver/meshexporter.h:
	* lib/oxygen/geometryserver/meshexporter_c.cpp:
	* lib/oxygen/geometryserver/geometryserver.h:
	* lib/oxygen/geometryserver/geometryserver.cpp:
	* lib/oxygen/geometryserver/geometryserver_c.cpp:
	* lib/oxygen/controlaspect/controlaspect.cpp:
	- ported from simspark (oxygen,kerosin,general plugins,soccer plugins completed)

	* acinclude.m4:
	- changed to define HAVE_IL_IL_H when IL is present
	- changed HAVE_KEROSIN_H to HAVE_KEROSIN_KEROSIN_H

	* app/rcssmonitor3d/kerosin/main.cpp:
	* app/simspark/main.cpp:
	* app/monitorspark/main.cpp:
	- added required includes because of the new spark.h

	* plugin/rosimporter/Makefile.am:
	- fixed LDFLAGS to use top_builddir

	* plugin/rosimporter/rosimporter.cpp:
	* plugin/rosimporter/rosimporter_c.cpp:
	* plugin/rosimporter/roselements.cpp:
	* plugin/rosimporter/export.cpp:
	* plugin/rosimporter/roselements.h:
	* plugin/rosimporter/rosimporter.h:
	- added rosimporter from simspark
	(RosImporter): fixed extra qualification errors

	* utility/tinyxml/tinyxml.h:
	* utility/tinyxml/tinyxmlerror.cpp:
	* utility/tinyxml/tinyxmlparser.cpp:
	* utility/tinyxml/tinystr.h:
	* utility/tinyxml/xmlfunctions.h:
	* utility/tinyxml/tinyxml.cpp:
	* utility/tinyxml/tinystr.cpp:
	* utility/tinyxml/xmlfunctions.cpp:
	* utility/tinyxml/Makefile.am:
	- added tinyxml used by rosimporter

	* plugin/soccermonitor/soccerinput.cpp:
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp:
	- fixed errors resulted from porting FPSController changes from simspark

	* plugin/soccermonitor/soccerinput.h:
	* plugin/soccermonitor/soccerinput.cpp:
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.h:
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp:
	* app/inputtest/main.cpp:
	* app/fonttest/main.cpp:
	* app/scenetest/main.cpp (processInput):
	* app/rcssmonitor3d/kerosin/monitorinputcontrol.cpp:
	* app/rcssmonitor3d/kerosin/monitorinputcontrol.h:
	* plugin/soccermonitor/soccerinputlogplayer.cpp:
	* plugin/soccermonitor/soccerinputlogplayer.h:
	- fixed errors because of Input class outside InputServer

	* lib/spark/spark.rb:
	- set autoDisableFlag of the world to false. (it was always off because of
	  a bug in world_c.cpp). oxygen/physicsserver finished!
	- applied simspark changes

2008-02-21  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/oxygen/agentaspect/jointeffector.h:
	* lib/oxygen/agentaspect/jointperceptor.h:
	* lib/oxygen/Makefile.am:
	- port from simspark

2008-02-20  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/oxygen/sceneserver/basenode.cpp:
	* lib/oxygen/sceneserver/basenode.h:
	* lib/oxygen/physicsserver/odeobject.h:
	* lib/oxygen/physicsserver/odeobject.cpp:
	* lib/oxygen/physicsserver/joint.h:
	* lib/oxygen/physicsserver/joint.cpp:
	* lib/oxygen/physicsserver/hingejoint.h:
	* lib/oxygen/physicsserver/hingejoint.cpp:
	* lib/oxygen/physicsserver/collisionhandler.h:
	* lib/oxygen/physicsserver/collisionhandler.cpp:
	* lib/oxygen/physicsserver/collider.h:
	* lib/oxygen/physicsserver/collider.cpp:
	* lib/oxygen/physicsserver/space.cpp:
	* lib/oxygen/physicsserver/space.h:
	* lib/oxygen/physicsserver/transformcollider_c.cpp:
	* lib/oxygen/physicsserver/transformcollider.cpp:
	* lib/oxygen/physicsserver/transformcollider.h:
	* lib/oxygen/physicsserver/universaljoint.cpp:
	* lib/oxygen/physicsserver/universaljoint.h:
	* lib/oxygen/physicsserver/world_c.cpp:
	* lib/oxygen/physicsserver/world.cpp:
	* lib/oxygen/physicsserver/world.h:
	* lib/oxygen/physicsserver/body.h:
	* lib/oxygen/physicsserver/body.cpp:
	* utility/sfsexp/sexp_ops.c:
	* utility/sfsexp/sexp.h:
	* utility/sfsexp/sexp.c:
	* utility/sfsexp/parser.c:
	* utility/sfsexp/malloc_util.c:
	* utility/sfsexp/Makefile.am:
	* utility/sfsexp/io.c:
	* app/coretest/main.cpp:
	* lib/salt/random.h:
	* lib/zeitgeist/scriptserver/scriptserver_c.cpp:
	* lib/zeitgeist/scriptserver/scriptserver.cpp: Run() will check BundlePath()
	* lib/zeitgeist/scriptserver/scriptserver.h:
	* lib/zeitgeist/scriptserver/rubywrapper.cpp:
	* lib/zeitgeist/scriptserver/rubywrapper.h:
	* lib/zeitgeist/scriptserver/gcvalue.cpp:
	* lib/zeitgeist/scriptserver/gcvalue.h:
	* lib/zeitgeist/randomserver/randomserver.cpp:
	* lib/zeitgeist/randomserver/randomserver.h:
	* lib/zeitgeist/zeitgeist.vcproj:
	* lib/zeitgeist/zeitgeist-config.in:
	* lib/zeitgeist/node.cpp:
	* lib/zeitgeist/node.h:
	* lib/zeitgeist/node_c.cpp:
	* lib/zeitgeist/leaf.cpp:
	* lib/zeitgeist/leaf.h: fixed an extra qualification compile error
	* lib/zeitgeist/corecontext.h:
	* lib/zeitgeist/class.cpp:
	* lib/zeitgeist/core.h:
	* lib/zeitgeist/core.cpp:
	- ported from simspark (porting zeitgeist,salt,sfsexp finished)

	* lib/salt/fileclasses.cpp:
	- added a separator after BundlePath() when PREFIX is defined

	* app/simspark/rsg/boxspheres/box_with_handler055.rsg: New file.
	* app/simspark/rsg/boxspheres/box_with_handler056.rsg: New file.
	* app/simspark/internalsoccerbindings.rb:
	* app/simspark/rsg/agent/soccerbot055.rsg:
	* app/simspark/rsg/agent/soccerbot056.rsg:
	* app/simspark/simspark.rb:
	* app/simspark/soccersim.rb:
	* plugin/soccer/beameffector/beameffector.cpp:
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp:
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.h:
	- applied Atlanta 2007 server changes:
		- 'm' and 'c' for killing agents
		- two robot models with different facilities
		- using materials with textures
		- free kick distance changed to 4.5
		- one half time (8 mins)
		- agents can beam in Goal_Left or Goal_Right play modes
		- no longer possible to move agents by pressing m

	* lib/kerosin/materialserver/materialexporter.h:
	* lib/kerosin/materialserver/materialexporter_c.cpp:
	* lib/kerosin/materialserver/materialexternal.cpp:
	* lib/kerosin/materialserver/materialexternal.h:
	* lib/kerosin/materialserver/materialexternal_c.cpp:
	- added files from simspark

	* lib/oxygen/sceneserver/camera.cpp:
	* lib/oxygen/sceneserver/camera.h:
	* lib/oxygen/physicsserver/bodycontroller.cpp:
	* lib/oxygen/physicsserver/bodycontroller.h:
	* lib/kerosin/Makefile.am:
	* lib/kerosin/kerosin.h:
	* lib/kerosin/kerosin.cpp:
	* lib/kerosin/kerosin-config.in:
	* lib/kerosin/materialserver/material2dtexture.cpp:
	* lib/kerosin/materialserver/material2dtexture.h:
	* lib/kerosin/materialserver/materialsolid.h:
	* lib/kerosin/materialserver/materialsolid.cpp:
	* lib/kerosin/materialserver/materialsolid_c.cpp:
	* lib/kerosin/materialserver/materialserver.cpp:
	* lib/kerosin/materialserver/materialserver.h:
	* lib/kerosin/materialserver/materialserver_c.cpp:
	* lib/kerosin/openglserver/openglwrapper.h:
	* lib/kerosin/openglserver/openglsystem.h:
	* lib/kerosin/openglserver/openglserver.h:
	* lib/kerosin/openglserver/openglserver.cpp:
	- applied changes from simspark

	* app/rcssmonitor3d/lite/monitor.cpp:
	* app/rcssmonitor3d/lite/glserver.cpp:
	- added glut.h because it is no longer in openglwrapper.h

2008-02-19  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/salt/matrix.h:
	* lib/salt/matrix.cpp:
	- applied changes from simspark

	* lib/oxygen/simulationserver/simulationserver_c.cpp:
	- fixed setMaxStepsPerCyle() to read int value!

	* lib/oxygen/simulationserver/simulationserver.h:
	* lib/oxygen/simulationserver/simulationserver.cpp:
	- implemented new multi-threaded implementation.

	* lib/kerosin/inputserver/inputcontrol.cpp:
	* lib/oxygen/simulationserver/simcontrolnode.cpp:
	- removed InitSimulation() and DoneSimulation() calls from Run since they
	  will be called in the main thread.

2008-02-16  Hedayat Vatankhah  <hedayat@grad.com>

	* acinclude.m4:
	- replaced $FREETYPE --libtool with --libs so that libfreetype.la is no longer
	  needed

	* app/simulator/Makefile.am:
	- fixed installation in a temporary directory (useful for creating RPM packages)

	* lib/oxygen/simulationserver/simulationserver.cpp:
	* lib/oxygen/simulationserver/simulationserver.h:
	* lib/oxygen/simulationserver/simulationserver_c.cpp:
	- added the possibility of discarding some simulation time to catch up with
	  the real time. server will run slower on slow systems

	* lib/spark/spark.rb:
	- the above mode (adjusting the server speed) is enabled

2007-12-06  Jan Murray  <murray@aeonflux>

	* app/agentspark/soccerbotbehavior.h:
	added ParseHearInfo

	* app/agentspark/soccerbotbehavior.cpp:
	added tests for say and hear. Hear info is parsed, printed and discarded.

	* app/agentspark/main.cpp:
	corrected output of error message

	* app/simspark/rsg/agent/soccerbot056.rsg:
	added SayEffector and HearPerceptor

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	re-enabled communication.

2007-06-30  Hedayat Vatankhah  <hedayat@grad.com>

	* app/monitorspark/soccersim-monitor.rb:
	- added instead of soccersim.rb to avoid name conflict with app/simspark/soccersim.rb

	* app/monitorspark/soccersim.rb:
	- removed

	* app/monitorspark/monitorspark.rb:
	* app/monitorspark/Makefile.am:
	- renamed soccersim.rb to soccersim-monitor.rb

2007-06-28  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* plugin/sparkagent/hingeeffector.cpp,
	* plugin/sparkagent/universaljointeffector.cpp:
	- commented out the joint range checks and the setting of the
	  fudge factor (should be re-activated and fixed after Atlanta)

	* plugin/soccer/initeffector/singlematiniteffector.cpp:
	- fixed a bug that would let the server crash when the
	  soccerbot055.rsg was used (shared_ptr was 0 for "lower_torso" node)

	* app/simspark/Makefile.am:
	- removed soccerbot.rsg
	- added soccerbot055.rsg and soccerbot056.rsg
	- included flag_left1/2.rsg and flag_right1/2.rsg for distribution

	* app/agentspark/soccerbotbehavior.cpp:
	- loading the soccerbot056.rsg by default

	* app/simspark/rsg/agent/soccerbot055.rsg,
	* app/simspark/rsg/agent/soccerbot056.rsg:
	- added the 0.5.5 and 0.5.6 soccerbot for Atlanta

	* app/simspark/rsg/agent/soccerbot.rsg:
	- removed

	* configure.ac:
	- increased version number for the 0.5.6 release

	* RELEASE:
	- added release notes for the 0.5.6 release

	* README:
	- increased version number and added a comment

	* NEWS:
	- added news for the 0.5.6 release

2007-06-28  Jan Murray  <murray@aeonflux>

	* app/simspark/internalsoccerbindings.rb,
	* app/monitorspark/soccerbindings.rb:
	added key bindings 'l'/'r' for assigning free kick left/right

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h,
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	added free kick

	* plugin/soccermonitor/soccermonitor.cpp:
	score is initialized to 0-0

	* plugin/soccermonitor/soccerinput.cpp,
	* plugin/soccermonitor/soccerinput.h:
	added commands for assigning free kicks,

	* plugin/sparkmonitor/sparkmonitor.cpp:
	abbreviations for Transform, BaseNode, SetScale, SetMaterial, SingleMatNode

	* plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp,
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.h:
	added commands for assigning free kicks

	* plugin/rubysceneimporter/rubysceneimporter.cpp:
	added some abbreviations to the translation table

2007-06-25  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/simspark/Makefile.am:
	- including internalsoccerbindings.rb for distribution

	* app/simspark/internalsoccerbindings.rb:
	- key bindings for the internal soccer input plug-in

	* app/simspark/internalsoccermonitor.rb:
	- setting up the internal soccer input plug-in

	* plugin/soccer/internalsoccermonitor/internalsoccerinput.h,
	* plugin/soccer/internalsoccermonitor/internalsoccerinput.cpp,
	* plugin/soccer/internalsoccermonitor/internalsoccerinput_c.cpp,
	* plugin/soccer/export.cpp,
	* plugin/soccer/Makefile.am:
	- added an input plugin for soccer specific commands for the
	  internal monitor

	* plugin/soccermonitor/soccerrender.cpp:
	- adjusted rendering of game state info
	  (same as in the internal soccer render plugin)

	* plugin/soccermonitor/soccermonitor.cpp,
	* plugin/soccermonitor/soccermonitor.h:
	- implemented methods GetTeamNameLeft, GetTeamNameRight,
	  GetScoreLeft, GetScoreRight

2007-06-24  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/monitorspark/soccerbindings.rb:
	- key bindings (1-7) for camera positions

	* app/simspark/rsg/agent/soccerbot.rsg:
	- Rle4Max 1 => 10
	- Lle4Max 1 => 10
	- Rae2Max 1 => 10
	- Lae2Min 1 => -10 (!)

	* lib/kerosin/openglserver/openglserver.cpp:
	- glXGetProcAddressARB => glXGetProcAddress

	* plugin/soccermonitor/soccerinput.cpp,
	* plugin/soccermonitor/soccerinput.h:
	- implemented different camera positions for keys 1-7

2007-06-24  Xu Yuan  <xuyuan.cn@gmail.com>

	* plugin/sparkagent/hingeeffector.cpp,
	* plugin/sparkagent/universaljointeffector.cpp:
	- add checking the range of joint angle and joint velocity
	- set the dParamFudgeFactor to 0.8

2007-06-21  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/simspark/rsg/agent/flag_right1.rsg,
	* app/simspark/rsg/agent/flag_right2.rsg:
	- fixed indentation

	* app/simspark/rsg/agent/flag_left1.rsg,
	* app/simspark/rsg/agent/flag_left2.rsg:
	- fixed position of the flags (should be at the field corners)
	- fixed indentation

2007-06-20  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/kerosin/openglserver/openglserver.cpp (OpenGLServer::GetExtension):
	- cast the return value to be able to compile

	* app/gendot/Makefile.am:
	* app/coretest/Makefile.am:
	- added SDL_LDFLAGS
	- using top_builddir instead of top_srcdir. should be done everywhere to enable
	  having a separate build dir

	* lib/kerosin/kerosin.rb.in:
	- replaced kerosin.rb, it'll set the correct font path

	* configure.ac:
	- added rule to make kerosin.rb

	* app/simspark/Makefile.am:
	- added internalsoccermonitor.rb for distribution

2007-06-20  Oliver Obst  <fruit@kudamono>

	* configure.ac:
	check for additional headers used in the simulator

	* acinclude.m4:
	fixed boost_thread lib check

	* plugin/openglsyssdl/export.cpp:
	* plugin/openglsyssdl/openglsystemsdl_c.cpp:
	* plugin/openglsyssdl/openglsystemsdl.cpp:
	* plugin/openglsyssdl/openglsystemsdl.h:
	* plugin/openglsyssdl/Makefile.am:
	- added openglsyssdl (from simspark CVS)

	* app/simspark/Makefile.am:
	- changed BOOST_THREADS_LIB meta variable
	- rpath linker flags not working for macos

	* lib/spark/spark.rb:
	initialise OpenGL subsystem

	* lib/salt/fileclasses.cpp:
	* lib/salt/fileclasses.h:
	- added a static method Sep() delivering the platform dependent path separator (Slash is a Sepp ;-)
	- added a platform dependent BundlePath (also a static method), a directory where package files might be found

	* lib/salt/gmath.h:
	defined M_PI and M_PI_2 (if previously undefined)

	* lib/salt/Makefile.am:
	added sharedlibrary.cpp (instead of gcc/sharedlibrary); from simspark cvs

	* lib/salt/sharedlibrary.h:
	* lib/salt/sharedlibrary.cpp:
	library manages its name (from simspark CVS (?))

	* lib/zeitgeist/scriptserver/rubywrapper.h:
	added more undefs

	* lib/zeitgeist/class.h:
	removed ifdefs for HASH_MAP (from simspark CVS)... use map only
	* lib/oxygen/agentaspect/agentaspect.cpp:
	* lib/oxygen/agentaspect/agentaspect.h:
	AgentAspect manages agent ID (from simspark CVS)

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	- calling AgentAspect->Init(...) with agent id as argument

	* lib/kerosin/textureserver/textureserver.h:
	include openglserver and imageserver

	* lib/kerosin/openglserver/openglsystem_c.cpp:
	* lib/kerosin/openglserver/openglsystem.h:
	* lib/kerosin/openglserver/openglserver_c.cpp:
	* lib/kerosin/openglserver/openglserver.cpp:
	* lib/kerosin/openglserver/openglserver.h:
	- changes from simspark CVS (OpenGLServer using a GL subsystem)

	* lib/kerosin/materialserver/materialsolid.cpp:
	* lib/kerosin/materialserver/materialsolid.h:
	made Get... methods const

	* lib/kerosin/fontserver/font.cpp:
	- include windows.h for windows compiles (from simspark CVS)
	- added a check for buffer overruns (and a warning message)
	  (that's a weak fix only... the buffer should be allocated big
	  enough in the first place).

2007-06-19 Oliver Obst <fruit@users.sourceforge.net>

	* plugin/soccer/internalsoccermonitor/internalsoccerrender.cpp:
	int -> GLint to compile on Mac

2007-06-19  Xu Yuan  <xuyuan.cn@gmail.com>

	* plugin/soccer/visionperceptor/visionperceptor.h,
	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- remove flipping flag names

2007-06-18  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/gyrorateperceptor/gyrorateperceptor.cpp:
	- rates should be in local coordinates now

2007-06-17  Oliver Obst  <fruit@kudamono>

	* lib/kerosin/sceneserver/staticmesh_c.cpp:
	fixed bug with setScale

2007-06-17  Hedayat Vatankhah  <hedayat@grad.com>

	* app/simspark/rsg/boxspheres/box_with_handler.rsg:
	- commented out the PerceptorHandler, it is only needed by the TouchPerceptor

	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- maybe a small performance gain in FlipFlagNameForRightTeam

2007-06-17  Jan Murray  <murray@aeonflux>

	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp:
	  adapted paths to recorderhandles for left/right goal

	* app/simspark/rsg/agent/soccer.rsg:
	  fixed collision and recorder handlers for goals

2007-06-17  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- caching reference to the GameControlServer in UpdateBeforeKickOff

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- caching reference to the GameControlServer

	* plugin/rubysceneimporter/rubysceneimporter.cpp:
	- caching reference to the "/classes/oxygen/Transform" node

	* lib/zeitgeist/class.cpp:
	- caching reference to the "/classes" node

	* lib/oxygen/monitorserver/monitorserver.cpp:
	- removed caching of the MonitorItems again

	* lib/kerosin/sceneserver/staticmesh.cpp:
	- caching references to the GeometryServer and the MaterialServer

	* lib/kerosin/sceneserver/singlematnode.cpp:
	- caching reference to the MaterialServer

2007-06-17  Xu Yuan  <xuyuan.cn@gmail.com>

	* plugin/soccer/visionperceptor/visionperceptor.h,
	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- flip the flag names for the right team

2007-06-17  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/simspark/rsg/agent/soccerbot.rsg:
	- changed max angle values for Rle4 and Lle4 from
	  0 to 1 to avoid jumps and ODE hickups

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- some changes to make it compile again (we don't have an
	  agent_body parameter anymore, so we need to get the body first)
	- includes Yuan's changes to rotate the agent at a global angle
	- beaming will now also cause the agent to get up again ;-)

	* plugin/soccer/beameffector/beameffector.cpp:
	- made it compliant with the changed interface of the
	  SoccerBase MoveAndRotateAgent

	* app/monitorspark/soccerbindings.rb,
	* plugin/soccermonitor/soccerinput.cpp,
	* plugin/soccermonitor/soccerinput.h:
	- added some key bindings with trainer commands for
	  testing (should be removed again later!)

	* app/agentspark/soccerbotbehavior.cpp:
	- added a test for the beameffector with rotation
	  (commented out)

2007-06-17  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* plugin/soccer/trainercommandparser/trainercommandparser.cpp:
	- adapted call to MoveAndRotateAgent of the SoccerBase

	* plugin/soccer/beameffector/beameffector.cpp:
	- adapted call to MoveAndRotateAgent of the SoccerBase

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- adapted code to use MoveAgent function correctly
	- project the agent's position to the same height as the
	  position to test in ClearPlayers and ClearPlayersWithException
	- added error messages in OnLink

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	- MoveAgent takes a Transform instead of a Body
	  as parameter

	* plugin/soccer/soccerbase/soccerbase.h,
	* plugin/soccer/soccerbase/soccerbase.cpp:
	- MoveAgent and MoveAndRotateAgent now take a Transform
	  instead of a Body as parameter

	* plugin/soccer/initeffector/initeffector.cpp:
	- MoveAndRotateAgent of the SoccerBase is now used
	  (old code is still there but commented out)

	* lib/oxygen/physicsserver/collider.cpp:
	- removed superfluous allocation of CollisionHandler

	* lib/oxygen/monitorserver/monitorserver.cpp:
	- caching MonitorItems

	* lib/oxygen/controlaspect/controlaspect.cpp:
	- caching references to the SceneServer and the active scene

2007-06-15  Hedayat Vatankhah  <hedayat@grad.com>

	* lib/spark/spark.rb:
	- fixed sparkSetupMonitor so that it'll run in single threaded mode

2007-06-15  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* .cvsignore,
	* ChangeLog,
	* app/monitorspark/soccerbindings.rb,
	* app/simspark/Makefile.am,
	* app/simspark/soccersim.rb,
	* app/simspark/rsg/agent/soccerbot.rsg,
	* app/simspark/rsg/boxspheres/box_with_handler.rsg,
	* doc/TEXT_INSTEAD_OF_A_MANUAL.txt,
	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp,
	* lib/oxygen/gamecontrolserver/gamecontrolserver.h,
	* lib/oxygen/physicsserver/recorderhandler.cpp,
	* lib/oxygen/physicsserver/recorderhandler.h,
	* lib/oxygen/simulationserver/simulationserver_c.cpp,
	* plugin/soccer/ballstateaspect/ballstateaspect.cpp,
	* plugin/soccer/beameffector/beameffector.cpp,
	* plugin/soccer/gametimeperceptor/gametimeperceptor.cpp,
	* plugin/soccer/gametimeperceptor/gametimeperceptor.h,
	* plugin/soccer/gametimeperceptor/gametimeperceptor_c.cpp,
	* plugin/soccer/soccerbase/soccerbase.cpp,
	* plugin/soccer/soccerbase/soccerbase.h,
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp,
	* plugin/soccer/trainercommandparser/trainercommandparser.cpp,
	* plugin/soccermonitor/soccerinput.cpp,
	* plugin/soccermonitor/soccerinput.h,
	* plugin/sparkmonitor/sparkmonitorlogfileserver.cpp:
	- merged SIMSPARK_RULES branch

2007-06-15  Jan Murray  <murray@aeonflux>

	* app/simspark/rsg/agent/soccerbot.rsg:
	  added GameStatePerceptor

	* gamestateperceptor.cpp:
	  shortened predicate names: GameState -> GS, time -> t, playmode -> pm

2007-06-13  Jan Murray  <murray@uni-koblenz.de>

	* Makefile.am, export.cpp:
	  added GameTimePerceptor

	* gametimeperceptor_c.cpp, gametimeperceptor.h, gametimeperceptor.cpp:
	  added GameTimePerceptor, which senses the game time instead of
	  the simulation time

2007-06-12  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/soccer/soccerbase/soccerbase.h:
	- added new method GetAgentBoundingBox

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- used FindChildSupportingClass function in GetAgentBody again!
	- implemented method GetAgentBoundingBox

	* lib/zeitgeist/leaf.h:
	- fixed the FindChildSupportingClass function to recurse through
	all children.

2007-06-11  Jan Murray  <murray@uni-koblenz.de>

	* imageserver.h, imageserver.cpp:
	- Added context parameter to HandleError
	- Used this to pass the file name from Load to HandleError

2007-06-10  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* plugin/soccer/trainercommandparser/trainercommandparser.cpp:
	- changed code to find correct AgentState
	- use MoveAgent of SoccerBase to move the agent (works for the
	  SoccerBot agent now)
	- removed parsing and execution of "vel" parameter since it
	  doesn't seem to make sense for an agent with several bodies
	- cleaned up code to set AgentState parameters (existing iterator
	  can be used to access the AgentState instead of searching for
	  it several times)

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- replaced code in MoveAgent method with a call to
	  MoveAgent of SoccerBase
	- enabled UpdateKickOff

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- had to revert back to using GetChildOfClass instead of
	  FindChildSupportingClass in GetAgentBody since it never found
	  the right node (not sure why...)
	- implemented a cache for AgentStates in GetAgentState when called
	  team index and uniform number (also checks for validity since
	  agents may disconnect)
	- using the GameControlServer's new GetAgentAspectList in several
	  places now to avoid having to search the whole scene for
	  AgentAspects
	- caching references where ever possible
	- implemented methods GetGameControlServer, MoveAgent, and
	  MoveAndRotateAgent

	* plugin/soccer/soccerbase/soccerbase.h:
	- added new type TAgentStateMap
	- added new method GetGameControlServer to get a reference
	  to the GameControlServer
	- added method MoveAgent that moves an agent to a certain
	  position on the field
	- added method MoveAndRotateAgent that does the same as MoveAgent
	  but also rotates the agent a specified angle around the z-axis
	  (still buggy, work in progress)

	* plugin/soccer/beameffector/beameffector.cpp:
	- replaced moving and rotating the agent with a call
	  to the method MoveAndRotateAgent of the SoccerBase
	  class which implements this functionality now

	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	- using the new FindParentsSupportingClass method of the
	  RecorderHandler instead of GetParentsSupportingClass

	* lib/oxygen/physicsserver/recorderhandler.h,
	* lib/oxygen/physicsserver/recorderhandler.cpp:
	- implemented method FindParentsSupportingClass that has the
	  same functionality as GetParentsSupportingClass but uses the
	  C++ type system instead of string comparisons (should be faster :-)

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp,
	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	- added method GetAgentAspectList that returns a list of
	  shared pointers to the AgentAspects currently registered
	  with the GameControlServer

	* doc/TEXT_INSTEAD_OF_A_MANUAL.txt:
	- updated description for the agent command of the
	  trainer protocol (vel is not allowed anymore since it
	  doesn't make sense for an agent with more than one body)

2007-06-08  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- wrote new MoveAgent function (stolen code from BeamEffector!)
	- fixed ClearPlayers for the new agent (GetAgentBody doesn't work)
	- fixed ClearPlayersWithException!

2007-06-05  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* NEWS:
	- added news for the 0.5.5 release

	* README:
	- updated release number

	* RELEASE:
	- updated release notes

	* THANKS:
	- added several people who helped with patches and/or
	  bug/reports and/or useful comments

	* configure.ac:
	- increased version number for the 0.5.5 release

2007-06-04  Hedayat Vatankhah  <hedayat@grad.com>

	* doc/TEXT_INSTEAD_OF_A_MANUAL.txt:
	- added documentation for the ForceResistance Perceptor

	* plugin/collisionperceptor/touchperceptorhandler.h:
	* plugin/collisionperceptor/touchperceptorhandler.cpp:
	- corrected to comply with the coding style

	* plugin/collisionperceptor/forceresistanceperceptor.h:
	* plugin/collisionperceptor/forceresistanceperceptor.cpp:
	- corrected the FRP to provide one position (in local coordiantes)
	  and one force vector instead of every contact point.
	- storing dContactGeom objects rather than dContact objects
	- changed ContactListType to TContactList following project's coding style.

2007-06-03  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* plugin/sparkmonitor/sparkmonitorlogfileserver.cpp,
	* plugin/sparkmonitor/sparkmonitorlogfileserver.h,
	* plugin/sparkmonitor/sparkmonitorlogfileserver_c.cpp:
	- added support for pause, step backward, step forward,
	  and toggle for forward/backward playback

	* plugin/soccermonitor/Makefile.am,
	* plugin/soccermonitor/export.cpp:
	- added Hesham's soccerinputloglayer files

	* plugin/soccermonitor/soccerinputlogplayer.cpp,
	* plugin/soccermonitor/soccerinputlogplayer.h,
	* plugin/soccermonitor/soccerinputlogplayer_c.cpp:
	- added files for custom input handling when in logplayer
	  mode

	* lib/spark/spark.rb:
	- added setup of the step time for the logplayer

	* app/simspark/soccersim.rb:
	- added SoccerVars SingleHalftime (default: false)
	  and UseOffside (default: false)

	* app/monitorspark/soccersim.rb:
	- if in logplayer mode, load new custom
	  SoccerInputLogPlayer class to handle input

	* app/monitorspark/soccerbindings.rb:
	- new bindings for the logplayer: p - pause,
	  f - step forward, b - step backward, l - toggle
	  forward/backward playback

2007-06-02  Jan Murray  <murray@uni-koblenz.de>

	* plugin/sparkmonitor/sparkmonitor.cpp:
	  changed setLocalTransform to SLT

	* plugin/rubysceneimporter/rubysceneimporter.h,
	* plugin/rubysceneimporter/rubysceneimporter.cpp:
	  - added translation table for rsg-keywords
	  - reverted default keywords to originals

2007-06-02  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* configure.ac:
	- added rules to make ball.rsg and soccerbottorso.rsg

	* app/agentspark/soccerbotbehavior.cpp:
	- added a test for the updated BeamEffector (commented out)

	* app/simspark/Makefile.am:
	- added soccerbottorso.rsg for distribution

	* app/simspark/materials-textures.rb.in:
	- changed file names to load the new jersey textures

	* app/simspark/rsg/agent/ball.rsg:
	- use a SingleMatNode instead of a StaticMesh for the ball

	* app/simspark/rsg/agent/ball.rsg.in:
	- create the file ball.rsg with correct path for the
	  soccerball.obj model

	* app/simspark/rsg/agent/soccerbot.rsg:
	- removed commented out matLeft2 test
	- using the new soccerbottorso now

	* app/simspark/rsg/agent/soccerbottorso.rsg.in,
	* app/simspark/rsg/agent/soccerbottorso.rsg:
	- added a new torso for the soccerbot agent with correct
	  uv coords for the jerseys (soccerbottorso.obj is need
	  in the models folder of the install dir!)

	* plugin/soccer/beameffector/beameffector.cpp:
	- using the new methods of the BeamAction class
	- rotate all of the agents bodies according to
	  the given angle in the x-y-plane

	* plugin/soccer/beameffector/beamaction.h:
	- BeamAction is now constructed with 3 parameters:
	  x coord and y coord of the position to beam to,
	  as well as the angle in the x-y-plane (DEG) of
	  the agent at this position
	- removed GetPosition
	- added GetPosX, GetPosY, and GetXYAngle

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- added error log message for GetBody if no transform parent
	  was found

	* utility/Makefile.am:
	- removed entry for glextgen

2007-05-31  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/collisionperceptor/forceresistanceperceptor.h:
	* plugin/collisionperceptor/forceresistanceperceptor.cpp:
	* plugin/collisionperceptor/forceresistanceperceptor_c.cpp:
	- ExtendedTouchPerceptor renamed to ForceResistancePerceptor

	* plugin/collisionperceptor/extendedtouchperceptor.h:
	* plugin/collisionperceptor/extendedtouchperceptor.cpp:
	* plugin/collisionperceptor/extendedtouchperceptor_c.cpp:
	- added ExtendedTouchPerceptor files.

	* plugin/collisionperceptor/touchperceptorhandler.h:
	* plugin/collisionperceptor/touchperceptorhandler.cpp:
	* plugin/collisionperceptor/touchperceptorhandler_c.cpp:
	- added TouchPerceptorHandler files (a very simple extension
	  to the ContactJointHandler class)

	* lib/oxygen/physicsserver/contactjointhandler.h,
	* lib/oxygen/physicsserver/contactjointhandler.cpp:
	- corrected the name of the getter function: GetSurfaceParameter

2007-05-31  Jan Murray  <murray@uni-koblenz.de>

	* plugin/collisionperceptor/touchperceptor.cpp,
	* plugin/gyrorateperceptor/gyrorateperceptor.cpp,
	* plugin/sparkagent/hingeperceptor.cpp,
	* plugin/sparkagent/universaljointperceptor.cpp:
	  changed "name" to "n" in sexp,
	  e.g. (TCH (name lf) (val 1)) -> (TCH (n lf) (val 1))

2007-05-31  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/simspark/Makefile.am:
	- include materials.rb, flag_left.rsg, and flag_right.rsg
	  for distribution

	* app/simspark/materials.rb:
	- all the material definitions are collected in
	  this file now

	* app/simspark/simspark.rb:
	- load all the materials from materials.rb now

	* app/simspark/rsg/agent/ball.rsg:
	- load the new textured soccer ball as a StaticMesh

	* app/simspark/rsg/agent/flag_left.rsg,
	* app/simspark/rsg/agent/flag_left.rsg:
	- added flags that use colored cylinders as visualization
	  (similar to what is used in the RoboCup Humanoid League)

	* app/simspark/rsg/agent/soccer.rsg:
	- setup and named extra collision space for the right goal
	  (just like for the left goal)
	- commented out the lines since we use a texture with lines
	  on the field now
	- use field_left.rsg and field_right.rsg for the corner flags now
	- fixed setup of goal flags (thanks Carlos)

	* app/simspark/rsg/agent/soccerbot.rsg:
	- the biggest of the boxes that make up the hand has a
	  Collider now
	- setup the TouchPerceptor before the box with handler gets
	  installed, otherwise the OnLink for the PerceptorHandler
	  will fail

	* lib/oxygen/physicsserver/balljoint.cpp,
	* lib/oxygen/physicsserver/hinge2joint.cpp,
	* lib/oxygen/physicsserver/hingejoint.cpp,
	* lib/oxygen/physicsserver/universaljoint.cpp:
	- insert break statements into swith-cases (thanks Shivaram)

	* plugin/collisionperceptor/perceptorhandler.cpp:
	- whitespace

	* plugin/soccer/initeffector/singlematiniteffector.cpp:
	- using a shared_static_cast for the result of
	  FindChildSupportingClass (thanks Markus)

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- using a shared_static_cast for the result of
	  FindChildSupportingClass (thanks Markus)

	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp:
	- fixed paths for left and right goal recorder

2007-05-31  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* lib/kerosin/renderserver/renderserver.cpp:
	- replaced calls to GetChildrenSupportingClass with calls to
	  ListChildrenSupportingClass

	* lib/oxygen/physicsserver/collider.cpp:
	- replaced call to GetChildSupportingClass with call to
	  FindChildSupportingClass

	* plugin/collisionperceptor/perceptorhandler.cpp,
	* plugin/collisionperceptor/perceptorhandler.h:
	- caching reference to the collision perceptor now
	- replaced call to GetParentSupportingClass with call to
	  FindParentSupportingClass

	* plugin/gyrorateperceptor/gyrorateperceptor.cpp,
	* plugin/gyrorateperceptor/gyrorateperceptor.h:
	- caching reference to the body now
	- replaced call to GetParentSupportingClass with call to
	  FindParentSupportingClass

	* plugin/soccer/beameffector/beameffector.cpp:
	- replaced call to GetChildrenSupportingClass with call to
	  ListChildrenSupportingClass

	* plugin/soccer/initeffector/initeffector.cpp:
	- replaced call to GetChildrenSupportingClass with call to
	  ListChildrenSupportingClass

	* plugin/soccer/initeffector/singlematiniteffector.cpp:
	- replaced call to GetChildSupportingClass with call to
	  FindChildSupportingClass
	- whitespace

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- replaced call to GetChildSupportingClass with call to
	  FindChildSupportingClass

2007-05-30  Jan Murray  <murray@uni-koblenz.de>

	* initeffector/singlematiniteffector.cpp,
	* initeffector/initeffector.h,
	* initeffector/initeffector.cpp:
	  - initeffector works with and without collision spaces
	  - singlematiniteffector sets the shoulders and shanks in
	    mat{Left|Right}. The torso box is set in mat{Left|Right}<unum>,
	    e.g. "matLeft3"

2007-05-30  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* lib/oxygen/physicsserver/space.h,
	* lib/oxygen/physicsserver/space.cpp,
	* lib/oxygen/physicsserver/odeobject.h,
	* lib/oxygen/physicsserver/odeobject.cpp,
	* lib/oxygen/physicsserver/collider.h,
	* lib/oxygen/physicsserver/collider.cpp:
	- merged ODE_SUBSPACES branch with main branch

	* lib/kerosin/sceneserver/cylinder.cpp,
	* lib/kerosin/sceneserver/cylinder.h
	* lib/kerosin/sceneserver/cylinder_c.cpp:
	- added files that allow creation of a unit cylinder
	  mesh

	* lib/kerosin/Makefile.am:
	- added files for the cylinder

	* lib/kerosin/kerosin.cpp,
	* lib/kerosin/kerosin.h:
	- include cylinder header and register Cylinder class
	  with Zeitgeist

	* lib/oxygen/geometryserver/stdmeshimporter.cpp,
	* lib/oxygen/geometryserver/stdmeshimporter.h:
	- added method to create a unit cylinder mesh

	* plugin/soccer/initeffector/initeffector.cpp:
	- fixed the search for an appropriate parent of the
	  AgentAspect (since we use spaces for each agent now
	  we have to go one step higher in the hierarchy).

2007-05-29  Jan Murray  <murray@uni-koblenz.de>

	* lib/oxygen/geometryserver/stdmeshimporter.cpp:
  	  Changed texture coordinates for unitbox

	* app/simspark/rsg/jointtest/universalthing.rsg,
	* app/simspark/rsg/jointtest/sliderthing.rsg,
	* app/simspark/rsg/jointtest/simspark.rsg,
	* app/simspark/rsg/jointtest/rotorthing.rsg,
	* app/simspark/rsg/jointtest/rotorlayer.rsg,
	* app/simspark/rsg/jointtest/hingething.rsg,
	* app/simspark/rsg/jointtest/hinge2thing.rsg,
	* app/simspark/rsg/boxspheres/staticsphere.rsg,
	* app/simspark/rsg/boxspheres/staticccylinder.rsg,
	* app/simspark/rsg/boxspheres/staticbox.rsg,
	* app/simspark/rsg/boxspheres/sphere.rsg,
	* app/simspark/rsg/boxspheres/simspark.rsg,
	* app/simspark/rsg/boxspheres/row.rsg,
	* app/simspark/rsg/boxspheres/layer.rsg,
	* app/simspark/rsg/boxspheres/ccylinder.rsg,
	* app/simspark/rsg/boxspheres/box_with_handler.rsg,
	* app/simspark/rsg/boxspheres/box.rsg,
	* app/simspark/rsg/boxspheres/arena.rsg,
	* app/simspark/rsg/agent/soccerplayer.rsg,
	* app/simspark/rsg/agent/soccerbot.rsg,
	* app/simspark/rsg/agent/soccer.rsg,
	* app/simspark/rsg/agent/simspark.rsg,
	* app/simspark/rsg/agent/leggedsphere.rsg,
	* app/simspark/rsg/agent/hoap2.rsg,
	* app/simspark/rsg/agent/flag_no_viz.rsg,
	* app/simspark/rsg/agent/flag.rsg,
	* app/simspark/rsg/agent/buggy.rsg,
	* app/simspark/rsg/agent/ball.rsg:

	  .rsg files use short keywords now

	* plugin/rubysceneimporter/rubysceneimporter.cpp:
	  shortened rsg keywords:
  	  node -> nd, template -> templ, define -> def, RubySceneGraph -> RSG, RubyDeltaScene -> RDS

	* plugin/sparkmonitor/sparkmonitor.cpp:
          adapted generation of rsg expressions to new syntax

2007-05-30  Hedayat Vatankhah  <hedayat@grad.com>

	* plugin/gyrorateperceptor/gyrorateperceptor.cpp:
	- "rt" added in the rate output to be compatible with the other percepts.

2007-05-29  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* configure.ac,
	* ChangeLog,
	* Makefile.am,
	* README.MacOSX,
	* acinclude.m4,
	* configure.ac,
	* app/agentspark/Makefile.am,
	* app/fonttest/Makefile.am,
	* app/fonttest/main.cpp,
	* app/inputtest/Makefile.am,
	* app/inputtest/main.cpp,
	* app/monitorspark/Makefile.am,
	* app/monitorspark/main.cpp,
	* app/rcssmonitor3d/kerosin/Makefile.am,
	* app/rcssmonitor3d/lite/Makefile.am,
	* app/rcssmonitor3d/lite/camera.h,
	* app/rcssmonitor3d/lite/glserver.h,
	* app/rcssmonitor3d/lite/monitor.cpp,
	* app/scenetest/Makefile.am,
	* app/scenetest/main.cpp,
	* app/simspark/Makefile.am,
	* app/simspark/main.cpp,
	* app/simspark/simspark.rb,
	* lib/kerosin/Makefile.am,
	* lib/kerosin/fontserver/font.cpp,
	* lib/kerosin/fontserver/font.h,
	* lib/kerosin/inputserver/inputserver.cpp,
	* lib/kerosin/openglserver/openglserver.cpp,
	* lib/kerosin/openglserver/openglserver.h,
	* lib/kerosin/openglserver/openglwrapper.h,
	* lib/kerosin/textureserver/texture.h,
	* lib/kerosin/textureserver/textureserver.h,
	* lib/oxygen/agentaspect/agentaspect.h,
	* lib/oxygen/agentaspect/effector.h,
	* lib/oxygen/physicsserver/odewrapper.h,
	* lib/oxygen/sceneserver/sceneserver.cpp,
	* lib/salt/bounds.h,
	* lib/salt/defines.h,
	* lib/salt/fileclasses.h,
	* lib/salt/gmath.h,
	* lib/salt/matrix.h,
	* lib/salt/path.h,
	* lib/salt/rect.h,
	* lib/salt/sharedlibrary.h,
	* lib/salt/tvector.h,
	* lib/salt/vector.h,
	* lib/spark/Makefile.am,
	* lib/spark/spark.cpp,
	* lib/zeitgeist/class.h,
	* plugin/filesystemzip/filesystemzip.h,
	* plugin/gyrorateperceptor/.cvsignore,
	* plugin/inputsdl/Makefile.am,
	* plugin/inputsdl/inputdevicesdl.h,
	* plugin/inputsdl/inputsystemsdl.cpp,
	* plugin/inputsdl/inputsystemsdl.h,
	* plugin/objimporter/.cvsignore,
	* utility/rcssnet/exception.cpp,
	* utility/rcssnet/socket.cpp:
	- merged projectx (MacOS X port) branch with main branch

2007-05-29  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* plugin/voidmeshimporter/voidmeshimporter.cpp:
	- added a minimal sanity check whether the parsed
	  file actually is a valid .void file

	* plugin/Makefile.am:
	- added entry for the objimporter subdir

	* lib/spark/spark.rb:
	- added initialization of the new OBJ importer

	* lib/oxygen/geometryserver/geometryserver.cpp:
	- added a check whether the mesh returned by a mesh
	  importer actually has any faces

	* configure.ac:
	- Makefile for plugin/objimporter

	* plugin/objimporter/Makefile.am,
	* plugin/objimporter/export.cpp,
	* plugin/objimporter/objimporter.h,
	* plugin/objimporter/objimporter.cpp,
	* plugin/objimporter/objimporter_c.cpp:
	- added files for a very first, quick & dirty
	  Wavefront OBJ importer

2007-05-22 Oliver Obst <fruit@users.sourceforge.net>

	* Makefile.am:
	- added README.MacOSX to distribution

	* acinclude.m4:
	added omitted whitespace between 2 linked libs to fix compile problem
	(problem reported by Jan Murray)

	* lib/kerosin/fontserver/font.cpp:
	explicitly qualifying Font as kerosin::Font to fix name clashes
	(problem reported by Jan Murray)

	* lib/kerosin/openglserver/openglwrapper.h:
	- including GLUT for Linux, too
	(problem reported by Jan Murray)

	* plugin/inputsdl/inputsystemsdl.cpp:
	instead of SDL/SDL_thread.h, include SDL_thread.h
	(problem reported by Tobias Warden)

	* lib/spark/spark.cpp:
	- get control nodes InputControl and RenderControl just by their name
	  (removed "kerosin/" prefix from string)
	(problem reported by Tobias Warden)

	* acinclude.m4:
	- changed signature of  the test programs main methods to avoid some
	  nasty problems with using the SDL (errors would happen only if the
	  SDL is always linked in by setting some environment variables, but
	  anyway)
	- added some more  meta-variables to the existing tests, specifically
	  the OpenGL test, the Devil test, and the SDL test. Now, more details
	  of the results are saved in these, so they can be better used in the
	  Makefiles
	- compiling kerosin is now 'yes' by default
	- on Mac OS, the S-Lang library is not needed (it's needed on linux
	  possibly also only because other libs depend on it, we don't use
	  it directly).
	- on MacOS, we check for OpenGL, GLUT and IL frameworks
	- additionally checking for unix style installation of IL (i.e. openil
	   aka Devil aka libIL) on Mac OS X

	* app/monitorspark/main.cpp:
	- include SDL

	* lib/kerosin/openglserver/openglwrapper.h:
	- new wrapper for opengl to hide away platform differences

	* app/fonttest/main.cpp:
	- include sparkconfig.h
	- include SDL.h instead of SDL/SDL.h

	* app/rcssmonitor3d/lite/camera.h:
	removed including glut.h and replaced by including the openglwrapper

	* app/rcssmonitor3d/lite/glserver.h: removed including glut.h

	* app/rcssmonitor3d/lite/monitor.cpp:
	- removed including glut.h and replaced by including the openglwrapper
	- removed some strange UTF characters from comments

	* lib/kerosin/Makefile.am:
	- removed using the glextensionreg files
	- changed hard coded compile and linker options to meta-variables
	   created by configure
	- added openglwrapper.h file

	* lib/kerosin/fontserver/font.h:
	- included openglwrapper.h
	- changed type of texture id from unsigned int to GLuint

	* lib/kerosin/openglserver/openglserver.cpp:
	* lib/kerosin/openglserver/openglserver.h:
	- include SDL.h instead of SDL/SDL.h
	- removed methods and variables refering to the GL extension registry
	- whitespace / reformatting

	* lib/kerosin/textureserver/texture.h:
	- included new openglwrapper
	- changed type of texture handle from unsigned int to GLuint

	* app/fonttest/Makefile.am:
	- added some configure meta-variables

	* app/agentspark/Makefile.am:
	* app/monitorspark/Makefile.am:
	* app/rcssmonitor3d/kerosin/Makefile.am:
	* app/rcssmonitor3d/lite/Makefile.am:
	* app/scenetest/Makefile.am:
	* app/simspark/Makefile.am:
	* plugin/inputsdl/Makefile.am:
	* lib/spark/Makefile.am:
	changed hard coded compile and linker options to meta-variables
	created by configure

	* app/inputtest/main.cpp:
	* app/scenetest/main.cpp:
	* lib/kerosin/inputserver/inputserver.cpp:
	* plugin/inputsdl/inputdevicesdl.h:
	* plugin/inputsdl/inputsystemsdl.h:
	include SDL.h instead of SDL/SDL.h

	* lib/oxygen/physicsserver/odewrapper.h:
	* lib/salt/defines.h:
	* lib/salt/path.h:
	* utility/rcssnet/exception.cpp:
	* utility/rcssnet/socket.cpp:
	* plugin/filesystemzip/filesystemzip.h:
	* lib/zeitgeist/class.h:
	* lib/salt/rect.h:
	* lib/salt/sharedlibrary.h:
	config.h -> sparkconfig.h

2007-05-16 Joschka Boedecker <jboedeck@uni-koblenz.de>

	* plugin/sparkmonitor/sparkmonitorlogfileserver.cpp:
	- slowed down the log file server with usleep(33000)

	* plugin/soccer/initeffector/singlematiniteffector.cpp,
	* plugin/soccer/initeffector/singlematiniteffector.h,
	* plugin/soccer/initeffector/singlematiniteffector_c.cpp:
	- added files for SingleMatInitEffector which is derived
	  from InitEffector, but which can change the material name of a
	  single material node under the parent node of the effector
	  based on the provided team name

	* plugin/soccer/initeffector/initeffector.cpp:
	- move all bodies below the parent of the agent aspect
	  to the initial position (relative to the agent aspect)

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	- changed default agent radius
	- changed calulation of initial positions slightly

	* plugin/soccer/beameffector/beameffector.cpp:
	- changed BeamEffector to move all the bodies below the parent
	  node of the perceptor (thanks Amin)

	* plugin/soccer/export.cpp:
	- include SingleMatInitEffector

	* plugin/soccer/Makefile.am:
	- added SingleMatInitEffector files

	* plugin/gyrorateperceptor/gyrorateperceptor.cpp:
	- changed percept name to "GYR"
	- modified percept format to be more compatible with other percepts

	* plugin/collisionperceptor/touchperceptor.h,
	* plugin/collisionperceptor/touchperceptor.cpp,
	* plugin/collisionperceptor/touchperceptor_c.cpp:
	- added TouchPerceptor files

	* plugin/collisionperceptor/perceptorhandler.cpp:
	- changed search for suitable node supporting class
	  CollisionPerceptor (derived classes are also permitted)

	* plugin/collisionperceptor/export.cpp:
	- included TouchPerceptor

	* plugin/collisionperceptor/collisionperceptor.h:
	- made Percept method virtual

	* plugin/collisionperceptor/Makefile.am:
	- added TouchPerceptor files which is derived from
	  CollisionPerceptor and implements a simple binary touch
	  sensor

	* lib/spark/spark.rb:
	- import collisionperceptor bundle

	* app/simspark/rsg/boxspheres/box_with_handler.rsg:
	- added box with perceptor handler below the collider

	* app/simspark/rsg/agent/soccerbot.rsg:
	- added SingleMatInitEffector below the AgentAspect which
	  allows initialization and change of the uniform color
	  for agents of different teams
	- added BeamEffector (thanks Amin)
	- named GyroRatePerceptor (thanks Hedayat)
	- added TouchPerceptors to both feet
	- raised the ankle joint anchor for both legs to avoid penetration
	  of the feet doing large steps (thanks Guangbin Cui)

	* app/simspark/rsg/agent/soccer.rsg:
	- re-activated the flags (left commented out by mistake before)
	- flags are not visualized but can be perceived

	* app/simspark/rsg/agent/flag_no_viz.rsg:
	- added flag without visualization

	* app/simspark/soccersim.rb:
	- set agent radius to 3.5, ball mass to 0.2

	* app/simspark/simspark.rb:
	- re-activated internal rendering by default since external
	  monitor still has strange problems

	* app/agentspark/soccerbotbehavior.h,
	* app/agentspark/soccerbotbehavior.cpp:
	- added flag that indicates whether we sent the init msg
	- implemented sending the init msg in the behavior
	- removed some commented out code

	* app/agentspark/main.cpp:
	- register signal handler for SIGINT to stop the agent

2007-04-27  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/agentspark/main.cpp:
	- applied patch to fix problems related to input selection
	  and reading message from the socket (thanks to snow)

	* app/monitorspark/main.cpp:
	- added command line parameter for the logfile name
	  (thanks Hesham)

	* app/monitorspark/monitorspark.rb:
	- setup logplayer if in logplayer mode and
	  normal monitor otherwise
	- adjust initial camera rotation
	- added materials (see simspark.rb)

	* app/monitorspark/soccerbindings.rb:
	- only bind KickOff command if we are not in
	  logplayer mode

	* app/simspark/soccersim.rb:
	- changed GoalHeight to 2.44
	- changed BallRadius to 0.4

	* app/rcssmonitor3d/lite/Makefile.am:
	- removed dependencies for libXi and libXmu

	* app/simspark/simspark.rb:
	- added toggle for logfile recording
	- commented out sparkSetupRendering (monitorspark
	  should be used for visualization)
	- added materials matDarkGrey and matMagenta
	- changed matGrey a little
	- made log output verbose for now

	* app/monitorspark/soccersim.rb:
	- only register SoccerInput if we are not in logplay mode
	  (we should have a separate input for that later)

	* app/simspark/rsg/agent/soccerbot.rsg:
	- fixed head mass (now 0.3)
	- changed colors a little: using dark and light grey
	  for different limbs and the head, and magenta for the torso;
	  other side should use cyan as shirt color (TODO)

	* app/simspark/rsg/agent/soccer.rsg:
	- changed appearance of the field a bit:
	  goal height is now 2.44m, goals have blue and
	  yellow back walls, goal bars commented out,
	  flags commented out

	* app/simspark/rsg/agent/ball.rsg:
	- setting ball total mass instead of density

	* app/simspark/rsg/boxspheres/box.rsg
	* app/simspark/rsg/boxspheres/sphere.rsg
	* app/simspark/rsg/boxspheres/ccylinder.rsg:
	- added function calls to the set...Total methods
	  in order to really set the mass and not the density.
	  Resulted in some strange behavior of the agent though
	  so it is commented out for now (needs to be fixed)

	* doc/Makefile.am:
	- changed target 'apidoc' to 'doc'
	- api documentation is only (re-)build if 'make doc'
	  is called explicitly from the parent directory and
	  not as part of 'make install'

	* lib/kerosin/inputserver/inputserver.cpp:
	- initialize SDL timer in the constructor

	* lib/oxygen/Makefile.am,
	* lib/oxygen/oxygen.cpp,
	* lib/oxygen/oxygen.h:
	- added files for logfile recording

	* lib/spark/spark.rb:
	- setup AgentControl in the ruby script: port and
	  socket type can be configured now
	- set (external) monitor interval to 2 cycles
	- included Hesham's setup of the log recorder and player
	- commented out setup of a second geometry server and
	  VoidMeshImporter (thanks Oli)
	- moved setup of the InputServer to sparkSetupInput in order
	  to enable running the server without rendering (no OpenGL setup
	  needed anymore)

	* plugin/inputsdl/inputsystemsdl.cpp:
	- extended SDL init check to succeed if either
	  timer or video system was previously inititalized.
	  I initialize the timer now as part of the InputServer
	  constructor to have the server running without the need
	  to setup the OpenGL server for the SDL initialization.

	* plugin/sparkmonitor/Makefile.am,
	* plugin/sparkmonitor/export.cpp:
	- added files for logfile playback (thanks Hesham)

2007-02-27  Joschka Boedecker <jboedeck@uni-koblenz.de>

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- check if any players are connected in play mode before
	  kick off and don't do anything if not

	* lib/oxygen/gamecontrolserver/gamecontrolserver.h,
	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	- implemented method GetAgentCount which returns the number
	  of agents currently connected to the server

	* lib/oxygen/simulationserver/netmessage.cpp:
	- check whether buffer pointer is non-zero before accessing

	* plugin/soccermonitor/soccerinput.cpp:
	- fixed kickOff command

	* plugin/sparkmonitor/sparkmonitorclient.cpp:
	- check if mNetMessage pointer is non-zero before trying to
	  extract message

	* lib/spark/spark.rb:
	- fixed typo in parameter name for sparkLogAllToFile function

2006-12-13  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/simspark/Makefile.am:
	- included the file hoap2.rsg for distribution

	* lib/spark/spark.rb:
	- setting global CFM to 0.001
	- using auto disable
	- setting the depth for contact surface layer to 0.001

	* lib/oxygen/physicsserver/world.h,
	* lib/oxygen/physicsserver/world.cpp,
	* lib/oxygen/physicsserver/world_c.cpp:
	- implemented methods GetAutoDisableFlag, SetAutoDisableFlag,
	  GetContactSurfaceLayer, and SetContactSurfaceLayer that are
	  useful to get more stable simulations

	* lib/oxygen/physicsserver/space.cpp:
	- in the test for possible collision reject all bodies that
	  are connected with joints except for contact joints
	- reduced max number of contact points from 6 to 4

	* lib/oxygen/physicsserver/fixedjoint.h,
	* lib/oxygen/physicsserver/fixedjoint.cpp,
	* lib/oxygen/physicsserver/fixedjoint_c.cpp:
	- implemented method SetFixed which is required for the joint
	  to function correctly

	* app/simspark/rsg/boxspheres/box.rsg,
	* app/simspark/rsg/boxspheres/sphere.rsg:
	- modified contact parameters CFM and ERP to get a more stable
	  simulation

	* app/simspark/rsg/agent/soccer.rsg:
	- modified the contact parameters of the ground plane

	* app/simspark/rsg/agent/ball.rsg:
	- moved ball to the side a bit (make space for the big robot) :-)

	* app/agentspark/Makefile.am,
	* app/agentspark/main.cpp:
	- added entries for the HOAP2 model and behavior

	* app/simspark/rsg/agent/hoap2.rsg,
	* app/agentspark/hoap2behavior.cpp,
	* app/agentspark/hoap2behavior.h:
	- added files for the HOAP2 simulation

	* plugin/sceneeffector/sceneeffector.cpp:
	- fixed a bug that resulted in a crash if defines were used in RSG
	  agent descriptions

	* app/simspark/simspark.rb:
	- added material matLightBlue
	- uncommented setup of rendering and input to have correct timing
	  enables (thanks go to Yuan Xu for the notice)

2006-06-11  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	- commented out sending of say messages to the monitor after a
	  suggestion from Mojtaba Solgi.

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h,
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- fix from Hesham: in method CheckOffside the last playmode is now
	  considered.

	* lib/kerosin/renderserver/renderserver.h:
	- compile fix for gcc 4.1.

2006-06-03  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* plugin/soccer/ballstateaspect/ballstateaspect.h.
	* plugin/soccer/ballstateaspect/ballstateaspect.cpp,
	* plugin/soccer/kickeffector/kickeffector.h,
	* plugin/soccer/kickeffector/kickeffector.cpp,
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- kickeffector updates the last player which kicked the ball, in
	  ballstateaspect. soccerruleaspect compares the time of the last
	  collision and the last kick, and then uses the latest to make
	  decision. Thanks to Hesham for the changes.

2006-05-24  Joschka Boedecker  <joschka@uni-koblenz.de>

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- applied patch from Hesham Ebrahimi to fix an offside bug; the
	  bug could occur if a player and the ball cross the opponents line
	  of defense, and this player was the last one to shot the ball
	  before crossing.

	* app/rcssmonitor3d/lite/monitor.cpp:
	- changed the offset for the goal flag visualization to match the
	  new goalheight.

	* doc/TEXT_INSTEAD_OF_A_MANUAL.txt:
	- fixed description of trainer command for moving players on the field

2006-05-23  Jan Murray <jamu@users.sourceforge.net>

	* lib/kerosin/sceneserver/helper/NVMeshMender.h
	* lib/oxygen/gamecontrolserver/predicate.h
	* lib/oxygen/simulationserver/netcontrol.h
	* plugin/soccer/gamestateaspect/gamestateaspect.h
	* plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.h
	* plugin/soccer/soccerbase/soccerbase.h
	* plugin/soccer/visionperceptor/visionperceptor.h:
	- applied patches for gcc 4.1 Thanks to Tobias Warden


2006-05-23  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/simulator/rcssserver3D.rb:
	- changed goalheight to 1.6

	* plugin/soccer/catcheffector/catcheffector.cpp:
	- fixed a comment describing the catch margin calculation

	* plugin/soccer/kickeffector/kickeffector.cpp:
	- fixed sign bug in the torque vector calculation as reported by the
	  UTUtd team and Yuan Xu. Fixes the problem that for a kicks with
	  the same power but different directions (in the horizontal
	  plane), the distance would be different.

	* plugin/soccer/pantilteffector/pantilteffector.cpp:
	- checking the pan + tilt values for NAN to avoid server crash
	  Thanks to Yuan Xu for the fix


2006-05-23  Jan Murray  <jamu@users.sourceforge.net>

	* app/rcssmonitor3d/lite/monitor.cpp, app/rcssmonitor3d/lite/monitor.h:
	- brought list of keybindings up to date
	- added display of cam mode: after switching cam mode, the current
	  mode is displayed in the status line for 10 cycles
	- added function to move goalies from goals, bound to 'g'


2006-05-22  Jan Murray  <jamu@users.sourceforge.net>

	* app/simulator/rcssserver3d.rb
	changed goalheight to 1.4 and catchmargin to 0.8 as announced on
	the list.


2006-05-19  Jan Murray  <jamu@users.sourceforge.net>

	* app/rcssmonitor3d/lite/monitor.h, app/rcssmonitor3d/lite/monitor.cpp:
	- made manual commands (dropball,kickoff) a little more verbose
	- added greatest part of patch by Ali Nadalizadeh
	  o new autocam mode, that keeps camera X-coord on ball height
	  o toggling of texture
	  o show second view (pic in pic)
        - step backwards in logviewer-mode

	* app/rcssmonitor3d/lib/logfileserver.h, app/rcssmonitor3d/lib/logfileserver.cpp
	* app/rcssmonitor3d/lib/commserverbase.h:
	added infrastructure for stepping back in logfiles
        Thanks to Ali Nadalizadeh for the patch

	* THANKS:
	added Ali Nadalizadeh and Ma Jie


2006-05-18  Jan Murray  <jamu@users.sourceforge.net>

	* app/rcssmonitor3d/lite/camera.cpp:
	added Ma Jie's patch for mousehandling

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- clear offsidemarks in before_kickoff mode
	- fixed bug that automatic dropball after a goal moved the ball
	  from the center.

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	- made kickoff more stupid. This fixes a bug that ALL kickoffs in
	  the 2nd half are assigned to the same team.


2006-05-17  Jan Murray  <jamu@users.sourceforge.net>

	* app/agenttest/soccer.h:
	* app/agenttest/soccer.cpp:
	* app/agenttest/kicknrun.cpp:
	- added say command+sample
	- commented out call to PanTilt to make agents do something
	  sensible again

	* plugin/soccer/sayeffector/sayeffector.cpp:
	- messages containing illegal characters, i.e. '(', ')' or ' ' are
	  ignored


2006-05-16  Jan Murray  <jamu@users.sourceforge.net>

	* plugin/soccer/catcheffector/catcheffector.cpp:
	- added enum returntype for running init scripts
	- RunInitScript distinguishes between faulty and missing scripts
	  now. user local scripts are NOT overwritten if they contain
	  errors. If they are missing, the global scripts are still
	  installed.
	  Previously your local copy of the init script was overwritten,
	  if it contained a mistake. This is usually not, what you want. ;-)
	- Error/Debug messages make more sense now.
	- RunInitScriptInternal returns error type instead of boolean value now

2006-05-04  Jan Murray  <jamu@users.sourceforge.net>

	* plugin/soccer/catcheffector/catcheffector.cpp:
	- set default catch margin to 1.0m (was 2.0m)

	* app/simulator/main.cpp:
	- added rudimentary support for commandline options
	- added Option "--help" with the expected semantics
	- added Option "--initscript <script>" for reading <script>
	  instead of rcssserver3D.rb. <script> must reside in ~/.rcssserver3d/

	* app/simulator/rcssserver3D.rb:
	- added setup for catch margin in catch effector (1m)
	- added some comments
	- added a debug stream (commented out)

	* THANKS:
        - Added Philipp Vorst

	* doc/TEXT_INSTEAD_OF_A_MANUAL.txt:
	- fixed entry for kickoff command in trainercommandparser
	- added "External Links" section
	- added URL of Jackson Matsuura's guide to external links

2006-03-14  Oliver Obst  <fruit@users.sourceforge.net>

        * released rcssserver3D-0.5.1

	* plugin/soccer/Makefile.am:
	- added pantiltaction class to Makefile

	* plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.h:
	* plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp:
	- added method to set the range for panning the perceptor
	- added method to set the range for tilting the perceptor
	- changed interface: the visible area is set with SetViewCones now
	- SetPanTilt and ChangePanTilt are used to set the current pan and
	  tilt angles (Change... means changing relatively to the current
	  angles)
	- GetPan() and GetTilt() return the current pan/tilt angles

	* app/simspark/rsg/agent/ball.rsg:
	- added ball RecorderHandler

	* app/agenttest/soccer.h:
	* app/agenttest/soccer.cpp:
	- added PanTilt() method

	* plugin/soccer/agentstateperceptor/agentstateperceptor.cpp:
	- added RestrictedVisionPerceptor information to
	  the agentstate perceptor (the pan and tilt angles are reported)

	* app/simulator/rcssserver3D.rb:
	- added PanTiltEffector setup
	- fixed RestrictedVisionPerceptor setup for new static vision method

2006-03-13  Oliver Obst  <fruit@users.sourceforge.net>

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- applied patch submitted by Arne Stahlbock
	  <wolf359@informatik.uni-bremen.de> to fix the offside rules

2006-03-12  Oliver Obst  <fruit@users.sourceforge.net>

	* plugin/soccer/export.cpp:
	* plugin/soccer/Makefile.am:
	- added PanTiltEffector to the plugin

	* plugin/soccer/agentstateperceptor/agentstateperceptor.cpp:
	- the AgentStatePerceptor delivers information about the pantilt angles
	  now.  Angles are rounded to the next integer.

2006-03-10  Oliver Obst  <fruit@users.sourceforge.net>

	* plugin/soccer/pantilteffector/pantiltaction.h:
	* plugin/soccer/pantilteffector/pantilteffector.h:
	* plugin/soccer/pantilteffector/pantilteffector.cpp:
	* plugin/soccer/pantilteffector/pantilteffector_c.cpp:
	- added a pan/tilt unit so that the restrictedvisionperceptor can be
	  moved. In order to make this working, the restrictedvisionperceptor
	  has to use a the 'StaticSenseAxis' percept. The new agent command to
	  use the pantilt unit is (pantilt <PanDelta> <TiltDelta>), where
	  both deltas are measured in degrees. The maximum absolute value of the
	  deltas to be applied at a time can be configured in
	  rcssserver3D.rb

2006-03-01  Oliver Obst  <fruit@users.sourceforge.net>

	* released rcssserver3D-0.5

	* plugin/soccer/restrictedvisionperceptor/restrictedvisionperceptor.cpp:
	- fixed bug in DynamicAxisPercept, so that at most one object
          would appear in the list of seen object (don't know why).
	  The same bug is probably still in the staticaxispercept.
	  The code also needs a cleanup.

	* app/simulator/rcssserver3D.rb:
	- made the restricted vision perceptor default and fixed a small bug in intializing it

	* plugin/soccer/kickeffector/kickeffector.cpp:
	* plugin/soccer/kickeffector/kickeffector.h:
	- added random number generator references
	- using random number generator pointers instead of new copies for
	  each random number. This (mostly) removes a bug where the error
	  remains constant during the whole match (implemented
	  by Hesham <heshamebrahimi@gmail.com>)

2006-02-27  Oliver Obst  <fruit@users.sourceforge.net>

	* app/simulator/rcssserver3D.rb:
	- added new setup for catcheffector
	- added variable for using offside
          (implemented by Hesham <heshamebrahimi@gmail.com>)

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp
	* plugin/soccer/soccerruleaspect/soccerruleaspect.h
	- changes to reflect new rules due to the new catch command
	  and the offside rule
	  (implemented by Hesham <heshamebrahimi@gmail.com>)

	* plugin/soccer/catcheffector/catchaction.h
	* plugin/soccer/catcheffector/catcheffector.cpp
	* plugin/soccer/catcheffector/catcheffector.h
	* plugin/soccer/catcheffector/catcheffector_c.cpp
	- added catch effector implemented by Hesham <heshamebrahimi@gmail.com>

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	* plugin/soccer/gamestateaspect/gamestateaspect.h:
	- added a fix so that the second half kick off is always done by the
	  team that didn't have the kick of in the first half. The bug was
	  reported by Jackson Matsuura <jackson@ita.br> and many others, the
	  fix was implemented by Hesham <heshamebrahimi@gmail.com> and
	  Jan <murray@uni-koblenz.de>.

2006-02-08  Jan Murray  <murray@uni-koblenz.de>
	* lib/salt/gmath.h:
	fixed a very small mistake that probably resulted in lots of
	superfluous casts.

	* app/rcssmonitor3d/lite/glserver.cpp,
	* app/rcssmonitor3d/lite/glserver.h,
	* app/rcssmonitor3d/lite/monitor.cpp,
	* app/rcssmonitor3d/lite/monitor.h,
	* app/rcssmonitor3d/lite/Makefile.am:
	Added ability to draw a very simple grasslike texture to
	rcssmonitor3D-lite. The default texture is
	$prefix/local/share/rcssserver3d/grass.ppm. With the option
	"--texture" another texture of size 128x128 can be given. If no
	absolute path is given in this option, the monitor looks in
	~/.rcssserver3d/ and $prefix/local/share/rcssserver3d/ for the
	file.
	If no texturefile is found a random texture (currently some kind
	of checkerboard) is created.

	* app/rcssmonitor3d/lite/grass.ppm:
	the default texture

2006-01-22  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/agentspark/leggedspherebehavior.cpp,
	* app/agentspark/leggedspherebehavior.h:
	- changed struct JointSense to HingeJointSense and introduced
	  struct UniversalJointSense
	- changed JointMaps accordingly
	- changed method name ParseBallJointInfo to ParseAMotorInfo
	- implemented ParseUniversalJointInfo
	- changed behavior to use the affect the angles around the x-axis
	  of the hip joint

	* app/simspark/rsg/agent/leggedsphere.rsg:
	- the legged sphere model now uses universal joints for the
	  hips and ankles resulting in 5 DOF per leg instead of 3

	* plugin/sparkagent/universaljointperceptor.cpp:
	- changed the percepts for the axis angle and rate to have
	  unique names

	* plugin/sparkagent/universaljointaction.h:
	- condition in the if-statement of GetMotorVelocity was not
	  comparing any values and therefore always resulted in 'false'

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- added Hesham's fix for the offside bug reported by Yuan Xu
	  ("A player is not in an offside position if he is in his
	    own half of the field of play")

2006-01-08  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* lib/oxygen/physicsserver/universaljoint_c.cpp:
	- corrected a bug in function setAxis2 (wrong axis
	  was set)

2006-01-05  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* lib/oxygen/physicsserver/universaljoint_c.cpp:
	- implemented ruby function calls for setAxis1 and setAxis2

	* lib/oxygen/physicsserver/universaljoint.h,
	* lib/oxygen/physicsserver/universaljoint.cpp:
	- made SetParameter and GetParameter public in order
	  to set joint velocities correctly (doesn't work with the
	  base class methods)
	- implemented SetAxis1 and SetAxis2 to separate setup of anchor
	  and axis

	* plugin/sparkagent/Makefile.am:
	- added files for universal joint perceptor, effector,
	  and action

	* plugin/sparkagent/export.cpp:
	- added exports for the universal joint perceptor and
	  effector

	* plugin/sparkagent/hingeeffector.cpp:
	- removed some commented out code

	* plugin/sparkagent/universaljointaction.h,
	* plugin/sparkagent/universaljointeffector.cpp,
	* plugin/sparkagent/universaljointeffector.h,
	* plugin/sparkagent/universaljointeffector_c.cpp,
	* plugin/sparkagent/universaljointperceptor.cpp,
	* plugin/sparkagent/universaljointperceptor.h,
	* plugin/sparkagent/universaljointperceptor_c.cpp:
	- initial version of action, perceptor, and effector
	  for the universal joint

2006-01-02  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* app/monitorspark/Makefile.am,
	* app/simspark/Makefile.am:
	- included several ruby and rsg files for distribution

	* app/simulator/rcssserver3D.rb:
	- added soccer variable indicating whether only
	  a single half time should be played.

	* plugin/soccer/Makefile.am:
	- added hearperceptor/hearperceptor.h to the
	  nobase_libpkginclude_HEADERS list. This file is
	  missing in the rcssserver3D-0.4 release :-(

	* app/simulator/rcsoccersim3D.in:
	- commented out parts enabling the use of
	  rcssmonitor3D-kerosin since it is no longer
	  maintained (and doesn't work with current settings)

2005-12-31  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* released rcssserver3D-0.4

	* plugin/sparkagent/export.cpp:
	- added exports for HingePerceptor and HingeEffector

	* plugin/sparkagent/Makefile.am:
	- included files for HingePerceptor, HingeEffector,
	  and HingeAction

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h,
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- added Hesham's implementation of the offside rule:
	  methods CheckOffside and UpdateOffside

	* lib/oxygen/physicsserver/hingejoint.h,
	* lib/oxygen/physicsserver/hingejoint.cpp,
	* lib/oxygen/physicsserver/hingejoint_c.cpp,:
	- implemented methods GetAxis and SetAxis

	* doc/TEXT_INSTEAD_OF_A_MANUAL.txt:
	- added Hesham's Hear Perceptor and Say Effector
	  documentation

	* app/simulator/rcssserver3D.rb:
	- changed useCars to 'no' by default
	- changed useRandomNoise to 'true'

	* app/monitorspark/monitorspark.rb,
	* app/simspark/simspark.rb:
	- tweaked some material values, just eye-candy ;-)

	* app/agentspark/main.cpp:
	- changed default behavior to LeggedSphereBehavior
	  for demonstration of the new agent

	* app/agentspark/Makefile.am:
	- included files for the LeggedSphereBehavior

	* app/agentspark/soccerbehavior.cpp:
	- corrected include and a typo

	* app/agentspark/leggedspherebehavior.h,
	* app/agentspark/leggedspherebehavior.cpp,
	* app/simspark/rsg/agent/leggedsphere.rsg,
	* plugin/sparkagent/hingeaction.h,
	* plugin/sparkagent/hingeeffector.h,
	* plugin/sparkagent/hingeeffector.cpp,
	* plugin/sparkagent/hingeeffector_c.cpp,
	* plugin/sparkagent/hingeperceptor.h,
	* plugin/sparkagent/hingeperceptor.cpp,
	* plugin/sparkagent/hingeperceptor_c.cpp:
	- added files to the repository

2005-12-04  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/zeitgeist/core.cpp, lib/zeitgeist/core.h:
	Implemented a path string to node instance lookup cache for the
	zeitgeist core. Credits go to the Brainstormers 3D team for their
	profiling work and their work on the initial version.

2005-05-24  Jan Murray <murray@uni-koblenz.de>

	* app/rcssmonitor3d/lite/monitor.h,
	* app/rcssmonitor3d/lite/monitor.cpp:
	- updated list of key bindings
	- fast/realtime replay of logs can be toggled with 'f'
	- added support for drawing of velocities in 2D and 3D (toggle with 'v')
	- removed some obsolete debugging output
	- added translucent background to 2D overview

	* app/rcssmonitor3d/lib/gamestate.h,
	* app/rcssmonitor3d/lib/gamestate.cpp:
	added assignment operator to gamestate class.

2005-04-29  Patrick Riley <pfr@cs.cmu.edu>

	* app/agenttest/Makefile.am:
	- For some inexplicable reason, Tom removed ReadBuffFD from the
	  sources list during the OSX port. I've put it back.

2005-02-24  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	- added rotation matrix to agent nodes in the monitor protocol

2005-01-14  Jan Murray  <murray@uni-koblenz.de>

	* app/simulator/rcsoccersim3D.in:
	added options -h (usage message) and -light to force use of
	light monitor, even if kerosin is present.
	(Needed for backward compatibility)

2005-01-04  Oliver Obst  <fruit@robolog.org>

	* configure.ac: checking for netdb.h

	* utility/rcssnet/exception.cpp: including config.h

2004-12-22  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/kerosin/renderserver/rendercontrol.cpp:
	- backed out some debug output...

	* app/monitorspark/monitorspark.rb, app/monitorspark/soccersim.rb:
	- moved soccer monitor init to a separate file soccersim.rb

	* app/monitorspark/VeraMono.ttf:
	- added a font used by the soccer monitor

	* app/simspark/soccersim.rb:
	- registering the GameStateItem to the monitorServer to transmit
	soccer game state information

	* app/simspark/rsg/agent/soccer.rsg:
	- fixed construction of the left side line

	* configure.ac: - added plugin/soccermonitor/Makefile

	* plugin/soccermonitor/.cvsignore,
	* plugin/soccermonitor/Makefile.am:
	- Makefile for the soccermonitor

	* plugin/soccermonitor/soccerrender.cpp,
	* plugin/soccermonitor/soccerrender.h,
	* plugin/soccermonitor/soccerrender_c.cpp:
	- added class SoccerRender, a spark render extension that should draw
	the soccer monitor overlay (scores, time etc.); initial version

	* plugin/soccermonitor/soccermonitor.cpp,
	* plugin/soccermonitor/soccermonitor.h,
	* plugin/soccermonitor/soccermonitor_c.cpp:
	- added class SoccerMonitor, a spark monitor extenrsion for the soccer
	simulation. It parses and maintains the soccer game state

	* plugin/sparkmonitor/sparkmonitorclient.cpp,
	* plugin/sparkmonitor/sparkmonitorclient.h:
	- added method ParseCustomPredicates that parses the received list
	of custom predicates and dispatches them to registered
	CustomMonitor nodes

	* plugin/sparkmonitor/sparkmonitor.cpp,
	* plugin/sparkmonitor/sparkmonitor.h:
	- added method DescribeCustomPredicates that converts custom
	predicates received from registered CustomMonitor nodes into
	s-expressions.

	* plugin/Makefile.am:
	- added soccermonitor directory

	* lib/kerosin/renderserver/rendercontrol.cpp,
	* lib/kerosin/renderserver/rendercontrol.h:
	- calling registered CustomRender nodes everytime the scene graph is
	rendered

	* lib/kerosin/renderserver/customrender.cpp,
	* lib/kerosin/renderserver/customrender.h,
	* lib/kerosin/renderserver/customrender_c.cpp:
	- added class CustomRender, a base class for nodes installed below
	the Spark RenderControl node. This serves as a hook mechanism to
	render objects or overlays that are not part of the scene graph

	* lib/kerosin/inputserver/inputcontrol_c.cpp,
	* lib/kerosin/inputserver/inputcontrol.cpp:
	- added checks for a vaild FPSContoller
	- exported setFPSController to ruby

	* lib/kerosin/Makefile.am:
	- added CustomRender files

	* lib/oxygen/simulationserver/simulationserver.cpp,
	* lib/oxygen/simulationserver/simulationserver.h,
	* lib/oxygen/simulationserver/simulationserver_c.cpp:
	- changed method InitControlNode to take the name of the installed
	control node as a parameter. Deriving it from the classname caused
	problems when the name contained a namespace component

	* lib/oxygen/simulationserver/simcontrolnode_c.cpp:
	- changed baseclass to zeitgeist/Node

	* lib/oxygen/simulationserver/simcontrolnode.cpp:
	- changed baseclass to zeitgeist::Node

	* lib/oxygen/simulationserver/simcontrolnode.h:
	- changed baseclass to zeitgeist::Node to enable SimControlNodes
	to have child nodes

	* lib/oxygen/monitorserver/custommonitor.cpp,
	* lib/oxygen/monitorserver/custommonitor.h,
	* lib/oxygen/monitorserver/custommonitor_c.cpp:
	- added class CustomMonitor, a base class for objects used to
	extent the Spark monitor protocol for specific simulations,
	e.g. the soccer gamestate

	* lib/oxygen/monitorserver/monitoritem_c.cpp:
	- registering class MonitorItem to zeitgeist

2004-12-21  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simulator/rcssserver3D.rb:
	- register a GameStateItem to the MonitorServer

	* plugin/soccer/export.cpp:
	- export GameStateItem to Ruby

	* plugin/soccer/Makefile.am:
	- added GameStateItem files

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp,
	* plugin/soccer/sexpmonitor/sexpmonitor.h:
	- adapted to changed interface
	- added method AddPredicates that constructs S-Expressions of
	predicates received from MonitorItems
	- removed GameStateAspect related S-Expression composition (now
	part of GameStateItem)

	* plugin/soccer/gamestateaspect/gamestateitem.cpp,
	* plugin/soccer/gamestateaspect/gamestateitem.h,
	* plugin/soccer/gamestateaspect/gamestateitem_c.cpp:
	- added class GameStatItem, a MonitorItem that collects information
	from the GameStateAspect

	* plugin/sparkmonitor/sparkmonitor.cpp,
	* plugin/sparkmonitor/sparkmonitor.h,
	* plugin/monitortest/monitortest.cpp,
	*plugin/monitortest/monitortest.h:
	- adapted to changed interface

	* lib/oxygen/Makefile.am:
	- added MonitorItem files

	* lib/oxygen/monitorserver/monitoritem.h,
	* lib/oxygen/monitorserver/monitorserver.cpp,
	* lib/oxygen/monitorserver/monitorserver.h,
	* lib/oxygen/monitorserver/monitorserver_c.cpp,
	* lib/oxygen/monitorserver/monitorsystem.h:
	- added class MonitorItem. Instances of this class are registered
	to the MonitorServer. The intent is to use MonitorItems to collect
	data that can be transfered using any MonitorSystem, e.g. debug
	probes or reusable monitor components.  A MonitorItem creates a
	list of predicates that is passed to the installed MonitorSystems
	which transfers it to the client in it's native format.

	* app/agentspark/soccerbehavior.cpp:
	- use the beam effector to move away from the ball at startup

	* app/simspark/simspark.rb,
	* app/simspark/soccersim.rb:
	- moved setup of the soccer simulation into a separate .rb file that
	is source from simspark.rb
	- reused setup of the soccer variables from the rcssserver3d.rb script

	* app/simspark/rsg/agent/soccer.rsg:
	- using variables from the ScriptServer Soccer namespace
	- moved base plane to height 0, to work with the SoccerRuleAspect

	* app/simspark/rsg/agent/ball.rsg:
	- reading soccer variables from the ScriptServer Soccer namespace
	- using variables to parameterize ball setup

	* app/simspark/rsg/agent/soccerplayer.rsg:
	- installed the beameffector

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	- added ruby function 'run' that sources another ruby script from
	within the current running script

2004-12-20	Tom Howard	<tomhoward@users.sf.net>

	* ./acinclude.m4
	* ./configure.ac
	* ./app/agenttest/Makefile.am
	* ./app/rcssmonitor3d/lib/commserver.cpp
	* ./doc/Makefile.am
	* ./doc/devel/Makefile.am
	* ./doc/users/Makefile.am
	* ./lib/oxygen/simulationserver/netcontrol.cpp
	* ./plugin/soccer/beameffector/beameffector.cpp
	* ./utility/rcssnet/exception.cpp
	Initial OS X port

2004-10-04  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/agenttest/commserver.cpp:
	- use 'unsigned int' instead of 'long' in CommServer::PutOutput to
	prevent problems with the length prefix size on 64bit builds; this
	fixes a bug reported by liyang <subwood@ustc.edu> and Patrick
	Riley

	* app/rcssmonitor3d/lib/commserver.cpp:
	- use 'unsigned int' instead of 'unsigned long' in
	CommServer::SendMessage to prevent problems on 64bit builds with the
	length prefix size

2004-10-03  Markus Rollmann  <rollmark@uni-koblenz.de>

	* doc/TEXT_INSTEAD_OF_A_MANUAL.txt:
	- split section 1 into a server and a monitor description
	- described how to distribute agents using remote Commservers

2004-09-29  Patrick Riley <pfr@cs.cmu.edu>

	* app/agenttest/ReadBuffFD.cpp
	* app/agenttest/ReadBuffFD.h
	* app/agenttest/commserver.cpp
	* app/agenttest/commserver.h
	- These changes were actually made at RoboCup, but I forgot to
	check them in :-( This fixes a network problem in agenttest that
	could cause messages to be dropped at random times. The ReadBuffFD
	files are from SPADES.

2004-07-21  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/rcssmonitor3d/lite/monitor.cpp:
	- changed automatic camera behaviour to center on the ball position
	projected on the ground; this prevents an overly nervous camera
	movement when the ball is moving off the ground

	* app/simspark/rsg/agent/soccerplayer.rsg:
	- configured visionpercpetor to generate data relative to it's own
	orientation and disabled noise

	* plugin/soccer/visionperceptor/visionperceptor.cpp,
	* plugin/soccer/visionperceptor/visionperceptor.h,
	* plugin/soccer/visionperceptor/visionperceptor_c.cpp:
	- cleaned up VisionPerceptor implementation
	- addded experimental support for dynamic axis vision perception;
	i.e. the perceptor optinally takes it's own orientation into
	account

2004-06-20  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- made distance error dependent on the real distance

2004-06-19  Oliver Obst  <fruit@robolog.org>

	* app/agenttest/soccer.cpp:
	- fixed agent to avoid yellow balls when initializing the agents

	* lib/oxygen/spadesserver/spadesserver.cpp: changed debug output

	* app/agenttest/agenttest.rb: - set up agent logging

	* app/agenttest/main.cpp:
	- stop the agent when SPADES sends an 'X'.

	* plugin/soccer/visionperceptor/visionperceptor_c.cpp:
	- added ruby method 'useRandomNoise' to switch between original
	  and intended error generation methods

	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	* plugin/soccer/visionperceptor/visionperceptor.h:
	- fixed a bug with generating the noise during each simulation step.
	  Originally, it was intended to add random noise to be added to
	  each percept. The bug caused the error to be the same throughout a
	  match.
	- Added a method UseRandomNoise that can be used to switch back to the original
	  (buggy) behavior where the noise is generated only once.
	- setting up three random number generators for setting up the
	  noises generated
	- Added pointers to hold references to 3 random number generators
	  for creating the measurement noise.

	* plugin/soccer/driveeffector/driveeffector.h:
	* plugin/soccer/driveeffector/driveeffector.cpp:
	- fixed a bug with generating random numbers for the force values. The errors
	  were essentially the same during each step.
	- replaced variable for holding the sigma of the random distribution by a
	  pointer to a random number generator with this sigma.

2004-06-17  Christoph Ringelstein  <cringel@uni-koblenz.de>

	* app/rcssmonitor3d/lite/monitor.cpp:
	- Added usleep(10) while (busy) waiting for new server msg.

2004-06-14  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- Made a fix to ensure UpdateCachedInternal is only called once in
	  play mode Before_KickOff. This seems to fix the bug causing the
	  server to crash in this play mode (crossing my fingers ;)) and
	  eliminates the ruby error warnings.

2004-06-13  Oliver Obst  <fruit@robolog.org>

	* released rcssserver3D-0.3

	* app/simulator/rcssserver3D.rb:
	- set up error logging to cerr

	* app/simulator/rcssserver3D.rb:
	- added new soccer variable LineWidth (for the width of lines of
	   the field).
	- renamed variables barHeight and halfBarHeight to barDiameter and
	  barRadius, respectively.
	- setting barDiameter to LineWidth
	- moving goalpost and crossbar colliders towards the center of the
	  field (by the amount of LineWidth)
	- leaving small space (5cm) between the goalposts and the crossbar to
	  avoid creating contact joints during each step.
	- leaving small space (barRadius/2) between ground and goal posts to
	  avoid creating contact joints during each step.

	* app/rcssmonitor3d/lite/glserver.h:
	* app/rcssmonitor3d/lite/glserver.cpp:
	- added optional parameter to DrawGoal() to specify the radius of
	  goal posts and bars.
	- shifted goals by the bar radius towards the center of the field to
	  be compliant with the FIFA rules. This was a bug reported by
	  Tom Howard <tomhoward@users.sourceforge.net>.

	* app/rcssmonitor3d/lite/monitor.cpp:
	- removed setting up the error logging stuff (should be done from
	  ruby if necessary)
	- changed flag radius from .16 to .1
	- drawing goals with line width as bar diameter

	* lib/oxygen/spadesserver/spadesserver.cpp:
	- printing debug output to the logserver instead of cerr directly

	* lib/zeitgeist/logserver/logserver.cpp:
	- using vsnprintf instead of vsprintf to print to buffers with
	  limited size

	* lib/zeitgeist/core.cpp:
	- the conditional for adding cout streams to the logserver has been
	  changed to INIT_DEBUG.  By default, no logging streams are added
	  to the logserver now (adding can be done from ruby scripts like
	  zeitgeist.rb)

	* lib/salt/gcc/sharedlibrary.cpp:
	- changed conditional name for debug output from RCSS_DEBUG to INIT_DEBUG.

2004-06-11  Oliver Obst  <fruit@robolog.org>

	* app/rcssmonitor3d/lite/monitor.cpp:
	- exiting the monitor if the gamstate indicates a finished simulation

	* app/rcssmonitor3d/lib/gamestate.cpp:
	* app/rcssmonitor3d/lib/gamestate.h:
	- reset the 'object seen' flags each time an info message is processed
	- added IsFinished() method to indicate that the simulation has finished
	- implemented "Die" command setting the gamestate to finished by using the
	  newly added ProcessShutdown() method

	* app/agenttest/commserver.h:
	- increased buffer size to be extra safe against buffer overflows.
	  (this design of the agent commserver could be improved :-)

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	* plugin/soccer/gamestateaspect/gamestateaspect.h:
	- added IsFinished method() to indicate that the simulation is
	  finished. This method is used by the SexpMonitor.
	- added member variable to count the follow-up time of the simulation
	  (the time spent in PM_GameOver).
	- fixed the UpdateTime() and GetPlaymodeTime() methods for the follow-up time

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	- if the GameState indicates that the simulation is finished,
	  send "(Die)" to all connected monitors.
	- removed the trailing 0 Byte in strings sent to the monitors

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- added method UpdateGameOver that sets the simulation state to finished
	  and calls the GameControlServer Quit() method

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	- added method IsFinished() to indicate that a simulation is over
	- added method Quit() to set the simulation into 'finished' state

2004-06-09  Oliver Obst  <fruit@robolog.org>

	* app/agenttest/commserver.cpp:
	fixed commserver to zero terminate messages. This bug was reported
	by Alexey Vasilyev <servent@apollo.lv>.

2004-06-08  Oliver Obst  <fruit@robolog.org>

	* app/rcssmonitor3d/lib/gamestate.cpp:
	- fixed reading the play mode list in the init message

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	- sending list of play modes to the monitor in the init message

2004-0508  Jan Murray  <murray@uni-koblenz.de>

	* app/rcssmonitor3d/lite/camera.cpp:
	* app/rcssmonitor3d/lite/camera.h:
	- added method MoveCamStrafeForward

	* app/rcssmonitor3d/lite/glserver.h:
	- added method MoveCamStrafeForward

	* app/rcssmonitor3d/lite/monitor.cpp:
	* app/rcssmonitor3d/lite/monitor.h:
	- added
	  + handling of arrow keys (glutSpecialFunc)
	  + primitive single step mode for logplayer
	  + help message for keybindings

2004-06-07  Oliver Obst  <fruit@robolog.org>

	* app/rcssmonitor3d/lib/gamestate.cpp:
	- added reading play mode map from the simulator
	  If no play mode map is sent, the default mapping is used
	  (as in the first versions of the simulator).

	* app/rcssmonitor3d/lib/gamestate.h:
	- added SetPlayModeMap method

	* app/rcssmonitor3d/lite/glserver.cpp:
	- fixed drawing the goal posts by adding the goal post size to the position

	* app/simulator/rcssserver3D.rb:
	- added goal posts

2004-06-06  Oliver Obst  <fruit@robolog.org>

	* app/simulator/createagentdb.sh.in:
	- the script was changed to create the same kind of entry for the
	  installed agentdb.list (because the agentdb.list coming with the
	  simulator contains jiffies as counter).

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- fixed the side for clearing the players from penalty areas during
	  goal kicks (reported from the Aria team <robotics@ce.aut.ac.ir>).

	* app/rcssmonitor3d/lite/monitor.cpp:
	* app/rcssmonitor3d/lite/monitor.h:
	- added method to return a successor of a kickoff mode
	- added kickoff mode member variable
	- added member variable for message counting
	- added msgskip command line argument to skip server messages
	- implemented indicator for the team doing the next kick off with the
	  status line
	- using the space key to change the team doing the next kick off
	- added using the 'b' key to drop the ball at its current position

	* app/rcssmonitor3d/lib/logfileserver.cpp:
	* app/rcssmonitor3d/lib/logfileserver.h:
	- removed empty methods that are implemented as empty in the
	  base class now

	* app/rcssmonitor3d/lib/commserver.h:
	- changed SendKickOffCmd to take kick off mode as argument
	  (with random as default argument)
	- added SendDropBallCmd method

	* app/rcssmonitor3d/lib/commserverbase.h:
	- added enum for kick offs (left, right, random)
	- changed some methods from pure virtuals to virtual methods that do
	  nothing.  Only the required methods are pure virtual now.
	- Added virtual method for dropping the ball
	- Changed SendKickOffCmd to take an kickoff mode as argument

	* app/rcssmonitor3d/lib/gamestate.cpp:
	* app/rcssmonitor3d/lib/gamestate.h:
	- made GetPlayerMessage method const
	- fixed GetPlayerMessage to return false if no message was sent.
	  The previous version returned false only if a player did not exist.

	* plugin/soccer/soccertypes.h: removed KickOff pseudo play mode

	* plugin/soccer/trainercommandparser/trainercommandparser.cpp:
	* plugin/soccer/trainercommandparser/trainercommandparser.h:
	- added new monitor/trainer commands for doing the kick off and
	  dropping the ball. The new command for kick off was required to
	  remove the pseudo play mode "kick_off" with no particular side.
	- added member variables to hold the game state and the soccer rule
	  aspect.
	- removed use of KickOff play mode from the play mode map.
	- added some play modes (corner kick, goal kick, ...) to the play mode
	  map, so that monitors / trainers can set these modes.
	- calling the soccer rule DropBall method when the respective command
	  is sent from the monitor
	- calling the game state kick off method to do a random kick off when
	  the respective command is sent from the monitor

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	- added methods to drop the ball
	- renamed MoveAwayPlayers methods to ClearPlayers
	- added (rule) variable for the time to drop the ball
	- dropping the ball after mDropBallTime seconds in
	  the kick modes for kick off, kick in, goal kick, and corner kick.

	* plugin/soccer/soccerbase/soccerbase.cpp:
	* plugin/soccer/soccerbase/soccerbase.h:
	- added method to get SoccerRuleAspect

2004-06-05  Oliver Obst  <fruit@robolog.org>

	* lib/salt/bounds.h:
	fixed bug in initialization of AABB2

	* lib/salt/gmath.h:
	- using constants from <cmath> instead of defining them anew
	- made the return type of gRadToDeg and gDegToRad double instead of float
	- added gSign function

2004-06-03  Patrick Riley <pfr@cs.cmu.edu>

	* app/rcssmonitor3d/lite/monitor.cpp
	- Added #include <sstream> and std:: namespace qualifiers
	(reported by Michel Tokic)

2004-05-27  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- fixed setting play mode after goals
	- changed setting playmode to PlayOn in GoalKickMode changed
	- reduced size of penalty area boxes to match the original size of the penalty areas

2004-05-24  Patrick Riley <pfr@cs.cmu.edu>

	* lib/oxygen/spadesserver/spadesserver.cpp:
	- Fixed a bug in parseAct which was using the engine's simulation
	time rather than the time in the parseAct function call as the
	time of the action reception. This fixes a bug reported by
	liyang <subwood@ustc.edu>

2004-05-14  Oliver Obst  <fruit@robolog.org>

	* released rcssserver3D-0.2.2

	* app/agentspark/Makefile.am:
	- added header files to the list of sources

	* app/rcssmonitor3d/lite/rcssmonitor3D-lite.rb:
	removed the CommServer setup (done in monitor.cpp now)

	* app/rcssmonitor3d/lite/monitor.cpp:
	- added a LogServer setup for the different kinds of output

	* app/simulator/rcssserver3D.rb:
	- setting up the torque applied from the kickEffector
	- removed the angular drag from the ball
	- reduced goal height from 2.44 to 0.5
	- renamed variable RuleKickingPauseTime to RuleKickInPauseTime

	* app/rcssmonitor3d/lib/Makefile.am:
	* utility/rcssnet/Makefile.am:
	added library version info set in configure.ac

	* plugin/soccer/kickeffector/kickeffector.h:
	* plugin/soccer/kickeffector/kickeffector.cpp:
	- made the torque applied to the ball configurable from ruby
	  by adding a SetTorqueFactor method

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	- removed the WS in a ruby method call
	- made the ScriptServer output print to the debug Logstream
	  (instead of the normal stream)

	* lib/zeitgeist/object.cpp:
	- added special case for Object::GetClass() error message for
	  the ClassClass object

	* lib/zeitgeist/core.cpp:
	- not adding the DEBUG-Logstream in release builds

	* lib/zeitgeist/node.cpp:
	- when using AddChildReference for a leaf with no Class object,
	  print the error message only if the leaf is not ClassClass.

	* app/rcssmonitor3d/lite/monitor.cpp:
	- display goal flags at z=0.5 instead of z=1.5
	- moved the setup of the CommServer plugin from the init script
	  into the C++ part, so that for selecting either online monitor
	  or logplayer functionality using command line options is enough.

2004-05-11  Oliver Obst  <fruit@robolog.org>

	* plugin/sparkagent/Makefile.am:
	- added hinge2action.h to the list of sources

	* app/rcssmonitor3d/lite/rcssmonitor3D-lite.rb:
	- added line for using the lite-monitor as logplayer
	  (needs to be commented out; the CommServer has to be replaced by the LogfileServer)

	* app/rcssmonitor3d/lite/monitor.cpp:
	- added --logfile option.
	  The --logfile option is internally the same as the --server option;
	  the given string is stored in a std::string variable. There is no
	  check if giving the --logfile option makes sense (makes no sense
	  if the LogfileServer is not used).
	- On initialization, the internal reference to the commserver is casted to the
	  CommServerBase class

	* app/rcssmonitor3d/lite/monitor.h:
	- replaced CommServer by CommServerBase

	* app/rcssmonitor3d/lib/monitorlib.cpp:
	- register the CommServerBase and the LogfileServer

	* app/rcssmonitor3d/lib/logfileserver_c.cpp:
	* app/rcssmonitor3d/lib/logfileserver.cpp:
	* app/rcssmonitor3d/lib/logfileserver.h:
	- The logfileserver is derived from CommServerBase and reads its data
	  from monitor logfiles (e.g. monitor.log as recorded by SPADES).

	* app/rcssmonitor3d/lib/commserver_c.cpp:
	* app/rcssmonitor3d/lib/commserver.cpp:
	* app/rcssmonitor3d/lib/commserver.h:
	The CommServer for SPADES/TCP connections is now derived from the
	CommServerBase. The functionality remains the same.

	* app/rcssmonitor3d/lib/commserverbase.h:
	- added an abstract commserverbase class

2004-05-10  Oliver Obst  <fruit@robolog.org>

	* lib/zeitgeist/leaf.h:
	fixed a cast based for more recent boost versions / gcc versions (whatever).
	Based upon a suggestion by Michael Gollin <gollin@informatik.hu-berlin.de>

	* lib/salt/random.h:
	- added some code for the more recent versions of boost

	* merged new-monitor-protocoll-and-library branch
	This enables a new monitor protocol for soccer simulations.

	* app/rcssmonitor3d/lib/gamestate.cpp:
	* app/rcssmonitor3d/lib/gamestate.h:
	- added method to get information about player say messages

	* app/rcssmonitor3d/kerosin/rcssmonitor3D-kerosin.rb:
	removed monitorparser setup

	* app/rcssmonitor3d/kerosin/monitorclientcontrol.cpp:
	* app/rcssmonitor3d/kerosin/monitorclientcontrol.h:
	- removed the use of monitorparser
	- replaced GetSphere() method by 3 specialized methods GetBall(), GetAgent(), GetFlag()
	- removed MangleExpr method
	- using the new GameState instead of the MonitorParser

	* app/rcssmonitor3d/lib/gamestate.h:
	* app/rcssmonitor3d/lib/gamestate.cpp:
	- added method GetFlagName to get the string representation of a given flag
	- added method to get the height of the goals
	- added method to get the depth of the goals
	- added method to get the mass of an agent
	- added method to get the radius of an agent
	- added method to get the max speed of an agent
	- added method to get the ball radius
	- added method to get the ball mass

2004-05-07  Markus Rollmann  <rollmark@uni-koblenz.de>

	* configure.ac:
	- added plugin/sparkagent/Makefile

	* lib/spark/spark.rb:
	- import the spark effector and perceptor classes

	* app/agentspark/Makefile.am, app/agentspark/behavior.h,
	* app/agentspark/carbehavior.cpp, app/agentspark/carbehavior.h,
	* app/agentspark/main.cpp:
	- set an agent using the scene effector
	- moved behavior into a separate class; the current behavior just
	moves the car back and forth

	* app/simspark/rsg/agent/buggy.rsg,
	* app/simspark/rsg/agent/simspark.rsg:
	- added simspark.rsg, that creates a simple empty arena
	- added buggy.rsg, that sets up a simple buggy, that can be
	controlled by an agent

	* plugin/Makefile.am:
	- added sparkagent

	* plugin/sparkagent/.cvsignore,
	* plugin/sparkagent/Makefile.am,
	* plugin/sparkagent/export.cpp:
	- Makefile and zeitgeist export for hinge2effector,
	hinge2perceptor and timeperceptor

	* plugin/sparkagent/hinge2action.h,
	* plugin/sparkagent/hinge2effector.cpp,
	* plugin/sparkagent/hinge2effector.h,
	* plugin/sparkagent/hinge2effector_c.cpp:
	- added aclass Hinge2Effector, an effector that controls the motor
	settings of an Hinge2Joint

	* plugin/sparkagent/hinge2perceptor.cpp,
	* plugin/sparkagent/hinge2perceptor.h,
	* plugin/sparkagent/hinge2perceptor_c.cpp:
	- added class Hinge2Perceptor, a perceptor that reads the axis
	angle and angle rate from a Hinge2Joint

	* plugin/sparkagent/timeperceptor.cpp,
	* plugin/sparkagent/timeperceptor.h,
	* plugin/sparkagent/timeperceptor_c.cpp:
	- added class TimePerceptor, a Perceptor that reads the current
	simulation time from the SimulationServer

	* plugin/rubysceneimporter/rubysceneimporter.cpp:
	- fixed a bug in the rsg header parsing

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	- fixed a diagnostic message

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	- fixed scene graph cleanup after an agent disconnected

2004-05-06  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/spark/spark.rb:
	- registering the SceneEffector to the GameControlServer

	* lib/oxygen/sceneserver/sceneserver.cpp:
	- changed a diagostic message in method ImportScene

	* lib/oxygen/simulationserver/agentcontrol.cpp,
	* lib/oxygen/simulationserver/agentcontrol.h:
	- added method StartCycle and EndCycle
	- forwarding agent commands to the GameControlServer at the
	beginning of each cycle
	- forwarding agent senses to the agents at the end of each cycle

	* lib/oxygen/simulationserver/monitorcontrol.cpp:
	- reset the modified flag of the active scene after updates are
	sent to the monitors

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp,
	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	- changed method Parse to accept a const reference to the string
	argument to avoid an implicit copy

	* configure.ac:
	- added plugin/sceneeffector/Makefile

	* plugin/Makefile.am:
	- added sceneeffector

	* plugin/sceneeffector/.cvsignore,
	* plugin/sceneeffector/Makefile.am, plugin/sceneeffector/export.cpp,
	* plugin/sceneeffector/sceneaction.h,
	* plugin/sceneeffector/sceneeffector.cpp,
	* plugin/sceneeffector/sceneeffector.h,
	* plugin/sceneeffector/sceneeffector_c.cpp:
	- added SceneEffector plugin
	- the SceneEffector is a imports a scene file below the
	corresponding AgentAspect; similar to the soccer/CreateEffector
	this is used to build an agent

	* configure.ac:
	- added app/agentspark/Makefile

	* app/Makefile.am:
	- added agentspark

	* app/agentspark/.cvsignore, app/agentspark/Makefile.am,
	* app/agentspark/main.cpp:
	- added a simple agent skeleton for use with app/simspark

	* app/agenttest/commserver.cpp:
	- removed a debug msg

2004-05-05  Oliver Obst  <fruit@robolog.org>

	* app/rcssmonitor3d/lite/main.cpp:
	new, lean mainloop for the lite monitor

	* app/rcssmonitor3d/lite/monitor.cpp:
	* app/rcssmonitor3d/lite/monitor.h:
	Added a monitor class that uses the new monitor library

	* app/rcssmonitor3d/lite/glserver.cpp:
	* app/rcssmonitor3d/lite/glserver.h:
	- added new DrawText3D method that takes std::string arguments

	* app/rcssmonitor3d/lib/communit.cpp:
	* app/rcssmonitor3d/lib/communit.h:
	changed OpenConnection() to take const string reference instead of copy

	* app/rcssmonitor3d/lib/gamestate.cpp:
	* app/rcssmonitor3d/lib/gamestate.h:
	The GameState is a kind of WorldModel for the monitor now. It provides
	methods to access most important data you get from the monitor
	protocoll via straightforward method calls (no more magic involved to
	get simple information)

	* app/rcssmonitor3d/lib/monitorlib.cpp:
	the monitorlib registers a commserver and a GameState now (no more MonitorParser)

	* app/rcssmonitor3d/lib/commserver.cpp:
	* app/rcssmonitor3d/lib/commserver.h:
	Changed the commserver to do return only the predicates read from the simulator.
	The GetMessage() methods have been renamed to ReadMessage() and some
	methods have been changed to take const references instead of
	string copies.

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	* plugin/soccer/sexpmonitor/sexpmonitor.h:
	The monitor protocoll has been changed to produce less redundant data.
	Specifically, field flags will only be sent once, and information like team
	names and scores will be sent only if they change.
	- removed the GenerateSexp method. Functionality of this method is now in more
	  specialized methods.
	- removed the GetLastBallAgent method. Functionality of this method is now inside
	  AddAgentData method
	- Information is now added via Add.. methods (AddAgents, AddFlags, AddBall,
	   AddGameState).
	- flags/variables to remember the last sent state have been added
	- The monitor protocoll sends an "Init" message each time a new monitor connected.
          Here we send information like field size etc.
	- The monitor sends "Info" messages for the current game state each monitor cycle.

	* lib/salt/tvector.h:
 	  changed TVector output operator to print only the vector values
	  (separated by whitespace)

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	* plugin/soccer/gamestateaspect/gamestateaspect.h:
	- changed SetTeamName to take const string reference instead of a copy
	- made GameStateAspect more independent from the actual values of the
	  TTeamIndex enums

2004-05-05  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/sparkmonitor/sparkmonitorclient.cpp:
	- use the RubySceneImporter instance created in spark.rb and don't
	create a new one

	* plugin/sparkmonitor/sparkmonitor.cpp:
	- automatically send a full state update if the scene has been
	modified, i.e. nodes have been added or removed

	* plugin/rubysceneimporter/rubysceneimporter.h,
	* plugin/rubysceneimporter/rubysceneimporter_c.cpp,
	* plugin/rubysceneimporter/rubysceneimporter.cpp:
	- added member mAutoUnlink
	- added method SetUnlinkOnCompleteScenes
	- modified the importer to unlink the old scene if a new full
	state is received; it keeps the old scene if a delta is appplied

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	- mark the scene as modified after an agent connected or
	disconnected

	* lib/oxygen/sceneserver/sceneserver.cpp:
	- mark the scene as modified if after a scene graph has been
	imported

	* lib/oxygen/sceneserver/basenode.cpp:
	- fixed method GetScene to check if itself is already a scene node

	* lib/oxygen/sceneserver/scene.cpp, lib/oxygen/sceneserver/scene.h:
	- added method SetModified and GetModified
	- added member mModified
	- a scene node now carries a flag that marks if the scene graph
	has been modified, i.e. nodes have been added or removed

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp,
	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	- renamed UpdateCached to UpdateCachedInternal

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	- changed UpdateCachedAllNodes to call UpdateCached() of the
	RootNode

	* lib/zeitgeist/node.cpp, lib/zeitgeist/node.h:
	- added method UpdateCached that recursively calls UpdateCached
	and UpdateCachedInternal of all child nodes

	* lib/zeitgeist/leaf.h:
	- added method UpdateCachedInternal

	* app/simspark/rsg/boxspheres/staticbox.rsg:
	- staticbox.rsg added;was missing in CVS and needed by the demo

2004-05-02  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simspark/rsg/jointtest/rotorlayer.rsg,
	* app/simspark/rsg/jointtest/rotorthing.rsg,
	* app/simspark/rsg/jointtest/simspark.rsg:
	- added some rotors to the demo scene to test the joint motors
	parameters

	* lib/oxygen/physicsserver/joint.cpp,
	* lib/oxygen/physicsserver/joint.h,
	* lib/oxygen/physicsserver/joint_c.cpp:
	- added method SetLinearMotorVelocity, GetLinearMotorVelocity,
	SetAngularMotorVelocity, GetAngularMotorVelocity, SetMaxMotorForce
	and GetMaxMotorForce
	- changed method attach to accept 0 or 1 parameter, to allow a
	joint to be attach to the static environment

	* lib/kerosin/sceneserver/staticmesh_c.cpp:
	- changed exported load method to pass parameters on to the
	StaticMesh

2004-05-01  Oliver Obst  <fruit@robolog.org>

	* acinclude.m4:
	changed configure to fail if kerosin should be build and there are
	unfullfilled prerequisites

2004-05-01  Oliver Obst  <fruit@robolog.org>

	* lib/zeitgeist/randomserver/randomserver.cpp:
	* lib/zeitgeist/randomserver/randomserver_c.cpp:
	* app/rcssmonitor3d/lib/communit.cpp:
	* lib/oxygen/simulationserver/netcontrol.cpp:
	* plugin/sparkmonitor/sparkmonitorclient.cpp:
	* lib/salt/tvector.h:
	fixes for gcc 3.4 as reported by Michael Gollin <gollin@informatik.hu-berlin.de>

2004-05-01  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/scenetest/Makefile.am:
	- added utility include directory

	* plugin/sparkmonitor/sparkmonitorclient.cpp,
	* plugin/sparkmonitor/sparkmonitorclient.h:
	- moved network specific code to NetClient

	* lib/oxygen/Makefile.am:
	- added NetClient classes

	* lib/oxygen/simulationserver/netclient.cpp,
	* lib/oxygen/simulationserver/netclient.h,
	* lib/oxygen/simulationserver/netclient_c.cpp,
	* lib/oxygen/simulationserver/simulationserver.cpp:
	- added class NetClient, containing network client functions
	common to agents and monitor

	* plugin/sparkmonitor/sparkmonitor.cpp:
	- added support for parameterized meshes

	* lib/kerosin/sceneserver/staticmesh.cpp,
	* lib/kerosin/sceneserver/staticmesh.h:
	- added member mMeshName and mMeshParameter
	- added method GetMeshName and GetMeshParameter
	- staticmesh stores the name and the list of parameters of the
	last imported mesh

	* lib/zeitgeist/parameterlist.cpp:
	- extended AdvanceValue method for std::string to convert strings
	from int,float or double

	* app/simspark/rsg/jointtest/hinge2thing.rsg,
	* app/simspark/rsg/jointtest/hingething.rsg,
	* app/simspark/rsg/jointtest/simspark.rsg,
	* app/simspark/rsg/jointtest/sliderthing.rsg,
	* app/simspark/rsg/jointtest/universalthing.rsg:
	- testing joint stop parameters
	- modified the joint demo

	* lib/oxygen/physicsserver/angularmotor.cpp,
	* lib/oxygen/physicsserver/angularmotor.h,
	* lib/oxygen/physicsserver/balljoint.cpp,
	* lib/oxygen/physicsserver/balljoint.h,
	* lib/oxygen/physicsserver/body.cpp,
	* lib/oxygen/physicsserver/body.h,
	* lib/oxygen/physicsserver/body_c.cpp,
	* lib/oxygen/physicsserver/contactjointhandler_c.cpp,
	* lib/oxygen/physicsserver/fixedjoint.cpp,
	* lib/oxygen/physicsserver/fixedjoint.h,
	* lib/oxygen/physicsserver/hinge2joint.cpp,
	* lib/oxygen/physicsserver/hinge2joint.h,
	* lib/oxygen/physicsserver/hingejoint.cpp,
	* lib/oxygen/physicsserver/hingejoint.h,
	* lib/oxygen/physicsserver/sliderjoint.cpp,
	* lib/oxygen/physicsserver/sliderjoint.h,
	* lib/oxygen/physicsserver/universaljoint.cpp,
	* lib/oxygen/physicsserver/universaljoint.h:
	- implemented SetParameter and GetParameter

	* lib/oxygen/physicsserver/joint.cpp,
	* lib/oxygen/physicsserver/joint.h,
	*lib/oxygen/physicsserver/joint_c.cpp:
	- added joint stop set/get functions

	* lib/spark/Makefile.am, app/monitorspark/Makefile.am,
	* app/simspark/Makefile.am:
	- added utility include dir

2004-04-30  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/physicsserver/space.cpp:
	- reject collisions between bodies that are connected with joints
	- handle multiple returned contact points

	* lib/spark/spark.rb:
	- configuring monitor port and socket type

	* plugin/sparkmonitor/sparkmonitorclient.cpp,
	* plugin/sparkmonitor/sparkmonitorclient.h,
	* plugin/sparkmonitor/sparkmonitorclient_c.cpp:
	- added member SetServer, GetServer, SetPort, GetPort,
	SetClientType and GetClientType

	* lib/oxygen/simulationserver/agentcontrol_c.cpp,
	* lib/oxygen/simulationserver/monitorcontrol_c.cpp:
	- fixed ruby export BaseClass definitions

	* lib/spark/spark.rb:
	- set the monitor update interval in the spark setup script

	* lib/oxygen/simulationserver/monitorcontrol.cpp,
	* lib/oxygen/simulationserver/monitorcontrol.h,
	* lib/oxygen/simulationserver/monitorcontrol_c.cpp:
	- added method GetMonitorInterval and SetMonitorInterval

	* plugin/sparkmonitor/sparkmonitor.cpp:
	- if an incremental update is sent, Transform nodes are only
	updated if they are marked modified. The values of a current
	transform matrix are compared to it's previous state using a
	simple distance metric to further cut out Transform matrices that
	are nearly identical.

	* lib/oxygen/sceneserver/transform.cpp, lib/oxygen/sceneserver/transform.h:
	- added member mChangedMark and mOldLocalTransform
	- added method GetChangedMark and GetOldLocalTransform
	- a Transform node now marks itself as modified using the current
	mark value from the SceneServer and stores the old transformation
	matrix

	* lib/oxygen/sceneserver/sceneserver.cpp, lib/oxygen/sceneserver/sceneserver.h:
	- added member mTransformMark
	- added method GetTransformMark
	- Transform nodes that are modified during a scene traversal are
	marked using an integer that is changed every cycle. This allows
	to filter changed Transform nodes quickly without resetting the
	mark in an extra pass
	- added method ReparentTransformChildren and RemoveTransformPaths
	- after importing a scene with a SceneImporter the generated Scene
	graph is cleaned from from paths consisting only of Transform
	nodes. The minimal case is a Transform node whose only childs are
	Transform nodes. These childs are reparented to their grandparent
	and their local transform matrix is adapted, i.e. multiplied with
	the parent's matrix. The original parent node is removed from the
	scene. This reduces the number of updates that must be calculated
	and sent to a monitor client.

	* lib/zeitgeist/node.cpp:
	- don't remove child from ChildList in UnlinkChildren, now
	automatically done in SetParent()

	* lib/zeitgeist/leaf.cpp:
	- remove parent child reference in SetParent() when resetting the
	parent

2004-04-29  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simspark/simspark.rb:
	- removed rendering and input setup
	- added server setup

	* configure.ac:
	- added app/monitorspark/Makefile

	* app/Makefile.am:
	- added monitorspark

	* app/monitorspark/.cvsignore, app/monitorspark/Makefile.am,
	* app/monitorspark/bindings.rb, app/monitorspark/main.cpp,
	* app/monitorspark/monitorspark.rb:
	- added app/MonitorSpark; a monitor intended to be used together
	with app/simspark

	* lib/spark/spark.rb:
	- fixed a diagnostic message

	* plugin/sparkmonitor/sparkmonitor.cpp,
	* plugin/sparkmonitor/sparkmonitor.h,
	* plugin/sparkmonitor/sparkmonitorclient.cpp:
	- added member mFullState
	- a full update of the scene is sent only in the initial header
	information; after that only incremental updates containing
	changes in Transform nodes are sent

	* plugin/rubysceneimporter/rubysceneimporter.cpp,
	* plugin/rubysceneimporter/rubysceneimporter.h:
	- added member mDeltaScene
	- added method ReadDeltaGraph, that parses SceneGraph updates;
	used together with the SparkMonitor

	* plugin/sparkmonitor/sparkmonitorclient.cpp:
	- calling UnlinkChildren() instead of RemoveChildren()

	* lib/kerosin/materialserver/materialserver.cpp:
	- fixed setup of the default material (use the Core to create the
	instance); similar errors are now caught by a diagnostic message
	in objec.cpp

	* lib/zeitgeist/object.cpp:
	- added a diagnostic message to Object::GetClass()

	* lib/zeitgeist/node.cpp, lib/zeitgeist/node.h:
	- removed method RemoveChildren
	- added method UnlinkChildren, that recursively destructs the
	hierarchy below the current node

	* lib/zeitgeist/leaf.cpp, lib/zeitgeist/leaf.h:
	- removed method RemoveChildren
	- added method UnlinkChildren
	- fixed method SetParent to properly call OnUnlink()

	* lib/zeitgeist/core.cpp, lib/zeitgeist/core.h:
	- added method Destruct
	- calling Construct on the ClassClass instance to set mSelf
	properly

	* lib/zeitgeist/zeitgeist.cpp:
	- destructing the core object explicitly

2004-04-28  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/spark/spark.rb:
	- registering the SparkMonitor to the MonitorServer
	- added function sparkSetupMonitor() that inits the
	SparkMonitorClient control node

	* configure.ac:
	- added plugin/sparkmonitor/Makefile

	* plugin/Makefile.am: - added sparkmonitor\

	* plugin/sparkmonitor/.cvsignore, plugin/sparkmonitor/Makefile.am,
	* plugin/sparkmonitor/export.cpp,
	* plugin/sparkmonitor/sparkmonitor.cpp,
	* plugin/sparkmonitor/sparkmonitor.h,
	* plugin/sparkmonitor/sparkmonitor_c.cpp,
	* plugin/sparkmonitor/sparkmonitorclient.cpp,
	* plugin/sparkmonitor/sparkmonitorclient.h,
	* plugin/sparkmonitor/sparkmonitorclient_c.cpp:
	- added class SparkMonitor- a MonitorSystem generating
	RubySceneGraph expressions
	- added class SparkMonitorClient- a SimControlNode parsing
	received rsg expressions

	* plugin/rubysceneimporter/rubysceneimporter.h,
	* plugin/rubysceneimporter/rubysceneimporter.cpp:
	- adapted to changed SceneImporter interface
	- added method ParseScene

	* lib/kerosin/sceneserver/staticmesh.cpp,
	* lib/kerosin/sceneserver/staticmesh.h,
	- lib/kerosin/sceneserver/staticmesh_c.cpp:
	- added method GetMesh
	- exported method SetScale

	* lib/kerosin/sceneserver/singlematnode.h:
	- changed DECLARE_ABSTRACTCLASS to DECLARE_CLASS, to enable class
	instantiation from zeitgeist

	* lib/kerosin/renderserver/renderserver.cpp:
	- resetting mActiveScene in OnUnlink()

	* lib/kerosin/renderserver/rendernode.h:
	- fixed a comment

	* lib/kerosin/openglserver/glbase.h:
	- added const method variants

	* lib/oxygen/sceneserver/transform_c.cpp:
	- added method setLocalTransform

	* lib/oxygen/sceneserver/sceneimporter.h:
	- added method ParseScene to SceneImporter interface

	* lib/oxygen/simulationserver/monitorcontrol.cpp,
	* lib/oxygen/simulationserver/monitorcontrol.h:
	- added member mMonitorInterval
	- limiting monitor update rate according to mMonitorInterval

	* lib/oxygen/simulationserver/netcontrol.cpp,
	* lib/oxygen/simulationserver/netcontrol.h:
	- made CreateSocket a static method
	- fixed some log messages

	* lib/oxygen/simulationserver/netmessage.cpp:
	- some minor cleanup

	* lib/oxygen/simulationserver/simulationserver.cpp,
	* lib/oxygen/simulationserver/simulationserver.h:
	- added member mCycle
	- added method GetCycle

	* lib/zeitgeist/leaf.cpp, lib/zeitgeist/leaf.h,
	* lib/zeitgeist/node.cpp, lib/zeitgeist/node.h:
	- added method RemoveChildren

2004-04-27  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/kerosin/Makefile.am:
	- added rendernode.cpp

	* lib/kerosin/sceneserver/staticmesh.h:
	- changed BaseClass to RenderNode

	* lib/kerosin/kerosin.cpp, lib/kerosin/kerosin.h:
	- registering RenderNode files

	* lib/kerosin/renderserver/renderserver.cpp:
	- adapted renderloop to test for RendeNodes

	* lib/kerosin/renderserver/rendernode.h,
	* lib/kerosin/renderserver/rendernode_c.cpp:
	- added class RenderNode, a base class for all nodes which are
	part of the scene hierarchy and are able to render itself

	* lib/oxygen/sceneserver/basenode.cpp,
	* lib/oxygen/sceneserver/basenode.h:
	- removed method RenderInternal

2004-04-26  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simulator/Makefile.am, app/simspark/Makefile.am,
	* app/rcssmonitor3d/lib/Makefile.am,
	* app/agenttest/Makefile.am:
	- removed dependency to librcssnet3d, now implicit through oxygen

	* lib/oxygen/Makefile.am:
	- linking against rcssnet3d

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp,
	* plugin/soccer/sexpmonitor/sexpmonitor.h,
	* plugin/monitortest/monitortest.cpp,
	* plugin/monitortest/monitortest.h:
	- adapted to changed MonitorSystem interface

	* lib/oxygen/monitorserver/monitorsystem.h:
	- changed ParseMonitorMessage to accept a const reference to a
	std::string to avoid an implicit copy

2004-04-25  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/agenttest/Makefile.am, app/simulator/Makefile.am:
	- linking against rcssnet

	* utility/rcssnet/tcpsocket.cpp, utility/rcssnet/tcpsocket.hpp:
	- added method accept()

	* utility/rcssnet/socket.cpp, utility/rcssnet/socket.hpp:
	- ws changes
	- removed unused member m_dest
	- added method listen and accept

	* utility/rcssnet/exception.cpp,
	* utility/rcssnet/exception.hpp:
	- ws changes
	- added exception classes BindErr, ListenErr and AcceptErr

	* utility/rcssnet/addr.cpp, utility/rcssnet/addr.hpp:
	- implemented operator == and operator <= as member functions
	- added method setPort

	* lib/kerosin/materialserver/materialserver.cpp,
	* lib/kerosin/materialserver/materialserver.h:
	- creating a default material that is used as a fallback for
	missing material definitions

	* lib/kerosin/kerosin.cpp, lib/kerosin/kerosin.h:
	- registered InputControl and RenderControl

	* app/rcssmonitor3d/kerosin/rcssmonitor3D-kerosin.rb,
	* app/rcssmonitor3d/kerosin/main.cpp:
	- adapted to changed spark interface

	* app/rcssmonitor3d/kerosin/Makefile.am:
	- addded MonitorClientControl and MonitorInputControl files

	* app/rcssmonitor3d/kerosin/monitorinputcontrol.cpp,
	* app/rcssmonitor3d/kerosin/monitorinputcontrol.h,
	* app/rcssmonitor3d/kerosin/monitorinputcontrol_c.cpp:
	- added class MonitorInputControl, an InputControl node that
	handles custom soccer monitor input events, like the KickOff
	command

	* app/rcssmonitor3d/kerosin/monitorclientcontrol.cpp,
	* app/rcssmonitor3d/kerosin/monitorclientcontrol.h,
	* app/rcssmonitor3d/kerosin/monitorclientcontrol_c.cpp:
	- added class MonitorClientControl, a SimControlNode that handles
	the communication with the soccer server using the MonitorLib and
	updates the scene graph at the begin of each simulation cycle

	* app/simspark/main.cpp,
	* app/simspark/simspark.rb,
	* app/simspark/Makefile.am:
	- adapted to changed spark interface
	- using the SimulationServer

	* lib/spark/spark.rb:
	- setting up the SimulationServer
	- broke spark.rb into several utility functions that allow better
	customization of the spark lib (e.g. selective setup of rendering
	and server classes)

	* lib/spark/spark.cpp, lib/spark/spark.h:
	- removed enum ECmds, now part of InputControl
	- removed method Run(), runloop now part of the SimulationServer
	- removed method ProcessInput, UpdateRenderFrame,
	SetFPSController, SetHorizontalSensitivity,
	GetHorizontalSensitivity, SetVerticalSensitivity,
	GetVerticalSensitivity, GetDeltaTime, GetFramesRendered and
	SetSimStep
	- removed member mDeltaTime, mTime, mFramesRendered, mHorSens,
	mVertSens, mSimStep and mSumDeltaTime

	* lib/kerosin/Makefile.am:
	- added rendercontrol and inputcontrol files

	* lib/kerosin/renderserver/rendercontrol.cpp,
	* lib/kerosin/renderserver/rendercontrol.h,
	* lib/kerosin/renderserver/rendercontrol_c.cpp:
	- added class RenderControl, a SimControlNode that renders the
	current scene and pumps the SDL event loop at the end of each
	simulation cycle

	* lib/kerosin/inputserver/inputcontrol.cpp,
	* lib/kerosin/inputserver/inputcontrol.h,
	* lib/kerosin/inputserver/inputcontrol_c.cpp:
	- added class InputControlNode, a SimControlNode that processes
	any pending input events from the InputServer at the begin of each
	simulation cycle. It defines and handles a set of default events
	and can be customized by overriding the ProcessInput callback in
	derived classes.

	* lib/oxygen/oxygen.cpp, lib/oxygen/oxygen.h:
	- registered SimulationServer related classes

	* lib/oxygen/Makefile.am:
	- added SimulationServer related files

	* lib/oxygen/simulationserver/netmessage.cpp,
	* lib/oxygen/simulationserver/netmessage.h,
	* lib/oxygen/simulationserver/netmessage_c.cpp:
	- added class NetMessage that is responsible for the segmentation
	of raw received network data into meaningful messages, stripping
	any meta message information (e.g. msg length prefixes). It
	further is responsible to prepare a message to be sent over the
	network, i.e. to add any necessary meta information.

	* lib/oxygen/simulationserver/netbuffer.cpp,
	* lib/oxygen/simulationserver/netbuffer.h:
	- added class NetBuffer that provides a buffer used to hold the
	raw network stream of data.

	* lib/oxygen/simulationserver/monitorcontrol.cpp,
	* lib/oxygen/simulationserver/monitorcontrol.h,
	* lib/oxygen/simulationserver/monitorcontrol_c.cpp:
	- added class MonitorControl that manages the communication with
	monitors in cooperation with the MonitorServer.

	* lib/oxygen/simulationserver/agentcontrol.cpp,
	* lib/oxygen/simulationserver/agentcontrol.h,
	*lib/oxygen/simulationserver/agentcontrol_c.cpp:
	- added class AgentControl, a NetControl node that manages the
	communication with agents in cooperation with the
	GameControlServer.

	* lib/oxygen/simulationserver/netcontrol.cpp,
	* lib/oxygen/simulationserver/netcontrol.h,
	* lib/oxygen/simulationserver/netcontrol_c.cpp:
	- added class NetControl, a SimControlNode that accepts and
	manages a set of network client connections via UDP or TCP.

	* lib/oxygen/simulationserver/simcontrolnode.cpp,
	* lib/oxygen/simulationserver/simcontrolnode.h,
	* lib/oxygen/simulationserver/simcontrolnode_c.cpp:
	- added class SimControlNode that defines an interface for classes
	that are registered to the SimulationServer. The interface defines
	callbacks for the initial startup of the simulation, it's final
	shutdown and for different phases of each simulation cycle.

	* lib/oxygen/simulationserver/simulationserver.cpp,
	* lib/oxygen/simulationserver/simulationserver.h,
	* lib/oxygen/simulationserver/simulationserver_c.cpp:
	- added class SimulationServer that manages the runloop of a
	simulation

	* lib/oxygen/monitorserver/monitorserver.cpp,
	* lib/oxygen/monitorserver/monitorserver.h:
	- changed ParseMonitorMessage to accept a const reference to a
	std::string to avoid a copy

	* lib/zeitgeist/class.cpp:
	- fixed some warning messages

2004-04-24  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	- fixed a bug in GameControlServer
	AgentDisappear(). mAgentMap.erase invalidated the map entry that
	was passed to RemoveChildReference()

	* lib/oxygen/agentaspect/agentaspect.cpp:
	- ws only

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:

	- fixed some error messages - using typeid base
	ListChildrenSupportingClass in Update()

	* lib/zeitgeist/core.cpp:
	- fixed a bug in Core::New; passing a pass to a non Class node
	resulted in a segfault

2004-04-23  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simspark/bindings.rb, app/rcssmonitor3d/kerosin/bindings.rb:
	- fixed an error message

2004-04-23  Oliver Obst  <fruit@robolog.org>

	* app/rcssmonitor3d/kerosin/main.cpp:
	- changed calling the init scripts: use RunInitScripts instead of Run

	* lib/kerosin/renderserver/renderserver.cpp:
	- disabled annoying error messages about vertex program

	* lib/kerosin/kerosin.h:
	* lib/kerosin/kerosin.cpp:
	- including inputdevice and inputsystem; both classes are registered
	  during kerosin startup.

	* lib/kerosin/inputserver/inputdevice_c.cpp:
	- added InputDevice class server

	* lib/kerosin/inputserver/inputdevice.h:
	- added class server declaration

	* plugin/inputsdl/export.cpp:
	- register InputDeviceSDL additionally

	* plugin/inputsdl/inputdevicesdl_c.cpp:
	- added InputDeviceSDL class server

	* plugin/inputsdl/inputdevicesdl.h:
	- added class server declaration

	* plugin/inputsdl/inputsystemsdl_c.cpp:
	* plugin/inputsdl/keyboardsdl_c.cpp:
	* plugin/inputsdl/mousesdl_c.cpp:
	* plugin/inputsdl/timersdl_c.cpp:
	- fixed the class server base classes

	* lib/kerosin/inputserver/inputsystem_c.cpp:
	- added inputsystem class server

	* lib/kerosin/inputserver/inputsystem.h:
	- added declaration of inputsystem class server

	* app/simulator/rcssserver3D.rb:
	- removed unneeded perfectvisionperceptor
	- added drag controllers to simulate friction / air resistance
	- increased acceleration to get more reactive agents
	- senseMyPos is off by default now
	- increased half time length to 4 minutes
	- decreased monitor sense interval
	- added variables for
	  - free kick distance
	  - automatic kick off
	  - time to wait before automatic kick off

	* app/rcssmonitor3d/lib/commserver.cpp:
	- sending playmode KickOff instead of KickOff_Left for the kickoff
	  command so that a random kick off is performed.

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	* lib/zeitgeist/scriptserver/scriptserver.h:
	- added UpdateCachedAllNodes method that calls UpdateCached from all
 	  server nodes after ruby files have been read.

	* plugin/soccer/soccertypes.h:
	- added an additional play mode KickOff (used to indicate that a
	  random kick off (left or right) should be beformed).

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	* plugin/soccer/gamestateaspect/gamestateaspect.h:
	- made the Get.. methods const
	- added optional parameter to the KickOff method so that the method can
	  do the kick off for a random or for a given team. With the default
	  parameter, the kick off is done randomly.
	- added mLeadTime member variable. It is used in BeforeKickOff mode to
	  count the time already passed. The mode time is BeforeKickOff mode is
	  returned according to the lead time. mLeadTime is reset whenever a
	  play mode is changed and increased only in BeforeKickOff mode.

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	- added flag for the automatic kick off
	- added variable for the time before automatic kick off
	- implemented automatic kick off
	- removed state from UpdateCached

	* plugin/soccer/trainercommandparser/trainercommandparser.cpp:
	- added new play mode KickOff to play mode map
	- added special case for setting the play modes to one of the KickOff modes:
	  call the game state KickOff method

	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/spadesserver/spadesserver.h:
	- removed variables related to the (removed) StartUpHook

	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	- removed StartUpHook

2004-04-22  Oliver Obst  <fruit@robolog.org>

	* lib/zeitgeist/leaf.h:
	- added empty virtual method UpdateCached()

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	- added StartUpHook.  This method is called when the simulation is up
	  and running.  It is called from the simulation controller
	  (aka SpadesServer).  It is used to update all registered
	  GameControlAspects below.

	* lib/oxygen/controlaspect/controlaspect.h:
	- added a StartUpHook that will be called after a specific simulation time

2004-04-21  Oliver Obst  <fruit@robolog.org>

	* plugin/filesystemzip/Makefile.am:
	- added automake conditional so that the plugin is build only if
	  boost regex is available.

	* configure.ac:
	* acinclude.m4:
	- added RCSS_BOOST_REGEX check

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- added UpdateCached method. This method updates the soccer variables
	  from the ruby scripts. Adding this method was required because the
	  soccer bundle is initialized before the variables are set in the
	  scripts.
	- the Update<PLAYMODE> methods got an optional parameter indicating
	  which teams playmode should be updated.
	- added an MoveAgent method to move a given agent to a given position.
	  The method sets the agent velocity to 0.
	- added MoveAwayPlayers methods. These methods move away players from
	  a given team, if they stay in a given area. The area can be either
	  rectangular or spherical.
	- added some member variables caching the soccer variables from a ruby
	  script
	- in KickOff mode, players from a team are moved away from the opponent
	  half
	- in KickIn mode, players from the opponent team are moved away from
          the ball
	- in GoalKick mode, the ball is moved into the goal area. Players from
	  the opponent team are moved away from the penalty area. The play
	  mode is set to PLAY_ON, if the ball leaves the penalty area.
	- in CornerKick mode, players from the opponent team are moved away
	  from the ball.
	- the check for the ball leaving the field has been fixed to include
	  corner kicks and goal kicks. Also we check for the ball leaving the
	  field through the ground (which is possible if you change the
	  ODE params).

	* plugin/soccer/soccerbase/soccerbase.cpp:
	* plugin/soccer/soccerbase/soccerbase.h:
	- added GetAgentStates to get a list of references to all agents with
	  a given team index
	- added OpponentTeam to get the team index of the opponent team
	- made GetAgentBody more secure (wrt uninitialized references)
	- added conversions for new play modes into strings

2004-04-20  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/soccertypes.h:
	added new play modes and the respective play mode strings

	* app/rcssmonitor3d/lite/main.cpp:
	- skipping drawing of goal flags
	- drawing corner flags 1.5m in the air (to make the ball visible on corner kicks)
	- split the status line into 3 parts (left team, game state, right team)
	- added additional play modes
	- changed line and ball colors for better visibility
	- added more field lines and center circle
	- added team colors to the status line
	- made corner flags smaller

	* app/rcssmonitor3d/lite/glserver.cpp:
	- changed DrawTextPix to align 2D text horizontally in the windows (optionally)
	- implemented GetTextWidth - implemented DrawCircle
	- changed DrawSphere to take an optional resolution parameter
	- reduced distance of sphere shadow

	* app/rcssmonitor3d/lite/glserver.h:
	- added enum for 2D text alignment
	- added optional parameter to DrawTextPix to align 2D text
	  horizontally in the windows
	- made GetTextHeight const
	- added optional parameter to set resolution of spheres
	- added method GetTextWidth

	* app/rcssmonitor3d/lib/types.h:
	changed default line width from 12cm to 8cm

2004-04-18  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/kerosin/sceneserver/staticmesh.h,
	* lib/kerosin/sceneserver/staticmesh.cpp:
	- calculate normals using the NVMeshMender

	* lib/kerosin/materialserver/materialserver.cpp,
	* lib/kerosin/materialserver/materialserver.h:
	- removed method ConstructInternal

	* lib/kerosin/materialserver/material2dtexture.cpp,
	* lib/kerosin/materialserver/material2dtexture.h,
	* lib/kerosin/materialserver/material2dtexture_c.cpp:
	- changed BaseClass to MaterialSolid
	- removed texture setup via ruby variables
	- added method SetDiffuseTexture, SetNormalTexture and SetSpecularTexture

	* lib/kerosin/materialserver/materialsolid.cpp,
	* lib/kerosin/materialserver/materialsolid.h:
	- added method SetupMaterial and moved OpenGL material ther

	* lib/kerosin/openglserver/openglserver.cpp:
	- disabled a warning about an ununsed OpenGL feature

	* lib/kerosin/textureserver/textureserver.cpp,
	* lib/kerosin/textureserver/textureserver.h:
	- cleanup and ws changes
	- added method OnLink and OnUnlink
	- caching OpenGLServer and ImageServer references

	* lib/kerosin/sceneserver/staticmesh.cpp,
	* lib/kerosin/sceneserver/staticmesh.h:
	- some cleanup and ws changes
	- using shared_ptrs for mesh storage
	- removed unused lighting code

	* lib/kerosin/imageserver/imageserver.cpp,
	* lib/kerosin/imageserver/imageserver.h:
	- some cleanup and ws changes
	- printing human readable IL error messages

	* plugin/filesystemzip/Makefile.am,
	* plugin/filesystemzip/filesystemzip.cpp,
	* plugin/filesystemzip/filesystemzip.h:
	- ws changes
	- linking boost_regex to FileSystemZIP
	- adapted to changed FileSystem interface

	* plugin/filesystemrar/filesystemrar.cpp,
	* plugin/filesystemrar/filesystemrar.h:
	- adapted to changed FileSystem interface

	* plugin/filesystemstd/filesystemstd.cpp,
	* plugin/filesystemstd/filesystemstd.h:
	- adapted to changed filesystem interface

	* lib/zeitgeist/fileserver/fileserver.cpp:
	- ws changes
	- adapted to changed FileSystem interface
	- added some diagnostic output

	* lib/zeitgeist/fileserver/filesystem.h:
	- changed method open to return a shared_ptr to a salt::RFile

2004-04-18  Oliver Obst  <fruit@robolog.org>

	* app/rcssmonitor3d/kerosin/Makefile.am:
	* app/rcssmonitor3d/lite/Makefile.am:
	- using librcssmonitor3D.la instead of .a
	- removing librcssnet3D (added implicitly by librcssmonitor3D.la)

	* app/rcssmonitor3d/lib/Makefile.am:
	- adding librcssnet3D to librcssmonitor

	* utility/rcssnet/Makefile.am:
	- added missing headers
	- installing library into a directory local to .../lib/rcssserver3D/

2004-04-16  Oliver Obst  <fruit@robolog.org>

	* app/rcssmonitor3d/lib/tcpsocket.cpp:
	* app/rcssmonitor3d/lib/tcpsocket.h:
	- moved to utility/rcssnet/

	* app/rcssmonitor3d/lib/communit.cpp:
	* app/rcssmonitor3d/lib/communit.h:
	- changed headers from rcssbase to utility/rcssnet

	* app/simspark/Makefile.am:
	added librcssnet3D instead of rcssbase/net library

	* utility/rcssnet/:
	of the libpkgincludedir
	added rcssnet library
	- the rcssnet library consists of the rcssbase 9.4.5 net part plus
	- an implementation of tcpsocket
	so that users do not need to install rcssbase

2004-04-15  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simspark/rsg/boxspheres/box.rsg,
	* app/simspark/rsg/boxspheres/sphere.rsg:
	- reduced friction, allowed some sliding

	* app/simspark/rsg/jointtest/hinge2thing.rsg,
	* app/simspark/rsg/jointtest/simspark.rsg:
	- added Hinge2Joint demo

	* app/simspark/rsg/boxspheres/simspark.rsg:
	- added two capped cylinders to the demo scene

	* app/simspark/rsg/boxspheres/ccylinder.rsg,
	* app/simspark/rsg/boxspheres/staticccylinder.rsg:
	- added scene graph templates for capped cylinder

	* lib/kerosin/Makefile.am:
	- added ccylinder files

	* lib/kerosin/kerosin.cpp, lib/kerosin/kerosin.h:
	- registered CCylinder

	* lib/kerosin/sceneserver/ccylinder_c.cpp,
	* lib/kerosin/sceneserver/ccylinder.cpp,
	* lib/kerosin/sceneserver/ccylinder.h:
	- added class CCylinder

	* lib/oxygen/Makefile.am:
	- added hinge2joint files

	* lib/oxygen/oxygen.cpp, lib/oxygen/oxygen.h:
	- registered Hinge2joint

	* lib/oxygen/physicsserver/ccylindercollider.cpp,
	* lib/oxygen/physicsserver/ccylindercollider.h,
	* lib/oxygen/physicsserver/ccylindercollider_c.cpp:
	- added method SetRadius, SetLength, GetParams, GetRadius, GetLength
	and GetPointDepth

	* lib/oxygen/physicsserver/planecollider.cpp,
	* lib/oxygen/physicsserver/planecollider.h,
	* lib/oxygen/physicsserver/planecollider_c.cpp:
	- added method GetPointDepth

	* lib/oxygen/physicsserver/spherecollider.cpp,
	lib/oxygen/physicsserver/spherecollider.h,
	lib/oxygen/physicsserver/spherecollider_c.cpp:
	- add method GetPointDepth

	* lib/oxygen/physicsserver/boxcollider.cpp,
	* lib/oxygen/physicsserver/boxcollider.h,
	* lib/oxygen/physicsserver/boxcollider_c.cpp:
	- added method GetBoxLengths, GetBoxLength and GetPointDepth

	* lib/oxygen/physicsserver/universaljoint.cpp,
	* lib/oxygen/physicsserver/universaljoint.h,
	* lib/oxygen/physicsserver/universaljoint_c.cpp:
	- added method GetAngle and GetAngleRate

	* lib/oxygen/physicsserver/joint.h:
	- added enum EAxisIndex

	* lib/oxygen/physicsserver/hinge2joint.cpp,
	* lib/oxygen/physicsserver/hinge2joint.h,
	* lib/oxygen/physicsserver/hinge2joint_c.cpp:
	- added class Hinge2Joint

	* lib/oxygen/physicsserver/contactjointhandler.cpp:
	- placed check for bodies that are attached to the geoms before
	the more expensive check for a ContactJointHandler. In the common
	case of a collision between a body with the static environment
	this provides a perfomance gain.

	* lib/oxygen/physicsserver/planecollider.cpp,
	* lib/oxygen/physicsserver/planecollider.h:
	- implemented SetPosition and SetRoation as empty stubs. Calling
	dBodySetRotation and dBodySetPosition on non placeable geoms
	(space and plane) results in an ODE runtime error.

	* lib/oxygen/physicsserver/collider.cpp,
	* lib/oxygen/physicsserver/collider.h:
	- changed method SetPosition to take a const reference to Vector3f
	- changed SetPosition to interprete the pos vector as relative to
	the parent's WorldTransform
	- added method SetRotation to set the relative orientation of the
	manged geom
	- a collider that is not connected to an ODE body automatically
	takes the position and orientation of it's parent node

	* lib/oxygen/physicsserver/body.cpp:
	- using method ConvertRotationMatrix in SetRotation()

	* lib/oxygen/physicsserver/odeobject.cpp,
	* lib/oxygen/physicsserver/odeobject.h:
	- added method ConvertRotationMatrix that converts the rotation
	part of a salt::Matrix to an ODE dMatrix3

	* app/simspark/rsg/jointtest/universalthing.rsg:
	- added universalthing.rsg: a simple scene using a universal joint

	* app/simspark/rsg/jointtest/hingething.rsg,
	* app/simspark/rsg/jointtest/simspark.rsg:
	- changed due to changed joint method names
	- imorted universalthing.rsg into the scene

	* lib/oxygen/Makefile.am:
	- added UniversalJoint files

	* lib/oxygen/oxygen.cpp, lib/oxygen/oxygen.h:
	- registered UniversalJoint

	* lib/oxygen/physicsserver/universaljoint.cpp,
	* lib/oxygen/physicsserver/universaljoint.h,
	* lib/oxygen/physicsserver/universaljoint_c.cpp:
	- added class UniversalJoint

	* lib/oxygen/physicsserver/sliderjoint.cpp,
	* lib/oxygen/physicsserver/sliderjoint.h,
	* lib/oxygen/physicsserver/sliderjoint_c.cpp:
	- changed method name GetSliderPosition to GetPosition and
	GetSliderPositionRate to GetPositionRate
	- fixed calculation of slider up axis

	* lib/oxygen/physicsserver/hingejoint.cpp,
	* lib/oxygen/physicsserver/hingejoint.h,
	* lib/oxygen/physicsserver/hingejoint_c.cpp:
	- changed method name SetHingeAnchor to SetAnchor, GetHingeAngle
	to GetAngle and GetHingeAngleRate to GetAngleRate
	- fixed calculation of up vector

	* lib/oxygen/physicsserver/balljoint.cpp,
	* lib/oxygen/physicsserver/balljoint.h,
	* lib/oxygen/physicsserver/balljoint_c.cpp:
	- renamed method SetBallAnchor to SetAnchor and GetBallAnchor to
	GetAnchor
	- changed GetAnchor to return the anchor position in local
	coordinates

	* lib/oxygen/sceneserver/transform.cpp:
	- fixed Transform::SetLocalRotation: matrix rotation function
	expect radial angles
	- save and restore the local translation so that the resulting
	local matrix is invariant to the sequence of setLocalPos and
	setLocalRotation

	* lib/oxygen/sceneserver/basenode.cpp,
	* lib/oxygen/sceneserver/basenode.h:
	- added method GetLocalPos, that returns the corresponding local
	coordinates to the given world coordinates

	* lib/salt/matrix.h:
	- made Transform, Rotate and InverseRotate const

2004-04-14  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/spark/spark.rb:
	- fixed a ruby syntax error

	* app/simspark/rsg/jointtest/sliderthing.rsg:
	- creating a simple scene using the slider joint

	* app/simspark/rsg/boxspheres/arena.rsg,
	* app/simspark/rsg/boxspheres/box.rsg,
	* app/simspark/rsg/boxspheres/layer.rsg,
	* app/simspark/rsg/boxspheres/row.rsg,
	* app/simspark/rsg/boxspheres/simspark.rsg,
	* app/simspark/rsg/boxspheres/sphere.rsg,
	* app/simspark/rsg/jointtest/hingething.rsg,
	* app/simspark/rsg/jointtest/simspark.rsg:
	- adapted to changed RubySceneImporter syntax
	- setup inerta matrix correctly

	* app/simspark/simspark.rb:
	- importing scene rsg/boxspheres/simspark.rsg

	* app/simspark/main.cpp: - removed member mRsgFileName
	- scene is now imported from the ruby script

	* plugin/rubysceneimporter/rubysceneimporter.cpp,
	plugin/rubysceneimporter/rubysceneimporter.h:
	- changed RubySceneGraph syntax: Node declaration need the
	keywoard 'node'. Changed template keywoard from upper case to
	lower case. Method invocation are no longer prefixed wit a dot,
	but are contained in their own sub expression

	* lib/oxygen/sceneserver/transform.cpp,
	* lib/oxygen/sceneserver/transform.h,
	* lib/oxygen/sceneserver/transform_c.cpp:
	- added method SetLocalRotation

	* lib/oxygen/physicsserver/body.cpp,
	* lib/oxygen/physicsserver/body.h,
	* lib/oxygen/physicsserver/body_c.cpp:
	- added method SetSphereTotal, SetBox, SetBoxTotal, SetCylinder,
	SetCylinderTotal, SetCappedCylinder and SetCappedCylinderTotal to
	setup the body's mass parameters and inerta matrix.

	* lib/oxygen/physicsserver/joint.h:
	- indentation fix

	* lib/oxygen/physicsserver/hingejoint.cpp,
	* lib/oxygen/physicsserver/hingejoint.h,
	* lib/oxygen/physicsserver/hingejoint_c.cpp:
	- added method GetHingeAngle() and GetHingeAngleRate()

	* lib/oxygen/Makefile.am, lib/oxygen/oxygen.cpp,
	lib/oxygen/oxygen.h:
	- registered SliderJoint

	* lib/oxygen/physicsserver/sliderjoint.cpp,
	* lib/oxygen/physicsserver/sliderjoint.h,
	* lib/oxygen/physicsserver/sliderjoint_c.cpp:
	- added class SliderJoint

2004-04-14  Oliver Obst  <fruit@robolog.org>

	* app/simspark/Makefile.am:
	- simspark needs kerosin to be built. Building this simulator is
	  disabled with no kerosin now.

	* lib/salt/bounds.h:
	- fixed math bugs in BoundingSphere::Contains(BoundingSphere) and
	  BoundingSphere::Intersects(BoundingSphere)

2004-04-12  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/Makefile.am:
	- added hingejoint files

	* lib/oxygen/physicsserver/space.cpp:
	- removed check if two geoms are joint connected

	* lib/oxygen/physicsserver/balljoint.h:
	- fixed a comment and include guard

	* lib/oxygen/physicsserver/hingejoint.cpp,
	* lib/oxygen/physicsserver/hingejoint.h,
	* lib/oxygen/physicsserver/hingejoint_c.cpp:
	- added class HingeJoint

	* app/simspark/rsg/jointtest/hingething.rsg,
	* app/simspark/rsg/jointtest/simspark.rsg:
	- added a simple hinge joint demo scene

	* lib/oxygen/physicsserver/joint_c.cpp:
	- fixed a bug in Joint::attach ruby export

	* app/rcssmonitor3d/kerosin/main.cpp,
	* app/rcssmonitor3d/kerosin/rcssmonitor3D-kerosin.rb:
	- adapted to changed coordinate system

	* app/simspark/rsg/boxspheres/arena.rsg,
	* app/simspark/rsg/boxspheres/layer.rsg,
	* app/simspark/rsg/boxspheres/simspark.rsg:
	- adapted to changed coordinate system
	- added four walls

	* app/simspark/simspark.rb:
	- changed default camera position
	- added material matGrey

	* lib/spark/spark.rb:
	- changed gravity to drag toward negative Z
	- moved default camera position away from origin

	* lib/kerosin/sceneserver/axis.cpp:
	- fixed drawing of axis with enabled lighting

	* lib/oxygen/sceneserver/fpscontroller.cpp:
	- adapted FPSController to rotated camera

	* lib/oxygen/sceneserver/camera.cpp:
	- rotate camera 90 degree around X axis, so that positive Z points
	up and positive Y points forward

	* lib/oxygen/physicsserver/planecollider.cpp:
	- assert that the plane normal has unit length, as required by the
	ODE manual

	* plugin/rubysceneimporter/rubysceneimporter.cpp,
	* plugin/rubysceneimporter/rubysceneimporter.h:
	- implemented a simple template mechanism

	* app/rcssmonitor3d/kerosin/main.cpp,
	* app/rcssmonitor3d/kerosin/rcssmonitor3D-kerosin.rb:
	- added a light above the playing field
	- adpated material definitions

	* app/simspark/rsg/boxspheres/row.rsg,
	* app/simspark/rsg/boxspheres/simspark.rsg,
	* app/simspark/simspark.rb:
	- some changes to test the light system

	* lib/kerosin/renderserver/renderserver.cpp:
	- renderserver gets a list of lights in the SceneGraph and
	prepares them prior rendering

	* lib/kerosin/sceneserver/light.h,
	* lib/kerosin/sceneserver/light_c.cpp,
	* lib/kerosin/sceneserver/light.cpp:
	- added member mDiffuseR, mDiffuseG and mDiffuseB along with
	get/set methods
	- added method OnLink and OnUnlink; removed ConstructInternal
	- Light allocates an OpenGL light constant from the OpenGLServer
	and prepares the manged light

	* lib/kerosin/sceneserver/sphere.cpp,
	* lib/kerosin/sceneserver/box.cpp:
	- added normals

	* lib/kerosin/openglserver/openglserver.cpp,
	* lib/kerosin/openglserver/openglserver.h:
	- added member mAvailableLights
	- added method AllocLight and PutLight
	- OpenGLServer manages the set of available OpenGL light constants

	* lib/kerosin/Makefile.am:
	- added openglserver/glbase.h to dist_pkgdata_DATA

	* lib/kerosin/materialserver/materialsolid.cpp,
	* lib/kerosin/materialserver/materialsolid.h,
	* lib/kerosin/materialserver/materialsolid_c.cpp:
	- remove method SetColor
	- added member mAmbient mSpecular mDiffuse and mEmmission along
	with get/set methods
	- setting material properties uing glMaterial functions

	* lib/kerosin/openglserver/glbase.h:
	- added glbase a file that should collect OpenGL utility classes

	* lib/kerosin/renderserver/renderserver.cpp,
	* lib/kerosin/renderserver/renderserver.h:
	- removed method ConstructInternal
	- added method OnLink and OnUnlink
	- cached references to the SceneServer and the OpenGLServer

2004-04-11  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simspark/rsg/boxspheres/arena.rsg,
	* app/simspark/rsg/boxspheres/box.rsg,
	* app/simspark/rsg/boxspheres/layer.rsg,
	* app/simspark/rsg/boxspheres/row.rsg,
	* app/simspark/rsg/boxspheres/simspark.rsg,
	* app/simspark/rsg/boxspheres/sphere.rsg:
	- added some rubyscene demo file for app/simspark

	* configure.ac:
	- added simspark Makefile

	* app/Makefile.am:
	- added simspark

	* app/simspark/.cvsignore, app/simspark/Makefile.am,
	* app/simspark/bindings.rb, app/simspark/main.cpp,
	* app/simspark/simspark.rb:
	- added simspark, a monolithic simulator based on the spark lib

	* lib/spark/spark.cpp, lib/spark/spark.h:
	- added method SetSimStep
	- added member mSimStep and mSumDeltaTime
	- changed spark run to step the world in mSimStep increments if
	mSimStep is nozero. If more than mSimStep time passed Run() will
	step the world multiple times. A constant step rate provides a
	more stable physical integration

	* lib/oxygen/sceneserver/sceneserver.cpp,
	* lib/oxygen/sceneserver/sceneserver.h:
	- changed method ImportScene to accept a list of parameters that
	is passed on to the SceneImporter

	* lib/oxygen/sceneserver/sceneimporter.h:
	- changed SceneImporter interface to accept a list of parameters

	* lib/oxygen/sceneserver/scene.cpp:
	- fixed a compiler warning about an unused parameter

	* lib/oxygen/sceneserver/basenode.cpp,
	* lib/oxygen/sceneserver/basenode.h,
	* lib/oxygen/sceneserver/basenode_c.cpp:
	- changed method ImportScene to accept a list of parameters

	* lib/zeitgeist/parameterlist.cpp, lib/zeitgeist/parameterlist.h:
	- added method Pop_Front() and Pop_Back()

	* app/rcssmonitor3d/kerosin/Makefile.am,
	* app/rcssmonitor3d/kerosin/main.cpp,
	* app/rcssmonitor3d/kerosin/rcssmonitor3D-kerosin.rb:
	- ported rcssmonitor3d/kerosin to libSpark

	* app/inputtest/inputtest.rb:
	- fixed setup of scan code mapping

	* app/inputtest/german.scan.rb:
	- removed german.scan.rb, now part of the kerosin lib

	* app/scenetest/script/german.scan.rb, app/scenetest/script/us.scan.rb:
	- removed keyboard mapping files, now part of the kerosin lib

	* app/scenetest/data/script/scenetest.rb:
	- fixed setup of keyboard mapping

	* lib/kerosin/inputserver/us.scan.rb:
	- added us.scan.rb; keyboard code mapping for an US keyboard

	* app/rcssmonitor3d/kerosin/german.scan.rb:
	- removed german.scan.rb, now part of the kerosin library

	* lib/kerosin/Makefile.am:
	- installing inputserver/german.scan.rb

	* lib/kerosin/inputserver/inputserver_c.cpp,
	* lib/kerosin/inputserver/inputserver.cpp,
	* lib/kerosin/inputserver/inputserver.h:
	- removed method ImportScanCodeMapping
	- added method SetScanCodeMapping and member mScanCodeScript
	- after the InputSystem is registered the InputServer
	automatically calls the set scan code mapping script

	* lib/kerosin/inputserver/german.scan.rb:
	- added german.scan.rb, scancode translation for a german
	keyboard; moved here from app/rcssmonitor3D/kerosin, used as a
	system init script for the InputServer

	* lib/Makefile.am:
	- added lib spark

	* configure.ac:
	- added lib spark

	* lib/spark/.cvsignore, lib/spark/Makefile.am,
	* lib/spark/spark.cpp, lib/spark/spark.h, lib/spark/spark.rb:
	- added libSpark files; a framework for apps using the kerosin
	library

	* lib/zeitgeist/leaf.h:
	- fixed recursive call in ListChildrenSupportingClass

2004-04-11  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/visionperceptor/visionperceptor_c.cpp:
	* plugin/soccer/visionperceptor/visionperceptor.h:
	- moved SetPredicateName to base class

	* lib/oxygen/agentaspect/perceptor_c.cpp:
	* lib/oxygen/agentaspect/perceptor.cpp:
	* lib/oxygen/agentaspect/perceptor.h:
	- added SetPredicateName method (moved up the class hierarchy from
	  VisionPerceptor)

2004-04-10  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/Makefile.am:
	- installing the headers into a soccer subdir

	* plugin/soundsystemfmod/soundstreamfmod.cpp:
	* plugin/soundsystemfmod/soundstreamfmod.h:
	* plugin/soundsystemfmod/soundmodulefmod.cpp:
	* plugin/soundsystemfmod/soundmodulefmod.h:
	* plugin/soundsystemfmod/soundeffectfmod.cpp:
	* plugin/soundsystemfmod/soundeffectfmod.h:
	- changed Load method to take std::string arguments (due to
	changes in the base class)

	* app/scenetest/md5mesh_c.cpp:
	- fixed md5mesh for new ruby interface
	- added GPL header

	* lib/oxygen/Makefile.am:
	- added sceneimporter

2004-04-09  Oliver Obst  <fruit@robolog.org>

	* app/gendot/main.cpp: changed order of includes

	* app/rcssmonitor3d/kerosin/Makefile.am:
	* app/rcssmonitor3d/lite/Makefile.am:
	- fixed include dir

	* app/rcssmonitor3d/lib/Makefile.am:
	- fixed include dir
	- added types.h to the headers

	* app/rcssmonitor3d/lib/gameparam.h:
	* app/rcssmonitor3d/lib/gameparam.cpp:
	make Get... methods const

	* app/rcssmonitor3d/lite/main.cpp:
	* app/rcssmonitor3d/lib/gamestate.h:
	* app/rcssmonitor3d/lib/monitorparser.h:
	- fixed include

	* plugin/rubysceneimporter/Makefile.am:
	- added Makefile.am instead of the generated Makefile

2004-04-07  Markus Rollmann  <rollmark@uni-koblenz.de>

	* configure.ac:
	- added app/gendot Makefile

	* app/gendot/.cvsignore, app/gendot/Makefile.am,
	* app/gendot/gendot.rb, app/gendot/include.dot, app/gendot/main.cpp:
	- added app/gendot a tool to create a graphviz dotfile of the
	runtime zeitgeist class hierarachy

	* lib/oxygen/oxygen.cpp, lib/oxygen/oxygen.h:
	- registering ball and balljoint classes

	* lib/oxygen/Makefile.am: - readded odeobject.cpp
	- added joint and balljoint files

	* lib/oxygen/physicsserver/body.cpp:
	- using ODEObject utility functions to access world and space
	nodes

	* lib/oxygen/physicsserver/collider.cpp,
	* lib/oxygen/physicsserver/collider.h:
	- removed member mSpace
	- using utility functions of ODEObject base to acces world and
	space nodes

	* lib/oxygen/physicsserver/odeobject.cpp,
	* lib/oxygen/physicsserver/odeobject.h:
	- readded odeoebject.cpp
	- add methods GetWorld, GetSpace, GetWorldID and GetSpaceID that
	are used in various places throughout the PhysicsServer
	implementation

	* lib/oxygen/physicsserver/balljoint.cpp,
	* lib/oxygen/physicsserver/balljoint.h,
	* lib/oxygen/physicsserver/balljoint_c.cpp:
	- added class BallJoint encapsulating an ODE 'ball and socket'
	joint

	* lib/oxygen/physicsserver/joint.cpp,
	* lib/oxygen/physicsserver/joint.h,
	* lib/oxygen/physicsserver/joint_c.cpp:
	- added class joint that encapsulates an ODE joint and functions
	common to all joint types

	* lib/oxygen/physicsserver/space.cpp,
	* lib/oxygen/physicsserver/space.h:
	- removed method GetCollider, now part of Collider; using
	Collider::GetCollider instead

	* lib/oxygen/physicsserver/collider.cpp,
	* lib/oxygen/physicsserver/collider.h:
	- changed method GetCollider to return a shared_ptr to the node
	corresponding to the given dGeomID

	* lib/oxygen/physicsserver/body.cpp,
	* lib/oxygen/physicsserver/body.h:
	- changed method GetBody to return a shared_ptr to the node
	corresponding to the given dBodyId
	- added method CreateBody, factored out of OnLink()
	- remove method OnUnlink(), content moved into destructor

2004-04-06  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/Makefile.am:
	headers required for other plugins need to be installed in order to be able
	to extend the simulator. The soccertypes.h and soccerbase/soccerbase.h are
	installed so that they are accessible from outside the project.

2004-04-05  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/rcssmonitor3d/kerosin/rcssmonitor3D-kerosin.rb:
	- added a DragController below the camera
	- tuned FPSController and DragController for high acceleration and
	almost immediate stop

	* lib/oxygen/oxygen.cpp, lib/oxygen/oxygen.h:
	- registered BodyController and DragController

	* lib/oxygen/Makefile.am:
	- add bodycontroller and dragcontroller files
	- removed odeobject.cpp

	* lib/oxygen/sceneserver/fpscontroller.cpp,
	* lib/oxygen/sceneserver/fpscontroller.h,
	* lib/oxygen/sceneserver/fpscontroller_c.cpp:
	- inherited FPSController from BodyController
	- removed drag implementation

	* lib/oxygen/physicsserver/odeobject.cpp,
	* lib/oxygen/physicsserver/odeobject.h:
	- removed unsused mPhysicsServer member and method
	ConstructInternal
	- removed odeobject.cpp
	- declared ODEObject as an abstract baseclass

	* lib/oxygen/physicsserver/dragcontroller.cpp,
	* lib/oxygen/physicsserver/dragcontroller.h,
	* lib/oxygen/physicsserver/dragcontroller_c.cpp:
	- added class DragController, a BodyController that applies a
	linear and angular drag the controlled body

	* lib/oxygen/physicsserver/bodycontroller.cpp,
	* lib/oxygen/physicsserver/bodycontroller.h,
	* lib/oxygen/physicsserver/bodycontroller_c.cpp:
	- added class BodyController, a baseclass for nodes that control
	the motion of an associated body

2004-03-31  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/physicsserver/contactjointhandler_c.cpp,
	* lib/oxygen/physicsserver/contactjointhandler.cpp,
	* lib/oxygen/physicsserver/contactjointhandler.h:

	- added method SetBounceValue

	* lib/oxygen/physicsserver/contactjointhandler.cpp,
	* lib/oxygen/physicsserver/contactjointhandler.h:
	- calculate the resulting surface parameter for the constructed
	contact joint. The values for softERP, softCFM, mu and bounce
	paramters are averaged between the collider and the collidee.

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- fixed SoccerBase::FlipView; A position for TI_RIGHT, instead of
	TI_LEFT must be flipped. The left team looks along the (global)
	positve X-axis to the opponent goal, so no flipping is needed.

	* app/rcssmonitor3d/lite/main.cpp:
	- fixed initial camera position, so that global positive X is
	right side

	* app/rcssmonitor3d/lite/main.cpp:
	- fixed flag drawing

2004-03-30  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/physicsserver/contactjointhandler.cpp,
	* lib/oxygen/physicsserver/contactjointhandler.h,
	* lib/oxygen/physicsserver/contactjointhandler_c.cpp:
	- added get method for a subset of the ode surface parameter
	structure managed by the ContactJointHandler

2004-03-29  Oliver Obst  <fruit@robolog.org>

	* app/rcssmonitor3d/lib/Makefile.am:
	installing monitor library as static lib

2004-03-28  Oliver Obst  <fruit@robolog.org>

	* acinclude.m4:
	added macro to define variables for library version info of our libraries

	* lib/kerosin/Makefile.am:
	* lib/oxygen/Makefile.am:
	* lib/zeitgeist/Makefile.am:
	* lib/salt/Makefile.am:
	Added the *-config scripts to the Makefile.am's so that they are
	installed into the 'bin' directory.

	* lib/kerosin/kerosin-config.in:
	* lib/oxygen/oxygen-config.in:
	* lib/zeitgeist/zeitgeist-config.in:
	* lib/salt/salt-config.in:
	The *-config scripts can be used by other programs to find out about
	the configuration of the installed libraries. They are created by configure from
	*-config.in and copied and adapted from freetype-config (see freetype2).

	* configure.ac:
	- the RCSS_DEBUG macro was only defined if the --enable-debug option
	was given explicitly to configure, even though debugging was turned
	on by default without this option. Now, the macro is defined in
	all cases when debugging is turned on.
	- added check for dlopen (used in libsalt)

	* lib/salt/Makefile.am:
	- added variable containing required libraries to the LIBADD variable.
	The reason for this fix was that the dl library was not explicitly
	linked to libsalt. This resulted in an incomplete libsalt.la.

	* doc/Makefile.am:
	The doxygen api documentation is not created anymore during *each*
	make install, because it takes too long to build it. Instead,
	existence of the html/index.html file is checked to see if the apidoc
	should be build or not.

	* lib/salt/salt.h:
	removed #include "quadlink.h"

2004-03-28  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/rcssmonitor3d/lib/commserver.cpp,
	* app/rcssmonitor3d/lib/commserver.h,
	* app/rcssmonitor3d/lib/monitorparser.cpp,
	* app/rcssmonitor3d/lib/monitorparser.h,
	* app/rcssmonitor3d/lite/main.cpp,
	* app/rcssmonitor3d/kerosin/main.cpp,
	* app/agenttest/worldmodel.cpp:
	* plugin/soccer/trainercommandparser/trainercommandparser.cpp,
	* plugin/soccer/trainercommandparser/trainercommandparser.h,
	* plugin/soccer/sexpmonitor/sexpmonitor.cpp,
	* plugin/soccer/sexpmonitor/sexpmonitor.h,
	* plugin/soccer/gamestateperceptor/gamestateperceptor.cpp,
	* plugin/soccer/gamestateperceptor/gamestateperceptor.h:
	* plugin/soccer/agentstateperceptor/agentstateperceptor.cpp,
	* plugin/soccer/agentstateperceptor/agentstateperceptor.h,
	* plugin/sexpparser/sexpparser.cpp, plugin/sexpparser/sexpparser.h:
	* plugin/collisionperceptor/collisionperceptor.cpp,
	* plugin/collisionperceptor/collisionperceptor.h,
	* lib/oxygen/spadesserver/spadescreatesenseevent.cpp,
	* lib/oxygen/agentaspect/agentaspect.cpp,
	* lib/oxygen/agentaspect/agentaspect.h:
	* lib/oxygen/agentaspect/perceptor.h,
	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	- adapted to PredicateList

	* plugin/soccer/visionperceptor/visionperceptor.cpp,
	* plugin/soccer/visionperceptor/visionperceptor.h:
	- adapted to PredicateList
	- using template ListChildrenSupportingClass
	- using static_cast in TLeafList loop

	* plugin/perfectvisionperceptor/perfectvisionperceptor.cpp,
	* plugin/perfectvisionperceptor/perfectvisionperceptor.h:
	- adapted to PredicateList
	- using template ListChildrenSupportingClass and FindParentSupportingClass

	* lib/oxygen/gamecontrolserver/baseparser.h:
	- changed BaseParser interface to work with PredicateLists

	* lib/oxygen/gamecontrolserver/predicate.cpp, lib/oxygen/gamecontrolserver/predicate.h:
	- added class PredicateList

	* plugin/soccer/gamestateperceptor/gamestateperceptor.cpp,
	* plugin/soccer/agentstateperceptor/agentstateperceptor.cpp,
	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- using AddList, to insert new ParamterLists instead of AddValue

	* lib/zeitgeist/parameterlist.cpp, lib/zeitgeist/parameterlist.h:
	- added method AddList that inserts an empty ParameterList as a
	new value at the end of the managed sequence and returns a
	reference to the new list. Using AddList instead of AddValue
	avoids copying a list on insertion.

	* lib/oxygen/gamecontrolserver/predicate.cpp:
	- avoid implicit copy of ParameterList

2004-03-27  Markus Rollmann  <rollmark@uni-koblenz.de>
	* lib/oxygen/sceneserver/sceneserver.cpp,
	* lib/oxygen/sceneserver/sceneserver.h:
	- caching mActiveScene, mActiveSpace and mActiveWorld

	* lib/oxygen/sceneserver/basenode.cpp:
	- changed PrePhysicsUpdate, PostPhysicsUpdate and UpdateHierarchy
	to use template ListChildrenSupportingClass - changed GetScene to
	use FindParentSupportingClass

	* lib/zeitgeist/leaf.h:
	- added template function FindParentSupportingClass

	* lib/oxygen/physicsserver/contactjointhandler.cpp:
	- changed HandleCollision to use FindChildSupportingClass template

	* lib/oxygen/physicsserver/collider.cpp:
	- changed OnCollision() to use ListChildrenSupportingClass
	template

	* lib/oxygen/monitorserver/monitorserver.cpp:
	- changed GetMonitorSystem to use template
	FindChildSupportingClass

	* lib/zeitgeist/leaf.h:
	- added template function FindChildSupportingClass

	* lib/oxygen/agentaspect/agentaspect.cpp:
	- changed QueryPerceptors() and UpdateEffectorMap() to use
	template ListChildrenSupportingClass()

	* lib/zeitgeist/leaf.h:
	- added template functino ListChildrenSupportingClass that
	retrieves a list of children based on the c++ typeid instead of
	the zeitgeist class string

2004-03-25  Joschka Boedecker  <jboedeck@uni-koblenz.de>

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp,
	* plugin/soccer/sexpmonitor/sexpmonitor.h:
	- sexpmonitor uses sexpparser and trainercommandparser for
	commands sent by a monitor now

	* plugin/soccer/soccerbase/soccerbase.cpp,
	* plugin/soccer/soccerbase/soccerbase.h:
	- added methods GetAgentState and GetAgentBody which take a team
	index and a unum as parameter and return a reference to the agent
	body and state, respectively

	* plugin/soccer/trainercommandparser/trainercommandparser.cpp,
	* plugin/soccer/trainercommandparser/trainercommandparser_c.cpp,
	* plugin/soccer/trainercommandparser/trainercommandparser.h:
	- initial version of the trainercommandparser added to the repository

	* plugin/soccer/export.cpp:
	- added export for new class TrainerCommandParser

	* plugin/soccer/Makefile.am:
	- added entries for new subdir trainercommandparser

	* plugin/soccer/agentstate/agentstate.cpp,
	* plugin/soccer/agentstate/agentstate.h:
	- added methods SetBattery and SetTemperature

	* app/rcssmonitor3d/lib/commserver.cpp,
	* app/rcssmonitor3d/lib/commserver.h:
	- added method SendTrainerCmd()
	- changed string in SendKickOffCmd()

2004-03-23  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	- fixed BallStateAspect::UpdateGoalState(). A check for 'Ball'
	instead for 'AgentAspect' inside a goal makes more sense ;-)

	* app/agenttest/worldmodel.h:
	- adapted to new Predicate interface
	- removed GetGameStateParam template

	* plugin/soccer/visionperceptor/visionperceptor.cpp,
	* plugin/soccer/kickeffector/kickeffector.cpp,
	* plugin/soccer/initeffector/initeffector.cpp,
	* plugin/soccer/gamestateperceptor/gamestateperceptor.cpp,
	* plugin/soccer/driveeffector/driveeffector.cpp,
	* plugin/soccer/beameffector/beameffector.cpp,
	* plugin/soccer/agentstateperceptor/agentstateperceptor.cpp:
	* plugin/perfectvisionperceptor/perfectvisionperceptor.cpp,
	* plugin/forceeffector/forceeffector.cpp,
	* plugin/collisionperceptor/collisionperceptor.cpp:
	* app/rcssmonitor3d/lib/monitorparser.cpp:
	* app/agenttest/worldmodel.cpp:
	- adapted to new Predicate interface

	* plugin/sexpparser/sexpparser.cpp, plugin/sexpparser/sexpparser.h:
	- adapted to new Predicate interface
	- changed ListToString to pass a pointer to an embedded list on
	recursion instead of a reference to temporary copy

	* lib/oxygen/gamecontrolserver/predicate.cpp,
	* lib/oxygen/gamecontrolserver/predicate.h:
	- changed Predicate to use the ParameterList
	- addedd method DescentList()

	* lib/oxygen/gamecontrolserver/baseparser.cpp:
	- removed baseparser.cpp; declarations now part of
	zeitgeist/parameterlist.cpp

	* lib/oxygen/Makefile.am:
	- removed baseparser.cpp; declaration now part of
	zeitgeist/parameterlist.cpp

	* lib/zeitgeist/parameterlist.cpp, lib/zeitgeist/parameterlist.h:
	- added method Clear
	- fixed a comment
	- fixed typo 'GetAnyVale'

2004-03-22  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/salt/defines.h:
	- define gcc's __attribute__ to nothing for MSVC

	* lib/kerosin/inputserver/inputserver_c.cpp:
	- removed remaing debug code ;)

	* plugin/perfectvisionperceptor/perfectvisionperceptor_c.cpp,
	* plugin/soccer/driveeffector/driveeffector_c.cpp,
	* plugin/soccer/kickeffector/kickeffector_c.cpp,
	* plugin/soccer/objectstate/objectstate_c.cpp,
	* plugin/soccer/visionperceptor/visionperceptor_c.cpp:
	* lib/kerosin/materialserver/materialsolid_c.cpp,
	* lib/kerosin/inputserver/inputserver_c.cpp,
	* lib/kerosin/fontserver/fontserver_c.cpp,
	* lib/kerosin/sceneserver/singlematnode_c.cpp,
	* lib/kerosin/sceneserver/staticmesh_c.cpp:
	* lib/kerosin/sceneserver/box_c.cpp
	* lib/kerosin/sceneserver/sphere_c.cpp:
	* lib/kerosin/sceneserver/light_c.cpp:
	* lib/oxygen/spadesserver/spadesserver_c.cpp,
	* lib/oxygen/sceneserver/fpscontroller_c.cpp,
	* lib/oxygen/sceneserver/sceneserver_c.cpp,
	* lib/oxygen/sceneserver/transform_c.cpp:
	* lib/oxygen/sceneserver/camera_c.cpp,
	* lib/oxygen/physicsserver/world_c.cpp:
	* lib/oxygen/physicsserver/collider_c.cpp:
	* lib/oxygen/physicsserver/ccylindercollider_c.cpp,
	* lib/oxygen/physicsserver/planecollider_c.cpp,
	* lib/oxygen/physicsserver/raycollider_c.cpp,
	* lib/oxygen/physicsserver/spherecollider_c.cpp,
	* lib/oxygen/physicsserver/boxcollider_c.cpp:
	* lib/oxygen/monitorserver/monitorserver_c.cpp,
	* lib/oxygen/gamecontrolserver/gamecontrolserver_c.cpp:
	* lib/zeitgeist/randomserver/randomserver_c.cpp:
	* lib/zeitgeist/leaf_c.cpp:
	- adapted ruby exports to new script syntax

	* lib/kerosin/soundserver/soundeffect.h,
	* lib/kerosin/soundserver/soundmodule.h,
	* lib/kerosin/soundserver/soundobject.h,
 	* lib/kerosin/soundserver/soundserver.cpp,
	* lib/kerosin/soundserver/soundserver.h,
	* lib/kerosin/soundserver/soundserver_c.cpp,
	* lib/kerosin/soundserver/soundstream.h:
	- changed interfaces expecting const char* to work with std::string
	- adapted script interface to new script syntax

	* lib/kerosin/sceneserver/staticmesh.cpp:
	- added GPL header
	- whitespace changes

	* lib/kerosin/sceneserver/singlematnode.cpp,
	* lib/kerosin/sceneserver/singlematnode.h:
	- added a comment
	- changed SetMaterial to return true on success

	* lib/kerosin/sceneserver/light.cpp
	* lib/kerosin/sceneserver/light.h:
	- changed SetDiffuseColor to expect a Vector3f instead of three
	floats

	* lib/kerosin/kerosin.rb:
	- enabled double buffering in the default settings

	* lib/oxygen/sceneserver/transform.cpp,
	* lib/oxygen/sceneserver/transform.h:
	- remove SetLocalPos variant that expected three floats instead of
	a Vector3f

	* lib/oxygen/physicsserver/world.cpp,
	* lib/oxygen/physicsserver/world.h:
	- removed SetGravity variant that expected three floats instead of
	a Vector3f

	* lib/oxygen/physicsserver/collider.h:
	- fixed a comment

	* lib/oxygen/physicsserver/boxcollider.cpp,
	* lib/oxygen/physicsserver/boxcollider.h:
	- changed method SetBoxLength to expect a Vector3f instead of
	three floats

	* lib/oxygen/physicsserver/body_c.cpp:
	- adapted to new script syntax
	- added function isEnabled, setSphere and getMass

	* lib/oxygen/physicsserver/body.cpp,
	* lib/oxygen/physicsserver/body.h:
	- added method GetMaxSpeed

	* lib/zeitgeist/scriptserver/scriptserver_c.cpp:
	- added GPL header

	* lib/zeitgeist/object_c.cpp:
	- added GPL header

	* lib/zeitgeist/logserver/logserver_c.cpp:
	- changed to new script syntax

	* lib/zeitgeist/fileserver/filesystem_c.cpp:
	- added GPL header
	- removed function 'open'
	- added function 'setPath'

	* lib/zeitgeist/fileserver/fileserver_c.cpp:
	- changed to new script syntax

	* lib/zeitgeist/node_c.cpp:
	- added GPL header

	* lib/zeitgeist/logserver/logserver.cpp:
	- added GPL header and whitespace fixes

	* lib/zeitgeist/object.cpp:
	- changed method Invoke to work with ParameterList and GCValue

	* lib/zeitgeist/node.cpp:
	- added GPL header

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	- changed getParameterList function to construct a ParamterList
	object
	- changed thisCall and selectCall to work with a ParameterList
	object and GCValues

	* lib/zeitgeist/scriptserver/gcvalue.cpp,
	* lib/zeitgeist/scriptserver/gcvalue.h:
	- added constructor for bool, string, const char*, float and
	int. Theses constructors create and manage a corresponding ruby
	object

	* lib/zeitgeist/class.h:
	- removed macro OUT_FUNCTION for script functions returning a value
	- removed TParameterList declaration
	- changed TCmdProc to return a GCValue and use class ParameterList
	instead of TParameterList. Every script function now always
	returns a value.
	- changed macro FUNCTION to adapt to the new TCmdProc signature

	* lib/zeitgeist/Makefile.am:
	- added ParameterList files

	* lib/zeitgeist/parameterlist.cpp,
	* lib/zeitgeist/parameterlist.h:
	- added class ParameterList. It manages a list of values of
	arbitrary type used to hold parameters received from ruby.

2004-03-22  Oliver Obst  <fruit@robolog.org>

	* app/simulator/rcssserver3D.rb:
	the force factor from the kicker seems to be too big. reducing it by factor
	10 seems to be more reasonable.

	* merged rcssserver3D-0-2 branch to the main branch

	* released rcssserver3D-0.2.1

	* app/simulator/rcssserver3D.rb:
	- changed parameters due to kickeffector changes

	* app/simulator/agentdb.list: changed default timer to jiffies

	* plugin/soccer/kickeffector/kickeffector.h:
	* plugin/soccer/kickeffector/kickeffector.cpp:
	* plugin/soccer/kickeffector/kickeffector_c.cpp:
	- changed the KickEffector so that applies force and torque over a
	  fixed number of steps. The SetSteps method could be simplified
	  because of that.
	- The KickEffector parent node needs to be (derived from) an
	  AgentAspect.  When applying the acceleration, a reference to the
	  AgentAspect is passed to the ball to update the last collidee.

	* plugin/soccer/ball/ball.h:
	* plugin/soccer/ball/ball.cpp:
	- Simplified the kicker. A constant force and torque is applied now
	  over a fixed number of simulation steps. This was possible because
	  Agents and the ball get the correct mass. The agents do not "jump"
	  up anymore when kicking the ball.
	- If the agent kicks the ball, it is set as last colliding agent in
	  the BallStateAspect.

	* plugin/soccer/ballstateaspect/ballstateaspect.h:
	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	- added public method UpdateLastCollidingAgent(agent) to set the last
	  colliding agent. This method is used by the kickeffector to set the
	  agent kicking the ball as last collidee.

2004-03-19  Oliver Obst  <fruit@robolog.org>

	* app/simulator/rcssserver3D.rb:
	- fixed the driveeffector forcefactor for the new update

	* plugin/soccer/driveeffector/driveeffector.cpp:
	- removed the deltaTime dependecy from the physics update

	* lib/oxygen/physicsserver/body.cpp:
	Body::SetMass didn't set the mass. This bug caused all bodies
	to have the same weight (of 1).

2004-03-12  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/kerosin/renderserver/renderserver.cpp:
	- minor clean up of RenderServer implementation; commented out
	fancy lighting render path

	* app/rcssmonitor3d/kerosin/german.scan.rb:
	- german.scan.rb is a ScanCode translation for a german keyboard,
	i.e. it defines a mapping from InputServer constants to characters
	and symbolic key names

	* app/rcssmonitor3d/kerosin/bindings.rb:
	- bindings.rb sets up a mapping from input constants used by the
	Inputserver to application defined command constants.

	* app/rcssmonitor3d/kerosin/rcssmonitor3D-kerosin.rb:
	- rcssmonitor3D-kerosin.rb setups all server needed by the monitor
	and creates a sample scene

	* app/rcssmonitor3d/kerosin/main.cpp:
	- main.cpp implements a minimal framework to initinialize the
	kerosin library and display a sample scene. It does not connect to
	the server yet.

	* app/rcssmonitor3d/kerosin/Makefile.am:
	- added Makefile.am for the kerosin based monitor

	* app/rcssmonitor3d/Makefile.am:
	- added kerosin subdir

	* configure.ac:
	- added app/rcssmonitor3d/kerosin Makefile

	* app/rcssmonitor3d/lite/main.cpp:
	- set the correct RelPathPrefix in the Zeitgeist constructor
	- removed the hardcoded prefix from the call to RunInitScript

	* lib/kerosin/kerosin.cpp:
	- removed the hardcoded prefix "../../" from the call to
	RunInitScript()

	* lib/oxygen/oxygen.cpp:
	- removed the hardcoded prefix '../../' from the call to
	RunInitScript

	* lib/zeitgeist/zeitgeist.cpp, lib/zeitgeist/zeitgeist.h:
	- added a second constructor that passes the relPathPrefix to be
	used to the ScriptServer

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	- changed the ScriptServer to use a prefix that is prepended to
	the relativ path given to RunInitScript. Previously this prefix
	was hardcoded in the init calls from the different libs and
	suitable only to find sccripts the 'app/' directory, when run from
	the CVS tree.

	* lib/zeitgeist/scriptserver/scriptserver.h:
	- added member mRelPathPrefix
	- added method SetInitRelPathPrefix

	* lib/zeitgeist/zeitgeist.h:
	- whitespace only

2004-03-10  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/rcssmonitor3d/lite/main.cpp:
	- moved everything concerned with parsing into
	app/rcssmonitor3d/lib

	* app/rcssmonitor3d/lib/Makefile.am:
	- added monitorparser, gameparam and gamestate files

	* app/rcssmonitor3d/lib/monitorparser.cpp, app/rcssmonitor3d/lib/monitorparser.h:
	- added MonitorParser. As the name suggests this class is
	responsible to parse all received s-expressions from the
	server. It is refactored from the original rcssmonitor3d parsing
	implementation.

	* app/rcssmonitor3d/lib/gameparam.cpp,
	* app/rcssmonitor3d/lib/gameparam.h,
	* app/rcssmonitor3d/lib/gamestate.cpp,
	* app/rcssmonitor3d/lib/gamestate.h:
	- added gameparam, holding the current game state
	- added gameparam, holding the parsed soccer paramers received
	with the 'init' expression

	* app/rcssmonitor3d/Makefile.am:
	- removed dist_pkgdata_DATA for rcssmonitor3d.rb. The Makefile.am
	local to the 'lite' monitor has the appropriate entry.

2004-03-09  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/rcssmonitor3d/lite/main.cpp:
	- drawing a very basic set of lines on the playing field: 4 border
	lines and the middle line

	* app/rcssmonitor3d/lite/glserver.cpp,
	* app/rcssmonitor3d/lite/glserver.h:
	- renamed method DrawGroundRectangle to DrawGround; added parameter
	angle and height; changed implementation accordingly

	* app/rcssmonitor3d/lib/types.h:
	- added DEFAULT_LINE_WIDTH

	* app/rcssmonitor3d/lite/main.cpp:
	- changes to OpenGL color setup due to change to flat shading

	* app/rcssmonitor3d/lite/glserver.cpp:
	- disabled all OpenGL lighting and changed to flat shading. All
	objects are now draw equally bright independent of the camera
	angle.

	* app/rcssmonitor3d/lite/camera.cpp:
	- fixed inverted horizintal mouse movement

	* app/rcssmonitor3d/rcssmonitor3D.rb:
	- removed rcssmonitor3d.rb

	* app/rcssmonitor3d/lite/main.cpp:
	- fixed call to RunInitScript

	* app/rcssmonitor3d/lite/rcssmonitor3D-lite.rb:
	- added rcssmonitor3d-lite

2004-03-09  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/kickeffector/kickeffector.cpp:
	fixed bug that player y coordinate was used for
	checking if player is in the air (reported by Michael Gollin)

2004-03-09  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/inputsdl/inputsystemsdl.cpp:
	- cleaned up InputSystemSDL implementation and added additional
	diagnostic messages

	* plugin/inputsdl/mousesdl.cpp:
	- cleaned up MouseSDL implementation

	* plugin/inputsdl/timersdl.cpp, plugin/inputsdl/timersdl.h:
	- cleaned up timerSDL implementation

	* lib/kerosin/sceneserver/light_c.cpp,
	* lib/kerosin/sceneserver/sphere_c.cpp,
	* lib/kerosin/sceneserver/staticmesh_c.cpp:
	- corrected baseclass definitions

	* lib/kerosin/sceneserver/axis_c.cpp:
	- corrected baseclass definition

	* lib/oxygen/sceneserver/camera.cpp:
	- indentation fixes

	* lib/oxygen/sceneserver/sceneserver.cpp:
	- some minor cleanup

	* lib/oxygen/sceneserver/fpscontroller.h:
	- added method OnLink and OnUnlink

	* lib/oxygen/sceneserver/fpscontroller.cpp:
	- cleaned up fpscontroller implementation
	- added additional diagnostic messages
	- using Body methods instead of directly calling ODE functions

	* lib/oxygen/physicsserver/body.cpp,
	* lib/oxygen/physicsserver/body.h:
	- added method GetMass
	- added method SetRotation
	- added additional diagnostic messages

2004-03-05  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/inputsdl/keyboardsdl.cpp,
	* plugin/inputsdl/keyboardsdl.h:
	- cleanded up keyboardSDL implementation
	- fixed enqueueing of keyboard events. KeyboardSDL now uses
	hardware independent SDL keyboard constants instead of system
	scancodes and translates these to the IC_xxx constants of the
	InputServer. For the windows port of SDL the reported scan codes
	are identical to the IC_xxx constants of the InputServer. This is
	not the cas for the X-Window port.

	* lib/kerosin/inputserver/inputserver.cpp,
	* lib/kerosin/inputserver/inputserver.h:
	- cleaned up the inputserver implementation

	* lib/kerosin/inputserver/inputsystem.cpp,
	* lib/kerosin/inputserver/inputsystem.h:
	- some formatting cleanup

2004-03-05  Oliver Obst  <fruit@robolog.org>

	* configure.ac:
	- added check for the dot tool
	- added check for the perl interpreter
	- added configure option '--with-spades'; if simulator should be
	  compiled with SPADES, it is an error now if no SPADES is
	  installed. To disable SPADES support, the user has to
	  use --without-spades explicitly.
	- checking for GL headers in any case (was checked if building
	  kerosin only)

	* acinclude.m4:
	- fixed sloppy macro syntax
	- added macro to check the ruby version
	- added check for libruby to the checkruby macro

2004-02-26  Oliver Obst  <fruit@robolog.org>

	* app/rcssmonitor3d/camera.cpp:
	* app/rcssmonitor3d/commserver_c.cpp:
	* app/rcssmonitor3d/communit.cpp:
	* app/rcssmonitor3d/communit.h:
	* app/rcssmonitor3d/glserver.cpp:
	* app/rcssmonitor3d/main.cpp:
	* app/simulator/rcssserver3D.rb:
	* lib/oxygen/physicsserver/planecollider.cpp:
	* lib/oxygen/physicsserver/planecollider.h:
	* lib/oxygen/physicsserver/planecollider_c.cpp:
	* plugin/forceeffector/forceeffector.cpp:
	* plugin/perfectvisionperceptor/perfectvisionperceptor.cpp:
	* plugin/soccer/beameffector/beameffector.cpp:
	* plugin/soccer/driveeffector/driveeffector.cpp
	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	* plugin/soccer/kickeffector/kickeffector.cpp:
	* plugin/soccer/soccerbase/soccerbase.cpp:
	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	changed the internal x/z/y coordinates to x/y/z

2004-02-21  Oliver Obst  <fruit@robolog.org>

	* app/simulator/rcssserver3D.rb:
	changes due to moving classes from kerosin to oxygen

	* plugin/collisionperceptor/collisionperceptor_c.cpp:
	* plugin/collisionperceptor/perceptorhandler_c.cpp:
	* plugin/forceeffector/forceeffector_c.cpp:
	* plugin/perfectvisionperceptor/perfectvisionperceptor_c.cpp:
	* plugin/soccer/agentstateperceptor/agentstateperceptor_c.cpp:
	* plugin/soccer/ball/ball_c.cpp:
	* plugin/soccer/beameffector/beameffector_c.cpp:
	* plugin/soccer/createeffector/createeffector_c.cpp:
	* plugin/soccer/driveeffector/driveeffector_c.cpp:
	* plugin/soccer/fieldflag/fieldflag_c.cpp:
	* plugin/soccer/gamestateperceptor/gamestateperceptor_c.cpp:
	* plugin/soccer/initeffector/initeffector_c.cpp:
	* plugin/soccer/kickeffector/kickeffector_c.cpp:
	* plugin/soccer/objectstate/objectstate_c.cpp:
	* plugin/soccer/soccercontrolaspect/soccercontrolaspect_c.cpp:
	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	* plugin/soccer/visionperceptor/visionperceptor_c.cpp:
	moved classes into oxygen namespace

	* lib/oxygen/oxygen.cpp:
	* lib/oxygen/agentaspect/agentaspect_c.cpp:
	* lib/oxygen/agentaspect/effector_c.cpp:
	* lib/oxygen/agentaspect/perceptor_c.cpp:
	* lib/oxygen/controlaspect/controlaspect_c.cpp:
	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	* lib/oxygen/physicsserver/body_c.cpp:
	* lib/oxygen/physicsserver/boxcollider_c.cpp:
	* lib/oxygen/physicsserver/ccylindercollider_c.cpp:
	* lib/oxygen/physicsserver/collider.cpp:
	* lib/oxygen/physicsserver/collider_c.cpp:
	* lib/oxygen/physicsserver/collisionhandler_c.cpp:
	* lib/oxygen/physicsserver/contactjointhandler_c.cpp:
	* lib/oxygen/physicsserver/odeobject_c.cpp:
	* lib/oxygen/physicsserver/planecollider_c.cpp:
	* lib/oxygen/physicsserver/raycollider_c.cpp:
	* lib/oxygen/physicsserver/recorderhandler_c.cpp:
	* lib/oxygen/physicsserver/space_c.cpp:
	* lib/oxygen/physicsserver/spherecollider_c.cpp:
	* lib/oxygen/physicsserver/world_c.cpp:
	* lib/oxygen/sceneserver/camera_c.cpp:
	* lib/oxygen/sceneserver/fpscontroller_c.cpp:
	* lib/oxygen/sceneserver/scene_c.cpp:
	* lib/oxygen/sceneserver/sceneserver.cpp:
	* lib/oxygen/sceneserver/transform_c.cpp:
	Give to oxygen what belongs to oxygen...
	Moved oxygen classes below oxygen namespace

2004-02-20  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/rcssmonitor3d/main.cpp:
	- cosmetic change: use STR_PM_Unknown instead of a string constant

	* lib/zeitgeist/scriptserver/scriptserver.h:
	- changed method GetVariable to return a GCValue

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	cleaned up the scriptserver
	- changed method GetVariable to return a GCValue object
	- various formatting fixes
	- use the GCValue wrapper instead of VALUE wherever possible
	- properly report ruby error messages

	* lib/zeitgeist/scriptserver/rubywrapper.cpp:
	* lib/zeitgeist/scriptserver/rubywrapper.h:
	- added struct RbArguments, a structure that describes a ruby
	function call
	- added function RbFuncallWrap, RbEvalStringWrap, RbGetError and RbPrintError

	* lib/zeitgeist/scriptserver/gcvalue.cpp:
	* lib/zeitgeist/scriptserver/gcvalue.h:
	- added class GCValue, a ruby VALUE wrapper. It is responsible to
	register and unregister the wrapped value as busy with the ruby
	garbage collector.

	* lib/zeitgeist/Makefile.am:
	- added gcvalue.h gcvalue.cpp and rubywrapper.cpp

2004-02-19  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/agenttest/main.cpp:
	- moved zeitgeist and oxygen init into main(). They should not go
	out of scope after init()

	* plugin/soccer/beameffector/beameffector.cpp:
	- fixed the check that an agent can only beam within it's own
	field half and fixed the conversion into the internal coordinate
	system: A max check was missing and the check used the wrong
	coordinate system. Additionally the conversion to the global
	internal coordinate system was wrong.

	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	- reset mGoalState to TI_NONE if checks for both goal collider
	fail

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- added missing cases for PM_Goal_Left and in PM_Goal_Right

2004-02-19  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	- reset mGoalState to TI_NONE if checks for both goal collider
	fail

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- added missing cases for PM_Goal_Left and in PM_Goal_Right

2004-02-18  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/spadesserver/spadesserver.h:
	- added member mTimePerStep

	* lib/oxygen/spadesserver/spadesserver.cpp:
	- cache the Spades.TimePerStep value in the mTimePerStep intstead
	of repeatedly querying the ScriptServer

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	- changed ScriptServer::RunInitScript to use a static buffer to
	obtain the current directory

2004-02-16  Patrick Riley  <pfr@cs.cmu.edu>

	* app/agenttest/main.cpp
	* app/rcssmonitor3d/commserver.cpp
	added system include files needed for my compilation on RH7.1

2004-02-14  Oliver Obst  <fruit@robolog.org>

	* lib/kerosin/Makefile.am:
	fixed Makefile.am for making a proper distribution wit no generated sources.
	Needed also to fix rules for making without kerosin.

	* lib/kerosin/soundserver/soundserver.cpp:
	* lib/kerosin/imageserver/imageserver.cpp:
	* app/scenetest/md5mesh.cpp:
	- replaced RFile by salt::RFile to solve ambiguities between salt and ruby

	* app/agenttest/Makefile.am: added agenttest.rb to distribution


2004-02-16  Patrick Riley  <pfr@cs.cmu.edu>

	* lib/oxygen/spadesserver/spadescreatesenseevent.cpp
	added #include <spades/SenseEvent.hpp>
	(needed for spades >= 0.91)

2004-02-14  Oliver Obst  <fruit@robolog.org>

	* lib/kerosin/Makefile.am:
	fixed Makefile.am for making a proper distribution wit no generated sources.
	Needed also to fix rules for making without kerosin.

	* lib/kerosin/soundserver/soundserver.cpp:
	* lib/kerosin/imageserver/imageserver.cpp:
	* app/scenetest/md5mesh.cpp:
	- replaced RFile by salt::RFile to solve ambiguities between salt and ruby

	* app/agenttest/Makefile.am: added agenttest.rb to distribution


2004-02-11  Oliver Obst  <fruit@robolog.org>

	* released rcssserver3D-0.2

2004-02-10  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- implemented GetAgentBody and GetControlAspect

	* plugin/soccer/soccerbase/soccerbase.h:
	- added method GetControlAspect and GetAgentBody

	* plugin/soccer/initeffector/initeffector.cpp:
	- some cleanup
	- using the GameStateEffector to request an initial start position
	for a fresh agent and moving it there; the agent are queued behind
	their goal line

	* plugin/soccer/initeffector/initeffector.h:
	- added method OnLink and OnUnlink

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	- setting up initial starting positins for the agents in the OnLink
	method
	- the RequestInitPosition method returns the next start position for
	the given team, it is called from the InitEffector

	* plugin/soccer/gamestateaspect/gamestateaspect.h:
	- added method RequestInitPosition and OnLink
	- added member mLeftInit and mRightInit

	* app/simulator/rcssserver3D.rb:
	- setting SoccerVariabler for the SoccerRuleAspect

	* app/rcssmonitor3d/main.cpp: - updated due to playmode changes

	* app/agenttest/worldmodel.cpp: - changes due to changed playmodes
	- fixed a mapping error for the KickIn playmodes; this prevented the
	agent to react properly in kickin situations

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- CheckTime checks if a half time completely passed and sets the play
	mode accordingly

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	- added method CheckTime
	- added member mHalfTime

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- changes due to playmode changes and formatting cleanup

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp: - formatting changes

	* plugin/soccer/gamestateaspect/gamestateaspect.h:
	- added member mLastKickOff

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	- updating time in all playmodes expcept beforekickoff and gameover
	- changed kickoff to choose a team randomly in the first half and
	to chose the other team in the second half

	* plugin/soccer/soccertypes.h:
	- removed playmode PM_FIRSTHALFOVER
	- added playmode PM_GAMEOVER

	* app/rcssmonitor3d/main.cpp:
	- adapted to playmode changes

	* app/agenttest/kicknrun.cpp:
	- implemeted BehaveKickIn and BehaveKickOff to check if the our
	team has to do a KickOff or KickIn. Behave methods are called
	accordingly.

	* app/agenttest/kicknrun.h:
	- added method BehaveMyKickOff, BehaveTheirKickOff, BehaveKickIn,
	BehaveMyKickIn and BehaveTheirKickIn

	* app/agenttest/soccer.cpp:
	- the Drive method stores the last driveVec in mDriveVec. If the
	same driveVec is passed again, no drive command is sent to the
	server

	* app/agenttest/soccer.h:
	- added method GetDriveVec
	- added member mDriveVec

	* app/agenttest/worldmodel.cpp:
	- adapted mPlayModeMap to soccertype changes
	- some cleanup

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- better handling of KickIn and Goal situations; still rough edges
	- after a the ball leaves the field, the playmode changes
	immediately to KickIn, but the SoccerRuleAspect waits at least
	mKickInPauseTime until it places the ball back on the field
	- after a goal has happened the RuleAspect waits at least
	mGoalPauseTime until it places the ball back in the middle of the
	field and switches to KickOff

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	- added method UpdateKickIn, UpdateGoal and MoveBall
	- added member mGoalPauseTime, mKickInPauseTime and
	mLastValidBallPos

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- implemented GetAgentState

	* plugin/soccer/soccerbase/soccerbase.h:
	- added second GetAgentState method accepting a transform node and
	returning an AgentStateAspect below

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	- don't set the playmode directly, call GameStateAspect::KickOff
	instead; the GameStateAspect in turn will give kick off to one of
	the teams randomly

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	- changed UpdateTime to advance the game time in every game mode
	except BeforeKickOff and FirstHalfOver
	- SetPlayMode records the time of a playmode change and prints a
	diagnostic output
	- implemented GetModeTime to return the time since the last
	playmode change
	- implemented GetLastModeChange to return the time of the last
	playmode change

	* plugin/soccer/gamestateaspect/gamestateaspect.h:
	- added method KickOff, GetModeTime and GetLastModeChange
	- added member mLastModeChange

	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	- setting up a reference to the GameStateAspect
	- keeping track of the time the last agent touched the ball

	* plugin/soccer/ballstateaspect/ballstateaspect.h:
	- changed signature of GetLastCollidingAgent to also return the
	time of the collision
	- added member mGameState and mLastAgentCollisionTime

	* plugin/soccer/soccertypes.h:
	- removed playmode PM_KickOff, added PM_KickOff_Left and
	PM_KickOff_Right
	- remove playmode PM_KickIn, added PM_KickIn_Left and
	PM_KickIn_Right

	* plugin/soccer/visionperceptor/visionperceptor_c.cpp:
	- exported setSenseMyPos to ruby

	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- implemented SetSenseMyPos
	- the agents own position is sensed only if mSenseMyPos is true

	* plugin/soccer/visionperceptor/visionperceptor.h:
	- added method SetSenseMyPos
	- added member mSenseMyPos

	* app/agenttest/agenttest.rb:
	- added setup script for agenttest

	* app/agenttest/behavior.cpp:
	* app/agenttest/behavior.h:
	* app/agenttest/commserver.cpp:
	* app/agenttest/commserver.h:
	* app/agenttest/main.cpp:
	* app/agenttest/worldmodel.cpp:
	* app/agenttest/worldmodel.h:
	more agenttest cleanup
	- constructing the CommServer, WorldModel and the Behavior in the
	  init script

2004-02-10  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/agentstate/:
	* plugin/soccer/driveeffector/:
	Changed the agentstate and the driveeffector so that the drive
	consumes the battery (and knows about the power it consumes).
	The AgentState is just used to reduce the battery and check if enough
	battery power is available.

2004-02-09  Oliver Obst  <fruit@robolog.org>

	* app/agenttest/:
	changes due to renaming the dasheffector to driveffector

	* plugin/soccer/Makefile.am:
	* plugin/soccer/dasheffector/:
	* plugin/soccer/driveeffector/:
	renamed dasheffector to driveeffector

	* lib/oxygen/Makefile.am:
	* lib/salt/Makefile.am:
	- added version info for libtool to LDFLAGS

	* lib/zeitgeist/Makefile.am:
	- added version info for libtool to LDFLAGS
	- added rubywrapper.h to go into the distribution

	* lib/kerosin/Makefile.am:
	- added version info for libtool to LDFLAGS
	- fixed bug for compiling with no kerosin

	* app/rcssmonitor3d/Makefile.am:
	- added header files so that they go into the distribution

	* app/rcssmonitor3d/main.cpp:
	running init script with RunInitScript instead of using Run

	* app/agenttest/Makefile.am:
	- added header files so that they go into the distribution
	- installing agenttest in bin directory

	* app/simulator/:
	- name changes from simulator to rcssserver3D (as in previous release)
	- added scripts for simple startup of simulator + monitor

2004-02-08  Oliver Obst  <fruit@robolog.org>

	* app/simulator/simulator.rb:
	- set the dashEffector force factor so that the agent runs 100m in 13~14s
	- set the dashEffector sigma so that errors are usually below ~2% of the
	  applied force
	- added AgentStatePerceptor to agents
	- using new SetPerceptName ObjectState method

	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	changed getting the object name to use the ObjectState method
	GetPerceptName

	* plugin/soccer/dasheffector/dasheffector.h:
	* plugin/soccer/dasheffector/dasheffector.cpp:
	- changed the dash perceptor so that a dash command sets a force that is
	  applied during each simulation step. To dash forward with max. speed,
	  you just have to set the force to maximum size once, and then you
	  go. To stop (slowly), you have to set the force to 0 again.
	- storing the max. agent dist from the plane in a member variable
	  mMaxDistance. mMaxDistance is set to the agent radius (+ 1mm)
	- changed the Realize method to store the force only
	- The applied force is calculated different (easier) now: the force
	  given by the agent is multiplied with the force factor and
	  (if noise is used) with a random number close to 1.0
	- added PrePhysicsUpdateInternal method that adds the applied
	  force during each step to the agent body. The applied force is
	  dependend on the simulation step size so that changing the step
	  size shouldn't have a big effect on the acceleration.
	- the default force factor is set to 60.0 now. Using full speed, the
	  agent does ~100m in about something more than 13s.

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	- using GetPerceptName of the agentState

	* plugin/soccer/objectstate/objectstate_c.cpp:
	renamed exported setName to setPerceptName

	* plugin/soccer/objectstate/objectstate.h:
	* plugin/soccer/objectstate/objectstate.cpp:
	- changed SetName/GetName method to SetPerceptName/GetPerceptName in order
	  not to overwrite the zeitgeist::Leaf methods SetName/GetName
	- extended the Set.. / Get... method to take an optional second
	  argument indicating the percept type. This way, objects can have
	  different names depending on Perceptor characteristics, like for
	  instance the name changes if the objects are far away.
	- Names and IDs are stored in maps now.

	* plugin/soccer/agentstate/agentstate.h:
	* plugin/soccer/agentstate/agentstate.cpp:
	- changed SetID method so that the stored ID can be different for
	  different percept types
	- added battery state and GetBattery method
	- added method that, given a desired force, computes the force to be applied when
	  dashing and reduces the battery state
	- added temperature variable (yet unused)

	* plugin/soccer/export.cpp: added agentstateperceptor

	* plugin/soccer/agentstateperceptor/agentstateperceptor.h:
	* plugin/soccer/agentstateperceptor/agentstateperceptor.cpp:
	* plugin/soccer/agentstateperceptor/agentstateperceptor_c.cpp:
	added agentstate perceptor that sends updates about the agent itself

2004-02-07  Oliver Obst  <fruit@robolog.org>

	* lib/zeitgeist/node.cpp:
	fixed copy/paste bug in GetChildSupportingClass:
	on recursion, GetChildOfClass was called (instead of GetChildSupportingClass)
	fixed copy/paste bug in GetChildrenSupportingClass:
	- The wrong base method was called (Leaf::GetChildrenOfClass)
	- Same bug on recursion: called GetChildrenOfClass instead
	  of GetChildrenSupportingClass
	==> visionperceptor works again also for AgentStates

	* app/simulator/simulator.rb:
	added ObjectAspects to flags and to the ball so that they are visible
	for the VisionPerceptor

	* plugin/soccer/export.cpp: added ObjectState

	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- removed some debug messages
	- when searching for visible objects, we are looking for ObjectState nodes
	  now (instead of looking for transform nodes). Unfortunately, this doesn't
	  seem to work yet properly for nodes that are derived from ObjectState, like
	  currently (only) AgentState.
	- instead of using the transform node names as object names, we are using the
	  ObjectState GetName() and GetID() methods to create visible object names.

	* plugin/soccer/visionperceptor/visionperceptor.h:
	changed the private ObjectData struct so that it holds references to
	ObjectStates instead of references to Leafs.

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	setting the team name in each AgentState

	* plugin/soccer/agentstate/agentstate.h:
	* plugin/soccer/agentstate/agentstate.cpp:
	* plugin/soccer/agentstate/agentstate_c.cpp:
	changes so that AgentState is derived from ObjectState now

	* plugin/soccer/objectstate/objectstate.h:
	* plugin/soccer/objectstate/objectstate.cpp:
	* plugin/soccer/objectstate/objectstate_c.cpp:
	Added ObjectState class. ObjectState is a parent of AgentState and is
	used to hold a name and an ID for the visionperceptor (and maybe other
	perceptors). Objects on the soccer field that should be recognized
	by the visionperceptor need to have an ObjectState child. The
	visionperceptor will see all ObjectStates and from there go to the
	parent nodes.  Name and ID can be set from ruby.

2004-02-06  Oliver Obst  <fruit@robolog.org>

	* plugin/perfectvisionperceptor/perfectvisionperceptor.h:
	* plugin/perfectvisionperceptor/perfectvisionperceptor.cpp:
	* plugin/perfectvisionperceptor/perfectvisionperceptor_c.cpp:
	Added a method that can be used to invert each axis. This method is also
	exported to ruby so that the perceptor can be configured from the
	init script.

	* app/simulator/simulator.rb:
	- changed flag names from Flag1,...,Flag4 to
	  Flag_1_l and Flag_2_l for the flags on the "left" side of the field,
	  Flag_1_r and Flag_2_r for flags on the "right" side of the field.
	- changed goal post names from Goal1l, Goal2r, Goal2l, Goal2r to
	  Goal_1_l and Goal_2_l for the goal posts of the left goal and
	  Goal_1_r and Goal_2_r for goals posts of the right goal
	- initializing the random server from init script
	- setting the field length to a random integer value between 100m
	  and 110m
	- setting the field width to a random integer value between 64m and 75m
	- setting the ball mass to a random value between 410g and 450g.
	- added variable to set the monitor interval
	- added flag if the integrated commserver should be started
	- added flag if agent think times should be sent

	* lib/oxygen/spadesserver/spadesserver.h:
	* lib/oxygen/spadesserver/spadesserver.cpp:
	Added methods to access variables for configuring spades:
	- added method to check if we want to use the integrated commserver
	- added method to get the monitor interval
	- added method to get the send_agent_think_times flag

	* lib/zeitgeist/randomserver/randomserver_c.cpp:
	exporting random number methods to ruby
	- exporting uniformRND method
	- exporting normalRND method
	- exporting exponentialRND method

	* lib/salt/random.h:
	Fixed the exponential distribution base class.

	* lib/kerosin/Makefile.am:
	The glextensionreg.* files should only be copied oif kerosin is build.
	Trying to copy the files when not building kerosin caused an error when
	building from scratch.

	* lib/zeitgeist/Makefile.am
	* lib/zeitgeist/core.h
	* lib/zeitgeist/core.cpp
	- added RandomServer to zeitgeist

	* lib/zeitgeist/randomserver/randomserver.h
	* lib/zeitgeist/randomserver/randomserver.cpp
	* lib/zeitgeist/randomserver/randomserver_c.cpp
	- added initial revision of a randomserver (for random numbers)

2004-02-06  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/soccer/kickeffector/kickeffector.cpp:
	- using SoccerBase::GetBallCollider

	* app/agenttest/Makefile.am:
	- added plugin/soccer to the list of include direcories

	* app/rcssmonitor3d/main.cpp:
	- using STR_PM_ constants to translate playmode values into string

	* app/agenttest/main.cpp:
	- added parsing of GameState data

	* plugin/soccer/gamestateperceptor/gamestateperceptor.cpp:
	- removed PlayMode2Str, now using SoccerBase::PlayMode2Str

	* plugin/soccer/gamestateperceptor/gamestateperceptor.h:
	- removed method PlayMode2Str (now part of SoccerBase)

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- implemented PlayMode2Str; return a string corresponding to the
	given TPlayMode value

	* plugin/soccer/soccerbase/soccerbase.h:
	- added method PlayMode2Str

	* plugin/soccer/soccertypes.h:
	- defining a commons set of string constants for the TPlayMode
	enum that can be used by an agent implementation or a monitor

	* plugin/soccer/gamestateperceptor/gamestateperceptor.cpp:
	- the first percept after the agent is successfully assigned to a
	team contains additional information: unum, team index and a
	subset of the soccer parameters

	* plugin/soccer/gamestateperceptor/gamestateperceptor.h:
	- added method InsertInitialPercept and InsertSoccerParam
	- added member mAgentState and mFirstPercept

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	- using method SoccerBase::GetSoccerVar to read query soccer vars

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- caching ball size in mBallSize
	- using method SoccerBase::GetSoccerVar

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	- added member mBallRadius to cache the size of the ball instead of
	repeatedly querying ruby

	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.h:
	- remove method GetSoccerVar (now part of SoccerBase)

	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp:
	- removed method GetSoccerVar (now part of SoccerBase)

	* plugin/soccer/soccerbase/soccerbase.h:
	- added templated method GetSoccerVar

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp,
	* plugin/soccer/gamestateperceptor/gamestateperceptor.cpp:
	- using method SoccerBase::GetGameState

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- added method GetBallCollider
	- added method GetGameState

	* plugin/soccer/soccerbase/soccerbase.h:
	- added method GetBallCollider
	- added method GetGameState
	- changed all methods to accept Leaf references

	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	- using SoccerBase::GetBall method

	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- some cleanup
	- using SoccerBase methods
	- implemented OnUnlink

	* plugin/soccer/visionperceptor/visionperceptor.h:
	- moved Onlink to protected section and declared it virtual
	- added method OnUnlink

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	- using SoccerBase::GetBall method

	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp:
	- remove method GetBall and GetBallBody

	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.h:
	- remove method GetBall and GetBallBody (now part of SoccerBase)

	* plugin/soccer/kickeffector/kickeffector.cpp:
	- some cleanup
	- using SoccerBase::GetBallBody

	* plugin/soccer/dasheffector/dasheffector.cpp:
	- some cleanup
	- using SoccerBase::GetBall

	* plugin/soccer/export.cpp:
	- removed SoccerBase export

	* plugin/soccer/Makefile.am:
	- remove zeitgeist export of SoccerBase

	* plugin/soccer/soccerbase/soccerbase_c.cpp:
	- removed zeitgeist export of SoccerBase

	* plugin/soccer/soccerbase/soccerbase.cpp:
	- implemented GetBal, GetBallBody
	- changed GetAgentState to call GetTransformParent internally
	rather than expecting a reference as a paramete

	* plugin/soccer/soccerbase/soccerbase.h:
	- replaced includes with forward declarations
	- don't derive SoccerBase from zeitgeist::leaf
	- added method GetBody, GetBall and GetBallBody

	* lib/zeitgeist/leaf.cpp, lib/zeitgeist/leaf.h:
	- declared GetParentSupportingClass const

2004-02-05  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/kickeffector/kickeffector_c.cpp:
	- exporting setAngleRange method

	* plugin/soccer/kickeffector/kickeffector.cpp:
	- By default, we add small noise to the kick angle at the end of the kicking range
	  (i.e. if the kick angle is close to the minimum or maximum angle). Larger noise is
	  added somewhere in between. The noise is normally distributed
	  around 0.0.
	- fixed the direction of applied torque in direction of the first axis.
	- removed code that initialzed a variable that was holding a reference to
	  the agent body
	- added SetAngleRange method

	* plugin/soccer/kickeffector/kickeffector.h:
	- added yet another noise parameter
	- added parameters for the kick angle range
	- removed variable that was holding a reference to the agent body

	* plugin/soccer/kickeffector/kickaction.h:
	- changed KickAction to store kick angle instead of kick type

	* plugin/soccer/Makefile.am:
	- removed soccertypes.cpp
	- added header files
	- added SoccerBase files

	* plugin/soccer/dasheffector/dasheffector.cpp:
	* plugin/soccer/visionperceptor/visionperceptor.h:
	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- making use of SoccerBase class

	* plugin/soccer/export.cpp:
	- registering SoccerBase

	* plugin/soccer/soccerbase/soccerbase.h:
	* plugin/soccer/soccerbase/soccerbase.cpp:
	* plugin/soccer/soccerbase/soccerbase_c.cpp:
	- added SoccerBase class with some static utility functions needed
	everywhere in the soccer perceptors and effectors

2004-02-03  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simulator/simulator.rb:
	-added GameStatePerceptor to the agent

	* plugin/soccer/export.cpp:
	- exporting GameStatePerceptor to zeitgeist

	* plugin/soccer/Makefile.am:
	- added gamestateperceptor files

	* plugin/soccer/gamestateperceptor/.cvsignore,
	* plugin/soccer/gamestateperceptor/gamestateperceptor.cpp,
	* plugin/soccer/gamestateperceptor/gamestateperceptor.h,
	* plugin/soccer/gamestateperceptor/gamestateperceptor_c.cpp:
	- added GameStatePerceptor, collecting current game time and playmode
	from the GameStateAspect

2004-02-02  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/filesystemstd/filesystemstd.cpp:
	- prefixed a RFile instance with salt namespace as ruby defines it's
	own RFile structure

	* lib/zeitgeist/scriptserver/scriptserver.h:
	- moved ruby include magic to rubywrapper.h

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	- adapted thisCall and selectCall to pass a VALUE out to the called
	cmdProc, returning the result to ruby

	* lib/zeitgeist/fileserver/fileserver.cpp:
	- whitespace fixes
	- using explicit salt:: namespace for all RFile references, as ruby.h
	also defines an RFile struct

	* lib/zeitgeist/leaf_c.cpp:
	- removed function status
	- adapted isLeaf and getName to return string objects to ruby instead
	of printing to the console
	- exporting function getFullPath

	* lib/zeitgeist/object.cpp:
	- passing out VALUE in Object::invoked to the invoced commandProc

	* lib/zeitgeist/class.h:
	- added VALUE& out parameter to TCmdProc typedef; this allows
	functions exported to ruby from c++ to return arbitrary ruby objects
	- added #define OUT_FUNCTION that exports a function with a return
	value to ruby

	* lib/zeitgeist/scriptserver/rubywrapper.h:
	- added ruby.h include wrapper, copied from scriptserver include

	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- using Collider::Intersects to test for a ray collision
	- moved ray collider setup from OnLink to ConstructInternal
	- some minor cleanup

	* lib/oxygen/physicsserver/collider.cpp:
	- implemented method Intersects

	* lib/oxygen/physicsserver/collider.h:
	- added method Intersects that checks if the two involved geoms have at
	least one point in common, i.e. intersect

2004-02-02  Oliver Obst  <fruit@robolog.org>

	* app/agenttest/main.cpp:
	- changed the agent to use the Vision perceptor instead of the PerfectVision Perceptor

	* plugin/soccer/dasheffector/dasheffector.h:
	* plugin/soccer/dasheffector/dasheffector.cpp:
	- added a reference to the agent state
	- using the VisionPerceptor FlipView method to
	  flip the dash power vector in case of the right team

	* plugin/soccer/visionperceptor/visionperceptor_c.cpp:
	- exporting method to set noise params
	- exporting method to switch on/off noise
	- exporting method to set the predicate name

	* plugin/soccer/visionperceptor/visionperceptor.h:
	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- added method to change noise parameters
	- added method to turn all noise off/on
	- added method to change predicate name (for debugging)
	- made a static FlipView method to switch coordinates for the team on the
	  other side :)
	- removed references to the Random Number Generators
	  (holding sigma values instead)

2004-02-01  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/visionperceptor/visionperceptor.h:
	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	- moved collision check into seperate method (still not working)

	* plugin/soccer/kickeffector/kickeffector_c.cpp:
	- exporting methods setKickMargin, setForceFactor, setSteps, setNoiseParams,
	  setMaxPower to ruby

	* plugin/soccer/kickeffector/kickeffector.h:
 	* plugin/soccer/kickeffector/kickeffector.cpp:
	- added method to set the force factor
	- added method to set the minimum and maximum number of steps to apply forces
	- added method to set the max. kick power for the user
	- setting default parameters, like kick margin, force factor, minimum and
	  maximum number of steps etc
	- changed the Realize method to use the ball acceleration
	  methods. The ball is accelerated in radial direction away from the agent
	  (either horizontally or with an latitudal angle of 45 degrees).
	  The force, torque and time applied to the ball is dependend on the value the
	  user provides.  If the error values are positive, noise is added to the
	  angles and forces.

	* lib/oxygen/physicsserver/body.h:
	* lib/oxygen/physicsserver/body.cpp:
	- added method AddTorque

	* plugin/soccer/Makefile.am:
	- added ball.cpp and ball.h

	* plugin/soccer/ball/ball.h:
	* plugin/soccer/ball/ball.cpp:
	- added a method to accelerate the ball over a number of steps

2004-02-01  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:
	moved rule checks in UpdatePlayOn into separate methods CheckGoal
	and CheckBallLeftField

	* plugin/soccer/soccerruleaspect/soccerruleaspect.h:
	added method CheckBallLeftField and CheckGoal

	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp:
	implemented GetLeftGoalRecorder and GetRightGoalRecorder

	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.h:
	added method GetLeftGoalRecorder and GetRightGoalRecorder

	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	added UpdateGoalState that checks if the ball is in one of the goals

	* plugin/soccer/ballstateaspect/ballstateaspect.h:
	added method GetGoalState and UpdateGoalState
	added member mLeftGoalRecorder, mRightGoalRecorder and mGoalState

	* app/simulator/simulator.rb:
	added box colliders around the goals

	* app/rcssmonitor3d/main.cpp:
	added support for team index parsing; using three different colors for
	agents belonging to no, left or right team

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	method GetAgentData collects team index and unum from the AgentState
	aspec for each agent

	* plugin/soccer/sexpmonitor/sexpmonitor.h:
	added method GetAgentData

	* plugin/soccer/agentstate/agentstate.cpp:
	implemented GetUniformNumber and GetTeamIndex

	* plugin/soccer/agentstate/agentstate.h:
	added method GetUniformNumber and GetTeamIndex

	* app/simulator/simulator.rb:
	queuing two agents from each team

	* app/simulator/agentdb.list:
	defining two agent types 'foo' and 'bar'

	* app/agenttest/main.cpp:
	added support to set the teamname the agent uses with the init
	command via a command line parameter

	* app/simulator/simulator.rb:
	registering the SexpMonitor after the GameStateAspect as it caches
	a reference to it

2004-01-31  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/dasheffector/dasheffector_c.cpp:
	- exporting methods to set dash effector parameters:
	  setForceFactor, setSigma, and setMaxPower

	* plugin/soccer/dasheffector/dasheffector.h:
	* plugin/soccer/dasheffector/dasheffector.cpp:
	- introduced a "force factor". The applied force to the robot is
	  multiplied with this factor (divided by the maximum force). The
	  default force factor is 500.0.
	- The applied dash vector is length restricted now. If the length
	  of the dash power vector is greater the the allowed maximum
	  length, the dash vector is reduced to the maximum length. The
	  default value of the maximum dash vector length is 100.0.
	- It is possible to use a (normally distributed) error to
	  calculate the resulting force applied to the robot. When
	  calculating the resulting force, the dash power is multiplied with
	  the force factor divided by the maximum dash power. The error is
	  added to the maximum dash power in this calculation. By default,
	  error is turned off.
	- changed the order of the dash power components. For the user,
	  the 3rd component of the dash power vector is used to let the
	  robot jump up.
	- the dash effector takes effect only if the sphere is touching
	  the ground.

2004-01-31  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/rcssmonitor3d/Makefile.am, app/rcssmonitor3d/camera.cpp,
	app/rcssmonitor3d/camera.h, app/rcssmonitor3d/glserver.cpp,
	app/rcssmonitor3d/glserver.h, app/rcssmonitor3d/main.cpp:
	added camera movement up and down; binded on keys '+' and '-'
	fixed output of 2D texts
	fixed resizing of the monitor window (adapt to new aspect ratio)
	parsing of game state data and output in the first line

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	changed SexpMonitor to read game state data (time, goals, playmode...)
	from the GameStateAspect and transer it to the connected monitor

	* plugin/soccer/sexpmonitor/sexpmonitor.h:
	added method GetGameStateData, OnLink and OnUnlink

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	implemented new SetGameHalf, GetGameHalf, ScoreTeam and GetScore

	* plugin/soccer/gamestateaspect/gamestateaspect.h:
	added method SetGameHalf, GetGameHalf, ScoreTeam and GetScore
	added members mGameHalf and mScore

	* plugin/soccer/dasheffector/dasheffector.cpp:
	some minor cleanup

	* plugin/soccer/soccertypes.h:
	added enum TGameHalf

	* plugin/soccer/initeffector/initeffector.cpp:
	the InitEffector does not set the teamname and uniform number directly
	in the AgentStateAspect. Instead it requests it from the
	GameStateAspect.

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	implemented method RequestUniform. It is called from the InitEffector
	to register a uniform number for a team. The GameStateAspect checks if
	both teamName and uniform number are valid.

	* plugin/soccer/gamestateaspect/gamestateaspect.h:
	added method RequestUniform, InsertUnum and GetTeamIndex
	added member mTeamName and mUnumSet

	* plugin/soccer/agentstate/agentstate.cpp:
	remove method SetTeamName; added method SetTeamIndex

	* plugin/soccer/agentstate/agentstate.h:
	storing team index instead of teamname. removed method SetTeamName,
	added method SetTeamIndex

	* plugin/soccer/soccercontrolaspect/soccercontrolaspect.h:
	moved typedefs into soccertypes.h

	* plugin/soccer/soccertypes.h:
	soccertypes.h contains types common to all plugins in the soccer
	simulation

	* app/agenttest/main.cpp:
	changed init command to use current pid as unique uniform number

	* app/rcssmonitor3d/main.cpp: some whitespace changes
	toggling camera mode on and off with 'c'

2004-01-29  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simulator/simulator.rb:
	added SoccerRuleAspect

	* lib/oxygen/controlaspect/controlaspect.cpp:
	implemented GetActiveScene and GetControlAspect. Both methods are
	utility functions to ease the implementation of derived ControlAspects

	* lib/oxygen/controlaspect/controlaspect.h:
	added method GetActiveScene and GetControlAspect

	* plugin/soccer/soccercontrolaspect/.cvsignore,
	plugin/soccer/soccercontrolaspect/soccercontrolaspect.cpp,
	plugin/soccer/soccercontrolaspect/soccercontrolaspect.h,
	plugin/soccer/soccercontrolaspect/soccercontrolaspect_c.cpp,
	plugin/soccer/soccerruleaspect/.cvsignore,
	plugin/soccer/soccerruleaspect/soccerruleaspect.cpp,
	plugin/soccer/soccerruleaspect/soccerruleaspect.h,
	plugin/soccer/soccerruleaspect/soccerruleaspect_c.cpp:
	- added new
	class SoccerControlAspect that acts as a baseclass for all
	ControlAspects in the soccer simulation and collects utility
	functions and typedefs used throughout the soccer simulation

	- added new class soccerruleaspect that implements the soccer
	rules. Currently it checks in PM_PlayOn if the ball rolls out of the
	soccer field and blocks it

	- cleaned up BallStateAspect und GameControlAspect to use common
	methods from SoccerControlAspect

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	exporting ball radius and ball mass to the soccer monitor

	* app/simulator/simulator.rb:
	added soccer variables BallMass and BallRadius

	* app/simulator/simulator.rb:
	fixed the FieldBox collider setup

	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	- moved the update of the last colliding method into a separate method
	UpdateLastCollidingAgent
	- implemented implemented UpdateBallOnField to query the FieldBox
	recorder if the collided with the playing field
	- implemented method OnLink to cach references to the ball and
	fieldBox recorder

	* plugin/soccer/ballstateaspect/ballstateaspect.h:
	added method UpdateLastCollidingAgent and UpdateBallOnField
	added members mBall, mFieldRecorder and mBallOnField

	* lib/oxygen/physicsserver/boxcollider.cpp:
	whitespace only

	* lib/oxygen/physicsserver/contactjointhandler.cpp:
	check if the collidee has also registered a ContactJointHandler. A
	contact joint is only created if both collider agree to do so,
	i.e. both have registered a ContactJointHandler.

	* lib/oxygen/physicsserver/contactjointhandler.h:
	implemented IsSymmetricHandler to indicate that the
	ContactJointHandler is no symmetric handler

	* lib/oxygen/physicsserver/collisionhandler.cpp:
	added some error messages

	* lib/oxygen/physicsserver/collisionhandler.h:
	addded method IsSymmetricHandler

	* lib/oxygen/physicsserver/collider.cpp:
	- changed OnCollision to accept a shared_ptr to a collider instead of
	a geomID. The lookup is now done in the Space node
	- OnCollision checks if the CollisionHandler supports the symmetric
	case prior to notifying it

	* lib/oxygen/physicsserver/collider.h:
	added method PrePhysicsUpdateInternal

	* lib/oxygen/physicsserver/space.cpp: - implemented method GetCollider
	- adapted HandleCollision to pass a shared_ptr to the
	Collider::OnCollision.
	- calling OnCollision for both the direct case for two colliding geoms
	and the symmetric case

	* lib/oxygen/physicsserver/space.h:
	added method GetCollider that looks up a shared_ptr to the Collider
	managing a geom

2004-01-27  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/agenttest/main.cpp:
	added reading of segmented messages to GetInput()
	logging is disabled by default
	some minor cleanup

	* app/rcssmonitor3d/glserver.cpp:
	added missing call to gluDeleteQuadric

	* plugin/soccer/sexpmonitor/sexpmonitor.h:
	added method PutFloatParam

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	exporting field geometry and agent parameter to the monitor

2004-01-26  Oliver Obst  <fruit@robolog.org>

	* app/agenttest/main.cpp: - using kick up
	- changes due to kick margin changes (and agent size changes)

	* plugin/soccer/kickeffector/kickeffector.cpp, plugin/soccer/kickeffector/kickeffector.h:
	added some experimental code for kicking the ball "up"
	(looks funny)

	* plugin/soccer/visionperceptor/visionperceptor.cpp,
	* plugin/soccer/visionperceptor/visionperceptor.h:
	added some experimental features to the visionperceptor:
	- noise (calibration noise + measurement errors)
	- occlluion check (disabled for now, don't now if it works)

	* app/rcssmonitor3d/main.cpp:
	- adjusted field sizes and other parameters

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	- RemovedChildReference caused core dumps when agents disconnected.
	  This is commented out now. Instead, we give a debug message.

	* app/simulator/simulator.rb:
	- adjusted numbers according to the soccer rules, ie.  ball
	  and field size are now fixed to official
	  sizes.
	- made agents much smaller now (diameter 60 cm)

2004-01-26  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	moved duplicate parsing code for variable name into method
	ParseVarName and cleaned up GetVariable methods

	* lib/zeitgeist/scriptserver/scriptserver.h:
	added method ParseVarName

	* app/simulator/simulator.rb:
	moved all variables describing field geomtetry and agent parameters
	into the namespace Soccer. From there the SexpMonitor should read them
	and pass them to the connected monitor.

2004-01-25  Oliver Obst  <fruit@robolog.org>

	* lib/oxygen/oxygen.h:
	* lib/oxygen/oxygen.cpp:
	* lib/oxygen/Makefile.am:
	- added raycollider to oxygen library
	- added ccylindercollider to oxygen library

	* lib/oxygen/physicsserver/raycollider.h:
	* lib/oxygen/physicsserver/raycollider.cpp:
	* lib/oxygen/physicsserver/raycollider_c.cpp:
	added an ODE RayCollider wrapper

	* lib/oxygen/physicsserver/spherecollider.h:
	* lib/oxygen/physicsserver/spherecollider.cpp:
	added method to get the radius of the sphere

	* lib/salt/random.h:
	- added a base engine for producing random numbers (based on boost)
	- added a random number generator with an uniform distribution
	- added a random number generator with a normal distribution
	- added a random number generator with an exponential distribution
	All generators build upon the base engine.

2004-01-25  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simulator/simulator.rb: some cleanup moved construction
	tasks into separate methods
	using global ruby variables ($varname) for paramaters visible to
	all methods
	implemented addAgent method that is called from the CreateEffector

	* app/agenttest/main.cpp:
	some cleanup
	added additional behaviour: the agent seeks the ball and uses the
	kick
	effector when he is near enough

	* app/rcssmonitor3d/main.cpp: added type defintion for 'ballAgent'
	some cleanup
	drawing a border around the soccer field; drawing the last agent
	that touched ball in red color

	* app/rcssmonitor3d/glserver.cpp:
	removed calls to glColor3ub. material seletion is part of main.cpp

	* plugin/soccer/sexpmonitor/sexpmonitor.h:
	added method GetLastBallAgent

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	implemented method GetLastBallAgent. this method queries the
	BallStateAspect for the last agent that touched the ball.
	GetMonitorInfo returns the last agent touching the ball as
	'ballAgent'. This servers as a temporary debug aid in the monitor.

	* plugin/soccer/initeffector/initeffector.cpp:
	don't construct an ActionObject on failure passing predicate name
	on construction of an InitAction

	* plugin/soccer/initeffector/initaction.h:
	changed InitAction constructor to explicitly ake the predicate
	name

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	removed two superfluous ';'

	* plugin/soccer/Makefile.am:
	removed fieldflag.cpp

	* plugin/soccer/fieldflag/fieldflag.h:
	removed method OnLink

	* plugin/soccer/fieldflag/fieldflag.cpp:
	fieldflag construction is entirely part of the init script

	* plugin/soccer/Makefile.am:
	removed ball.cpp

	* plugin/soccer/createeffector/createeffector.h:
	fixed include guard naming
	removed method OnLink, GetAgentMass, GetAgentRadius and
	GetAgentMaxSpeed

	* plugin/soccer/createeffector/createeffector.cpp:
	moved construction of agent nodes to the init script. The
	CreateEffector calls a ruby function addAgent that has to be
	implemented in the init script

	* plugin/soccer/createeffector/createaction.h:
	fixed include guard naming

	* plugin/soccer/createeffector/createaction.h:
	changed CreateAction constructor to explictly take the predicate
	name

	* plugin/soccer/ball/ball.cpp:
	removed ball.cpp. Construction of nodes below the Ball node is now
	part of the init script

	* plugin/soccer/ball/ball.h: removed method OnLink

	* plugin/soccer/export.cpp:
	exporting DashEffector, KickEffector and BallStateAspect to
	zeitgeist

	* plugin/soccer/Makefile.am:
	added KickEffector, DashEffector and BallStateAspect files

	* plugin/forceeffector/forceaction.h:
	changed ForceAction constructor to accept a string with the name
	of the predicate. This way the name of the predicate has to be
	explicitly set in the ForceEffector and occurs only in the
	ForceEffector, preventing the ActionObject and Effector to be out
	og sync wrt to the predicate name

	* plugin/forceeffector/forceeffector.cpp:
	caching mBody reference in OnLink method
	using AffForce method of Body instead of directly manipulating ODE
	object

	* plugin/forceeffector/forceeffector.h:
	added method OnLink and OnUnlink
	added member mBody

	* plugin/collisionperceptor/perceptorhandler.h:
	fixed include guard naming

	* plugin/soccer/kickeffector/kickaction.h,
	* plugin/soccer/kickeffector/kickeffector.cpp,
	* plugin/soccer/kickeffector/kickeffector.h,
	* plugin/soccer/kickeffector/kickeffector_c.cpp,
	* plugin/soccer/kickeffector/.cvsignore:
	added KickEffector. The KickEffector applies a force to the ball
	if the agent using this effector is within reach. The effector
	accepts (but ignores in its current form) a parameter that allows
	the agent to either kick the ball horizontally or with an angle.

	* plugin/soccer/dasheffector/dasheffector.cpp,
	* plugin/soccer/dasheffector/dasheffector.h,
	* plugin/soccer/dasheffector/dasheffector_c.cpp:
	added DashEffector. Its identical in it's current form to the
	ForceEffector. Soccer specific changes to the ForceEffector will
	go to the DashEffector.

	* plugin/soccer/dasheffector/.cvsignore,
	plugin/soccer/dasheffector/dashaction.h:
	added DashEffector. Its identical in it's current form to the
	ForceEffector. Soccer specific changes to the ForceEffector will
	go to the DashEffector.

	* plugin/soccer/ballstateaspect/ballstateaspect_c.cpp:
	BallStateAspect export to zeitgeist

	* plugin/soccer/ballstateaspect/ballstateaspect.cpp:
	BallStateAspect implementation

	* plugin/soccer/ballstateaspect/ballstateaspect.h:
	BallStateAspect is a ControlAspect that holds information about
	the current state of the ball in the simulation.

	* lib/oxygen/oxygen.cpp:
	registering RecorderHandler to zeitgeist

	* lib/oxygen/oxygen.h:
	added RecorderHandler #include fixed Oxygen comment

	* lib/oxygen/physicsserver/recorderhandler_c.cpp:
	zeitgeist export for RecorderHandler

	* lib/oxygen/physicsserver/recorderhandler.cpp:
	RecorderHandler implementation

	* lib/oxygen/physicsserver/recorderhandler.h:
	RecorderHandler is a CollisionHandler that accumulates collision
	information of the Collider it belongs to.

	* lib/oxygen/spadesserver/spadesserver.cpp:
	removed repeated lookups of the SceneServer and GCS out of
	simToTime method. Both references are now looked up once in OnLink
	changed various other methods to use the cached references

	* lib/oxygen/spadesserver/spadesserver.h:
	removed monitorserver include, using a forward declaration now
	changed ConstructInternal comment
	added method OnLink and OnUnlink
	removed method GetMonitorServer
	added member mMonitorServer, mGameControlServer and mSceneServer

	* lib/oxygen/spadesserver/paramstorer.h:
	fixed some compile warning about unused parameters

	* lib/oxygen/physicsserver/collider_c.cpp:
	added ruby SetPosition wrapper

	* lib/oxygen/physicsserver/collider.cpp: implemented method SetPosition

	* lib/oxygen/physicsserver/collider.h:
	added method SetPosition to place the managed ODE geom directly in the
	absence of an associated ODE body

	* lib/oxygen/physicsserver/body.cpp:
	implemented method AddForce and SetPosition

	* lib/oxygen/physicsserver/body.h:
	added method AddForce and SetPosition

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	changed some error messages to use '\n' instead of endl (avoid
	flushing)
	removed trailing underscore in the name of the created AgentAspect
	nodes
	some formatting changes

	* lib/oxygen/gamecontrolserver/actionobject.h:
	changed constructor to accept string reference

2004-01-22  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/createeffector/createeffector.cpp:
	* plugin/soccer/visionperceptor/visionperceptor.h:
	* plugin/soccer/visionperceptor/visionperceptor.cpp:
	* plugin/soccer/visionperceptor/visionperceptor_c.cpp:
	added new visionperceptor (using spherical coordinates).
	This stuff works for me, but is is untested.
	The perceptor returns spherical coordinates (dist angle1 angle2),
	the angles are returned in degrees.

2004-01-20  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/soccer/Makefile.am:
	added ball files

	* lib/oxygen/controlaspect/controlaspect.h:
	comment change

	* app/rcssmonitor3d/main.cpp:
	parsing the ball position updates and drawing the ball

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	send the ball position to the monitor

	* app/simulator/simulator.rb:
	adding a ball object to the scene

	* plugin/soccer/export.cpp:
	exporting "Ball' to zeitgeist

	* plugin/soccer/ball/.cvsignore,
	* plugin/soccer/ball/ball.cpp,
	* plugin/soccer/ball/ball.h,
	* plugin/soccer/ball/ball_c.cpp:
	added soccer/ball files. A ball constructs a simple sphere
	together with a collider

	* lib/oxygen/sceneserver/fpscontroller.cpp:
	some cleanup; moved implementation from fpscontroller.h her

	* lib/oxygen/sceneserver/fpscontroller.h: some cleanup
	moved implementation to fpscontroller.cpp

	* lib/oxygen/sceneserver/camera.cpp:
	moved implementation from camera.h here

	* lib/oxygen/sceneserver/camera.h:
	moved implementation to camera.cpp
	cleaned up comments

	* lib/oxygen/sceneserver/basenode_c.cpp:
	some cleanup

	* lib/oxygen/sceneserver/basenode.cpp: some cleanup
	moved setup of static mIdentityMatrix out of BaseNode constructor

	* lib/salt/matrix.h:
	added method GetIdentity returning a pointer to a static identity
	matrix

	* lib/oxygen/sceneserver/basenode.h:
	comments and formatting cleanup

2004-01-16  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simulator/simulator.rb:
	constructing wall collider from the same set of variables as the
	flags

	* lib/oxygen/physicsserver/collider.cpp:
	OnCollision looks up the Collider corresponding to the collidee
	geomID and retrieves a shared pointer to it

	* plugin/collisionperceptor/perceptorhandler.cpp,
	* plugin/collisionperceptor/perceptorhandler.h:
	new HandleCollision signature

	* lib/oxygen/physicsserver/contactjointhandler.cpp:
	adapted to new HandleCollision signature

	* lib/oxygen/physicsserver/contactjointhandler.h:
	changed to new HandleCollision signature

	* lib/oxygen/physicsserver/collisionhandler.h:
	modified HandleCollision() signature to receive the collidee as a
	shared pointer to another collider

2004-01-15  Oliver Obst  <fruit@robolog.org>

	* app/agenttest/main.cpp:
	- changed movement of agents slightly so that
	agents move backward and forward now.

	* app/simulator/simulator.rb:
	- fixed flag positions
	- added 2 more agents
	- added Agent.Something variables (commented out, doesn't work yet)

	* plugin/soccer/createeffector/createeffector.h:
	* plugin/soccer/createeffector/createeffector.cpp:
	- added GetAgentMass() to get the agent mass from the script server
	- added GetAgentRadius() to get the agent radius from the script
	  server
	- added GetAgentMaxSpeed() to get the agent maximum speed
	  from... you get it
	- added OnLink method to create the three Agent.Something variables
	  in the ScriptServer. Unfortunatley, this seems
	  not to be enough to init the variables while executing the init
	  script.

2004-01-08  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/soccer/initeffector/initeffector_c.cpp:
	namespace boost is not needed here

	* plugin/soccer/gamestateaspect/gamestateaspect.cpp:
	removed debug message

	* app/agenttest/main.cpp: some cleanup
	the now agent uses the force effector to move along the playing
	field

	* app/simulator/simulator.rb: starting only 1 agent for now
	added FieldFlags to mark the extends of the playing field

	* plugin/soccer/createeffector/createeffector.cpp:
	changed default starting location of agents to be within the
	soccer field

	* app/rcssmonitor3d/main.cpp:
	added support for FieldFlag display. FieldFlags are displayed as
	red sphere with half the size of agent spheres

	* plugin/monitortest/monitortest.cpp: some whitespace changes
	changed expression type from 'player' to 'agent'

	* plugin/soccer/export.cpp:
	exporting sexpmonitor and fieldflag to zeitgeist

	* plugin/soccer/Makefile.am:
	added sexpmonitor and fieldflag files

	* plugin/soccer/sexpmonitor/sexpmonitor_c.cpp:
	ruby interface of sexpmonitor

	* plugin/soccer/sexpmonitor/sexpmonitor.cpp:
	derived implementation of SexpMonitor is from MonitorTest
	added support for generic mapping from ClassType to expression type
	added support for FieldFlag

	* plugin/soccer/sexpmonitor/sexpmonitor.h:
	class SexpMonitor added. This monitor class is derived from
	MonitorTest. It has additional support for FieldFlag ojbects and
	is therefore specific to the soccer simulation and no longer
	generic like MonitorTest.

	* plugin/soccer/fieldflag/fieldflag.cpp,
	* plugin/soccer/fieldflag/fieldflag.h,
	* plugin/soccer/fieldflag/fieldflag_c.cpp:
	added class FieldFlag. For now this class servers as a debugging
	aid (it is drawn in the monitor). Later this class should mark
	positions on the playing field for agent navigation.

	* plugin/forceeffector/forceeffector.cpp:
	fixed parameter parsing

	* app/simulator/simulator.rb:
	registering a GameControlAspect to the GameControlServer

	* plugin/soccer/export.cpp:
	exporting GameStateAspect to zeitgeist

	* plugin/soccer/Makefile.am:
	added GameStateAspect files

	* plugin/soccer/gamestateaspect/.cvsignore,
	* plugin/soccer/gamestateaspect/gamestateaspect.cpp,
	* plugin/soccer/gamestateaspect/gamestateaspect.h,
	* plugin/soccer/gamestateaspect/gamestateaspect_c.cpp:
	added simple GameStateAspect. This aspect should encapsulate all
	global soccer game state. Currently it defines defines several
	play modes taken from the 2D server and provides access to the
	current one. It further manages the current game time and
	increments it when in PM_PlayOn.

	* lib/oxygen/spadesserver/spadesserver.cpp:
	changed some diagnostic messages
	added call to GameControlServer::Update to simToTime loop

	* lib/oxygen/gamecontrolserver/gamecontrolserver_c.cpp:
	exporting initControlAspect() to ruby

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	implemented method InitControlAspect() and Update()

	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	added method InitControlAspect that registers a new ControlAspect
	to the GameControlserver
	added method Update that updates all registered ControlAspects

	* lib/oxygen/sceneserver/sceneserver.cpp:
	removed special handling of ControlAspects from the SceneServer

	* lib/oxygen/controlaspect/controlaspect.cpp:
	removed old ControlAspect implementation

	* lib/oxygen/controlaspect/controlaspect.h:
	replaced old ControlAspect interface. A ControlAspect is now
	updated by the GameControlServer.

2004-01-07 Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/spadesserver/spadesactevent.cpp:
	always return true to indicate that we handled the event

	* lib/oxygen/spadesserver/spadesactevent.h:
	added comment to realizeEventWorldModel() to explain semantic of
	its return value

2004-01-06  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/soccer/createeffector/createeffector.cpp:
	CreateEffector creates an AgentState node

	* plugin/soccer/export.cpp:
	exporting class AgentState

	* plugin/soccer/initeffector/initeffector.cpp:
	changed the InitEffector to store the team name and uniform number
	in an AgentState

	* plugin/soccer/Makefile.am: added AgentState related files
	added /plugin to the include path for the soccer bundle

	* plugin/soccer/agentstate/.cvsignore,
	* plugin/soccer/agentstate/agentstate.cpp,
	* plugin/soccer/agentstate/agentstate.h,
	* plugin/soccer/agentstate/agentstate_c.cpp:
	added AgentState plugin. This class should store all agent
	specific state and data, like the agents team name and uniform
	number.

	* app/spadestest/spadestest.rb, app/simulator/simulator.rb:
	importing soccer bundle

	* configure.ac:
	removed Makefiles of InitEffector and CreateEffector as they now are part of
	the same bundle

	* plugin/soccer/Makefile.am,
	* plugin/soccer/createeffector/Makefile.am,
	* plugin/soccer/createeffector/export.cpp, plugin/soccer/export.cpp,
	* plugin/soccer/initeffector/Makefile.am,
	* plugin/soccer/initeffector/export.cpp:
	moved soccer specific plugins into one bundle

2004-01-05	pfr	<sserver-admin@lists.sf.net>

	* ./lib/oxygen/spadesserver/spadescreatesenseevent.cpp
	- Added an include needed for the current CVS version of SPADES

2003-12-30  Oliver Obst  <fruit@robolog.org>

	* doc/Makefile.am:
	- including HTML files into distribution
	- fixed installation of HTML files and Doxygen documentation
	- using automake conditional to check if Doxygen is avcailable or not

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	set the sense interval to 250ms.

	* configure.ac:
	- added check for Doxygen. Creating an automake conditional dependent
	  on finding the doxygen binary.
	- creating the rcsoccersim3D script in the app/simulator directory
	- creating the createagentdb.sh script in the app/simulator directory

	* acinclude.m4:
	- compiling libkerosin is now OFF by default.
	- changed warning about no libkerosin to normal message (because
	  until now, libkerosin is not necessary)

	* app/agenttest/Makefile.am:
	- changes so that agenttest binary gets installed

	* app/agenttest/main.cpp:
	- setting unique uniform numbers (by using the agent PIDs)

	* app/rcssmonitor3d/main.cpp:
	- changes so that the init script is run by RunInitScript (to install it in the
	  user directory if necessary)
	- renamed the init script to be consistent with naming style of rcssserver3D files

	* app/simulator/:
	- changes so that a rcssserver3D binary gets installed
	- created a script rcsoccersim3D that starts up a simulator and a monitor
	- created a script that installs an agentdb file during make install

2003-12-29  Oliver Obst  <fruit@robolog.org>

	* lib/kerosin/Makefile.am:
	- fixed Makefile for the case when kerosin should not be build

	* lib/oxygen/spadesserver/spadesserver.cpp:
	- reduced monitor send interval from 1/2 to 1/10.
	- fixed parseAct log message

2003-12-29  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/gamecontrolserver/predicate.cpp:
	ParameterName now works with a ParameterList reference instead of
	a new copy

	* lib/oxygen/gamecontrolserver/predicate.h:
	ParameterName now uses a reference to the ParameterList instead of
	generating a complete copy

	* app/rcssmonitor3d/main.cpp:
	adapted to use Predicate::Iterator

	* plugin/soccer/initeffector/initeffector.cpp:
	adapted GetActionObject() to simpler GetValue() syntax

	* lib/oxygen/gamecontrolserver/predicate.cpp,
	* lib/oxygen/gamecontrolserver/predicate.h:
	added class Predicate::Iterator encapsulating a
	TParameterList::const_iterator. Adapted FindParameter and GetValue
	to use Predicate::iterator. Added GetValue(string name, value) to
	cover most common use case of FindParameter/GetValue combo.

	* lib/oxygen/Makefile.am:
	added gamecontrolserver/predicate.cpp

2003-12-28  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/initeffector/initeffector.cpp:
	- changed initeffector due to changes with FindParameter. InitEffector
 	  now correctly sets both team name and uniform number (currently we use
	  the node name for both).

	* lib/oxygen/gamecontrolserver/predicate.cpp:
	- added ParameterName functional class implementation (for use as STL
	  predicate)
	- added FindParameter implementation

	* lib/oxygen/gamecontrolserver/predicate.h:
	- removed GetNthValue
	- changed FindParameter to find the first element of
	  Predicate::parameter that can be casted to a TParameterList, which
	  (again) contains a first element that can be casted to a
	  std::string and is equal to the given name.
	- moved parts of the implementation into predicate.cpp

2003-12-27  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/gamecontrolserver/predicate.h:
	added GetValue for unsigned int

	* app/rcssmonitor3d/communit.cpp: setting up rcss::net::SocketStreamBuf
	changed GetMessage to use SocketStreamBuf

	* app/rcssmonitor3d/communit.h: using rcss::net::SocketStreamBuf

	* app/rcssmonitor3d/commserver.cpp: adapted to CommUnit change

	* plugin/monitortest/monitortest.cpp: removed debug output
	delimiting generated string with \n

2003-12-27  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/createeffector/createeffector.cpp:
	added InitEffector to the agent

	* plugin/soccer/initeffector/initeffector.cpp:
	using FindParameter to extract the team name and uniform number

	* lib/oxygen/gamecontrolserver/predicate.h:
	- added a functional class ParameterName to find parameters in a
	  parameter list
	- added a template method GetNthValue to extract a parameter from a
	  given parameter list
	- added a template method FindParameter. FindParameter extracts values
	  of a parameter with a given name from the predicate parameter list.

2003-12-26  Oliver Obst  <fruit@robolog.org>

	* app/simulator/simulator.rb:
	queuing up some agents to start initially

	* lib/oxygen/spadesserver/spadesserver_c.cpp:
	added ruby interface for the QueueAgents method

	* lib/oxygen/spadesserver/spadesserver.h:
	* lib/oxygen/spadesserver/spadesserver.cpp:
	- added flag for simulation engine mode changes. The
	  pauseModeCallback checks this flag for changes and sets the
	  simulation engine mode as scheduled.
	- added StartAgents method to start up new agents. Agents can only
	  be started after SPADES called the SpadesServer::initialize
	  method, so init scripts cannot start agents by calling this method
	  directly. Because of this
	- I added the QueueAgents method, that collects the agents to start in a
	  queue. The agent queue will be used in the pause method to call
	  the StartAgents method. QueueAgents can be called from ruby
	  scripts as "queueAgents".

2003-12-25  Oliver Obst  <fruit@robolog.org>

	* lib/oxygen/sceneserver/basenode.h:
	moved private internal update methods to protected section,
	because they cannot be overloaded otherwise (which was intended
	originally).

2003-12-25  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/gamecontrolserver/predicate.h:
	moved GetVectorValue to protected section
	added method ConvertStringValue
	implemented GetValue helper for float, double and int

	* lib/oxygen/gamecontrolserver/predicate.h:
	removed superfluous #include

	* app/rcssmonitor3d/commserver.cpp,
	* app/rcssmonitor3d/commserver.h,
	* app/rcssmonitor3d/main.cpp:
	adapted rcssmonitor3d to Predicate changes
	using new GetValue helper to parse a vector

	* lib/oxygen/gamecontrolserver/predicate.h:
	added a set of helper functions to access values stored in a
	TParameterList

	* lib/oxygen/gamecontrolserver/predicate.h, lib/oxygen/gamecontrolserver/baseparser.h:
	added some comments

	* plugin/soccer/initeffector/initeffector.h,
	* plugin/soccer/createeffector/createeffector.cpp,
	* plugin/soccer/createeffector/createeffector.h,
	* plugin/soccer/initeffector/initeffector.cpp,
	* plugin/sexpparser/sexpparser.cpp, plugin/sexpparser/sexpparser.h,
	* plugin/perfectvisionperceptor/perfectvisionperceptor.cpp,
	* plugin/perfectvisionperceptor/perfectvisionperceptor.h,
	* plugin/forceeffector/forceeffector.cpp,
	* plugin/forceeffector/forceeffector.h,
	* lib/oxygen/spadesserver/spadescreatesenseevent.cpp,
	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp,
	* lib/oxygen/gamecontrolserver/gamecontrolserver.h,
	* lib/oxygen/gamecontrolserver/baseparser.cpp,
	* lib/oxygen/gamecontrolserver/baseparser.h,
	* lib/oxygen/agentaspect/collisionperceptor.cpp,
	* lib/oxygen/agentaspect/collisionperceptor.h,
	* lib/oxygen/agentaspect/effector.h,
	* lib/oxygen/agentaspect/perceptor.h,
	* lib/oxygen/agentaspect/agentaspect.h,
	* lib/oxygen/agentaspect/agentaspect.cpp:
	fixed Predicate usage

	* lib/oxygen/gamecontrolserver/predicate.h:
	moved struct TPredicate to class Predicate

	* lib/oxygen/Makefile.am:
	added predicate.h

2003-12-25  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/createeffector/createeffector.cpp:
	fixed bug that the agent aspect position is set after child references
	(causes strange behaviour on update).

2003-12-25  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simulator/simulator.rb:
	* app/spadestest/spadestest.rb:
	using the CreateEffector as a plugin

	* lib/oxygen/agentaspect/agentaspect.cpp:
	changed init to create the effector passed as a parameter and adapted
	debug output accordingly

	* lib/oxygen/agentaspect/agentaspect.h:
	added parameter createEffector to init

	* lib/oxygen/gamecontrolserver/gamecontrolserver_c.cpp:
	exported method initEffector to ruby

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	implemented InitEffector
	changed agentConnect to pass the create effector name to the
	AgentAspect

	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	added method InitEffector

	* configure.ac:
	added plugin/soccer/createeffector Makefile

	* lib/oxygen/oxygen.cpp:
	removed zeitgeist registration of CreateEffector

	* lib/oxygen/oxygen.h:
	removed CreateEffector include

	* lib/oxygen/Makefile.am: removed CreateEffector files
	added baseparser.cpp

	* lib/oxygen/agentaspect/createeffector.cpp,
	* lib/oxygen/agentaspect/createeffector.h,
	*lib/oxygen/agentaspect/createeffector_c.cpp: removed
	CreateEffector files (now in plugin/soccer)

	* plugin/soccer/Makefile.am,
	* plugin/soccer/createeffector/.cvsignore,
	* plugin/soccer/createeffector/Makefile.am,
	* plugin/soccer/createeffector/createaction.h,
	* plugin/soccer/createeffector/createeffector.cpp,
	* plugin/soccer/createeffector/createeffector.h,
	* plugin/soccer/createeffector/createeffector_c.cpp,
	* plugin/soccer/createeffector/export.cpp:
	moved CreateEffector to plugin/soccer

2003-12-24  Oliver Obst  <fruit@robolog.org>

	* plugin/soccer/.cvsignore:
	* plugin/soccer/Makefile.am:
	* plugin/soccer/initeffector/.cvsignore:
	* plugin/soccer/initeffector/Makefile.am:
	* plugin/soccer/initeffector/export.cpp:
	* plugin/soccer/initeffector/initaction.h:
	* plugin/soccer/initeffector/initeffector.cpp:
	* plugin/soccer/initeffector/initeffector.h:
	* plugin/soccer/initeffector/initeffector_c.cpp:
	added soccer initeffector. The initeffector sets name and uniform number of players.

2003-12-23  Oliver Obst  <fruit@robolog.org>

	* plugin/perfectvisionperceptor/perfectvisionperceptor.cpp:
	- including logserver header to make logging compile
	- changed message format to be more descriptive and extendible

	* lib/zeitgeist/zeitgeist.cpp:
	* lib/zeitgeist/core.cpp:
	removed some of the debug output

	* lib/oxygen/Makefile.am:
	added baseparser.cpp to be compiled

	* plugin/sexpparser/sexpparser.h:
	* plugin/sexpparser/sexpparser.cpp:
	- renamed some of the private method to a more descriptive name
	- fixed insertion of spaces

2003-12-23  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/perfectvisionperceptor/perfectvisionperceptor.cpp:
	some cleanup
	moved TParameterList inside loop to avoid repeat clear()
	added additional check for a non existant scene

	* plugin/sexpparser/sexpparser.h:
	removed methods IsString and IsParameterList

	* plugin/sexpparser/sexpparser.cpp:
	removed methods IsString and IsParameterList. ListToString
	compares now directly based on their type_info

	* lib/oxygen/gamecontrolserver/baseparser.cpp:
	added declarations to force the generation of RTTI type_info
	objects. This solves the problem of comparing two types across
	plugins boundaries.

2003-12-23  Oliver Obst  <fruit@robolog.org>

	* plugin/sexpparser/sexpparser.h:
	* plugin/sexpparser/sexpparser.cpp:
	added further type check and error message

2003-12-22  Oliver Obst  <fruit@robolog.org>

	* merged rcssserver3D-add-gamecontrol back to main branch

2003-12-21  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/rcssmonitor3d/.cvsignore, app/rcssmonitor3d/Makefile.am,
	* app/rcssmonitor3d/camera.cpp, app/rcssmonitor3d/camera.h,
	* app/rcssmonitor3d/commserver.cpp, app/rcssmonitor3d/commserver.h,
	* app/rcssmonitor3d/communit.cpp, app/rcssmonitor3d/communit.h,
	* app/rcssmonitor3d/glserver.cpp, app/rcssmonitor3d/glserver.h,
	* app/rcssmonitor3d/main.cpp, app/rcssmonitor3d/rcssmonitor3d.rb,
	* app/rcssmonitor3d/tcpsocket.cpp, app/rcssmonitor3d/tcpsocket.h,
	* app/rcssmonitor3d/types.h:
	Added initial version of rcssserv3d. This is a simple monitor that
	works together with the MonitorTest class in
	/plugin/monitortest. By default it connects to 127.0.0.1:12001,
	the default spades monitorport for a local server. MonitorTest and
	RcssMonitor3d exchange very simple S-Expressions in the form
	'(player x y z)' that are intepreted as 3 dimensional
	coordinates. The received coordinates are displayed as spheres
	above a grid.

	* app/Makefile.am:
	added rcssmonitor3d

	* configure.ac:
	added app/rcssmonitor3d/Makefile

	* plugin/monitortest/monitortest.cpp:
	added additional debug output implemented GetMonitorInfo analogous
	to PerfectVisionPerceptor. GetMonitorInfo collects the position of
	all AgentAspects and create an s-expression (player x y z).

	* plugin/monitortest/monitortest.h:
	removed stub methods, moved implementation to .cpp

	* lib/oxygen/spadesserver/spadesserver.cpp:
	commented out diagnostic output of simToTime() set the monitor
	update interval to 2 simulation time steps

	* lib/oxygen/monitorserver/monitorserver.cpp:
	some formatting change and additional debug output

	* lib/oxygen/agentaspect/createeffector.cpp:
	move the AgentAspect away from the origin (debug aid for the
	monitor)

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	using method GetActiveScene to query the SceneServer for the
	currently active scene node. This avoids a hard coded '/usr/scene'

	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	added method GetActiveScene

2003-12-21  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/forceeffector/forceeffector.cpp:
	fixed constructor to call BaseClass constructor
	added empty destructor
	some whitespace and formatting changes

	* plugin/forceeffector/forceeffector.h:
	added virtual destructor and some formatting changes

	* plugin/Makefile.am:
	added PerfectVisionPerceptor

	* lib/zeitgeist/core.cpp:
	changed some error messages to be more descriptive

	* lib/oxygen/agentaspect/effector_c.cpp:
	revomed boost namespace usage
	added class.h #include

	* lib/oxygen/agentaspect/effector.h:
	added explicit constructor and virtual desctructor
	some whitespace changes

	* configure.ac:
	added PerfectVisionPerceptor Makefile

	* app/spadestest/spadestest.rb:
	Added 'importBundle' for 'perfectVisionPerceptor' and
	'ForceEffector'. These two plugins are used by the dummy
	CreateEffector. Removed setup of the dummy sphere agent. This setup
	code now also resides in the CreateEffector

	* app/spadestest/agentdb.list:
	fixed version tag

	* app/agenttest/main.cpp:
	added further processing of spades messages

	* lib/oxygen/spadesserver/spadesserver.cpp:
	removed code for PerfectVisionSensor debug output

	* lib/oxygen/spadesserver/spadescreatesenseevent.cpp:
	fixed some return statements and formatting

	* lib/oxygen/sceneserver/transform.h:
	made destructor virtual

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	fixed test in AgentConnect() for an already known agent. The created
	AgentAspect is now also linked to the object hierarchy below
	'/usr/scene'. Additionally AgentAspect::init() is called.  Parse()
	queries the AgentAspect corresponding to the given id, rather than
	using the internal EffectorMap of the GameControlServer.

	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	Parse() takes an addition argument id, giving the agent for which
	a message should be parsed. Removed EffectorMap. Every AgentAspect
	is now responsible for its effectors.

	* lib/oxygen/oxygen.h:
	some #includes fixed

	* lib/oxygen/oxygen.cpp:
	added registration of CreateEffector
	removed registation of PerfectVisionPerceptor

	* lib/oxygen/agentaspect/agentaspect.cpp, lib/oxygen/agentaspect/agentaspect.h:
	Added method Init. This method is called from the
	GameControlServer immediately after the AgentAspect is
	constructed. It is responsible for setting up the CreateEffector.
	Added method GetEffector. This method is an interface to the map
	of Effectors of the AgentAspect.

	* lib/oxygen/agentaspect/createaction.h:
	Added CreateAction. This Object stores the 'create' request an agent
	can issue using the CreateEffector

	* lib/oxygen/Makefile.am: removed perfectvisionperceptor files
	added createeffector files

	* lib/oxygen/agentaspect/createeffector.cpp, lib/oxygen/agentaspect/createeffector.h, lib/oxygen/agentaspect/createeffector_c.cpp:
	added CreateEffector. This effector is constructed by the AgentAspect. It's
	purpose is to construct sensors, perceptors and geometry that make up an
	agent. After an agent connected to the simulation it uses the 'create'
	effector to request these objects. In it's current for the 'create' command
	does not take any parameters and creates a dummy agent that consists of a
	sphere with a PerfectVisionSensor and a ForceEffector.

	* plugin/perfectvisionperceptor/.cvsignore:
	* plugin/perfectvisionperceptor/Makefile.am:
	* plugin/perfectvisionperceptor/export.cpp:
	* plugin/perfectvisionperceptor/perfectvisionperceptor.cpp:
	* plugin/perfectvisionperceptor/perfectvisionperceptor.h:
	* plugin/perfectvisionperceptor/perfectvisionperceptor_c.cpp:
	moved perfectvisionperceptor files to plugin/

	* lib/salt/gcc/sharedlibrary.cpp:
	added more descriptive error message for SharedLibrary::Open()

2003-12-16  Markus Rollmann  <rollmark@uni-koblenz.de>
	* plugin/forceeffector/forceaction.h:
	* plugin/forceeffector/forceeffector.cpp:
	* plugin/forceeffector/forceeffector.h:
	initial version of ForceAction. This class is derived from ActionObject and
	stores the force vector, the ForceEffector should apply.
	implemented ForceEffector::GetActionObject and ForceEffector::Realize.
	GetActionObject constructs an ForceEffector object and Realize applies the
	stored force vector.

	* plugin/forceeffector/Makefile.am:
	added Makefile for ForceEffector and ForceAction

	* plugin/forceeffector/.cvsignore,
	plugin/forceeffector/export.cpp,
	plugin/forceeffector/forceeffector.cpp,
	plugin/forceeffector/forceeffector.h,
	plugin/forceeffector/forceeffector_c.cpp:
	added forceeffector files

	* lib/oxygen/agentaspect/forceeffector.cpp,
	lib/oxygen/agentaspect/forceeffector.h,
	lib/oxygen/agentaspect/forceeffector_c.cpp:
	removed forceeffector files

	* plugin/Makefile.am:
	added forceeffector/

	* lib/oxygen/oxygen.h:
	removed forceeffector include

	* lib/oxygen/oxygen.cpp:
	removed registration of the forceeffector

	* lib/oxygen/Makefile.am:
	removed forceeffector files (moved to plugin/forceeffector)

	* configure.ac:
	added plugin/forceeffector/Makefile

	* app/agenttest/main.cpp:
	app/agenttest is a dummy agent created for testing with the
	SpadesTest. It reads length prefixed data (see spades manual 6.3)
	from fd 3 and writes to fd 4. A corresponding agent DB
	(app/spadestest/agentdb.list, entry 'default') exists in the
	spadestest directory. Currently it does nothing but sending an
	'init done' message, i.e. 'I' (see spades manual 6.4) back to
	spades.

	* app/agenttest/Makefile.am:
	added Makefile for app/agenttest

	* lib/oxygen/spadesserver/spadesserver.cpp:
	The SpadesServer starts one instance of the 'default' agent. This
	is the app/agenttest dummy agent.

	* app/spadestest/agentdb.list:
	the spades agent database for app/agenttest

	* app/Makefile.am:
	added agenttest

	* configure.ac:
	added app/agenttest/Makefile

2003-12-10  Markus Rollmann  <rollmark@uni-koblenz.de>

	* plugin/sexpparser/sexpparser.cpp:
	adapted to changed baseparser interface

	* plugin/sexpparser/sexpparser.h:
	adapted to changed BaseParser interface

	* lib/oxygen/agentaspect/agentaspect.cpp:
	QueryPerceptors traverses all Perceptors below the AgentAspect,
	collects their data and builds a TPredicateList.

	* lib/oxygen/agentaspect/agentaspect.h:
	QueryPerceptors returns TPredicateList using a shared_ptr

	* lib/oxygen/spadesserver/spadescreatesenseevent.cpp:
	adapted to changed BaseParser inteface

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	adapted TmpGenerate to changed BaseParser interface

	* lib/oxygen/gamecontrolserver/baseparser.h:
	using shared_ptr to pass input to Generate()

	* lib/oxygen/Makefile.am: removed effector.cpp

	* lib/oxygen/agentaspect/agentaspect.cpp:
	implemented UpdateEffectorMap. This method builds a map from a
	predicate string to the corresponding Effector below the AgentAspect
	node.
	implemented RealizeActions. This method traverses a list of
	ActionObjects and realizes them using the corresponding effector

	* lib/oxygen/agentaspect/agentaspect.h:
	added helper UpdateEffectorMap to build a map of effectors below an
	AgentAspect

	* lib/oxygen/agentaspect/forceeffector.cpp:
	minimal changes to make ForceEffector compile with the new Effector interface

	* lib/oxygen/agentaspect/forceeffector.h:
	adapted ForceEffector to the new Effector interface

	* lib/oxygen/agentaspect/effector.cpp:
	removed effector.cpp as Effector is a virtual base class now

	* lib/oxygen/agentaspect/effector.h: removed method Perfom
	added method Realize. Realize() should realize an ActionObject

	* lib/oxygen/gamecontrolserver/actionobject.h:
	ActionObject stores the name of the described predicate to allow
	AgentAspecto to find the correct effector.

2003-12-09  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/spadesserver/spadescreatesenseevent.cpp:
	implemented createSense. This methods collects a list of senses
	from the AgentAspect and uses the parser registered to the
	GameControlServer to create a string describing these sense. This
	string is encapsulated as an spades::DataObject into a
	spades::SenseEvent and enqued by spades.

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	added method GetParser
	added GetSenseLatency stub

	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	added method GetParser
	added method GetSenseLatency

	* lib/oxygen/agentaspect/agentaspect.cpp:
	added QueryPerceptors stub

	* lib/oxygen/agentaspect/agentaspect.h:
	added method QueryPerceptors

	* lib/oxygen/agentaspect/agentaspect.cpp:
	added method realizeActions

	* lib/oxygen/agentaspect/agentaspect.h:
	removed method Think
	removed method getVelocity
	removed mehtod prePhysicsUpdateInternal
	added method RealizedActions (moved here from the gcs)

	* lib/oxygen/gamecontrolserver/gamecontrolserver_c.cpp:
	removed method InitEffector

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	removed method InitEffector; effectors should be registered below the
	AgentAspect
	removed method RealizeActions
	added GetAgentAspect

	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	removed method InitEffector
	removed method RealizeActions (now part of AgentAspect)
	added method GetAgentAspect

	* lib/oxygen/spadesserver/spadesactevent.cpp:
	using the AgentAspect to realize stored ActionObjects

	* plugin/Makefile.am: removed survival directory

	* plugin/survival/survivalagentaspect.h:
	* plugin/survival/survivalagentaspect_c.cpp:
	* plugin/survival/survivalcontrolaspect.cpp:
	* plugin/survival/survivalcontrolaspect.h:
	* plugin/survival/survivalcontrolaspect_c.cpp:
	* plugin/survival/.cvsignore: plugin/survival/Makefile.am:
	* plugin/survival/export.cpp:
	* plugin/survival/linesegmentperceptor.cpp:
	* plugin/survival/linesegmentperceptor.h:
	* plugin/survival/linesegmentperceptor_c.cpp:
	* plugin/survival/survival.dsp: plugin/survival/survival.rb:
	* plugin/survival/survivalagentaspect.cpp:
	delete survival plugins/simulator application until we can come up with a new one
	removed plugins belonging to the survival demo.

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	using shared_ptr to work with the TPredicateList

	* plugin/sexpparser/sexpparser.cpp, plugin/sexpparser/sexpparser.h, lib/oxygen/gamecontrolserver/baseparser.h:
	return the TPredicateList as shared_ptr

	* lib/oxygen/agentaspect/agentaspect.h:
	derived the AgentAspect from Transport

2003-12-08  Oliver Obst  <fruit@robolog.org>

	* app/spadestest/spadestest.rb:
	creating a PerfectVisionPerceptor after startup for testing

	* plugin/survival/survivalagentaspect.h:
	* plugin/survival/survivalagentaspect.cpp:
	* plugin/survival/linesegmentperceptor.h:
	* plugin/survival/linesegmentperceptor.cpp:
	fixes due to interface changes in perceptor base class. The fixes only make
	these classes compile, but they don't work yet.

	* plugin/sexpparser/sexpparser.cpp:
	changed ListToString method to convert also atoms that are integer or float.

	* lib/oxygen/oxygen.h:
	* lib/oxygen/oxygen.cpp:
	added PerfectVisionPerceptor to initialization. The PerfectVisionPerceptor
	is registered below the oxygen namespace.

	* lib/oxygen/agentaspect/perfectvisionperceptor.h:
	* lib/oxygen/agentaspect/perfectvisionperceptor.cpp:
	* lib/oxygen/agentaspect/perfectvisionperceptor_c.cpp:
	added first version of PerfectVisionPerceptor. A PerfectVisionPerceptor
	sees all objects that are transform nodes (or derived of transform
	nodes) and returns a list of the respective object names and their
	absolute (cartesian) coordinates
	(could be changed to relative (polar) coordinates later).

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	- flushing buffers after error messages
	- fixed copy/paste bugs in InitEffector
	- added TmpGenerate method for testing

	* lib/oxygen/agentaspect/collisionperceptor.h:
	* lib/oxygen/agentaspect/collisionperceptor.cpp:
	changes due to Percept interface changes in base class.

	* lib/oxygen/agentaspect/perceptor.h:
	changed data type of perceptors to BaseParser::TPredicate. This new
	interface fits better to the BaseParser::Generate method, which takes
	lists of TPredicates.

2003-12-04  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/agentaspect/forceeffector.cpp,
	* lib/oxygen/agentaspect/forceeffector.h:
	added dummy methods to implement the virtual effector interface

	* lib/oxygen/agentaspect/effector.h:
	added GetPredicate() that returns the name of the predicate an
	effector is responsible for; As one predicate could be implemented by
	different classes this call was made explicit and the predicate name was not
	derived from the class name.
	added GetActionObject() that constructs an Actionobject, describing a
	predicate.

	* lib/oxygen/gamecontrolserver/gamecontrolserver_c.cpp:
	renamed Init to InitParser
	added InitEffector

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	added InitEffector()
	added RealizeActions() that realizes a list of ActionObjects with the help
	of the registered effectors corresponding to the predicates
	added GetEffector(), a helper function to lookup an effector for a given
	predicate name

	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	renamed Init() to InitParser
	added InitEffector()
	added RealizeAction()
	added GetEffector()

	* lib/oxygen/spadesserver/spadesactevent.cpp:
	added call to GameControlServer::RealizeActions in
	::realizeEventWorldModel

2003-12-04  Oliver Obst  <fruit@robolog.org>

	* lib/oxygen/gamecontrolserver/gamecontrolserver_c.cpp:
	Register init method to ruby

2003-12-03  Oliver Obst  <fruit@robolog.org>

	* lib/oxygen/gamecontrolserver/baseparser.h:
	Added pure virtual Generate method

	* plugin/sexpparser/.cvsignore:
	* plugin/sexpparser/Makefile.am:
	* plugin/sexpparser/export.cpp:
	* plugin/sexpparser/sexpparser.h:
	* plugin/sexpparser/sexpparser_c.cpp:
	Added an initial version of a parser module for s-expressions. For our
	purposes, sexpr have to have an atom at first element of the list. The
	sexpr given as string to the Parse method are converted into lists of predicates.
	Predicates consist of a name (a string) and a list of boost:any elements.
	In practice, these elements are either strings or lists containing elements (i.e.
	strings or lists containing elements (i.e. ... you get it)).
	This kind of representation is suitable for our effectors.
	The Generate method of the parser converts lists of elements into an sexpr string.
	Currently, the user of the Generate method has to take care of properly
	double-quoting strings containing whitespace or single quoting strings that
	look like s-expressions and so on.

	* utility/sfsexp/Makefile.am:
	* utility/sfsexp/README:
	* utility/sfsexp/cstring.c:
	* utility/sfsexp/cstring.h:
	* utility/sfsexp/faststack.c:
	* utility/sfsexp/faststack.h:
	* utility/sfsexp/io.c:
	* utility/sfsexp/malloc_util.c:
	* utility/sfsexp/malloc_util.h:
	* utility/sfsexp/parser.c:
	* utility/sfsexp/sexp.c:
	* utility/sfsexp/sexp.h:
	* utility/sfsexp/sexp_ops.c:
	* utility/sfsexp/sexp_ops.h:
	Added files from the sfsexp library. I've chosen to add the files to the utility
	directory over requiring the user to install it because there is no "make install"
	target in the original sfsexp distribution. Also it would be possible to convert
	the underlying sexp representation into one using proper c++ types.

2003-12-03  Markus Rollmann  <rollmark@uni-koblenz.de>
	* lib/oxygen/Makefile.am:
	added SpadesActEvent files

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	initial version of Parse() added

	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	added Parse() method used to segment an action string from an
	agent into a list of ActionObjects

	* lib/oxygen/gamecontrolserver/actionobject.h:
	intiial version of actionobject added

	* lib/oxygen/spadesserver/spadesserver.cpp:
	made GetGameControlServer() const
	implemented parseAct()

	* lib/oxygen/spadesserver/spadesserver.h:
	made GetGameCotrolServer() const; it is called from parseAct(),
	which is const

	* lib/oxygen/spadesserver/spadesactevent.cpp:
	removed a compiler warning about an unused parameter

	* lib/oxygen/spadesserver/spadescreatesenseevent.cpp:
	* lib/oxygen/spadesserver/spadescreatesenseevent.h:
	made destructor is virtual
	added explicit virtual declaration to member methods
	removed a compile warning about unused parameters

	* lib/oxygen/spadesserver/spadesactevent.cpp:
	*lib/oxygen/spadesserver/spadesactevent.h:
	initial version of SpadesActEvent added

2003-12-02  Christoph Ringelstein <cringel@users.sourceforge.net>

	* lib/kerosin/renderserver/renderserver.cpp, lib/kerosin/renderserver/renderserver.h:
	Fixed typecasting bug in ConstructInternal by removing member mSceneServer.

2003-12-02  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	moved main execution path of AgentConnect method out of
	conditional statement
	implemented AgentDisappear method added GetSenseInterval

	* lib/oxygen/gamecontrolserver/baseparser.h:
	changed TPredicateList definition

	* lib/oxygen/oxygen.h:
	added include for actionobject

	* lib/oxygen/spadesserver/spadescreatesenseevent.cpp:
	* lib/oxygen/spadesserver/spadescreatesenseevent.h:
	initial version of SpadesCreateSenseEvent

	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/spadesserver/spadesserver.h:
	added GetTimePerStep method (also used by SpadesCreateSenseEvent)
	made GetGameControlServer a public method
	added GetSimEngine method

	* lib/oxygen/spadesserver/paramstorer.h:
	fixed some typos in a comment

	* lib/oxygen/oxygen.cpp:
	registered ActionObject to ZeitGeist

	* lib/oxygen/Makefile.am:
	added SpadesCreateSenseEvent and ActionObject files to Makefile.am

2003-12-02  Oliver Obst  <fruit@robolog.org>
	* TODO:
	New file.

	* app/spadestest/spadestest.rb:
	creating game control server

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	using default constructor of shared ptr instead of tmp variable

2003-12-01  Oliver Obst  <fruit@robolog.org>

	* lib/kerosin/Makefile.am:
	removed visionperceptor from the list of files to be compiled

	* lib/oxygen/spadesserver/spadesserver.cpp:
	- implemented helper function to get GameControlServer
	- agentConnect calls the GameControlServer::AgentConnect method

	* lib/oxygen/spadesserver/spadesserver.h:
	added helper function to get GameControlServer

	* lib/oxygen/oxygen.cpp, lib/oxygen/oxygen.h:
	Added GameControlServer to the oxygen initialization

	* lib/oxygen/gamecontrolserver/.cvsignore: New file.

	* lib/oxygen/gamecontrolserver/baseparser.h:
	* lib/oxygen/gamecontrolserver/baseparser_c.cpp:
	Added a base parser class BaseParser that the GameControlServer
	uses to hold a reference to the specific parser used by a
	simulation.

	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	* lib/oxygen/gamecontrolserver/gamecontrolserver_c.cpp:
	Added first version of a GameControlServer

2003-12-01  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/spadestest/spadestest.rb:
	removed dummy variable for test with the ParamReader. Set
	Spades.TimePerStep on startup.

	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/spadesserver/spadesserver.h:
	made simulation parameter time_per_step accessible via ruby
	(Spades.TimePerStep).

	* lib/oxygen/spadesserver/paramreader.cpp:
	modified warning messages
	removed extensive check for the presence of the scriptserver

	* lib/zeitgeist/scriptserver/scriptserver.h:
	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	added GetVariable method to work with floats

	* lib/oxygen/spadesserver/spadesserver.cpp:
	some cosmetic changes. moved main path out of conditional
	statement

2003-12-01  Oliver Obst  <fruit@robolog.org>

	* lib/oxygen/spadesserver/spadesserver.cpp:
	- implemented helper function to get GameControlServer
	- agentConnect calls the GameControlServer::AgentConnect method

	* lib/oxygen/spadesserver/spadesserver.h:
	added helper function to get GameControlServer

	* lib/oxygen/oxygen.h:
	* lib/oxygen/oxygen.cpp:
	Added GameControlServer to the oxygen initialization

	* lib/oxygen/gamecontrolserver/baseparser.h:
	* lib/oxygen/gamecontrolserver/baseparser_c.cpp:
	Added a base parser class BaseParser that the GameControlServer uses
	to hold a reference to the specific parser used by a simulation.

	* lib/oxygen/gamecontrolserver/gamecontrolserver.h:
	* lib/oxygen/gamecontrolserver/gamecontrolserver.cpp:
	* lib/oxygen/gamecontrolserver/gamecontrolserver_c.cpp:
	Added first version of a GameControlServer

2003-12-01  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/spadestest/spadestest.rb:
	removed dummy variable for test with the ParamReader. Set Spades.TimePerStep
	on startup.

	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/spadesserver/spadesserver.h:
	made simulation parameter time_per_step accessible via ruby
	(Spades.TimePerStep).

	* lib/oxygen/spadesserver/paramreader.cpp:
	modified warning messages
	removed extensive check for the presence of the scriptserver

	* lib/zeitgeist/scriptserver/scriptserver.h:
	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	added GetVariable method to work with floats

	* lib/oxygen/spadesserver/spadesserver.cpp:
	some cosmetic changes. moved main path out of conditional statement

2003-11-30  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/spadesserver/paramstorer.h:
	added missing paramstorer.h to repository

	* lib/oxygen/spadesserver/paramstorer.h:
	New file.

2003-11-27  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/spadestest/spadestest.rb:
	removed call to spadesserver.init
	created new variable Test.value to test with the ParamReader

	* lib/zeitgeist/scriptserver/scriptserver.cpp, lib/zeitgeist/scriptserver/scriptserver.h:
	added new method ExistsVariable to test if the script server knows a
	variable, used by the ParamReader

	* lib/oxygen/Makefile.am:
	added ParamStorer and ParamReader to Makefile.am

	* lib/oxygen/spadesserver/paramreader.cpp:
	* lib/oxygen/spadesserver/paramstorer.cpp:
	New file.

	* lib/oxygen/spadesserver/paramreader.cpp:
	* lib/oxygen/spadesserver/paramreader.h:
	* lib/oxygen/spadesserver/paramstorer.cpp:
	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/spadesserver/spadesserver.h:
	* lib/oxygen/spadesserver/spadesserver_c.cpp:
	intial version of ParamStorer class
	removed Init() from SpadesServer, creating ParamReader in
	parseParameters()
	initial working version of ParamReader. Use "--<rubyVarName>
	value" to set values in ruby variables on the command
	line. Strings passed as value must be quoted.

2003-11-23  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/spadesserver/spadesserver.h:
	some cleanup and whitespace change
	implemented calls to the MonitorServer

	* lib/oxygen/monitorserver/monitorserver.cpp:
	* lib/oxygen/monitorserver/monitorserver.h:
	* lib/oxygen/monitorserver/monitorsystem.h:
	implemented the callbacks from SpadesServer in MonitorServer.
	completed the MonitorSystem interface.

2003-11-20  Markus Rollmann  <rollmark@uni-koblenz.de>

	* app/simulator/preinit.rb:
	fixed some ruby warnings

	* plugin/inputsdl/inputsystemsdl.cpp:
	changed some diagnostic messages to be more specific

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	fixed some ruby warnings with 1.8.0
	added missing gpl header
	whitespace changes

	* lib/kerosin/openglserver/openglserver_c.cpp:
	whitespace only

	* lib/kerosin/openglserver/openglserver.cpp:
	lib/kerosin/openglserver/openglserver.h:
	added missing gpl header
	removed Init() declaration from header with no corresponding implementation
	added more diagnostic output to the openglserver

	* lib/kerosin/inputserver/inputserver.cpp:
	added missing gpl header and whitespace changes

	* lib/kerosin/kerosin.rb:
	worked around annoying ruby 1.8.0 warning
	"(eval):86: warning: don't put space before argument parentheses"

2003-11-19  Markus Rollmann  <rollmark@uni-koblenz.de>

	* lib/oxygen/Makefile.am:
	* lib/oxygen/oxygen.cpp:
	* lib/oxygen/oxygen.h:
 	- added MonitorServer related files to Makefile.am
	- registered MonitorServer and MonitorSystem in oxygen.cpp

	* app/spadestest/spadestest.rb:
	- spadestest.rb creates the MonitorServer and registers the
	MonitorTest system to it.

	* configure.ac, plugin/monitortest/Makefile.am:
	* plugin/monitortest/export.cpp:
	* plugin/monitortest/monitortest.cpp:
	* plugin/monitortest/monitortest.h:
	* plugin/monitortest/monitortest_c.cpp:
	- initial monitor system added

	* lib/oxygen/monitorserver/monitorserver.cpp:
	* lib/oxygen/monitorserver/monitorserver.h:
	* lib/oxygen/monitorserver/monitorserver_c.cpp:
	* lib/oxygen/monitorserver/monitorsystem.cpp:
	* lib/oxygen/monitorserver/monitorsystem.h:
	* lib/oxygen/monitorserver/monitorsystem_c.cpp:
	* lib/oxygen/spadesserver/spadesserver_c.cpp:
	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/spadesserver/spadesserver.h:
	- extended the initial version of the monitor server
	- added the initial version of the monitor system
	- changed the base class of SpadesServer to be zeitgeist::Node as
	a ParamReader should be registered below it

2003-11-19  Oliver Obst  <fruit@robolog.org>

	* lib/oxygen/monitorserver/monitorserver.h:
	* lib/oxygen/monitorserver/monitorserver.cpp:
	Initial version of MonitorServer

2003-11-17  Oliver Obst  <fruit@robolog.org>

	* lib/oxygen/spadesserver/spadesserver.cpp:
	- moved some demo code into the simToTime() method
	- returning default values for all the empty methods
	- pauseMethodCallBack starts up the simulation immediatly

	* app/spadestest/main.cpp:
	- using the SpadesServer to simulate.
	- disabled interactivity (console).

	* lib/oxygen/spadesserver/spadesserver.cpp:
	added command line parsing via spades::EngineParam style parameter reader

	* lib/oxygen/spadesserver/spadesserver.h:
	made inheritance from spades::WorldModel public

	* lib/oxygen/spadesserver/paramreader.h:
	made inheritance from spades::EngineParam public

	* lib/oxygen/oxygen.cpp:
	* lib/oxygen/spadesserver/paramreader.h:
	* lib/oxygen/spadesserver/paramreader_c.cpp:
	* lib/oxygen/spadesserver/spadesserver.h:
	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/spadesserver/spadesserver_c.cpp:
	added initial version of the parameter reader base class (representing
	the zeitgeist equivalent of spades::EngineParam)

	* app/spadestest/spadestest.rb:
	creating the Parameter Reader on startup

2003-11-16  Oliver Obst  <fruit@robolog.org>

	* configure.ac:
	checking for SPADES library. SPADES can be used
	optional right now.

	* acinclude.m4: added AC_LIB_SPADES from rcss3d

	* app/spadestest/main.cpp:
	accessing the SpadesServer from main.cpp

	* app/spadestest/spadestest.rb:
	- create the SpadesServer
	- added a second sphere

	* lib/oxygen/spadesserver/spadesserver.cpp:
	* lib/oxygen/spadesserver/spadesserver.h:
	* lib/oxygen/spadesserver/spadesserver_c.cpp:
	added initial revision of SpadesServer (it doesn't do
	anything yet)

	* lib/oxygen/oxygen.cpp:
	register spadesserver during initialization

	* lib/oxygen/oxygen.h:
	- including spadesserver
	- including indexbuffer

	* lib/oxygen/Makefile.am:
	- added spadesserver subdirectory and files. build spadesserver only if
	the spades library is available.


2003-11-15  Oliver Obst  <fruit@robolog.org>

	* lib/zeitgeist/scriptserver/scriptserver.cpp:
	fixed the script path and removed the STRINGIFY macros as configure
	properly places quotes around the prefix now.

	* lib/zeitgeist/zeitgeist.rb:
	- createVariable was taking 3 parameters:
	namespace, variable name, and a value. kerosin.rb expects a
	createVariable with 2 parameters, namely
	namespace.variableName, and a value.  createVariable has been
	changed now to accept both forms (ruby doesn't allow for a method
	to have different signatures other than using varargs).

2003-11-14  Oliver Obst  <fruit@robolog.org>

	* configure.ac:
	the PREFIX preprocessor variable was set to NONE
	if no --prefix was given to configure on the command line. In this
	case the autoconf default prefix is used now ($ac_default_prefix).

2003-11-14  Markus Rollmann  <rollmark@uni-koblenz.de>
	- Modified the startup behaviour of the libraries wrt the handling
	of the ruby scripts that are automatically started.

	To each library now belongs exactly one ruby init script with the
	name of the library (e.g. zeitgeist.rb). The init scripts are
	searched at three different locations at startup (in the given
	order):

		- the local 'dot-directory' of the user,
		e.g. '$HOME/.rcssserver3d'. The name of this directory is
		given to the zeitgeist constructor at startup by the
		application (see /app/spadestest/main.cpp for a demo)

		- the PREFIX directory given to the configure script
		(--PREFIX=<directory>). Default value is /usr/share.

		- if an init script isn't found in one of the above
		locations, it is assumed that the libraries along with the
		init scripts were not installed. Therefore for convenience
		the init scripts are searched relative to the /app folder
		in the source tree (e.g. '../../lib/zeitgeist')

		If the local 'dot-directory' wasn't found on startup it
		will be created and the init scripts copied to it. Then on
		the next startup they will be run from the dot-directory.

	The above logic is implemented in ScriptServer::RunInitScript()

2003-11-13  Oliver Obst  <fruit@robolog.org>

	* app/spadestest/main.cpp: removed dependency to kerosin

	* utility/glextgen/Makefile.am:
	* app/zeitgeisttest/Makefile.am:
	* app/coretest/Makefile.am:
	* app/inputtest/Makefile.am:
	* app/scenetest/Makefile.am:
	* app/simulator/Makefile.am:
	* app/spadestest/Makefile.am:
	* plugin/inputsdl/Makefile.am:
	* plugin/soundsystemfmod/Makefile.am:
	* plugin/survival/Makefile.am:
	- changed Makefile.am's so that parts dependend on libkerosin can be
	  build optionally.
	- removed dependencies to external libraries as these are covered with
	  our simulator libraries.

	* configure.ac:
	- changed the initial file check to use the salt.h header
	- automake 1.7 or better is required
	- defining the preprocessor symbol PREFIX dependent on the configure
	  prefix value
	- moved all check for graphic libraries (like GL, SDL, DevIL, ...)
	  into separate macros.
          The basic libraries (libsalt, libzeitgeist, and libkerosin) do not
	  need them, so they should not depend on them.
	  The macros have gone to acinclude and are only called in configure.ac.
	  If the libraries are not available on a particular system or if the
	  user configures with --disable-kerosin, libkerosin and the test
	  dependend on kerosin will not be build.
        - moved the check for ODE into a separate macro. Removed dependency on
	  libode for the base libraries libsalt and libzeitgeist. Applications
	  need only to link the .la files from our libraries, other dependencies
	  will be resolved automatically by libtool.
        - added the app/fonttest Makefile

	* acinclude.m4:
	- RCSS_PATH_RUBY: added -lruby to RUBY_LDFLAGS
	- RCSS_PATH_FREETYPE: fixed copy/pasty bug; checking only if kerosin
	  can/should be build
	- added RCSS_KEROSIN_IF_ELSE
	- added RCSS_BUILD_KEROSIN_ERROR
	- added RCSS_BUILD_KEROSIN_INIT
	- added RCSS_BUILD_KEROSIN
	- added RCSS_CHECK_SLANG
	- added RCSS_CHECK_SDL
	- added RCSS_CHECK_DEVIL
	- added RCSS_CHECK_GL
	- added RCSS_CHECK_ODE

	* lib/Makefile.am:
	* lib/kerosin/Makefile.am:
	* lib/oxygen/Makefile.am:
	* lib/salt/Makefile.am:
	* lib/salt/gcc/sharedlibrary.cpp:
	* lib/zeitgeist/Makefile.am:
	- made compiling libkerosin optional
	- moved library dependencies into the makefiles, so that users of our libraries
	  don't need to care about external libraries

2003-11-10  Oliver Obst  <fruit@robolog.org>

	* lib/oxygen/Makefile.am:
	* lib/oxygen/kerosin.cpp:
	* lib/oxygen/kerosin.h:
	* lib/oxygen/sceneserver/sphere.cpp:
	* lib/oxygen/sceneserver/sphere.h:
	added sphere class

	* lib/oxygen/oxygen.cpp:
	registering all the oxygen class object classes

	* plugin/soundsystemfmod/Makefile.am:
	The soundsystemfmod module is built (only) if configure detected the
	fmod header and library. The fmod library has to be installed as described
	in the ./doc/used_libraries.txt file.

	* plugin/soundsystemfmod/soundeffectfmod.cpp:
	- interface changed in FSOUND_Sample_Load function for FMOD 3.7

	* plugin/soundsystemfmod/soundmodulefmod.cpp:
	- the FMUSIC_LoadSongMemory in FMOD function does not exist
	  anymore. Instead, we're using FMUSIC_LoadSongEx now.

	* plugin/soundsystemfmod/soundstreamfmod.cpp:
	- changes so that the file compiles with FMOD 3.7. Some of the "Load"
	  functions in FMOD have been changed, so that this changes was
	  required in order to be up to date.

	* configure.ac:
	added check if the soundsystemfmod plugin should be built

	* acinclude.m4: added a macro for a FMOD check

	* lib/oxygen/.cvsignore:
	* lib/oxygen/Makefile.am:
	* lib/oxygen/oxygen.cpp:
	* lib/oxygen/oxygen.h:
	added oxygen class to register servers

	* app/coretest/coretest.rb: removed "bundle" from the module names

2003-11-09  Oliver Obst  <fruit@robolog.org>

	* configure.ac:
	- switched off static libraries and switched on shared libs so that plugins are properly build
	- added check for strupr (used by one of the plugins)

	* plugin/Makefile.am:
	* plugin/filesystemrar/Makefile.am:
	* plugin/filesystemstd/Makefile.am:
	* plugin/filesystemzip/Makefile.am:
	* plugin/filesystemzip/filesystemzip.cpp:
	* plugin/filesystemzip/filesystemzip.h:
	* plugin/inputsdl/Makefile.am:
	* plugin/inputsdl/inputsystemsdl.cpp:
	* plugin/soundsystembass/Makefile.am:
	* plugin/soundsystembass/soundsystembass.h:
	* plugin/soundsystemfmod/Makefile.am:
	* plugin/soundsystemfmod/soundsystemfmod.h:
	* plugin/survival/Makefile.am:
	Compiling the plugins as modules (files to be dlopened by the
	simulator). The modules will be installed below
	$(exec_prefix)/lib/rcssserver3D/ .  The package has to be
	compiled using shared libraries to get this working. To be fully
	portable, the simulator should not open the .so files directly but
	rather use the .la files created by libtool to find the proper
	library (see libtool manual).
	However, for linux opening the .so files should be OK.

	To run the simulator, the LD_LIBRARY_PATH environment variable
	should contain the directory where the plugins can be found.

	* configure.ac:
	- added workaround for bug in AC_FUNC_MEMCMP macro
	- added check for _vsnprintf (as used by libIL)

	* app/simulator/Makefile.am: using auxiliary library liblibobj for
	system functions that may not be present

2003-11-08  Oliver Obst  <fruit@robolog.org>

	* utility/libobj/Makefile.am:
	* utility/libobj/.cvsignore:
	* utility/libobj/_vsnprintf.c:
	* utility/libobj/libobj.c:
	* utility/libobj/memcmp.c:
	added a library that contains needed system functions
	that are not provided by the actual system.

2003-09-26  Oliver Obst  <fruit@robolog.org>

	* acinclude.m4: changed ruby check to look at the right places
	(seems not to work for ruby 1.8.0, though)

	* lib/zeitgeist/scriptserver/scriptserver.h:
	including ruby.h instead of ruby/ruby.h

	* lib/kerosin/imageserver/image.h:
	including IL/il.h instead of il/il.h

	* app/simulator/Makefile.am:
	* app/zeitgeisttest/Makefile.am:
	* lib/kerosin/Makefile.am:
	* lib/zeitgeist/Makefile.am:
	* plugin/survival/Makefile.am:
	- added RUBY_CPPFLAGS

2003-09-16	Tom Howard	<tomhoward@users.sf.net>

	* ./lib/kerosin/openglserver/openglserver.cpp
	* ./utility/glextgen/script/glbackend.rb
	Still trying to get it to work


2003-09-11	Tom Howard	<tomhoward@users.sf.net>

	* ./configure.ac
	* ./lib/kerosin/openglserver/openglserver.cpp
	* ./lib/kerosin/renderserver/renderserver_c.cpp
	* ./lib/kerosin/textureserver/textureserver.h
	* ./utility/glextgen/script/glbackend.rb
	More hacking to try to get it to compile

2003-09-11	Tom Howard	<tomhoward@users.sf.net>

	* ./configure.ac
	* ./lib/kerosin/Makefile.am
	* ./lib/oxygen/agentaspect/collisionperceptor.h
	* ./lib/oxygen/agentaspect/effector.h
	* ./lib/oxygen/agentaspect/forceeffector.h
	* ./lib/salt/frustum.h
	* ./lib/salt/plane.h
	* ./lib/zeitgeist/leaf_c.cpp
	* ./utility/glextgen/script/glbackend.rb
	* ./utility/glextgen/tocopy/cpp_begin.txt
	* ./utility/glextgen/tocopy/header_begin.txt
	* ./utility/glextgen/tocopy/header_end.txt
	Fixed some more compile problems and hacked away at glextgen


2003-09-10	Tom Howard	<tomhoward@users.sf.net>

	* ./app/simulator/Makefile.am
	* ./app/simulator/main.cpp
	* ./lib/kerosin/Makefile.am
	* ./lib/kerosin/fontserver/font.cpp
	* ./lib/kerosin/inputserver/inputsystem.cpp
	* ./lib/kerosin/renderserver/renderserver.cpp
	* ./lib/kerosin/sceneserver/camera_c.cpp
	* ./lib/kerosin/sceneserver/helper/NVMeshMender.cpp
	* ./lib/oxygen/agentaspect/agentaspect.h
	* ./lib/salt/bounds.h
	* ./lib/salt/frustum.cpp
	* ./lib/salt/gmath.h
	* ./lib/salt/matrix.h
	* ./lib/salt/tvector.h
	* ./lib/salt/vector.h
	* ./lib/zeitgeist/leaf.cpp
	* ./lib/zeitgeist/fileserver/fileserver_c.cpp
	* ./lib/zeitgeist/scriptserver/scriptserver.cpp
	Fixed some build warnings and errors


2003-09-10	Tom Howard	<tomhoward@users.sf.net>

	* ./lib/kerosin/openglserver/openglserver.cpp
	* ./lib/kerosin/openglserver/openglserver.h
	* ./lib/kerosin/sceneserver/light.cpp
	* ./lib/kerosin/sceneserver/light.h
	* ./lib/oxygen/agentaspect/effector.cpp
	* ./lib/oxygen/agentaspect/forceeffector.cpp
	* ./lib/salt/fileclasses.cpp
	* ./lib/salt/fileclasses.h
	* ./lib/salt/path.h
	* ./lib/zeitgeist/fileserver/fileserver.cpp
	Removed warnings re double defs.

	Removed warnings about unused params

	Removed warnings about unued static function


2003-09-10	Tom Howard	<tomhoward@users.sf.net>

	* ./config.aux/cvs.am
	Removed obsolete addlog target
2003-09-09  Markus Rollmann  <rollmark@uni-koblenz.de>
	* lib/kerosin/
	* lib/kerosin/sceneserver/
	* lib/kerosin/renderserver/
	* lib/oxygen/sceneserver/
	- removed duplicate camera class from CVS and Makefile.am
	- the renderserver now uses the oxygen camera
	- removed render method from indexbuffer
	- removed duplicate kerosin indexbuffer
	- the staticmesh now uses the doxygen indexbuffer
	- some compile fixes

2003-09-08  Markus Rollmann  <rollmark@uni-koblenz.de>
	* lib/kerosin/renderserver/
	* lib/kerosin/sceneserver/
	* lib/oxygen/sceneserver/
	- moved OpenGl camera setup code to the renderserver
	- kerosin::Camera now independent from any OpenGl specific code

	* lib/salt/matrix.cpp
	- removed some unused variables

2003-09-08	Tom Howard	<tomhoward@users.sf.net>

	* ./configure.ac
	Added checks for ode and DevIL.  Could seam to get DevIL library
	check working properly so that is commented out.


2003-09-08	Tom Howard	<tomhoward@users.sf.net>

	* ./Makefile.am
	* ./configure.ac
	* ./config.aux/cvs.am
	* ./config.aux/dist.am
	* ./config.aux/msi.am
	* ./config.aux/rpm.am
	* ./config.aux/sf.am
	Added custom maintainer targets

2003-09-05  Oliver Obst  <fruit@robolog.org>

	* lib/zeitgeist/core.cpp:
	- removed telnetserver for now (seems to be windows
	   specific code inside)

	* lib/zeitgeist/Makefile.am:
	- added fileserver stuff

	* lib/oxygen/oxygen.h:
	- added oxygen.h file to include all the oxygen headers at once

	* configure.ac:
	- moved check for freetype stuff into a Macro in acinclude.m4
	- added check for SDL
	- added check for ruby (a macro in acinclude.m4)

	* acinclude.m4: added some autoconf macros:
	- RCSS_PATH_RUBY for checking the ruby configuration
	- RCSS_PATH_FREETYPE for checking the freetype2 configuration

2003-09-03  Oliver Obst  <fruit@robolog.org>

	* lib/kerosin/:
	updated kerosin library: changes for the files that have been
	going to the oxygen library.

2003-09-02  Oliver Obst  <fruit@robolog.org>

	* plugin/survival/Makefile.am: Added freetype include flag

	* utility/glextgen/glextgen.rb.in:
	- reading command line parameter as namespace to be used (optional)

	* utility/glextgen/Makefile.am:
	- calling the glextgen ruby script with namespace parameter 'kerosin'
	- added more dependencies

	* utility/glextgen/script/glbackend.rb:
	- backend can optionally insert a namespace into the generated
	files so that all the methods live in it

2003-09-01  Oliver Obst  <fruit@robolog.org>

	* utility/glextgen/script/glfrontend.rb:
	- added a filter to the scan method to filter out some misleading lines
	  (some comments containing the ' gl' substring were translated
	   to functions)

2003-08-31  Oliver Obst  <fruit@robolog.org>

	* lib/oxygen/
	- moved all classes to namespace oxygen

	* lib/oxygen/Makefile.am:
	- added boxycollider and ccylindercollider

	* lib/kerosin/Makefile.am:
	- added freetype flags
	- removed some of the files that have been going to oxygen

	* plugin/Makefile.am:
	* plugin/filesystemrar/Makefile.am:
	* plugin/filesystemstd/Makefile.am:
	* plugin/filesystemzip/Makefile.am:
	* plugin/inputsdl/Makefile.am:
	* plugin/soundsystembass/Makefile.am:
	* plugin/soundsystemfmod/Makefile.am:
	* plugin/survival/Makefile.am:
	- initial revisions

	* configure.ac:
	- added freetype check
	- added Makefiles below plugin/

2003-08-31  Markus Rollmann  <rollmark@uni-koblenz.de>
	* lib/oxygen/physicsserver
	- added copyleft and comments
	- added support for box and capped cylinder ODE geoms

	* lib/oxygen/sceneserver
	- added copyleft and coments

2003-08-30  Oliver Obst  <fruit@robolog.org>

	* lib/zeitgeist/Makefile.am:
	- build a release version or a debug version of the library
	  dependent on the switch used during configure time
	- install the library headers
	  below $(includedir)/rcssserver3d/zeitgeist

	* lib/salt/Makefile.am:
	- install the library headers below $(includedir)/rcssserver3d/salt

	* lib/oxygen/Makefile.am:
	- build a release version or a debug version of the library
	  dependent on the switch used during configure time
	- install the library headers below $(includedir)/rcssserver3d/oxygen

	* lib/kerosin/Makefile.am:
	- build a release version or a debug version of the library
	  dependent on the switch used during configure time
	- install the library headers below $(includedir)/rcssserver3d/kerosin

	* configure.ac: - enable debug build by default

2003-08-30  Markus Rollmann  <rollmark@uni-koblenz.de>
	* ./lib/oxygen/physicsserver/
	- added copyleft and some comments

2003-08-29  Oliver Obst  <fruit@robolog.org>

	* lib/oxygen/Makefile.am:
	- removed 'camera' from sceneserver in the Makefile.am because it
	  needs OpenGL
	- removed 'indexbuffer' from sceneserver in the Makefile.am because it
	  needs OpenGL
	- removed posbody.h from physicsserver because it was empty anyway

	* lib/oxygen/sceneserver/fpscontroller.cpp: changed a float
	pointer to an ODE dReal pointer to make gcc compile it

	* lib/oxygen/sceneserver/basenode.cpp:
	- basenode has been including the openglserver. liboxygen should be
	independent of OpenGL, so this has been commented out.
	- methods ::Render() and ::RenderAmbient() do some GL stuff.
	These parts have been commented out to make everything compile.

	* lib/oxygen/physicsserver/body.cpp:
	changed two float pointers to ODE dReal pointers to make gcc compile it

2003-08-28  Markus Rollmann  <rollmark@uni-koblenz.de>
	* ./lib/kerosin/agentaspect/perceptor_c.cpp
	* ./lib/kerosin/openglserver/glextensionreg.cpp
	* ./lib/kerosin/renderserver/renderserver.cpp
	* ./lib/kerosin/sceneserver/transform.cpp
	* ./lib/kerosin/sceneserver/transform_c.cpp
	* ./lib/kerosin/textureserver/texture2d.cpp
	* ./lib/kerosin/textureserver/texture2d.h
	* ./lib/kerosin/textureserver/textureserver.cpp
	- compile fixes

	* ./lib/kerosin/renderserver/renderserver.cpp
	* ./lib/kerosin/sceneserver/light.cpp
	* ./lib/kerosin/sceneserver/light.h
	* ./lib/kerosin/sceneserver/staticmesh.cpp
	* ./lib/kerosin/sceneserver/staticmesh.h
	- commented out methods related to fancy lighting to remove
	dependency to libopcode. Renderserver will always take the general
	lighting path for now.

	* ./lib/kerosin/textureserver/textureserver.h
	* ./lib/kerosin/openglserver/openglserver.h
	* ./lib/kerosin/materialserver/materialserver.h
	* ./lib/kerosin/agentaspect/perceptor.h
	* ./lib/kerosin/soundserver/soundserver.h
	* ./lib/kerosin/inputserver/inputserver.h
	- fixed use of hash_map vs map

	* ./utility/glextgen/tocopy/cpp_begin.txt
	- added missing explicit (void*) cast for gcc version

2003-08-29  Oliver Obst  <fruit@robolog.org>

	* lib/salt/salt.h: Added links on the main page generated by
	doxygen to the existing information for developers.

	* doc/Makefile.am:
	Updated Makefile.am so that building the doxygen doc is done by
	the 'all' target. The existing developers documentation is copied
	into a subdirectory of the generated html directory so that the
	generated main page can link to it.

	* lib/kerosin/Makefile.am: Changed the Makefile.am so that the
	openglserver in kerosin depends upon the built sources from the
	glextgen script. The built sources were removed from the CVS and
	will be copied from the utility/glextgen/ directory on compile
	time before anything else is done for kerosin. Additionally, the
	derived sources were taken out from the dist target.

	* utility/glextgen/glextgen.in:
	Added a top level glextgen ruby script template from which
	configure can create an instance of the script which fits to the
	actual system.

	* lib/kerosin/textureserver/textureserver.h,
 	  lib/kerosin/openglserver/openglserver.h,
	  lib/kerosin/agentaspect/perceptor.h,
	  lib/kerosin/agentaspect/agentaspect.h:
	- added copyleft
	- using config.h
	- replaced #ifdef HAVE_HASH_MAP by #if HAVE_HASH_MAP

2003-08-28  Oliver Obst  <fruit@robolog.org>

	* lib/zeitgeist/leaf.cpp, lib/zeitgeist/object.cpp:
	- got rid of using the obsolete get() method from boost::weak_ptr<>
	by using an additional boost::shared_ptr<> similar to the way used
	for the Class class.

	* lib/zeitgeist/class.cpp:
	- fixed use of boost::weak_ptr<>.get(), which was removed from the
        weak_ptr interface in recent versions of boost. The problem was
	fixed by assigning a shared_ptr for the get() operation.
	- fixed use of deleting a boost::weak_ptr<> from a std::list. The
	problem here is that std::list<>.remove() was used, which needs an
	operator ==. (weak_ptr<> do not provide the == operator anymore).
	The problem was fixed by using std::list<>.erase() for each element
	that points to the same Object.

	* lib/zeitgeist/class.h:
	fixed use of hash_map vs map: class uses a hash_map if found by
	configure, otherwise the std::map is used for this. class.h has to
	include the config.h file (like all the other classes also should do)

2003-08-26  Oliver Obst  <fruit@uni-koblenz.de>

	* lib/kerosin/renderserver/renderserver.h,
          lib/kerosin/renderserver/renderserver.cpp:
	added a render server responsible for the actual rendering of a
	scene. (stuff coming from sceneserver)

	* lib/kerosin/sceneserver/sceneserver.h,
	  lib/kerosin/sceneserver/sceneserver.cpp:
	moved OpenGL specific stuff to a new class 'renderserver' so that
	a pure simulator can be build without using any opengl.

2003-08-22  Markus Rollmann  <rollmark@uni-koblenz.de>
	* /lib/kerosin
	- fixed various warnings and errors, when compiling kerosin with gcc

2003-08-22  Markus Rollmann  <rollmark@uni-koblenz.de>
	* /lib/salt/
	- removed ptr.h ptrmanager.h and quadlink.h from Makefile.am
	- added gcc/sharedlibrary.cpp to Makefile.am
	- moved class object declaration for class Leaf from leaf.h to
	class.h to break circular inclusion between leaf.h and class.h
	- removed class_m.h from the repository and Makefile.am

2003-08-21  Markus Rollmann  <rollmark@uni-koblenz.de>
	* /lib/salt /lib/zeitgeist
	- added comments and gpl headers to the salt and zeitgeist libraries
	- removed ptr.h, ptrmangager.h and quadlink.h as they were not
	in use

2003-08-07  Markus Rollmann  <rollmark@uni-koblenz.de>
	* added /lib/zeitgeist/telnetserver/
	- added telnetdaemon.cpp, telnetdaemon.h, telnetserver.h,
	telnetserver.cpp, telnetserver_c.h, telnetsession.h and
	telnetsession.cpp

	- The above files provide remote access to the simulator via telnet
	sessions. The files are derived from app/telnetserver/ and are
	integrated into the class concept of the simulator.

	- To use the telnet server add something like
	telnet=new('zeitgeist/TelnetServer', '/usr/telnet'); to a ruby init
	script near you.

	- Known problems: The output of all issued commands still goes to
	stdout and not over the telnet connection. There are some design
	issues preventing a quick fix.

	* lib/zeitgeist/class.h
	- reinserted class macros from class_m.h

	* lib/zeitgeist/core.cpp /lib/zeitgeist/leaf.h
	- fixed some includes

	* lib/zeitgeist/zeitgeist.dsp
	- inserted the telnet server to the project file

2003-06-28  Markus Rollmann  <rollmark@uni-koblenz.de>
	* /app/simulator/survival/survival.rb, /app/simulator/survival/survivalcontrolaspect.cpp
	- added a penalty for an agent that dies; it will be catapulted
	randomly in the air, to create a nice effect :)

2003-06-28  Markus Rollmann  <rollmark@uni-koblenz.de>
	* /app/simulator/survival/survival.rb
	- removed survival.rb from CVS. It is copied during the build
	process of plugin/survival to its location. It is therefore a
	generated filed.

	* /plugin/survival/survival.rb, /plugin/survival/survivalcontrolaspect.cpp
	* /plugin/survival/survivalcontrolaspect.h
	- refactored the init script for the survial demo simulation
	- modified the survival control aspect to support an unlimited
	number of arbitrary named agents. The original version supported
	exactly two agents with fixed names.

2003-06-22  Markus Rollmann  <rollmark@uni-koblenz.de>
	* app/
	- replaced files in app/ directory with the latest version of the
	original author (Marco K�gler)
	- added missing projects to the vc app.dsw workspace and tested
	the projects

2003-06-04  Markus Rollmann  <rollmark@uni-koblenz.de>
	* lib/zeitgeist/zeitgeist.dsp
	added class_m.h to the VC project file

	* lib/keorsin/imageserver/imageserver.h
	replaced #include<leaf.h> in imageserver.h with
	#include<zeitgeist/class.h>

2003-06-03  Oliver Obst  <fruit@robolog.org>

	* lib/zeitgeist/scriptserver/scriptserver.h:
	added define so that ruby can be included with gnuc

	* lib/zeitgeist/object.cpp:
	added check for boost version. Needs to be expanded, as get()
	for shared_ptr disappeared after 1-28-0.

	* lib/zeitgeist/leaf.h:
	moved declaration of leaf class factory to class.h

	* lib/zeitgeist/class.h, lib/zeitgeist/class.cpp,
	lib/zeitgeist/class_m.h:
	- moved class macros to class_m.h
	- checking for hash_map availability
	  (will be replaced by std::map if necessary)

	* lib/zeitgeist/base.cpp:
	added shared_ptr casts for better compatibility

2003-05-19  Oliver Obst  <fruit@robolog.org>

	* Makefile.am, configure.ac, lib/Makefile.am,
	lib/salt/Makefile.am:
	- added automake support

	* lib/salt/vector.h, lib/salt/sharedlibrary.h,
	lib/salt/matrix.cpp, lib/salt/gmath.h, lib/salt/frustum.cpp,
	lib/salt/fileclasses.h, lib/salt/fileclasses.cpp,
	lib/salt/defines.h, lib/salt/bounds.h, lib/salt/bounds.cpp:
	- added copyright text, and, in .h files, the inclusion of the
	config.h file.
	- changed standard c headers to c++ headers

	* lib/salt/vc++/sharedlibrary.cpp, lib/salt/gcc/sharedlibrary.cpp,
	lib/salt/salt.h, lib/salt/rect.h, lib/salt/quadlink.h,
	lib/salt/ptrmanager.h, lib/salt/ptr.h, lib/salt/plane.h,
	lib/salt/plane.cpp, lib/salt/path.h, lib/salt/path.cpp,
	lib/salt/matrix.h, lib/salt/frustum.h:
	- added copyright text and, in .h files, the inclusion of the
	config.h file.

	* lib/salt/tvector.h:
	- added copyright text
	- using config.h file
	- fixed template method Cross in class TVector3 (at least for
	gcc 3.2, it was a bug)

2003-04-30  Oliver Obst  <fruit@uni-koblenz.de>

	* Moved everything done so far into a separate branch
	(genesis). Added code from Diploma Thesis of Marco K�gler
	<k�gler@uni-koblenz.de>, which provides an already running
	and flexible simulator for physical 3D simulations. The initial
	version is running on MS Windows, so one of the tasks is to
	provide Makefiles and changes to compile a Linux version.

	* In the main branch, removed all ChangeLog entries for the
	"genesis" branch from the ChangeLog so that the old entries do not
	cause confusion here. Code and changes for the genesis branch were
	due to Oliver Obst <fruit@uni-koblenz.de> and
	Tom Howard <tomhoward@users.sourceforge.net>.

