Index: /branches/cr/src/lib/collision_reaction/collision.h
===================================================================
--- /branches/cr/src/lib/collision_reaction/collision.h	(revision 8028)
+++ /branches/cr/src/lib/collision_reaction/collision.h	(revision 8029)
@@ -31,4 +31,7 @@
     inline WorldEntity* getEntityB() const { return this->entityB; }
 
+    /** @returns true if this Collision has already been dispatched */
+    inline bool isDispatched() { return this->bDispatched; }
+
     /** registers a @param event CollisionEvent to take place */
     inline void registerCollisionEvent(CollisionEvent* event) { this->collisionEvents.push_back(event); }
@@ -47,4 +50,6 @@
     WorldEntity*                 entityB;                       //!< the collision body B
 
+    bool                         bDispatched;                   //!< true if this collision has already been dispatched
+
     std::vector<CollisionEvent*> collisionEvents;               //!< the collision event list
 };
Index: /branches/cr/src/lib/collision_reaction/collision_handle.cc
===================================================================
--- /branches/cr/src/lib/collision_reaction/collision_handle.cc	(revision 8028)
+++ /branches/cr/src/lib/collision_reaction/collision_handle.cc	(revision 8029)
@@ -100,4 +100,7 @@
 void CollisionHandle::registerCollisionEvent(CollisionEvent* collisionEvent)
 {
+  // set the state to not dispatched
+  this->bDispatched = false;
+
   // first element only
  Collision* c = this->registerCollision(collisionEvent->getEntityA(), collisionEvent->getEntityB());
Index: /branches/cr/src/lib/collision_reaction/collision_handle.h
===================================================================
--- /branches/cr/src/lib/collision_reaction/collision_handle.h	(revision 8028)
+++ /branches/cr/src/lib/collision_reaction/collision_handle.h	(revision 8029)
@@ -32,6 +32,9 @@
     Collision* registerCollision(WorldEntity* entityA, WorldEntity* entityB);
     void registerCollisionEvent(CollisionEvent* collisionEvent);
+
     /** @returns true if regiestered some new collision events in this tick frame */
     inline bool isCollided() const { return this->bCollided; }
+    /** @returns true if this collision handle has already been dispatched */
+    inline bool isDispatched() const { return this->bDispatched; }
 
     void handleCollisions();
Index: /branches/cr/src/lib/collision_reaction/collision_reaction.h
===================================================================
--- /branches/cr/src/lib/collision_reaction/collision_reaction.h	(revision 8028)
+++ /branches/cr/src/lib/collision_reaction/collision_reaction.h	(revision 8029)
@@ -23,6 +23,8 @@
     virtual void reactToCollision(Collision* collision) = 0;
 
+    inline bool isContinuousPoll() const { return this->bContinuousPoll; }
+
   private:
-
+    bool                    bContinuousPoll;       //!< if true the collision rection function is also called, if there was no collision
 };
 
Index: /branches/cr/src/lib/collision_reaction/cr_engine.cc
===================================================================
--- /branches/cr/src/lib/collision_reaction/cr_engine.cc	(revision 8028)
+++ /branches/cr/src/lib/collision_reaction/cr_engine.cc	(revision 8029)
@@ -145,5 +145,5 @@
   for( it = this->collisionHandles.begin(); it != this->collisionHandles.end(); it++)
   {
-    if( (*it)->isCollided())
+    if( (*it)->isCollided())  //does it have any collisions to report at all
     {
       (*it)->handleCollisions();
Index: /branches/cr/src/lib/collision_reaction/cr_engine.h
===================================================================
--- /branches/cr/src/lib/collision_reaction/cr_engine.h	(revision 8028)
+++ /branches/cr/src/lib/collision_reaction/cr_engine.h	(revision 8029)
@@ -28,14 +28,16 @@
   public:
   typedef enum CRType {
-    CR_PHYSICS_MOMENTUM   = 0,
-    CR_PHYSICS_GROUND,
-    CR_PHYSICS_GROUND_WALK,
+    CR_PHYSICS_MOMENTUM   = 0,    //!< physical reaction: conservervation of momentum
+    CR_PHYSICS_STEP_BACK,         //!< physical reaction: just go to the last position without collisions
+    CR_PHYSICS_GROUND,            //!< physical reaction: stand on the ground, no movement: simulating simple normal force away from the gravity force
+    CR_PHYSICS_GROUND_WALK,       //!< physical reaction: walking on the ground (inkl. hills etc)
+    CR_PHYSICS_DAMAGE,            //!< physical reaction: daling damage according to the object energy and their structural stability
 
-    CR_OBJECT_DAMAGE,
-    CR_OBJECT_PICKUP,
+    CR_OBJECT_DAMAGE,             //!< object raction: deals damage according to the objects specific damage potential (like weapons, nukes, etc.)
+    CR_OBJECT_PICKUP,             //!< object rection: calling the objects pickup functions, let them handle the collision (once!)
 
-    CR_VERTEX_TRAFO,
+    CR_VERTEX_TRAFO,              //!< vertex trafo: transforming the vertex according to the damage
 
-    CR_SPECIAL_CALLBACK,
+    CR_SPECIAL_CALLBACK,          //!< special: call a callback function
 
     CR_NUMBER
Index: /branches/cr/src/lib/collision_reaction/cr_object_damage.cc
===================================================================
--- /branches/cr/src/lib/collision_reaction/cr_object_damage.cc	(revision 8028)
+++ /branches/cr/src/lib/collision_reaction/cr_object_damage.cc	(revision 8029)
@@ -50,7 +50,7 @@
 {
 
-  const std::vector<CollisionEvent*>* v = &collision->getCollisionEvents();
-  const std::vector<CollisionEvent*>::const_iterator it = v->begin();
-  for(; it < v->end(); it++)
+  const std::vector<CollisionEvent*>* collisionEvents = &(collision->getCollisionEvents());
+  std::vector<CollisionEvent*>::const_iterator it = collisionEvents->begin();
+  for(; it != collisionEvents->end(); it++)
   {
     // go through the collisions and try to estimate the damage
