Index: trunk/src/world_entities/power_ups/param_power_up.cc
===================================================================
--- trunk/src/world_entities/power_ups/param_power_up.cc	(revision 6471)
+++ trunk/src/world_entities/power_ups/param_power_up.cc	(revision 6498)
@@ -138,4 +138,5 @@
     SYNCHELP_READ_INT( this->min_value );
     SYNCHELP_READ_INT( this->max_value );
+    respawn();
   }
 
@@ -162,5 +163,5 @@
     SYNCHELP_WRITE_FKT( PowerUp::readState );
 
-    int i = this->type;
+    int i = (int)this->type;
     SYNCHELP_WRITE_INT( i );
     SYNCHELP_WRITE_INT( this->value );
Index: trunk/src/world_entities/power_ups/power_up.cc
===================================================================
--- trunk/src/world_entities/power_ups/power_up.cc	(revision 6471)
+++ trunk/src/world_entities/power_ups/power_up.cc	(revision 6498)
@@ -96,4 +96,11 @@
 }
 
+
+
+/********************************************************************************************
+ NETWORK STUFF
+ ********************************************************************************************/
+
+
 /**
  * data copied in data will bee sent to another host
@@ -108,4 +115,5 @@
   return SYNCHELP_WRITE_N;
 }
+
 
 /**
Index: trunk/src/world_entities/power_ups/turret_power_up.cc
===================================================================
--- trunk/src/world_entities/power_ups/turret_power_up.cc	(revision 6471)
+++ trunk/src/world_entities/power_ups/turret_power_up.cc	(revision 6498)
@@ -119,4 +119,12 @@
 }
 
+
+
+
+/********************************************************************************************
+ NETWORK STUFF
+ ********************************************************************************************/
+
+
 int TurretPowerUp::writeBytes( const byte * data, int length, int sender )
 {
@@ -130,5 +138,4 @@
   return SYNCHELP_READ_N;
 }
-
 
 
Index: trunk/src/world_entities/skybox.cc
===================================================================
--- trunk/src/world_entities/skybox.cc	(revision 6471)
+++ trunk/src/world_entities/skybox.cc	(revision 6498)
@@ -270,6 +270,4 @@
   SYNCHELP_READ_STRINGM( textureName );
 
-  PRINT(0)("GOT DATA: size=%f texture='%s'\n", size, textureName);
-
   this->setSize( size );
   this->setTextureAndType( textureName, "jpg" );
@@ -292,5 +290,4 @@
   if ( rec > 0 )
   {
-    PRINT(0)("SEND DATA: size=%f texture='%s'\n", size, textureName);
     *reciever = rec;
 
Index: trunk/src/world_entities/space_ships/space_ship.cc
===================================================================
--- trunk/src/world_entities/space_ships/space_ship.cc	(revision 6471)
+++ trunk/src/world_entities/space_ships/space_ship.cc	(revision 6498)
@@ -510,19 +510,66 @@
 }
 
+#define MASK_bUp         1
+#define MASK_bDown       2
+#define MASK_bLeft       4
+#define MASK_bRight      8
+#define MASK_bAscend    16
+#define MASK_bDescend   32
+#define MASK_bFire      64
+#define MASK_bRollL    128
+#define MASK_bRollR    256
+
+#define DATA_state       1
+#define DATA_flags       2
+#define DATA_mouse       3
 
 int SpaceShip::writeBytes( const byte * data, int length, int sender )
 {
-  setRequestedSync( false );
-  setIsOutOfSync( false );
-
   SYNCHELP_READ_BEGIN();
 
-  SYNCHELP_READ_FKT( WorldEntity::writeState );
+  byte b;
+  SYNCHELP_READ_BYTE( b );
+
+  if ( b == DATA_state && this->getHostID()!=this->getOwner() )
+  {
+    setRequestedSync( false );
+    setIsOutOfSync( false );
+    SYNCHELP_READ_FKT( WorldEntity::writeState );
+    SYNCHELP_READ_FLOAT( cycle );
+  }
+
+  if ( b == DATA_flags && this->getHostID()!=this->getOwner() )
+  {
+    int flags;
+    SYNCHELP_READ_INT( flags );
+
+    bUp = flags & MASK_bUp != 0;
+    bDown = flags & MASK_bDown != 0;
+    bLeft = flags & MASK_bLeft != 0;
+    bRight = flags & MASK_bRight != 0;
+    bAscend = flags & MASK_bAscend != 0;
+    bDescend = flags & MASK_bDescend != 0;
+    bFire = flags & MASK_bFire != 0;
+    bRollL = flags & MASK_bRollL != 0;
+    bRollR = flags & MASK_bRollR != 0;
+  }
+
+  if ( b == DATA_mouse && this->getHostID()!=this->getOwner() )
+  {
+    SYNCHELP_READ_FLOAT( xMouse );
+    SYNCHELP_READ_FLOAT( yMouse );
+    SYNCHELP_READ_FLOAT( mouseSensitivity );
+    SYNCHELP_READ_FLOAT( cycle );
+  }
 
   return SYNCHELP_READ_N;
 }
 
+
+
 int SpaceShip::readBytes( byte * data, int maxLength, int * reciever )
 {
+  SYNCHELP_WRITE_BEGIN();
+
   if ( isOutOfSync() && !requestedSync() && this->getHostID()!=this->getOwner() )
   {
@@ -536,12 +583,59 @@
     *reciever = rec;
 
-    SYNCHELP_WRITE_BEGIN();
+    SYNCHELP_WRITE_BYTE( (byte)DATA_state );
 
     SYNCHELP_WRITE_FKT( WorldEntity::readState );
+    SYNCHELP_WRITE_FLOAT( cycle );
 
     return SYNCHELP_WRITE_N;
   }
 
+
   *reciever = 0;
-  return 0;
-}
+
+  if ( this->getHostID()==this->getOwner() )
+  {
+    int mask = 0;
+
+    if ( bUp )
+      mask |= MASK_bUp;
+    if ( bDown )
+      mask |= MASK_bDown;
+    if ( bLeft )
+      mask |= MASK_bLeft;
+    if ( bRight )
+      mask |= MASK_bRight;
+    if ( bAscend )
+      mask |= MASK_bAscend;
+    if ( bFire )
+      mask |= MASK_bFire;
+    if ( bRollL )
+      mask |= MASK_bRollL;
+    if ( bRollR )
+      mask |= MASK_bRollR;
+
+    static int oldMask = mask+1; //so it is different the first time!
+    static float oldxMouse = xMouse + 1.0;
+    static float oldyMouse = yMouse + 1.0;
+
+    if ( mask != oldMask )
+    {
+      oldMask = mask;
+      SYNCHELP_WRITE_BYTE( DATA_flags );
+      SYNCHELP_WRITE_INT( mask );
+    }
+
+    if ( oldxMouse != xMouse || oldyMouse != yMouse )
+    {
+      oldxMouse = xMouse;
+      oldyMouse = yMouse;
+      SYNCHELP_WRITE_BYTE( DATA_mouse );
+      SYNCHELP_WRITE_FLOAT( xMouse );
+      SYNCHELP_WRITE_FLOAT( yMouse );
+      SYNCHELP_WRITE_FLOAT( mouseSensitivity );
+      SYNCHELP_WRITE_FLOAT( cycle );
+    }
+  }
+
+  return SYNCHELP_WRITE_N;
+}
Index: trunk/src/world_entities/world_entity.cc
===================================================================
--- trunk/src/world_entities/world_entity.cc	(revision 6471)
+++ trunk/src/world_entities/world_entity.cc	(revision 6498)
@@ -491,4 +491,11 @@
 
 
+
+
+/********************************************************************************************
+ NETWORK STUFF
+ ********************************************************************************************/
+
+
 /**
  * Writes data from network containing information about the state
@@ -523,9 +530,19 @@
 
   SYNCHELP_READ_STRINGM( modelFileName );
+
   if ( strcmp(modelFileName, "") )
-    this->md2TextureFileName = modelFileName;
+    if ( strstr(modelFileName, ResourceManager::getInstance()->getDataDir()) )
+    {
+      this->md2TextureFileName = new char[strlen(modelFileName)-strlen(ResourceManager::getInstance()->getDataDir())+1];
+      strcpy((char*)this->md2TextureFileName, modelFileName+strlen(ResourceManager::getInstance()->getDataDir()));
+    }
+    else
+    {
+      this->md2TextureFileName = modelFileName;
+    }
 
   return SYNCHELP_READ_N;
 }
+
 
 /**
Index: trunk/src/world_entities/world_entity.h
===================================================================
--- trunk/src/world_entities/world_entity.h	(revision 6471)
+++ trunk/src/world_entities/world_entity.h	(revision 6498)
@@ -28,5 +28,5 @@
 
 //! Basis-class all interactive stuff in the world is derived from
-class WorldEntity : public PNode, public Synchronizeable
+class WorldEntity : public PNode
 {
 public:
