Index: trunk/src/world_entities/creatures/fps_player.cc
===================================================================
--- trunk/src/world_entities/creatures/fps_player.cc	(revision 9406)
+++ trunk/src/world_entities/creatures/fps_player.cc	(revision 9494)
@@ -287,5 +287,5 @@
   //dealing damage
 
-  if ( State::isOnline() && (SharedNetworkData::getInstance()->isMasterServer() || SharedNetworkData::getInstance()->isProxyServer()))
+  if ( State::isOnline() && (SharedNetworkData::getInstance()->isMasterServer() /*|| SharedNetworkData::getInstance()->isProxyServerActive()*/))
   {
     this->damageTicker -= time;
Index: trunk/src/world_entities/space_ships/space_ship.cc
===================================================================
--- trunk/src/world_entities/space_ships/space_ship.cc	(revision 9406)
+++ trunk/src/world_entities/space_ships/space_ship.cc	(revision 9494)
@@ -310,14 +310,5 @@
 void SpaceShip::collidesWith(WorldEntity* entity, const Vector& location)
 {
-  Playable::collidesWith(entity, location);
-
-  if( entity->isA(CL_PROJECTILE) && entity != ref)
-  {
-    if ( SharedNetworkData::getInstance()->isMasterServer() || SharedNetworkData::getInstance()->isProxyServer())
-    {
-      //TODO handle this
-    }
-  }
-  PRINTF(3)("collision %s vs %s @ (%f,%f,%f)\n", this->getClassCName(), entity->getClassCName(), location.x, location.y, location.z);
+
 }
 
Index: trunk/src/world_entities/space_ships/turbine_hover.cc
===================================================================
--- trunk/src/world_entities/space_ships/turbine_hover.cc	(revision 9406)
+++ trunk/src/world_entities/space_ships/turbine_hover.cc	(revision 9494)
@@ -126,5 +126,6 @@
   this->cameraNode.addNodeFlags(PNODE_PROHIBIT_CHILD_DELETE);
   //this->cameraNode.setParentMode(PNODE_ROTATE_MOVEMENT);
-  //this->cameraNode.setParent(this);
+  this->cameraNode.setParent(this);
+  this->cameraNode.setRelCoor(0,5,0);
 
   // rotors
@@ -211,5 +212,5 @@
   this->getWeaponManager().getFixedTarget()->setParent(&this->cameraNode);
   this->getWeaponManager().getFixedTarget()->setRelCoor(1000,0,0);
-  
+
   registerVar( new SynchronizeableBool( &bForward, &bForward, "bForward", PERMISSION_OWNER ) );
   registerVar( new SynchronizeableBool( &bBackward, &bBackward, "bBackward", PERMISSION_OWNER ) );
@@ -218,5 +219,5 @@
   registerVar( new SynchronizeableBool( &bAscend, &bAscend, "bAscend", PERMISSION_OWNER ) );
   registerVar( new SynchronizeableBool( &bDescend, &bDescend, "bDescend", PERMISSION_OWNER ) );
-  //registerVar( new SynchronizeableQuaternion( &direction, &direction, "direction", PERMISSION_OWNER ) );
+  registerVar( new SynchronizeableQuaternion( &direction, &direction, "direction", PERMISSION_OWNER ) );
   registerVar( new SynchronizeableFloat( &cameraLook, &cameraLook, "cameraLook", PERMISSION_OWNER ) );
   registerVar( new SynchronizeableFloat( &rotation, &rotation, "rotation", PERMISSION_OWNER ) );
@@ -294,11 +295,15 @@
 
   // spaceship controlled movement
+
+  // TRYING TO FIX PNode.
+  //this->cameraNode.setRelCoor(Vector(0.0f, 5.0f, 0.0f));//, 30.0f);
+  //this->cameraNode.setRelDir(Quaternion(this->smoothRotator  *10.0, Vector(0,1,0)));
+
   this->movement(dt);
   this->rotorCycle += this->rotorSpeed * dt;
-
-  // TRYING TO FIX PNode.
-  this->cameraNode.setAbsCoorSoft(this->getAbsCoor() + Vector(0.0f, 5.0f, 0.0f), 30.0f);
-  this->cameraNode.setRelDirSoft(this->getAbsDir(), 30.0f);
-}
+}
+
+
+#include "shared_network_data.h"
 
 /**
@@ -349,5 +354,6 @@
 
         this->velocity += (accelerationDir - damping)* dt;
-        this->shiftCoor (this->velocity * dt);
+        //if (this->getOwner() != SharedNetworkData::getInstance()->getHostID())
+          this->shiftCoor (this->velocity * dt);
 
         // limit the maximum rotation speed.
@@ -362,5 +368,6 @@
         }
 
-        this->setRelDirSoft(this->direction * Quaternion(-cameraLook, Vector(0,0,1)), 5);
+        //if (this->getOwner() != SharedNetworkData::getInstance()->getHostID())
+          this->setRelDirSoft(this->direction * Quaternion(-cameraLook, Vector(0,0,1)), 5);
 
         this->wingNodeLeft.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
@@ -407,24 +414,24 @@
 
     case Playable::Vertical:
-    {
-      accel.z = 0;
-      Vector accelerationDir = this->getAbsDir().apply(accel * this->acceleration);
-      accelerationDir.z=0;
+      {
+        accel.z = 0;
+        Vector accelerationDir = this->getAbsDir().apply(accel * this->acceleration);
+        accelerationDir.z=0;
 
         // this is the air friction (necessary for a smooth control)
-      Vector damping = (this->velocity * this->airFriction);
-
-      this->velocity += (accelerationDir - damping)* dt;
-      this->shiftCoor (this->velocity * dt);
-
-      this->setRelDirSoft(this->direction * Quaternion(-cameraLook, Vector(0,0,1)), 5);
-
-      this->wingNodeLeft.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
-      this->rotorNodeLeft.setRelDirSoft(Quaternion(-accel.x * .07+this->rotation + cameraLook, Vector(0,0,1)), 5);
-
-      this->wingNodeRight.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
-      this->rotorNodeRight.setRelDirSoft(Quaternion(-accel.x*.07 -this->rotation + cameraLook, Vector(0,0,1)), 5);
-    }
-    break;
+        Vector damping = (this->velocity * this->airFriction);
+
+        this->velocity += (accelerationDir - damping)* dt;
+        this->shiftCoor (this->velocity * dt);
+
+        this->setRelDirSoft(this->direction * Quaternion(-cameraLook, Vector(0,0,1)), 5);
+
+        this->wingNodeLeft.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
+        this->rotorNodeLeft.setRelDirSoft(Quaternion(-accel.x * .07+this->rotation + cameraLook, Vector(0,0,1)), 5);
+
+        this->wingNodeRight.setRelDirSoft(Quaternion(accel.z * .05 +this->rotation, Vector(1,0,0)), 5);
+        this->rotorNodeRight.setRelDirSoft(Quaternion(-accel.x*.07 -this->rotation + cameraLook, Vector(0,0,1)), 5);
+      }
+      break;
     default:
       PRINTF(2)("Playmode %s Not Implemented\n", Playable::playmodeToString(this->getPlaymode()).c_str());
Index: trunk/src/world_entities/spawning_point.cc
===================================================================
--- trunk/src/world_entities/spawning_point.cc	(revision 9406)
+++ trunk/src/world_entities/spawning_point.cc	(revision 9494)
@@ -178,5 +178,5 @@
       }
 
-      if ( found && SharedNetworkData::getInstance()->isMasterServer() || SharedNetworkData::getInstance()->isProxyServer())
+      if ( found && SharedNetworkData::getInstance()->isMasterServer() /*|| SharedNetworkData::getInstance()->isProxyServerActive()*/)
         this->sendRespawnMessage( it->entity->getUniqueID() );
 
@@ -201,5 +201,5 @@
  * Just override this function with whatever you want to be drawn.
  */
-void SpawningPoint::draw()
+void SpawningPoint::draw() const
 {
 }
@@ -213,10 +213,10 @@
   assert( Converter::intToByteArray( uniqueId, buf + INTSIZE, INTSIZE ) == INTSIZE );
 
-  MessageManager::getInstance()->sendMessage( MSGID_RESPAWN, buf, 2*INTSIZE, RT_ALL_NOT_ME, 0, MP_HIGHBANDWIDTH );
+  MessageManager::getInstance()->sendMessage( MSGID_RESPAWN, buf, 2*INTSIZE, RT_ALL_BUT_ME, 0, MP_HIGHBANDWIDTH );
 }
 
 bool SpawningPoint::respawnMessageHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId )
 {
-  if ( SharedNetworkData::getInstance()->isMasterServer() || SharedNetworkData::getInstance()->isProxyServer())
+  if ( SharedNetworkData::getInstance()->isMasterServer() /*|| SharedNetworkData::getInstance()->isProxyServerActive()*/)
   {
     PRINTF(2)("server received spawn message!\n");
Index: trunk/src/world_entities/spawning_point.h
===================================================================
--- trunk/src/world_entities/spawning_point.h	(revision 9406)
+++ trunk/src/world_entities/spawning_point.h	(revision 9494)
@@ -50,6 +50,6 @@
     virtual void loadParams(const TiXmlElement* root);
 
-    inline int getTeamId(){ return this->teamId; }
-    inline void setTeamId( int teamId ){ this->teamId = teamId; }
+    inline int getTeamId() const { return this->teamId; }
+    inline void setTeamId( int teamId ) { this->teamId = teamId; }
 
     void pushEntity(Playable* entity, float delay = 0);
@@ -63,10 +63,10 @@
 
     virtual void tick(float dt);
-    virtual void draw();
+    virtual void draw() const;
 
 
   private:
     void spawn(Playable* entity);
-    
+
     void sendRespawnMessage( int uniqueId );
     static bool respawnMessageHandler( MessageId messageId, byte * data, int dataLength, void * someData, int userId );
Index: trunk/src/world_entities/world_entity.cc
===================================================================
--- trunk/src/world_entities/world_entity.cc	(revision 9406)
+++ trunk/src/world_entities/world_entity.cc	(revision 9494)
@@ -257,6 +257,9 @@
 bool WorldEntity::buildObbTree(int depth)
 {
-  if (this->obbTree)
+  if( this->obbTree != NULL)
+  {
     delete this->obbTree;
+    this->obbTree = NULL;
+  }
 
   if (this->models[0] != NULL)
@@ -280,4 +283,10 @@
     this->aabbNode = new AABBTreeNode();
     this->aabbNode->spawnBVTree(this->models[0]);
+  }
+  else
+  {
+    PRINTF(1)("could not create aabb bounding box, because no model was loaded yet\n");
+    this->aabbNode = NULL;
+    return false;
   }
   return true;
