Index: orxonox/trunk/src/lib/collision_detection/bv_tree.h
===================================================================
--- orxonox/trunk/src/lib/collision_detection/bv_tree.h	(revision 4694)
+++ orxonox/trunk/src/lib/collision_detection/bv_tree.h	(revision 4695)
@@ -14,4 +14,5 @@
 // FORWARD DEFINITION
 class BoundingVolume;
+class BVTreeNode;
 
 typedef enum DrawMode
@@ -38,5 +39,8 @@
   virtual void flushTree() = NULL;
 
+  virtual void collideWith(BVTree* tree) = NULL;
+
   virtual void drawBV(int depth, int drawMode) const = NULL;
+
 
  protected:
Index: orxonox/trunk/src/lib/collision_detection/bv_tree_node.h
===================================================================
--- orxonox/trunk/src/lib/collision_detection/bv_tree_node.h	(revision 4694)
+++ orxonox/trunk/src/lib/collision_detection/bv_tree_node.h	(revision 4695)
@@ -29,5 +29,5 @@
   inline const int getIndex() { return this->treeIndex; }
 
-  virtual void collideWith(const BVTree &tree) = NULL;
+  virtual void collideWith(BVTreeNode* treeNode) = NULL;
 
   virtual void drawBV(int depth, int drawMode) const = NULL;
Index: orxonox/trunk/src/lib/collision_detection/cd_engine.cc
===================================================================
--- orxonox/trunk/src/lib/collision_detection/cd_engine.cc	(revision 4694)
+++ orxonox/trunk/src/lib/collision_detection/cd_engine.cc	(revision 4695)
@@ -54,4 +54,10 @@
 
 
+/**
+  \brief this is the collision checking function
+
+  there are some speed improvements that can be done here. a rewrite of the list a would be appropriate to
+  be able to enhance iteration speed.
+ */
 void CDEngine::checkCollisions()
 {
Index: orxonox/trunk/src/lib/collision_detection/obb_tree.cc
===================================================================
--- orxonox/trunk/src/lib/collision_detection/obb_tree.cc	(revision 4694)
+++ orxonox/trunk/src/lib/collision_detection/obb_tree.cc	(revision 4695)
@@ -103,6 +103,8 @@
 
 
-void OBBTree::collideWith(const OBBTree &tree)
-{}
+void OBBTree::collideWith(BVTree* tree)
+{
+  //this->rootNode->collideWith(tree->);
+}
 
 
Index: orxonox/trunk/src/lib/collision_detection/obb_tree.h
===================================================================
--- orxonox/trunk/src/lib/collision_detection/obb_tree.h	(revision 4694)
+++ orxonox/trunk/src/lib/collision_detection/obb_tree.h	(revision 4695)
@@ -27,5 +27,5 @@
     virtual void flushTree();
 
-    void collideWith(const OBBTree &tree);
+    virtual void collideWith(BVTree* tree);
 
     virtual void drawBV(int depth, int drawMode) const;
Index: orxonox/trunk/src/lib/collision_detection/obb_tree_node.cc
===================================================================
--- orxonox/trunk/src/lib/collision_detection/obb_tree_node.cc	(revision 4694)
+++ orxonox/trunk/src/lib/collision_detection/obb_tree_node.cc	(revision 4695)
@@ -530,5 +530,5 @@
   tList<sVec3D>      partition2;                           //!< the vertex partition 2
 
-  printf("vertex index: %i, of %i\n", vertexIndex, box->numOfVertices);
+  PRINTF(3)("vertex index: %i, of %i\n", vertexIndex, box->numOfVertices);
   this->separationPlane = new Plane(box->axis[axisIndex], box->vertices[vertexIndex]);  //!< separation plane
   this->sepPlaneCenter = &box->vertices[vertexIndex];
@@ -604,8 +604,26 @@
 
 
-void OBBTreeNode::collideWith(const BVTree &tree)
-{}
-
-
+void OBBTreeNode::collideWith(BVTreeNode* treeNode)
+{
+  /* if the obb overlap, make subtests: check which node is realy overlaping  */
+  if( this->overlapTest(this->bvElement, ((OBBTreeNode*)treeNode)->bvElement))
+  {
+    /* check if left node overlaps */
+    if( unlikely( this->nodeLeft != NULL))
+      if( this->overlapTest(this->nodeLeft->bvElement, ((OBBTreeNode*)treeNode)->bvElement))
+        this->nodeLeft->collideWith(((OBBTreeNode*)treeNode)->nodeLeft);
+    /* check if right node overlaps */
+    if( unlikely( this->nodeRight != NULL))
+      if(this->overlapTest(this->nodeRight->bvElement, ((OBBTreeNode*)treeNode)->bvElement))
+        this->nodeLeft->collideWith(((OBBTreeNode*)treeNode)->nodeRight);
+  }
+}
+
+
+
+bool OBBTreeNode::overlapTest(OBB* boxA, OBB* boxB)
+{
+
+}
 
 
Index: orxonox/trunk/src/lib/collision_detection/obb_tree_node.h
===================================================================
--- orxonox/trunk/src/lib/collision_detection/obb_tree_node.h	(revision 4694)
+++ orxonox/trunk/src/lib/collision_detection/obb_tree_node.h	(revision 4695)
@@ -33,5 +33,5 @@
     inline void setTreeRef(OBBTree* tree) { this->obbTree = tree;}
 
-    virtual void collideWith(const BVTree &tree);
+    virtual void collideWith(BVTreeNode* treeNode);
 
     virtual void drawBV(int depth, int drawMode) const;
@@ -45,4 +45,5 @@
     void forkBox(OBB* box);
 
+    bool overlapTest(OBB* boxA, OBB* boxB);
 
   protected:
Index: orxonox/trunk/src/subprojects/collision_detection/collision_detection.cc
===================================================================
--- orxonox/trunk/src/subprojects/collision_detection/collision_detection.cc	(revision 4694)
+++ orxonox/trunk/src/subprojects/collision_detection/collision_detection.cc	(revision 4695)
@@ -69,10 +69,10 @@
   b->setRelCoor(0.0, 0.0, -10.0);
 
-  TestEntity* c = new TestEntity(); c->setName("Colwn2");
-  c->setRelCoor(0.0, 0.0, -20.0);
+//   TestEntity* c = new TestEntity(); c->setName("Colwn2");
+//   c->setRelCoor(0.0, 0.0, -20.0);
 
   entityList->add(a);
   entityList->add(b);
-  entityList->add(c);
+//   entityList->add(c);
 
   CDEngine::getInstance()->setEntityList(entityList);
@@ -204,5 +204,5 @@
 {
 
-  CDEngine::getInstance()->checkCollisions();
+  //CDEngine::getInstance()->checkCollisions();
 
   currentFrame = SDL_GetTicks();
@@ -220,5 +220,5 @@
           /* the frame-rate is limited to 100 frames per second, all other things are for nothing.
           */
-    SDL_Delay((unsigned int)(10-dt));
+    SDL_Delay(1);
     dt = 10;
   }
@@ -240,5 +240,5 @@
 void Framework::moduleDraw() const
 {
-  //CDEngine::getInstance()->drawBV(depth, drawMode);
+  CDEngine::getInstance()->drawBV(depth, drawMode);
   LightManager::getInstance()->draw();
 
Index: orxonox/trunk/src/world_entities/world_entity.cc
===================================================================
--- orxonox/trunk/src/world_entities/world_entity.cc	(revision 4694)
+++ orxonox/trunk/src/world_entities/world_entity.cc	(revision 4695)
@@ -124,11 +124,13 @@
 /**
    \brief this function is called, when two entities collide
-   \param other: the world entity with whom it collides
-   \param ownhitflags: flags to the CollisionCluster subsections that registered an impact
-   \param otherhitflags: flags to the CollisionCluster subsections of the other entity that registered an impact
+   \param entity: the world entity with whom it collides
 
    Implement behaviour like damage application or other miscellaneous collision stuff in this function
 */
-void WorldEntity::collideWith(WorldEntity* entity) {}
+void WorldEntity::collideWith(WorldEntity* entity)
+{
+  this->obbTree->collideWith(entity->obbTree);
+
+}
 
 
