Index: branches/cr/src/lib/collision_reaction/Makefile.am
===================================================================
--- branches/cr/src/lib/collision_reaction/Makefile.am	(revision 7958)
+++ branches/cr/src/lib/collision_reaction/Makefile.am	(revision 7959)
@@ -6,4 +6,5 @@
 libORXcr_a_SOURCES = cr_engine.cc \
                      collision.cc \
+                     collision_event.cc \
                      collision_handle.cc
 
@@ -12,4 +13,5 @@
 noinst_HEADERS =     cr_engine.h \
                      collision.h \
+                     collision_event.h \
                      collision_handle.h \
                      cr_defs.h
Index: branches/cr/src/lib/collision_reaction/collision.cc
===================================================================
--- branches/cr/src/lib/collision_reaction/collision.cc	(revision 7958)
+++ branches/cr/src/lib/collision_reaction/collision.cc	(revision 7959)
@@ -29,6 +29,4 @@
   this->entityA = NULL;
   this->entityB = NULL;
-  this->bvA = NULL;
-  this->bvB = NULL;
 }
 
Index: branches/cr/src/lib/collision_reaction/collision.h
===================================================================
--- branches/cr/src/lib/collision_reaction/collision.h	(revision 7958)
+++ branches/cr/src/lib/collision_reaction/collision.h	(revision 7959)
@@ -1,5 +1,5 @@
 /*!
  * @file collision.h
- *  Definition of a collision event
+ *  Definition of a collision as a two WE hit each other
  */
 
@@ -11,5 +11,5 @@
 class WorldEntity;
 class BoundingVolume;
-
+class CollisionEvent;
 
 //! A class representing a simple collision
@@ -21,6 +21,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, BoundingVolume* bvA, BoundingVolume* bvB)
-  { this->entityA = entityA; this->entityB = entityB; this->bvA = bvA; this->bvB = bvB; }
+  inline void collide(WorldEntity* entityA, WorldEntity* entityB) { this->entityA = entityA; this->entityB = entityB; }
 
 
@@ -29,16 +28,14 @@
   /** @return Collision WorldEntity B */
   inline const WorldEntity* getEntityB() const { return this->entityB; }
-  /** @return Bounding Volume from EntityA */
-  inline const BoundingVolume* getBVA() const { return this->bvA; }
-  /** @return Bounding Volume from EntityB */
-  inline const BoundingVolume* getBVB() const { return this->bvB; }
+
+  /** registers a @param event CollisionEvent to take place */
+  inline void registerCollisionEvent(CollisionEvent* event) { this->collisionList.push_back(event); }
 
 
  private:
-  WorldEntity*      entityA;                       //!< the collision body A
-  WorldEntity*      entityB;                       //!< the collision body B
+  WorldEntity*                 entityA;                       //!< the collision body A
+  WorldEntity*                 entityB;                       //!< the collision body B
 
-  BoundingVolume*   bvA;                          //!< reference to the bounding volume A
-  BoundingVolume*   bvB;                          //!< reference to the bounding volume B
+  std::vector<CollisionEvent*> collisionList;                 //!< the collision event list
 };
 
Index: branches/cr/src/lib/collision_reaction/collision_event.cc
===================================================================
--- branches/cr/src/lib/collision_reaction/collision_event.cc	(revision 7959)
+++ branches/cr/src/lib/collision_reaction/collision_event.cc	(revision 7959)
@@ -0,0 +1,44 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Patrick Boenzli
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_COLLISION_REACTION
+
+#include "collision_event.h"
+#include "debug.h"
+
+using namespace std;
+
+
+/**
+ *  standard constructor
+ */
+CollisionEvent::CollisionEvent ()
+{
+  this->entityA = NULL;
+  this->entityB = NULL;
+  this->bvA = NULL;
+  this->bvB = NULL;
+}
+
+
+/**
+ *  standard deconstructor
+ */
+CollisionEvent::~CollisionEvent ()
+{
+}
+
+
+
Index: branches/cr/src/lib/collision_reaction/collision_event.h
===================================================================
--- branches/cr/src/lib/collision_reaction/collision_event.h	(revision 7959)
+++ branches/cr/src/lib/collision_reaction/collision_event.h	(revision 7959)
@@ -0,0 +1,45 @@
+/*!
+ * @file collision_event.h
+ *  Definition of a collision event
+ */
+
+#ifndef _COLLISION_EVENT_H
+#define _COLLISION_EVENT_H
+
+#include "vector.h"
+
+class WorldEntity;
+class BoundingVolume;
+
+
+//! A class representing a simple collision
+class CollisionEvent {
+
+ public:
+   CollisionEvent();
+  virtual ~CollisionEvent();
+
+  /** 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, BoundingVolume* bvA, BoundingVolume* bvB)
+  { this->entityA = entityA; this->entityB = entityB; this->bvA = bvA; this->bvB = bvB; }
+
+
+  /** @return CollisionEvent WorldEntity A */
+  inline const WorldEntity* getEntityA() const { return this->entityA; }
+  /** @return CollisionEvent WorldEntity B */
+  inline const WorldEntity* getEntityB() const { return this->entityB; }
+  /** @return Bounding Volume from EntityA */
+  inline const BoundingVolume* getBVA() const { return this->bvA; }
+  /** @return Bounding Volume from EntityB */
+  inline const BoundingVolume* getBVB() const { return this->bvB; }
+
+
+ private:
+  WorldEntity*      entityA;                       //!< the collision body A
+  WorldEntity*      entityB;                       //!< the collision body B
+
+  BoundingVolume*   bvA;                          //!< reference to the bounding volume A
+  BoundingVolume*   bvB;                          //!< reference to the bounding volume B
+};
+
+#endif /* _COLLISION_EVENT_H */
Index: branches/cr/src/lib/collision_reaction/collision_handle.h
===================================================================
--- branches/cr/src/lib/collision_reaction/collision_handle.h	(revision 7958)
+++ branches/cr/src/lib/collision_reaction/collision_handle.h	(revision 7959)
@@ -16,5 +16,4 @@
 class WorldEntity;
 
-// struct CRType;
 
 
