Index: branches/coll_rect/src/lib/collision_reaction/cr_engine.h
===================================================================
--- branches/coll_rect/src/lib/collision_reaction/cr_engine.h	(revision 9889)
+++ branches/coll_rect/src/lib/collision_reaction/cr_engine.h	(revision 9892)
@@ -31,20 +31,44 @@
 
   public:
-    typedef enum CRType {
-      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_WALK,       //!< physical reaction: stand on the ground, no movement: simulating simple normal force away from the gravity force
-      CR_PHYSICS_FULL_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
+    typedef enum ReactionType {
+      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_WALK,              //!< physical reaction: stand on the ground, no movement: simple normal force away from the gravity force
+      CR_PHYSICS_FULL_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,             //!< 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_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,              //!< vertex trafo: transforming the vertex according to the damage
+      CR_VERTEX_TRAFO,                     //!< vertex trafo: transforming the vertex according to the damage
 
-      CR_SPECIAL_CALLBACK,          //!< special: call a callback function
+      CR_SPECIAL_CALLBACK,                 //!< special: call a callback function
 
       CR_NUMBER
     };
+
+    typedef enum CollisionType {
+      CR_COLLISION_TYPE_AXIS_X       = 0,  //!< collision on x axis
+      CR_COLLISION_TYPE_AXIS_X_NEG,        //!< collision on negative x axis
+      CR_COLLISION_TYPE_AXIS_Y,            //!< collision on y axis
+      CR_COLLISION_TYPE_AXIS_Y_NEG,        //!< collision on negative y axis
+      CR_COLLISION_TYPE_AXIS_Z,            //!< collision on z axis
+      CR_COLLISION_TYPE_AXIS_Z_NEG,        //!< collision on negative z axis
+      CR_COLLISION_TYPE_OBB,               //!< object aligned bounding box collide
+
+      CR_COLLISION_TYPE_NUMBER
+    };
+
+
+#define COLLISION_TYPE_AXIS_X      1
+#define COLLISION_TYPE_AXIS_X_NEG  2
+//!< the collision axis y collision event
+#define COLLISION_TYPE_AXIS_Y      3
+#define COLLISION_TYPE_AXIS_Y_NEG  4
+//!< the collision axis z collision event
+#define COLLISION_TYPE_AXIS_Z      5
+#define COLLISION_TYPE_AXIS_Z_NEG  6
+//!< the collision is a obb collision
+#define COLLISION_TYPE_OBB         8
 
     virtual ~CREngine(void);
@@ -53,33 +77,13 @@
     inline static CREngine* getInstance() { if (!singletonRef) singletonRef = new CREngine();  return singletonRef; };
 
+    CollisionHandle* subscribeReaction(WorldEntity* worldEntity, ReactionType type);
+    bool unsubscribeReaction(CollisionHandle* collisionHandle);
+
+
+    Collision* popCollisionObject();
+    CollisionEvent* popCollisionEventObject();
     void reset();
 
-
-    CollisionHandle* subscribeReaction(WorldEntity* worldEntity, CRType type);
-
-    bool unsubscribeReaction(CollisionHandle* collisionHandle);
-
     void handleCollisions();
-
-    /** @returns an instance to a collision object. instead of creating new object this ones can be resycled */
-    inline Collision* popCollisionObject()
-    {
-      if( !this->collisionsUnused.empty())
-      {
-        this->collisionsUsed.push_back(this->collisionsUnused.back()); this->collisionsUnused.pop_back(); return this->collisionsUsed.back();
-      }
-      else return NULL;
-    }
-
-
-    /** @return an instanco of a CollisionEvent object. instead of creating a new object this ones can be used and resycled */
-    inline CollisionEvent* popCollisionEventObject()
-    {
-      if( !this->collisionEventsUnused.empty())
-      {
-        this->collisionEventsUsed.push_back(this->collisionEventsUnused.back()); this->collisionEventsUnused.pop_back(); return this->collisionEventsUsed.back();
-      }
-      else return NULL;
-    }
 
     void debug();
