Index: /branches/bsp_model/src/defs/class_id.h
===================================================================
--- /branches/bsp_model/src/defs/class_id.h	(revision 8255)
+++ /branches/bsp_model/src/defs/class_id.h	(revision 8256)
@@ -121,5 +121,5 @@
   CL_STATE                      =    0x00000013,
   CL_FRAMEWORK                  =    0x00000014,
-  CL_CR_ENGINE                  =    0x00000015,                ///FIXME bensch i just added this id, verify if this is ok :D
+  CL_CR_ENGINE                  =    0x00000015,
   CL_RENDER_2D                  =    0x00000021,
   CL_NULL_ELEMENT_2D            =    0x00000022,
@@ -252,5 +252,5 @@
 
   /// Collision
-  CL_COLLISION                  =    0x00000711,
+  CL_COLLISION                  =    0x00780000,
   CL_COLLISION_HANDLE           =    0x00000712,
   CL_COLLISION_REACTION         =    0X00000713,
@@ -258,5 +258,5 @@
   CL_CR_PHYSICS_GROUND          =    0X00000715,
   CL_CR_PHYSICS_GROUND_WALK     =    0X00000716,
-  CL_CR_OBJECT_DAMAGE          =    0X00000717,
+  CL_CR_OBJECT_DAMAGE           =    0X00000717,
   CL_CR_OBJECT_PICKUP           =    0X00000718,
   CL_CR_VERTEX_TRAFO            =    0X00000719,
@@ -271,5 +271,5 @@
   CL_OBB                        =    0x00720000,
   CL_BOUNDING_SPHERE            =    0x00740000,
-  
+
 
 
@@ -298,6 +298,6 @@
   CL_HEIGHT_MAP                 =    0x0000090a,
   CL_GRID                       =    0x0000090b,
-  CL_BSP_MODEL                  =    0x0000090c, //!FIXME 
-  
+  CL_BSP_MODEL                  =    0x0000090c, //!FIXME
+
   CL_MATERIAL                   =    0x00000810,
   CL_SHADER                     =    0x00000811,
Index: /branches/bsp_model/src/lib/collision_reaction/collision.h
===================================================================
--- /branches/bsp_model/src/lib/collision_reaction/collision.h	(revision 8255)
+++ /branches/bsp_model/src/lib/collision_reaction/collision.h	(revision 8256)
@@ -27,5 +27,5 @@
 
     /** collides two WorldEntities @param entityA world entity A, @param entityB world entity B, @param bvA volume A @param bvB volumeB */
-    inline void collide(WorldEntity* entityA, WorldEntity* entityB) { this->entityA = entityA; this->entityB = entityB; }
+    inline void collide(WorldEntity* entityA, WorldEntity* entityB) { this->entityA = entityA; this->entityB = entityB; this->bDispatched = false; }
 
 
Index: /branches/bsp_model/src/lib/collision_reaction/collision_handle.cc
===================================================================
--- /branches/bsp_model/src/lib/collision_reaction/collision_handle.cc	(revision 8255)
+++ /branches/bsp_model/src/lib/collision_reaction/collision_handle.cc	(revision 8256)
@@ -41,8 +41,8 @@
 
   this->bCollided = false;
-  this->bDispatched = false;
+  this->bDispatched = true;
 
   this->collisionReaction = NULL;
-  this->bContinuousPoll = true;
+  this->bContinuousPoll = false;
   this->bStopOnFirstCollision = false;
 
@@ -56,4 +56,5 @@
     case CREngine::CR_PHYSICS_GROUND_WALK:
       this->collisionReaction = new CRPhysicsGroundWalk();
+      this->bContinuousPoll = true;
       break;
     case CREngine::CR_OBJECT_DAMAGE:
@@ -191,4 +192,6 @@
 void CollisionHandle::handleCollisions()
 {
+//   if( this->type == CREngine::CR_)
+
   // collision reaction calculations (for every collision there will be a reaction)
   vector<Collision*>::iterator it = this->collisionList.begin();
@@ -205,4 +208,7 @@
   this->bCollided = false;
 
+  // if continuous poll poll the reaction
+   if( this->bContinuousPoll)
+     this->collisionReaction->update(this->owner);
   this->flushCollisions();
 }
@@ -215,4 +221,15 @@
 bool CollisionHandle::filterCollisionEvent(CollisionEvent* collisionEvent)
 {
+  if( this->type == CREngine::CR_PHYSICS_GROUND_WALK)
+  {
+
+    vector<long>::iterator it = this->targetList.begin();
+    for(; it < this->targetList.end(); it++)
+    {
+      PRINTF(0)("filtering: %i vs EntityA %i, EntityB %i \n", *it, collisionEvent->getEntityA()->getClassID(), collisionEvent->getEntityB()->getClassID());
+
+    }
+  }
+
   vector<long>::iterator it = this->targetList.begin();
   for(; it < this->targetList.end(); it++)
Index: /branches/bsp_model/src/lib/collision_reaction/collision_reaction.h
===================================================================
--- /branches/bsp_model/src/lib/collision_reaction/collision_reaction.h	(revision 8255)
+++ /branches/bsp_model/src/lib/collision_reaction/collision_reaction.h	(revision 8256)
@@ -12,4 +12,6 @@
 
 class Collision;
+class WorldEntity;
+
 
 //! A class representing a simple collision
@@ -23,4 +25,7 @@
     virtual void reactToCollision(Collision* collision) = 0;
 
+    virtual void update(WorldEntity* owner) {}
+
+    /** use this to do some collision offline calculations, only called for bContinuousPoll == true */
     inline bool isContinuousPoll() const { return this->bContinuousPoll; }
 
Index: /branches/bsp_model/src/lib/collision_reaction/cr_engine.cc
===================================================================
--- /branches/bsp_model/src/lib/collision_reaction/cr_engine.cc	(revision 8255)
+++ /branches/bsp_model/src/lib/collision_reaction/cr_engine.cc	(revision 8256)
@@ -143,7 +143,6 @@
   for( it = this->collisionHandles.begin(); it != this->collisionHandles.end(); it++)
   {
-    if( (*it)->isCollided() || (*it)->isContinuousPoll())  //does it have any collisions to report at all
+    if( !(*it)->isDispatched() || (*it)->isContinuousPoll())  //does it have any collisions to report at all
     {
-      PRINTF(0)("CREngine: handle %i\n", (*it)->getType());
       (*it)->handleCollisions();
     }
Index: /branches/bsp_model/src/lib/collision_reaction/cr_physics_ground_walk.cc
===================================================================
--- /branches/bsp_model/src/lib/collision_reaction/cr_physics_ground_walk.cc	(revision 8255)
+++ /branches/bsp_model/src/lib/collision_reaction/cr_physics_ground_walk.cc	(revision 8256)
@@ -34,5 +34,4 @@
 {
   this->setClassID(CL_CR_PHYSICS_GROUND_WALK, "CRPhysicsGroundWalk");
-
 }
 
@@ -54,5 +53,18 @@
 //   Vector normal = collision
   PRINTF(0)("Ground\n");
+}
+
+
+
+/**
+ * use this to do some collision offline calculations, only called for bContinuousPoll == true
+ */
+void CRPhysicsGroundWalk::update(WorldEntity* owner)
+{
+  this->lastPosition = owner->getAbsCoor();
+  this->lastDirection = owner->getAbsDir();
+
 
 }
 
+
Index: /branches/bsp_model/src/lib/collision_reaction/cr_physics_ground_walk.h
===================================================================
--- /branches/bsp_model/src/lib/collision_reaction/cr_physics_ground_walk.h	(revision 8255)
+++ /branches/bsp_model/src/lib/collision_reaction/cr_physics_ground_walk.h	(revision 8256)
@@ -21,7 +21,9 @@
     virtual void reactToCollision(Collision* collision);
 
+    virtual void update(WorldEntity* entity);
+
   private:
     Vector       lastPosition;                //!< vector with the last valid position
-    Quaternion   lastDireciton;               //!< quat with the last valid direction
+    Quaternion   lastDirection;               //!< quat with the last valid direction
 };
 
Index: /branches/bsp_model/src/lib/coord/p_node.h
===================================================================
--- /branches/bsp_model/src/lib/coord/p_node.h	(revision 8255)
+++ /branches/bsp_model/src/lib/coord/p_node.h	(revision 8256)
@@ -103,4 +103,6 @@
   /** @returns the absolute position */
   inline const Vector& getAbsCoor () const { return this->absCoordinate; };
+  /** @returns the absolute position */
+  inline const Vector& getLastAbsCoor () const { return this->lastAbsCoordinate; };
   void shiftCoor (const Vector& shift);
   void shiftCoor (float x, float y, float z) { this->shiftCoor(Vector(x, y, z)); };
@@ -238,5 +240,5 @@
     float roty;
     float rotz;
-    
+
   private:
     int relCoordinate_handle;
@@ -244,5 +246,5 @@
     Vector relCoordinate_write;
     Quaternion relDirection_write;
-    
+
   public:
     virtual void varChangeHandler( std::list<int> & id );
