Index: code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc	(revision 2426)
+++ code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc	(revision 2427)
@@ -230,4 +230,22 @@
         if (this->isActive())
         {
+            // Check whether Bullet doesn't do the physics for us
+            if (!this->isDynamic())
+            {
+                if (Core::isMaster())
+                {
+                    this->server_position_ = this->getPosition();
+                    this->server_orientation_ = this->getOrientation();
+                    this->server_linear_velocity_ = this->getVelocity();
+                    this->server_angular_velocity_ = this->getAngularVelocity();
+                }
+                else if (this->bControlled_)
+                {
+                    this->client_position_ = this->getPosition();
+                    this->client_orientation_ = this->getOrientation();
+                    this->client_linear_velocity_ = this->getVelocity();
+                    this->client_angular_velocity_ = this->getAngularVelocity();
+                }
+            }
         }
     }
@@ -330,58 +348,81 @@
     }
 
-    void ControllableEntity::positionChanged(bool bContinuous)
+    void ControllableEntity::setPosition(const Vector3& position)
     {
         if (Core::isMaster())
         {
+            MobileEntity::setPosition(position);
             this->server_position_ = this->getPosition();
-            if (!bContinuous)
-                ++this->server_overwrite_;
+            ++this->server_overwrite_;
         }
         else if (this->bControlled_)
         {
+            MobileEntity::setPosition(position);
             this->client_position_ = this->getPosition();
         }
     }
 
-    void ControllableEntity::orientationChanged(bool bContinuous)
+    void ControllableEntity::setOrientation(const Quaternion& orientation)
     {
         if (Core::isMaster())
         {
+            MobileEntity::setOrientation(orientation);
             this->server_orientation_ = this->getOrientation();
-            if (!bContinuous)
-                ++this->server_overwrite_;
+            ++this->server_overwrite_;
         }
         else if (this->bControlled_)
         {
+            MobileEntity::setOrientation(orientation);
             this->client_orientation_ = this->getOrientation();
         }
     }
 
-    void ControllableEntity::linearVelocityChanged(bool bContinuous)
+    void ControllableEntity::setVelocity(const Vector3& velocity)
     {
         if (Core::isMaster())
         {
+            MobileEntity::setVelocity(velocity);
             this->server_linear_velocity_ = this->getVelocity();
-            if (!bContinuous)
-                ++this->server_overwrite_;
+            ++this->server_overwrite_;
         }
         else if (this->bControlled_)
         {
+            MobileEntity::setVelocity(velocity);
             this->client_linear_velocity_ = this->getVelocity();
         }
     }
 
-    void ControllableEntity::angularVelocityChanged(bool bContinuous)
+    void ControllableEntity::setAngularVelocity(const Vector3& velocity)
     {
         if (Core::isMaster())
         {
+            MobileEntity::setAngularVelocity(velocity);
             this->server_angular_velocity_ = this->getAngularVelocity();
-            if (!bContinuous)
-                ++this->server_overwrite_;
+            ++this->server_overwrite_;
         }
         else if (this->bControlled_)
         {
+            MobileEntity::setAngularVelocity(velocity);
             this->client_angular_velocity_ = this->getAngularVelocity();
         }
     }
+
+    void ControllableEntity::setWorldTransform(const btTransform& worldTrans)
+    {
+        MobileEntity::setWorldTransform(worldTrans);
+        if (Core::isMaster())
+        {
+            this->server_position_ = this->getPosition();
+            this->server_orientation_ = this->getOrientation();
+            this->server_linear_velocity_ = this->getVelocity();
+            this->server_angular_velocity_ = this->getAngularVelocity();
+        }
+        else if (this->bControlled_)
+        {
+            this->client_position_ = this->getPosition();
+            this->client_orientation_ = this->getOrientation();
+            this->client_linear_velocity_ = this->getVelocity();
+            this->client_angular_velocity_ = this->getAngularVelocity();
+        }
+    }
 }
Index: code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 2426)
+++ code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 2427)
@@ -89,4 +89,14 @@
                 { return this->cameraPositionTemplate_; }
 
+            using WorldEntity::setPosition;
+            using WorldEntity::setOrientation;
+            using MobileEntity::setVelocity;
+            using MobileEntity::setAngularVelocity;
+
+            void setPosition(const Vector3& position);
+            void setOrientation(const Quaternion& orientation);
+            void setVelocity(const Vector3& velocity);
+            void setAngularVelocity(const Vector3& velocity);
+
         protected:
             virtual void startLocalControl();
@@ -113,10 +123,8 @@
             void processClientAngularVelocity();
 
-            void positionChanged       (bool bContinuous);
-            void orientationChanged    (bool bContinuous);
-            void linearVelocityChanged (bool bContinuous);
-            void angularVelocityChanged(bool bContinuous);
+            void networkcallback_changedplayerID();
 
-            void networkcallback_changedplayerID();
+            // Bullet btMotionState related
+            void setWorldTransform(const btTransform& worldTrans);
 
             unsigned int server_overwrite_;
Index: code/branches/physics/src/orxonox/objects/worldentities/MobileEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/MobileEntity.cc	(revision 2426)
+++ code/branches/physics/src/orxonox/objects/worldentities/MobileEntity.cc	(revision 2427)
@@ -83,7 +83,5 @@
                 this->linearVelocity_.y += this->linearAcceleration_.y * dt;
                 this->linearVelocity_.z += this->linearAcceleration_.z * dt;
-                linearVelocityChanged(true);
                 this->node_->translate(this->linearVelocity_ * dt);
-                positionChanged(true);
 
                 // Angular part
@@ -92,5 +90,4 @@
                 this->angularVelocity_.y += angularAcceleration_.y * dt;
                 this->angularVelocity_.z += angularAcceleration_.z * dt;
-                angularVelocityChanged(true);
                 // Calculate new orientation with quaternion derivative. This is about 30% faster than with angle/axis method.
                 float mult = dt * 0.5;
@@ -100,5 +97,4 @@
                 newOrientation.normalise();
                 this->node_->setOrientation(newOrientation);
-                orientationChanged(true);
             }
         }
@@ -115,5 +111,4 @@
 
         this->node_->setPosition(position);
-        positionChanged(false);
     }
 
@@ -128,5 +123,4 @@
 
         this->node_->setOrientation(orientation);
-        orientationChanged(false);
     }
 
@@ -137,5 +131,4 @@
 
         this->linearVelocity_ = velocity;
-        linearVelocityChanged(false);
     }
 
@@ -146,5 +139,4 @@
 
         this->angularVelocity_ = velocity;
-        angularVelocityChanged(false);
     }
 
@@ -190,8 +182,4 @@
         this->angularVelocity_.y = this->physicalBody_->getAngularVelocity().y();
         this->angularVelocity_.z = this->physicalBody_->getAngularVelocity().z();
-        linearVelocityChanged(true);
-        angularVelocityChanged(true);
-        positionChanged(true);
-        orientationChanged(true);
     }
 
Index: code/branches/physics/src/orxonox/objects/worldentities/MobileEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/MobileEntity.h	(revision 2426)
+++ code/branches/physics/src/orxonox/objects/worldentities/MobileEntity.h	(revision 2427)
@@ -47,11 +47,8 @@
             void registerVariables();
 
-            using WorldEntity::setPosition;
-            using WorldEntity::setOrientation;
+            virtual void setPosition(const Vector3& position);
+            virtual void setOrientation(const Quaternion& orientation);
 
-            void setPosition(const Vector3& position);
-            void setOrientation(const Quaternion& orientation);
-
-            void setVelocity(const Vector3& velocity);
+            virtual void setVelocity(const Vector3& velocity);
             inline void setVelocity(float x, float y, float z)
                 { this->setVelocity(Vector3(x, y, z)); }
@@ -59,5 +56,5 @@
                 { return this->linearVelocity_; }
 
-            void setAngularVelocity(const Vector3& velocity);
+            virtual void setAngularVelocity(const Vector3& velocity);
             inline void setAngularVelocity(float x, float y, float z)
                 { this->setAngularVelocity(Vector3(x, y, z)); }
@@ -88,4 +85,8 @@
 
         protected:
+            // Bullet btMotionState related
+            virtual void setWorldTransform(const btTransform& worldTrans);
+            void getWorldTransform(btTransform& worldTrans) const;
+
             Vector3 linearAcceleration_;
             Vector3 linearVelocity_;
@@ -94,14 +95,5 @@
 
         private:
-            virtual void positionChanged       (bool bContinuous) = 0;
-            virtual void orientationChanged    (bool bContinuous) = 0;
-            virtual void linearVelocityChanged (bool bContinuous) { }
-            virtual void angularVelocityChanged(bool bContinuous) { }
-
             virtual bool isCollisionTypeLegal(WorldEntity::CollisionType type) const;
-
-            // Bullet btMotionState related
-            void setWorldTransform(const btTransform& worldTrans);
-            void getWorldTransform(btTransform& worldTrans) const;
     };
 }
Index: code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc	(revision 2426)
+++ code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc	(revision 2427)
@@ -22,4 +22,5 @@
  *   Author:
  *      Fabian 'x3n' Landau
+ *      Reto Grieder
  *   Co-authors:
  *      ...
@@ -76,23 +77,4 @@
     }
 
-    void MovableEntity::tick(float dt)
-    {
-        MobileEntity::tick(dt);
-
-        if (this->isActive())
-        {
-        }
-    }
-
-    void MovableEntity::overwritePosition()
-    {
-        this->setPosition(this->overwrite_position_);
-    }
-
-    void MovableEntity::overwriteOrientation()
-    {
-        this->setOrientation(this->overwrite_orientation_);
-    }
-
     void MovableEntity::clientConnected(unsigned int clientID)
     {
@@ -106,18 +88,6 @@
     void MovableEntity::resynchronize()
     {
-        positionChanged(false);
-        orientationChanged(false);
-    }
-
-    void MovableEntity::positionChanged(bool bContinuous)
-    {
-        if (!bContinuous)
-            this->overwrite_position_ = this->getPosition();
-    }
-
-    void MovableEntity::orientationChanged(bool bContinuous)
-    {
-        if (!bContinuous)
-            this->overwrite_orientation_ = this->getOrientation();
+        this->overwrite_position_ = this->getPosition();
+        this->overwrite_orientation_ = this->getOrientation();
     }
 }
Index: code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h	(revision 2426)
+++ code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h	(revision 2427)
@@ -22,4 +22,5 @@
  *   Author:
  *      Fabian 'x3n' Landau
+ *      Reto Grieder
  *   Co-authors:
  *      ...
@@ -44,6 +45,13 @@
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void tick(float dt);
             void registerVariables();
+
+            using WorldEntity::setPosition;
+            using WorldEntity::setOrientation;
+
+            inline void setPosition(const Vector3& position)
+                { MobileEntity::setPosition(position); this->overwrite_position_ = this->getPosition(); }
+            inline void setOrientation(const Quaternion& orientation)
+                { MobileEntity::setOrientation(orientation); this->overwrite_orientation_ = this->getOrientation(); }
 
         private:
@@ -57,11 +65,10 @@
                 { this->setAngularVelocity(this->angularVelocity_); }
 
-            void overwritePosition();
-            void overwriteOrientation();
+            inline void overwritePosition()
+                { this->setPosition(this->overwrite_position_); }
+            inline void overwriteOrientation()
+                { this->setOrientation(this->overwrite_orientation_); }
 
-            void positionChanged(bool bContinuous);
-            void orientationChanged(bool bContinuous);
-
-            Vector3 overwrite_position_;
+            Vector3    overwrite_position_;
             Quaternion overwrite_orientation_;
             Timer<MovableEntity>* continuousResynchroTimer_;
