Index: branches/coll_rect/src/lib/collision_reaction/Makefile.am
===================================================================
--- branches/coll_rect/src/lib/collision_reaction/Makefile.am	(revision 9889)
+++ branches/coll_rect/src/lib/collision_reaction/Makefile.am	(revision 9890)
@@ -5,4 +5,5 @@
 
 libORXcr_a_SOURCES = cr_engine.cc \
+                     collision_tube.cc \
                      collision.cc \
                      collision_event.cc \
@@ -16,4 +17,5 @@
 
 noinst_HEADERS =     cr_engine.h \
+                     collision_tube.h \
                      collision.h \
                      collision_event.h \
Index: branches/coll_rect/src/lib/collision_reaction/collision_handle.cc
===================================================================
--- branches/coll_rect/src/lib/collision_reaction/collision_handle.cc	(revision 9889)
+++ branches/coll_rect/src/lib/collision_reaction/collision_handle.cc	(revision 9890)
@@ -199,5 +199,5 @@
   void CollisionHandle::handleCollisions()
   {
-    // if continuous poll poll the reaction
+    // if continuous poll the reaction
     if( this->bContinuousPoll && !this->bCollided)
     {
Index: branches/coll_rect/src/lib/collision_reaction/collision_handle.h
===================================================================
--- branches/coll_rect/src/lib/collision_reaction/collision_handle.h	(revision 9889)
+++ branches/coll_rect/src/lib/collision_reaction/collision_handle.h	(revision 9890)
@@ -28,4 +28,5 @@
   {
     ObjectListDeclaration(CollisionHandle);
+
   public:
     CollisionHandle(WorldEntity* owner, CREngine::CRType type);
Index: branches/coll_rect/src/lib/collision_reaction/collision_tube.cc
===================================================================
--- branches/coll_rect/src/lib/collision_reaction/collision_tube.cc	(revision 9890)
+++ branches/coll_rect/src/lib/collision_reaction/collision_tube.cc	(revision 9890)
@@ -0,0 +1,55 @@
+/*
+   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
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_COLLISION_REACTION
+
+#include "collision_tube.h"
+
+#include "world_entity.h"
+
+#include "collision.h"
+#include "collision_event.h"
+#include "collision_reaction.h"
+
+#include "cr_object_damage.h"
+#include "cr_physics_ground_walk.h"
+#include "cr_physics_full_walk.h"
+
+
+
+namespace CoRe
+{
+
+  ObjectListDefinition(CollisionTube);
+
+  /**
+   * standard constructor
+   * @todo this constructor is not jet implemented - do it
+   */
+  CollisionTube::CollisionTube ()
+  {
+
+  }
+
+
+  /**
+   * standard deconstructor
+   */
+  CollisionTube::~CollisionTube ()
+  {
+    this->_collisionList.clear();
+  }
+
+}
+
Index: branches/coll_rect/src/lib/collision_reaction/collision_tube.h
===================================================================
--- branches/coll_rect/src/lib/collision_reaction/collision_tube.h	(revision 9890)
+++ branches/coll_rect/src/lib/collision_reaction/collision_tube.h	(revision 9890)
@@ -0,0 +1,59 @@
+/*!
+ * @file collision_tube.h
+ *
+ * collision tube collects all collisions from all entities
+ */
+
+#ifndef _COLLISION_TUBE_H
+#define _COLLISION_TUBE_H
+
+#include "base_object.h"
+#include "cr_engine.h"
+#include "world_entity.h"
+
+#include "vector.h"
+#include <vector>
+
+class Collision;
+class WorldEntity;
+class BoundingVolume;
+
+namespace CoRe
+{
+
+  class CollisionReaction;
+
+  //! A class for defining collision reactions and storing events
+  class CollisionTube : public BaseObject
+  {
+    ObjectListDeclaration(CollisionTube);
+
+
+  public:
+    CollisionTube();
+    ~CollisionTube();
+
+    /** @returns true if at least one of both WorldEntities are subscribed for a collision check */
+    inline bool isReactive(const WorldEntity& entityA, const WorldEntity& entityB) const
+    { return (entityA.isReactive() && entityB.isReactive()); }
+
+    bool registerCollisionEvent(WorldEntity* entityA, WorldEntity* entityB, BoundingVolume* bvA, BoundingVolume* bvB);
+    bool registerCollisionEvent(int type, WorldEntity* entity, WorldEntity* groundEntity,
+                                const Vector& normal, const Vector& position, bool bInWall = false);
+
+    void handleCollisions();
+
+
+  private:
+    /* private copy constructor so this object can't be passed as a */
+    CollisionTube(const CollisionTube& tube) {}
+
+
+  private:
+    std::vector<Collision*>        _collisionList;      //!< the list of collisions since the last processing
+
+  };
+
+}
+
+#endif /* _COLLISION_TUBE_H */
Index: branches/coll_rect/src/lib/collision_reaction/cr_engine.cc
===================================================================
--- branches/coll_rect/src/lib/collision_reaction/cr_engine.cc	(revision 9889)
+++ branches/coll_rect/src/lib/collision_reaction/cr_engine.cc	(revision 9890)
@@ -31,4 +31,6 @@
 
   ObjectListDefinition(CREngine);
+
+
   /**
    * standard constructor
