Index: branches/network/src/story_entities/multi_player_world.cc
===================================================================
--- branches/network/src/story_entities/multi_player_world.cc	(revision 8024)
+++ branches/network/src/story_entities/multi_player_world.cc	(revision 8036)
@@ -86,4 +86,29 @@
 
 /**
+ * kicks the CDEngine to detect the collisions between the object groups in the world
+ */
+void MultiPlayerWorld::collide()
+{
+  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_PLAYERS),
+    this->dataTank->objectManager->getObjectList(OM_PLAYERS));
+  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_PLAYERS),
+    this->dataTank->objectManager->getObjectList(OM_PLAYERS_PROJ));
+
+  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_00),
+    this->dataTank->objectManager->getObjectList(OM_GROUP_01_PROJ));
+  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_01),
+    this->dataTank->objectManager->getObjectList(OM_GROUP_00_PROJ));
+  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_00),
+    this->dataTank->objectManager->getObjectList(OM_GROUP_01));
+
+  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_00),
+    this->dataTank->objectManager->getObjectList(OM_COMMON));
+  CDEngine::getInstance()->checkCollisions(this->dataTank->objectManager->getObjectList(OM_GROUP_01),
+    this->dataTank->objectManager->getObjectList(OM_COMMON));
+
+}
+
+
+/**
  * some debug ouptut - shell command
  */
Index: branches/network/src/story_entities/multi_player_world.h
===================================================================
--- branches/network/src/story_entities/multi_player_world.h	(revision 8024)
+++ branches/network/src/story_entities/multi_player_world.h	(revision 8036)
@@ -31,4 +31,5 @@
   protected:
     virtual void synchronize();
+    virtual void collide();
 };
 
Index: branches/network/src/util/object_manager.h
===================================================================
--- branches/network/src/util/object_manager.h	(revision 8024)
+++ branches/network/src/util/object_manager.h	(revision 8036)
@@ -20,4 +20,7 @@
   OM_BACKGROUND,
   OM_COMMON,
+
+  OM_PLAYERS,
+  OM_PLAYERS_PROJ,
 
   OM_GROUP_00,
Index: branches/network/src/world_entities/spawning_point.cc
===================================================================
--- branches/network/src/world_entities/spawning_point.cc	(revision 8024)
+++ branches/network/src/world_entities/spawning_point.cc	(revision 8036)
@@ -20,5 +20,9 @@
 #include "util/loading/factory.h"
 
+#include "world_entity.h"
+
 #include "compiler.h"
+
+#include <map>
 
 
@@ -26,8 +30,8 @@
  *  constructor
  */
-SpawningPoint::SpawningPoint (ClassID classID, const Vector& position)
+SpawningPoint::SpawningPoint (ClassID classid, const Vector& position)
 {
   this->setAbsCoor(position);
-  this->classID = classID;
+  this->classid = classid;
   this->mode = SPT_ALL_AT_ONCE;
   this->delay = 0;
@@ -40,8 +44,8 @@
  *  standard constructor
  */
-SpawningPoint::SpawningPoint (const Vector& position, ClassID classID, SpawningPointMode mode, float delay)
+SpawningPoint::SpawningPoint (const Vector& position, ClassID classid, SpawningPointMode mode, float delay)
 {
   this->setAbsCoor(position);
-  this->classID = classID;
+  this->classid = classid;
   this->mode = mode;
   this->delay = delay;
@@ -90,16 +94,26 @@
 
 
+
+/**
+ * pushes a world entity to the spawning queue
+ *  @param entity WorldEntity to be added
+ */
+void SpawningPoint::pushEntity(WorldEntity* entity, float delay)
+{
+  this->queue[entity] = this->localTimer + delay;
+}
+
+
 /**
  *  spawn the entity
  */
-void SpawningPoint::spawn()
+void SpawningPoint::spawn(WorldEntity* entity)
 {
-  PRINTF(5)("Spangingpoint creates a new Entity (id: %i, delay: %f, mode: %f)\n", this->classID,
-            this->delay, this->mode);
+  PRINTF(1)("Spawningpoint spawns new Entity (%s)\n", entity->getClassName());
+
 
   //BaseObject* spawningEntity = Factory::fabricate(this->classID);
-
-//   if( likely(this->world != NULL))
-//     this->world->spawn(dynamic_cast<WorldEntity*>(spawningEntity));
+  //   if( likely(this->world != NULL))
+  //     this->world->spawn(dynamic_cast<WorldEntity*>(spawningEntity));
 }
 
@@ -114,9 +128,16 @@
 {
   this->localTimer += dt;
-  if( this->localTimer > this->delay)
+
+  std::map<WorldEntity*, float>::iterator it = this->queue.begin();
+  for( ; it != this->queue.end(); it++)
   {
-    this->spawn();
-    this->localTimer = 0.0f;
+    //
+    if( it->second <= this->localTimer)
+    {
+      //spawn the player
+      this->spawn(it->first);
+    }
   }
+
 }
 
Index: branches/network/src/world_entities/spawning_point.h
===================================================================
--- branches/network/src/world_entities/spawning_point.h	(revision 8024)
+++ branches/network/src/world_entities/spawning_point.h	(revision 8036)
@@ -9,4 +9,6 @@
 
 #include "world_entity.h"
+
+#include <map>
 
 class World;
@@ -43,5 +45,5 @@
 
     /**  sets the entity that is going to be spawned by this point @param classID: the id from the class_id.h file */
-    void SpawningPoint::setSpawningEntity(ClassID classID) { this->classID = classID; }
+    void SpawningPoint::setSpawningEntity(ClassID classid) { this->classid = classid; }
     /** sets the frequency with which the point is going to spawn entities (1/sec) @param frequency: the frequency */
     void SpawningPoint::setSpawningDelay(float delay) { this->delay = delay; }
@@ -49,9 +51,11 @@
     void SpawningPoint::setSpawningMode(int mode) { this->mode = (SpawningPointMode)mode; }
 
+    void pushEntity(WorldEntity* entity, float delay = 0);
 
     /** activates the spawning point */
-    void activate() { this->bSpawning = true; }
+    inline void activate() { this->bSpawning = true; }
     /** deactivates the spawning point */
-    void deactivate() { this->bSpawning = false; }
+    inline void deactivate() { this->bSpawning = false; }
+    inline bool isActive() const { return this->bSpawning; }
 
 
@@ -61,15 +65,15 @@
 
   private:
-    void spawn();
+    void spawn(WorldEntity* entity);
 
 
   private:
-    float                     delay;                          //!< the timer that counts down until the next spawn
-    float                     localTimer;                     //!< the local timer
-    float                     seed;                           //!< the random seed of the position
-    ClassID                   classID;                        //!< the classid of the entity to spawn
-    SpawningPointMode         mode;                           //!< the mode of the spawning point
-    ObjectManager::EntityList   queue;                          //!< queue of waiting WorldEntities to be spawned
-    bool                      bSpawning;                      //!< flag to indicate if this spawning point is active or not
+    float                           delay;                          //!< the timer that counts down until the next spawn
+    float                           localTimer;                     //!< the local timer
+    float                           seed;                           //!< the random seed of the position
+    ClassID                         classid;                        //!< the classid of the entity to spawn
+    SpawningPointMode               mode;                           //!< the mode of the spawning point
+    std::map<WorldEntity*, float>   queue;                          //!< queue of waiting WorldEntities to be spawned
+    bool                            bSpawning;                      //!< flag to indicate if this spawning point is active or not
 };
 
