Index: /branches/cr/src/lib/collision_detection/obb_tree_node.cc
===================================================================
--- /branches/cr/src/lib/collision_detection/obb_tree_node.cc	(revision 7957)
+++ /branches/cr/src/lib/collision_detection/obb_tree_node.cc	(revision 7958)
@@ -523,37 +523,4 @@
       nodeA->registerCollision(nodeA, nodeB, (BoundingVolume*)this->bvElement, (BoundingVolume*)treeNode->bvElement);
     }
-
-
-
-    /* check if left node overlaps */
-//     if( this->nodeLeft != NULL )
-//     {
-//       PRINTF(5)("Checking OBB %i vs %i: ", this->nodeLeft->getIndex(), treeNode->getIndex());
-//       if( this->overlapTest(this->nodeLeft->bvElement, treeNode->bvElement, nodeA, nodeB))
-//       {
-//         this->nodeLeft->collideWith(treeNode->nodeLeft, nodeA, nodeB);
-//         this->nodeLeft->collideWith(treeNode->nodeRight, nodeA, nodeB);
-//       }
-//     }
-
-    /* check if right node overlaps */
-//     if( likely( this->nodeRight != NULL))
-//     {
-//       PRINTF(5)("Checking OBB %i vs %i: ", this->nodeRight->getIndex(), treeNode->getIndex());
-//       if(this->overlapTest(this->nodeRight->bvElement, treeNode->bvElement, nodeA, nodeB))
-//       {
-//         this->nodeRight->collideWith(treeNode->nodeLeft, nodeA, nodeB);
-//         this->nodeRight->collideWith(treeNode->nodeRight, nodeA, nodeB);
-//       }
-//     }
-
-    /* so there is a collision and this is the last box in the tree (i.e. leaf) */
-//     if( unlikely((this->nodeRight == NULL || this->nodeLeft == NULL) ||
-//                  (treeNode->nodeRight == NULL || treeNode->nodeLeft == NULL)) )
-//     {
-//       nodeA->collidesWith(nodeB, treeNode->bvElement->center);
-//       nodeB->collidesWith(nodeA, this->bvElement->center);
-//       nodeA->registerCollision(nodeA, nodeB, (BoundingVolume*)this->bvElement, (BoundingVolume*)treeNode->bvElement);
-//     }
 
   }
Index: /branches/cr/src/lib/collision_reaction/cr_engine.cc
===================================================================
--- /branches/cr/src/lib/collision_reaction/cr_engine.cc	(revision 7957)
+++ /branches/cr/src/lib/collision_reaction/cr_engine.cc	(revision 7958)
@@ -52,5 +52,5 @@
 
   if( this->cachedCollisions.size() != CR_MAX_COLLISIONS)
-    PRINTF(0)("CollisionReaction Error: cache size missmatch: %i of %i\n", this->cachedCollisions.size(), CR_NUMBER);
+    PRINTF(0)("CollisionReaction Error: cache size missmatch: %i of %i\n", this->cachedCollisions.size(), CR_MAX_COLLISIONS);
 
   this->reset();
@@ -59,7 +59,4 @@
   for(; it < this->cachedCollisions.end(); it++)
     delete *it;
-
-//    while( !this->cachedCollisions.empty())
-//      delete this->cachedCollisions.back();
 
   this->cachedCollisions.clear();
Index: /branches/cr/src/lib/collision_reaction/cr_engine.h
===================================================================
--- /branches/cr/src/lib/collision_reaction/cr_engine.h	(revision 7957)
+++ /branches/cr/src/lib/collision_reaction/cr_engine.h	(revision 7958)
@@ -51,5 +51,5 @@
 
   /** @returns an instance to a collision object. instead of creating new object this ones can be resycled */
-  inline Collision* popCollisionObject() { if(!this->cachedCollisions.empty()) { this->cachedCollisions.back(); this->cachedCollisions.pop_back();} else return NULL; }
+  inline Collision* popCollisionObject() { if(!this->cachedCollisions.empty()) { return this->cachedCollisions.back(); this->cachedCollisions.pop_back();} else return NULL; }
   /** @param collision: returns the Collision object back to the cache list */
   inline void pushCollisionObject(Collision* collision) { this->cachedCollisions.push_back(collision); }
Index: /branches/cr/src/world_entities/world_entity.cc
===================================================================
--- /branches/cr/src/world_entities/world_entity.cc	(revision 7957)
+++ /branches/cr/src/world_entities/world_entity.cc	(revision 7958)
@@ -256,4 +256,5 @@
   this->collisionHandles[type] = CREngine::getInstance()->subscribeReaction(this, type);
 
+  // add the target filter
   va_list itemlist;
   va_start (itemlist, target);
@@ -261,4 +262,7 @@
     this->collisionHandles[type]->addTarget(va_arg(itemlist, long));
   va_end(itemlist);
+
+  // now there is at least one collision reaction subsribed
+  this->bReactive = true;
 }
 
@@ -275,4 +279,6 @@
   CREngine::getInstance()->unsubscribeReaction(this->collisionHandles[type]);
   this->collisionHandles[type] = NULL;
+
+  //
 }
 
@@ -285,4 +291,6 @@
   for( int i = 0; i < CREngine::CR_NUMBER; i++)
     this->unsubscribeReaction((CREngine::CRType)i);
+
+  this->bReactive = false;
 }
 
Index: /branches/cr/src/world_entities/world_entity.h
===================================================================
--- /branches/cr/src/world_entities/world_entity.h	(revision 7957)
+++ /branches/cr/src/world_entities/world_entity.h	(revision 7958)
@@ -73,5 +73,8 @@
   void unsubscribeReaction(CREngine::CRType type);
   void unsubscribeReaction();
+
   bool registerCollision(WorldEntity* entityA, WorldEntity* entityB, BoundingVolume* bvA, BoundingVolume* bvB);
+  /** @return true if there is at least on collision reaction subscribed */
+  inline bool isReactive() const { return this->bReactive; }
 
 
@@ -140,4 +143,5 @@
   float                   scaling;                                //!< the scaling of the model
   CollisionHandle*        collisionHandles[CREngine::CR_NUMBER];  //!< the list of the collision reactions
+  bool                    bReactive;                              //!< true if there is at least one collision reaction subscibed
 
 
