Index: code/branches/network3/src/orxonox/Orxonox.cc
===================================================================
--- code/branches/network3/src/orxonox/Orxonox.cc	(revision 1212)
+++ code/branches/network3/src/orxonox/Orxonox.cc	(revision 1232)
@@ -326,4 +326,5 @@
     orxonoxHUD_->setEnergyDistr(20,20,60);
     hudOverlay->show();
+    setupInputSystem();
 
     client_g->establishConnection();
@@ -362,5 +363,5 @@
   }
 
-  void Orxonox::createScene(void)
+  void Orxonox::createScene()
   {
 	  // Init audio
Index: code/branches/network3/src/orxonox/objects/Camera.cc
===================================================================
--- code/branches/network3/src/orxonox/objects/Camera.cc	(revision 1212)
+++ code/branches/network3/src/orxonox/objects/Camera.cc	(revision 1232)
@@ -127,5 +127,5 @@
     COUT(0) << "t " << this->targetNode_->getPosition() << std::endl;
     if(this->positionNode_ != NULL)
-      //this->cam_->setPosition(this->positionNode_->getPosition());
+      this->cam_->setPosition(this->positionNode_->getPosition());
     if(this->targetNode_ != NULL)
       this->cam_->lookAt(this->targetNode_->getPosition());
@@ -139,4 +139,5 @@
   {
     this->bHasFocus_ = false;
+    this->positionNode_->detachObject(cam_);
   }
 
Index: code/branches/network3/src/orxonox/objects/Model.cc
===================================================================
--- code/branches/network3/src/orxonox/objects/Model.cc	(revision 1212)
+++ code/branches/network3/src/orxonox/objects/Model.cc	(revision 1232)
@@ -73,5 +73,5 @@
         XMLPortParamLoadOnly(Model, "mesh", setMesh, xmlelement, mode);
 
-        create();
+        Model::create();
     }
 
Index: code/branches/network3/src/orxonox/objects/SpaceShip.cc
===================================================================
--- code/branches/network3/src/orxonox/objects/SpaceShip.cc	(revision 1212)
+++ code/branches/network3/src/orxonox/objects/SpaceShip.cc	(revision 1232)
@@ -80,4 +80,5 @@
 
         this->camNode_ = 0;
+        this->camName_ = "camNode";
 
         this->tt_ = 0;
@@ -160,12 +161,10 @@
 
     void SpaceShip::registerAllVariables(){
-
-
-
+      registerVar( &camName_, camName_.length()+1, network::STRING);
     }
 
     void SpaceShip::init()
     {
-        createCamera();
+        COUT(4) << "================ \t\t\t\tspaceship::init" << std::endl;
         // START CREATING THRUSTER
         this->tt_ = new ParticleInterface(GraphicsEngine::getSingleton().getSceneManager(),"twinthruster" + this->getName(),"Orxonox/engineglow");
@@ -198,7 +197,9 @@
         this->greenNode_->setInheritScale(false);
 
+        COUT(4) << "attaching red billboard" << std::endl;
         this->redNode_->attachObject(this->redBillboard_.getBillboardSet());
         this->redNode_->setScale(0.3, 0.3, 0.3);
 
+        COUT(4) << "attaching green billboard" << std::endl;
         this->greenNode_->attachObject(this->greenBillboard_.getBillboardSet());
         this->greenNode_->setScale(0.3, 0.3, 0.3);
@@ -214,10 +215,14 @@
         this->chFarNode_->setInheritScale(false);
 
+        COUT(4) << "attaching crosshair near billboard" << std::endl;
         this->chNearNode_->attachObject(this->crosshairNear_.getBillboardSet());
         this->chNearNode_->setScale(0.2, 0.2, 0.2);
 
+        COUT(4) << "attaching crosshair far billboard" << std::endl;
         this->chFarNode_->attachObject(this->crosshairFar_.getBillboardSet());
         this->chFarNode_->setScale(0.4, 0.4, 0.4);
-
+        COUT(4) << "attaching camera" << std::endl;
+        
+        createCamera();
         // END of testing crosshair
     }
@@ -232,6 +237,8 @@
     void SpaceShip::loadParams(TiXmlElement* xmlElem)
     {
+      COUT(4) << "using loadparams" << std::endl;
         Model::loadParams(xmlElem);
         this->create();
+        this->getFocus();
 /*
         if (xmlElem->Attribute("forward") && xmlElem->Attribute("rotateupdown") && xmlElem->Attribute("rotaterightleft") && xmlElem->Attribute("looprightleft"))
@@ -284,10 +291,21 @@
     void SpaceShip::setCamera(const std::string& camera)
     {
+      camName_=camera;
       // change camera attributes here, if you want to ;)
+    }
+    
+    void SpaceShip::getFocus(){
+      COUT(4) << "requesting focus" << std::endl;
+      if(network::Client::getSingleton()==0 || network::Client::getSingleton()->getShipID()==objectID)
+        CameraHandler::getInstance()->requestFocus(cam_);
+      
     }
     
     void SpaceShip::createCamera(){
-      this->camNode_ = this->getNode()->createChildSceneNode("CamNode");
-      camNode_->setPosition(this->getNode()->getPosition() + Vector3(-50,0,10));
+      COUT(4) << "begin camera creation" << std::endl;
+      this->camNode_ = this->getNode()->createChildSceneNode(camName_);
+      COUT(4) << "position: (this)" << this->getNode()->getPosition() << std::endl;
+      this->camNode_->setPosition(this->getNode()->getPosition() + Vector3(-50,0,10));
+      COUT(4) << "position: (cam)" << this->camNode_->getPosition() << std::endl;
 /*
 //        node->setInheritOrientation(false);
@@ -295,13 +313,16 @@
       cam->lookAt(Vector3(0,20,0));
       cam->roll(Degree(0));
-*/
+      */COUT(4) << "creating new camera" << std::endl;
       cam_ = new Camera(this->camNode_);
+      COUT(4) << "setting target node" << std::endl;
       cam_->setTargetNode(this->getNode());
-      CameraHandler::getInstance()->requestFocus(cam_);
+      // this only applies to clients
+      if(network::Client::getSingleton()!=0 && network::Client::getSingleton()->getShipID()==objectID)
+        CameraHandler::getInstance()->requestFocus(cam_);
 //        cam->setPosition(Vector3(0,-350,0));
       //cam->roll(Degree(-90));
 
       //this->camNode_->attachObject(cam);
-      
+      COUT(4) << "created camera" << std::endl;
     }
 
@@ -329,4 +350,5 @@
     void SpaceShip::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     {
+      COUT(4) << "using xmlport" << std::endl;
         Model::XMLPort(xmlelement, mode);
 
@@ -339,4 +361,7 @@
         XMLPortParamLoadOnly(SpaceShip, "transDamp", setTransDamp, xmlelement, mode);
         XMLPortParamLoadOnly(SpaceShip, "rotDamp", setRotDamp, xmlelement, mode);
+        
+        SpaceShip::create();
+        getFocus();
     }
 
@@ -534,5 +559,5 @@
         }
 
-        if(!network::Client::getSingleton()){
+        if(!network::Client::getSingleton() || network::Client::getSingleton()->getShipID() == objectID){
           if (mKeyboard->isKeyDown(OIS::KC_UP) || mKeyboard->isKeyDown(OIS::KC_W))
               this->acceleration_.x = this->translationAcceleration_;
Index: code/branches/network3/src/orxonox/objects/SpaceShip.h
===================================================================
--- code/branches/network3/src/orxonox/objects/SpaceShip.h	(revision 1212)
+++ code/branches/network3/src/orxonox/objects/SpaceShip.h	(revision 1232)
@@ -63,4 +63,6 @@
             void setTransDamp(float value);
             void setRotDamp(float value);
+            
+            void getFocus();
 
             static void setMaxSpeedTest(float value)
@@ -83,5 +85,7 @@
 
             Ogre::SceneNode* camNode_;
-            Camera* cam_;
+            Camera* cam_;  
+            std::string camName_;
+
 
             ParticleInterface* tt_;
Index: code/branches/network3/src/orxonox/objects/WorldEntity.cc
===================================================================
--- code/branches/network3/src/orxonox/objects/WorldEntity.cc	(revision 1212)
+++ code/branches/network3/src/orxonox/objects/WorldEntity.cc	(revision 1232)
@@ -190,5 +190,5 @@
         XMLPortObject(WorldEntity, WorldEntity, "attached", attachWorldEntity, getAttachedWorldEntity, xmlelement, mode, false, true);
         
-        //create();
+        WorldEntity::create();
     }
 
@@ -197,27 +197,32 @@
     {
       // register coordinates
-      registerVar( (void*) &(this->getPosition().x), sizeof(this->getPosition().x), network::DATA);
-      registerVar( (void*) &(this->getPosition().y), sizeof(this->getPosition().y), network::DATA);
-      registerVar( (void*) &(this->getPosition().z), sizeof(this->getPosition().z), network::DATA);
+      registerVar( (void*) &(this->getPosition().x), sizeof(this->getPosition().x), network::DATA, 0x3);
+      registerVar( (void*) &(this->getPosition().y), sizeof(this->getPosition().y), network::DATA, 0x3);
+      registerVar( (void*) &(this->getPosition().z), sizeof(this->getPosition().z), network::DATA, 0x3);
       // register orientation
-      registerVar( (void*) &(this->getOrientation().w), sizeof(this->getOrientation().w), network::DATA);
-      registerVar( (void*) &(this->getOrientation().x), sizeof(this->getOrientation().x), network::DATA);
-      registerVar( (void*) &(this->getOrientation().y), sizeof(this->getOrientation().y), network::DATA);
-      registerVar( (void*) &(this->getOrientation().z), sizeof(this->getOrientation().z), network::DATA);
+      registerVar( (void*) &(this->getOrientation().w), sizeof(this->getOrientation().w), network::DATA, 0x3);
+      registerVar( (void*) &(this->getOrientation().x), sizeof(this->getOrientation().x), network::DATA, 0x3);
+      registerVar( (void*) &(this->getOrientation().y), sizeof(this->getOrientation().y), network::DATA, 0x3);
+      registerVar( (void*) &(this->getOrientation().z), sizeof(this->getOrientation().z), network::DATA, 0x3);
       // register velocity_
-      registerVar( (void*) &(this->getVelocity().x), sizeof(this->getVelocity().x), network::DATA);
-      registerVar( (void*) &(this->getVelocity().y), sizeof(this->getVelocity().y), network::DATA);
-      registerVar( (void*) &(this->getVelocity().z), sizeof(this->getVelocity().z), network::DATA);
+      registerVar( (void*) &(this->getVelocity().x), sizeof(this->getVelocity().x), network::DATA, 0x3);
+      registerVar( (void*) &(this->getVelocity().y), sizeof(this->getVelocity().y), network::DATA, 0x3);
+      registerVar( (void*) &(this->getVelocity().z), sizeof(this->getVelocity().z), network::DATA, 0x3);
       // register rotationAxis/rate
-      registerVar( (void*) &(this->getRotationRate()), sizeof(this->getRotationRate()), network::DATA);
-      registerVar( (void*) &(this->getRotationAxis().x), sizeof(this->getRotationAxis().x), network::DATA);
-      registerVar( (void*) &(this->getRotationAxis().y), sizeof(this->getRotationAxis().y), network::DATA);
-      registerVar( (void*) &(this->getRotationAxis().z), sizeof(this->getRotationAxis().z), network::DATA);
+      registerVar( (void*) &(this->getRotationRate()), sizeof(this->getRotationRate()), network::DATA, 0x3);
+      registerVar( (void*) &(this->getRotationAxis().x), sizeof(this->getRotationAxis().x), network::DATA, 0x3);
+      registerVar( (void*) &(this->getRotationAxis().y), sizeof(this->getRotationAxis().y), network::DATA, 0x3);
+      registerVar( (void*) &(this->getRotationAxis().z), sizeof(this->getRotationAxis().z), network::DATA, 0x3);
       // register scale of node
-      registerVar( (void*) &(this->getScale().x), sizeof(this->getScale().x), network::DATA);
-      registerVar( (void*) &(this->getScale().y), sizeof(this->getScale().y), network::DATA);
-      registerVar( (void*) &(this->getScale().z), sizeof(this->getScale().z), network::DATA);
+      registerVar( (void*) &(this->getScale().x), sizeof(this->getScale().x), network::DATA, 0x3);
+      registerVar( (void*) &(this->getScale().y), sizeof(this->getScale().y), network::DATA, 0x3);
+      registerVar( (void*) &(this->getScale().z), sizeof(this->getScale().z), network::DATA, 0x3);
       //register staticity
-      registerVar( (void*) &(this->bStatic_), sizeof(this->bStatic_), network::DATA);
+      registerVar( (void*) &(this->bStatic_), sizeof(this->bStatic_), network::DATA, 0x3);
+      //register acceleration
+      // register velocity_
+      registerVar( (void*) &(this->getAcceleration().x), sizeof(this->getAcceleration().x), network::DATA, 0x3);
+      registerVar( (void*) &(this->getAcceleration().y), sizeof(this->getAcceleration().y), network::DATA, 0x3);
+      registerVar( (void*) &(this->getAcceleration().z), sizeof(this->getAcceleration().z), network::DATA, 0x3);
     }
 
