Index: code/branches/physics/src/orxonox/CMakeLists.txt
===================================================================
--- code/branches/physics/src/orxonox/CMakeLists.txt	(revision 2299)
+++ code/branches/physics/src/orxonox/CMakeLists.txt	(revision 2300)
@@ -58,5 +58,4 @@
   objects/worldentities/StaticEntity.cc
   objects/worldentities/MovableEntity.cc
-  objects/worldentities/PositionableEntity.cc
   objects/worldentities/LinearEntity.cc
   objects/worldentities/ControllableEntity.cc
Index: code/branches/physics/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/branches/physics/src/orxonox/OrxonoxPrereqs.h	(revision 2299)
+++ code/branches/physics/src/orxonox/OrxonoxPrereqs.h	(revision 2300)
@@ -105,5 +105,4 @@
     class StaticEntity;
     class MovableEntity;
-    class PositionableEntity;
     class ControllableEntity;
     class LinearEntity;
Index: code/branches/physics/src/orxonox/objects/worldentities/Backlight.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Backlight.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/Backlight.h	(revision 2300)
@@ -32,10 +32,10 @@
 #include "OrxonoxPrereqs.h"
 
-#include "PositionableEntity.h"
+#include "StaticEntity.h"
 #include "tools/BillboardSet.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport Backlight : public PositionableEntity
+    class _OrxonoxExport Backlight : public StaticEntity
     {
         public:
Index: code/branches/physics/src/orxonox/objects/worldentities/Billboard.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Billboard.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/Billboard.cc	(revision 2300)
@@ -38,5 +38,5 @@
     CreateFactory(Billboard);
 
-    Billboard::Billboard(BaseObject* creator) : PositionableEntity(creator)
+    Billboard::Billboard(BaseObject* creator) : StaticEntity(creator)
     {
         RegisterObject(Billboard);
Index: code/branches/physics/src/orxonox/objects/worldentities/Billboard.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Billboard.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/Billboard.h	(revision 2300)
@@ -31,5 +31,5 @@
 
 #include "OrxonoxPrereqs.h"
-#include "PositionableEntity.h"
+#include "StaticEntity.h"
 #include "util/Math.h"
 #include "tools/BillboardSet.h"
@@ -37,5 +37,5 @@
 namespace orxonox
 {
-    class _OrxonoxExport Billboard : public PositionableEntity
+    class _OrxonoxExport Billboard : public StaticEntity
     {
         public:
Index: code/branches/physics/src/orxonox/objects/worldentities/Camera.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Camera.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/Camera.cc	(revision 2300)
@@ -47,5 +47,5 @@
     CreateFactory(Camera);
 
-    Camera::Camera(BaseObject* creator) : PositionableEntity(creator)
+    Camera::Camera(BaseObject* creator) : StaticEntity(creator)
     {
         RegisterObject(Camera);
Index: code/branches/physics/src/orxonox/objects/worldentities/Camera.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Camera.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/Camera.h	(revision 2300)
@@ -33,10 +33,10 @@
 
 #include <OgrePrerequisites.h>
-#include "objects/worldentities/PositionableEntity.h"
+#include "objects/worldentities/StaticEntity.h"
 #include "objects/Tickable.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport Camera : public PositionableEntity, public Tickable
+    class _OrxonoxExport Camera : public StaticEntity, public Tickable
     {
         friend class CameraManager;
Index: code/branches/physics/src/orxonox/objects/worldentities/CameraPosition.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/CameraPosition.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/CameraPosition.cc	(revision 2300)
@@ -38,5 +38,5 @@
     CreateFactory(CameraPosition);
 
-    CameraPosition::CameraPosition(BaseObject* creator) : PositionableEntity(creator)
+    CameraPosition::CameraPosition(BaseObject* creator) : StaticEntity(creator)
     {
         RegisterObject(CameraPosition);
Index: code/branches/physics/src/orxonox/objects/worldentities/CameraPosition.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/CameraPosition.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/CameraPosition.h	(revision 2300)
@@ -32,9 +32,9 @@
 #include "OrxonoxPrereqs.h"
 
-#include "objects/worldentities/PositionableEntity.h"
+#include "objects/worldentities/StaticEntity.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport CameraPosition : public PositionableEntity
+    class _OrxonoxExport CameraPosition : public StaticEntity
     {
         public:
Index: code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc	(revision 2300)
@@ -57,5 +57,4 @@
         this->bDestroyWhenPlayerLeft_ = false;
 
-        this->velocity_ = Vector3::ZERO;
         this->acceleration_ = Vector3::ZERO;
 
@@ -332,10 +331,10 @@
         if (Core::isMaster())
         {
-            this->server_position_ = this->node_->getPosition();
+            this->server_position_ = this->getPosition();
             ++this->server_overwrite_;
         }
         else if (this->bControlled_)
         {
-            this->client_position_ = this->node_->getPosition();
+            this->client_position_ = this->getPosition();
         }
     }
@@ -345,10 +344,10 @@
         if (Core::isMaster())
         {
-            this->server_orientation_ = this->node_->getOrientation();
+            this->server_orientation_ = this->getOrientation();
             ++this->server_overwrite_;
         }
         else if (this->bControlled_)
         {
-            this->client_orientation_ = this->node_->getOrientation();
+            this->client_orientation_ = this->getOrientation();
         }
     }
@@ -358,27 +357,10 @@
         if (Core::isMaster())
         {
-            this->server_velocity_ = this->velocity_;
+            this->server_velocity_ = this->getVelocity();
             ++this->server_overwrite_;
         }
         else if (this->bControlled_)
         {
-            this->client_velocity_ = this->velocity_;
-        }
-    }
-
-    void ControllableEntity::setVelocity(const Vector3& velocity)
-    {
-        if (this->bControlled_ || Core::isMaster())
-        {
-            if (!this->isDynamic())
-            {
-                // no physics, we do it ourselves
-                internalSetVelocity(velocity);
-            }
-            else
-            {
-                this->physicalBody_->setLinearVelocity(btVector3(velocity.x, velocity.y, velocity.z));
-            }
-            velocityChanged();
+            this->client_velocity_ = this->getVelocity();
         }
     }
Index: code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 2300)
@@ -79,8 +79,4 @@
                 { return this->hudtemplate_; }
 
-            void setVelocity(const Vector3& velocity);
-            inline void setVelocity(float x, float y, float z)
-                { setVelocity(Vector3(x,y,z)); }
-
             inline void setAcceleration(const Vector3& acceleration)
                 { this->acceleration_ = acceleration; }
@@ -127,6 +123,4 @@
             void processClientOrientation();
 
-            inline void internalSetVelocity(const Vector3& velocity)
-                { this->velocity_ = velocity; }
             void positionChanged();
             void orientationChanged();
@@ -137,6 +131,4 @@
             unsigned int server_overwrite_;
             unsigned int client_overwrite_;
-
-            Vector3 velocity_;
 
             bool bControlled_;
Index: code/branches/physics/src/orxonox/objects/worldentities/Light.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Light.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/Light.cc	(revision 2300)
@@ -47,5 +47,5 @@
     CreateFactory(Light);
 
-    Light::Light(BaseObject* creator) : PositionableEntity(creator)
+    Light::Light(BaseObject* creator) : StaticEntity(creator)
     {
         RegisterObject(Light);
Index: code/branches/physics/src/orxonox/objects/worldentities/Light.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Light.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/Light.h	(revision 2300)
@@ -31,5 +31,5 @@
 
 #include "OrxonoxPrereqs.h"
-#include "PositionableEntity.h"
+#include "StaticEntity.h"
 
 #include <string>
@@ -40,5 +40,5 @@
 namespace orxonox
 {
-    class _OrxonoxExport Light : public PositionableEntity
+    class _OrxonoxExport Light : public StaticEntity
     {
         public:
Index: code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.cc	(revision 2300)
@@ -45,5 +45,4 @@
         RegisterObject(LinearEntity);
 
-        this->velocity_ = Vector3::ZERO;
         this->acceleration_ = Vector3::ZERO;
         this->rotationAxis_ = Vector3::ZERO;
@@ -65,5 +64,4 @@
         SUPER(LinearEntity, XMLPort, xmlelement, mode);
 
-        XMLPortParamTemplate(LinearEntity, "velocity", setVelocity, getVelocity, xmlelement, mode, const Vector3&);
         XMLPortParamTemplate(LinearEntity, "rotationaxis", setRotationAxis, getRotationAxis, xmlelement, mode, const Vector3&);
         XMLPortParamTemplate(LinearEntity, "rotationrate", setRotationRate, getRotationRate, xmlelement, mode, const Degree&);
@@ -129,23 +127,10 @@
     void LinearEntity::positionChanged()
     {
-        this->overwrite_position_  = this->node_->getPosition();
+        this->overwrite_position_  = this->getPosition();
     }
 
     void LinearEntity::orientationChanged()
     {
-        this->overwrite_orientation_  = this->node_->getOrientation();
-    }
-
-    void LinearEntity::setVelocity(const Vector3& velocity)
-    {
-        if (!this->isDynamic())
-        {
-            // no physics, we do it ourselves
-            internalSetVelocity(velocity);
-        }
-        else
-        {
-            this->physicalBody_->setLinearVelocity(btVector3(velocity.x, velocity.y, velocity.z));
-        }
+        this->overwrite_orientation_  = this->getOrientation();
     }
 }
Index: code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.h	(revision 2300)
@@ -48,10 +48,4 @@
             void registerVariables();
 
-            inline void setVelocity(const Vector3& velocity);
-            inline void setVelocity(float x, float y, float z)
-                { this->velocity_.x = x; this->velocity_.y = y; this->velocity_.z = z; }
-            inline const Vector3& getVelocity() const
-                { return this->velocity_; }
-
             inline void setAcceleration(const Vector3& acceleration)
                 { this->acceleration_ = acceleration; }
@@ -92,8 +86,5 @@
             void positionChanged();
             void orientationChanged();
-            inline void internalSetVelocity(const Vector3& velocity)
-                { this->velocity_ = velocity; }
 
-            Vector3 velocity_;
             Vector3 acceleration_;
             Vector3 rotationAxis_;
Index: code/branches/physics/src/orxonox/objects/worldentities/Model.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Model.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/Model.cc	(revision 2300)
@@ -38,5 +38,5 @@
     CreateFactory(Model);
 
-    Model::Model(BaseObject* creator) : PositionableEntity(creator)
+    Model::Model(BaseObject* creator) : StaticEntity(creator)
     {
         RegisterObject(Model);
Index: code/branches/physics/src/orxonox/objects/worldentities/Model.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Model.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/Model.h	(revision 2300)
@@ -31,10 +31,10 @@
 
 #include "OrxonoxPrereqs.h"
-#include "PositionableEntity.h"
+#include "StaticEntity.h"
 #include "tools/Mesh.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport Model : public PositionableEntity
+    class _OrxonoxExport Model : public StaticEntity
     {
         public:
Index: code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc	(revision 2300)
@@ -42,4 +42,6 @@
         RegisterObject(MovableEntity);
 
+        this->velocity_ = Vector3::ZERO;
+
         this->registerVariables();
     }
@@ -52,4 +54,6 @@
     {
         SUPER(MovableEntity, XMLPort, xmlelement, mode);
+
+        XMLPortParamTemplate(MovableEntity, "velocity", setVelocity, getVelocity, xmlelement, mode, const Vector3&);
     }
 
@@ -165,9 +169,7 @@
             this->physicalBody_->setWorldTransform(transf);
         }
-        else
-        {
-            // no physics, we do it ourselves
-            this->node_->setPosition(position);
-        }
+
+        this->node_->setPosition(position);
+        positionChanged();
     }
 
@@ -180,9 +182,7 @@
             this->physicalBody_->translate(btVector3(distance.x, distance.y, distance.z));
         }
-        else
-        {
-            // no physics, we do it ourselves
-            this->node_->translate(distance, relativeTo);
-        }
+
+        this->node_->translate(distance, relativeTo);
+        positionChanged();
     }
 
@@ -195,9 +195,7 @@
             this->physicalBody_->setWorldTransform(transf);
         }
-        else
-        {
-            // no physics, we do it ourselves
-            this->node_->setOrientation(orientation);
-        }
+
+        this->node_->setOrientation(orientation);
+        orientationChanged();
     }
 
@@ -211,9 +209,7 @@
             this->physicalBody_->setWorldTransform(transf * btTransform(btQuaternion(rotation.w, rotation.x, rotation.y, rotation.z)));
         }
-        else
-        {
-            // no physics, we do it ourselves
-            this->node_->rotate(rotation, relativeTo);
-        }
+
+        this->node_->rotate(rotation, relativeTo);
+        orientationChanged();
     }
 
@@ -228,9 +224,7 @@
             this->physicalBody_->setWorldTransform(transf * rotation);
         }
-        else
-        {
-            // no physics, we do it ourselves
-            this->node_->yaw(angle, relativeTo);
-        }
+
+        this->node_->yaw(angle, relativeTo);
+        orientationChanged();
     }
 
@@ -245,9 +239,7 @@
             this->physicalBody_->setWorldTransform(transf * rotation);
         }
-        else
-        {
-            // no physics, we do it ourselves
-            this->node_->pitch(angle, relativeTo);
-        }
+
+        this->node_->pitch(angle, relativeTo);
+        orientationChanged();
     }
 
@@ -262,9 +254,7 @@
             this->physicalBody_->setWorldTransform(transf * rotation);
         }
-        else
-        {
-            // no physics, we do it ourselves
-            this->node_->roll(angle, relativeTo);
-        }
+
+        this->node_->roll(angle, relativeTo);
+        orientationChanged();
     }
 
@@ -279,9 +269,7 @@
             //this->physicalBody_->setWorldTransform(transf);
         }
-        else
-        {
-            // no physics, we do it ourselves
-            this->node_->lookAt(target, relativeTo, localDirectionVector);
-        }
+
+        this->node_->lookAt(target, relativeTo, localDirectionVector);
+        orientationChanged();
     }
 
@@ -290,5 +278,5 @@
         if (this->isDynamic())
         {
-            ThrowException(NotImplemented, "ControllableEntity::lookAt() is not yet supported for physical objects.");
+            ThrowException(NotImplemented, "ControllableEntity::setDirection() is not yet supported for physical objects.");
             OrxAssert(relativeTo == Ogre::Node::TS_LOCAL, "Cannot align physical object relative \
                                                           to any other space than TS_LOCAL.");
@@ -296,12 +284,21 @@
             //this->physicalBody_->setWorldTransform(transf);
         }
-        else
-        {
-            // no physics, we do it ourselves
-            this->node_->setDirection(direction, relativeTo, localDirectionVector);
-        }
-    }
-
-    bool MovableEntity::isCollisionTypeLegal(WorldEntity::CollisionType type)
+
+        this->node_->setDirection(direction, relativeTo, localDirectionVector);
+        orientationChanged();
+    }
+
+    void MovableEntity::setVelocity(const Vector3& velocity)
+    {
+        if (this->isDynamic())
+        {
+            this->physicalBody_->setLinearVelocity(btVector3(velocity.x, velocity.y, velocity.z));
+        }
+
+        this->velocity_ = velocity;
+        velocityChanged();
+    }
+
+    bool MovableEntity::isCollisionTypeLegal(WorldEntity::CollisionType type) const
     {
         if (type == WorldEntity::Static)
@@ -320,5 +317,6 @@
         this->node_->setOrientation(Quaternion(worldTrans.getRotation().w(), worldTrans.getRotation().x(), worldTrans.getRotation().y(), worldTrans.getRotation().z()));
         const btVector3& velocity = this->physicalBody_->getLinearVelocity();
-        internalSetVelocity(Vector3(velocity.x(), velocity.y(), velocity.z()));
+        this->velocity_ = Vector3(velocity.x(), velocity.y(), velocity.z());
+        velocityChanged();
         positionChanged();
         orientationChanged();
@@ -330,4 +328,10 @@
         worldTrans.setOrigin(btVector3(node_->getPosition().x, node_->getPosition().y, node_->getPosition().z));
         worldTrans.setRotation(btQuaternion(node_->getOrientation().w, node_->getOrientation().x, node_->getOrientation().y, node_->getOrientation().z));
+        if (this->isDynamic())
+        {
+            // This function gets called only once for dynamic objects to set the initial conditions
+            // We have to set the velocity too.
+            this->physicalBody_->setLinearVelocity(btVector3(velocity_.x, velocity_.y, velocity_.z));
+        }
     }
 }
Index: code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h	(revision 2300)
@@ -67,12 +67,21 @@
             void setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
 
+            void setVelocity(const Vector3& velocity);
+            inline void setVelocity(float x, float y, float z)
+                { this->velocity_.x = x; this->velocity_.y = y; this->velocity_.z = z; }
+            inline const Vector3& getVelocity() const
+                { return this->velocity_; }
+
+        protected:
+            Vector3 velocity_;
 
         private:
             //void attachPhysicalObject(WorldEntity* object);
 
-            virtual void internalSetVelocity(const Vector3& velocity) { }
             virtual void positionChanged() { }
             virtual void orientationChanged() { }
-            virtual bool isCollisionTypeLegal(WorldEntity::CollisionType type);
+            virtual void velocityChanged() { }
+
+            virtual bool isCollisionTypeLegal(WorldEntity::CollisionType type) const;
 
             // Bullet btMotionState related
Index: code/branches/physics/src/orxonox/objects/worldentities/ParticleEmitter.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ParticleEmitter.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/ParticleEmitter.cc	(revision 2300)
@@ -45,5 +45,5 @@
     CreateFactory(ParticleEmitter);
 
-    ParticleEmitter::ParticleEmitter(BaseObject* creator) : PositionableEntity(creator)
+    ParticleEmitter::ParticleEmitter(BaseObject* creator) : StaticEntity(creator)
     {
         RegisterObject(ParticleEmitter);
Index: code/branches/physics/src/orxonox/objects/worldentities/ParticleEmitter.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ParticleEmitter.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/ParticleEmitter.h	(revision 2300)
@@ -31,9 +31,9 @@
 
 #include "OrxonoxPrereqs.h"
-#include "PositionableEntity.h"
+#include "StaticEntity.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport ParticleEmitter : public PositionableEntity
+    class _OrxonoxExport ParticleEmitter : public StaticEntity
     {
         public:
Index: code/branches/physics/src/orxonox/objects/worldentities/PositionableEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/PositionableEntity.cc	(revision 2299)
+++ 	(revision )
@@ -1,63 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-#include "OrxonoxStableHeaders.h"
-#include "PositionableEntity.h"
-#include "core/CoreIncludes.h"
-
-namespace orxonox
-{
-    CreateFactory(PositionableEntity);
-
-    PositionableEntity::PositionableEntity(BaseObject* creator) : MovableEntity(creator)
-    {
-        RegisterObject(PositionableEntity);
-
-        this->registerVariables();
-    }
-
-    PositionableEntity::~PositionableEntity()
-    {
-    }
-
-    void PositionableEntity::registerVariables()
-    {
-        REGISTERDATA(this->getPosition().x, network::direction::toclient);
-        REGISTERDATA(this->getPosition().y, network::direction::toclient);
-        REGISTERDATA(this->getPosition().z, network::direction::toclient);
-
-        REGISTERDATA(this->getOrientation().w, network::direction::toclient);
-        REGISTERDATA(this->getOrientation().x, network::direction::toclient);
-        REGISTERDATA(this->getOrientation().y, network::direction::toclient);
-        REGISTERDATA(this->getOrientation().z, network::direction::toclient);
-    }
-
-    //void PositionableEntity::attachPhysicalObject(WorldEntity* object)
-    //{
-    //}
-}
Index: code/branches/physics/src/orxonox/objects/worldentities/PositionableEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/PositionableEntity.h	(revision 2299)
+++ 	(revision )
@@ -1,50 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-#ifndef _PositionableEntity_H__
-#define _PositionableEntity_H__
-
-#include "OrxonoxPrereqs.h"
-#include "MovableEntity.h"
-
-namespace orxonox
-{
-    class _OrxonoxExport PositionableEntity : public MovableEntity
-    {
-        public:
-            PositionableEntity(BaseObject* creator);
-            virtual ~PositionableEntity();
-
-            void registerVariables();
-
-        private:
-            //void attachPhysicalObject(WorldEntity* object);
-    };
-}
-
-#endif /* _PositionableEntity_H__ */
Index: code/branches/physics/src/orxonox/objects/worldentities/SpawnPoint.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/SpawnPoint.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/SpawnPoint.cc	(revision 2300)
@@ -38,5 +38,5 @@
     CreateFactory(SpawnPoint);
 
-    SpawnPoint::SpawnPoint(BaseObject* creator) : PositionableEntity(creator)
+    SpawnPoint::SpawnPoint(BaseObject* creator) : StaticEntity(creator)
     {
         RegisterObject(SpawnPoint);
Index: code/branches/physics/src/orxonox/objects/worldentities/SpawnPoint.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/SpawnPoint.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/SpawnPoint.h	(revision 2300)
@@ -34,10 +34,10 @@
 #include "core/Identifier.h"
 #include "core/Template.h"
-#include "PositionableEntity.h"
 #include "objects/worldentities/pawns/Pawn.h"
+#include "objects/worldentities/StaticEntity.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport SpawnPoint : public PositionableEntity
+    class _OrxonoxExport SpawnPoint : public StaticEntity
     {
         public:
Index: code/branches/physics/src/orxonox/objects/worldentities/StaticEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/StaticEntity.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/StaticEntity.cc	(revision 2300)
@@ -60,5 +60,5 @@
     }
 
-    bool StaticEntity::isCollisionTypeLegal(WorldEntity::CollisionType type)
+    bool StaticEntity::isCollisionTypeLegal(WorldEntity::CollisionType type) const
     {
         if (type == WorldEntity::Static)
@@ -73,5 +73,5 @@
     void StaticEntity::setWorldTransform(const btTransform& worldTrans)
     {
-        OrxAssert(false, "Setting world transform of a StaticEntity, which is static!");
+        OrxAssert(false, "Setting world transform of a StaticEntity, which is CF_STATIC!");
         //COUT(0) << "Setting world transform of a StaticEntity, which is static!" << std::endl;
     }
Index: code/branches/physics/src/orxonox/objects/worldentities/StaticEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/StaticEntity.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/StaticEntity.h	(revision 2300)
@@ -74,5 +74,5 @@
         private:
 
-            bool isCollisionTypeLegal(CollisionType type);
+            bool isCollisionTypeLegal(CollisionType type) const;
 
             // Bullet btMotionState related
Index: code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2300)
@@ -192,10 +192,13 @@
     }
 
-    float WorldEntity::getMass()
+    float WorldEntity::getMass() const
     {
         if (!checkPhysics())
             return 0.0f;
 
-        return 1.0f/this->physicalBody_->getInvMass();
+        if (this->physicalBody_->getInvMass() == 0.0f)
+            return 0.0f;
+        else
+            return 1.0f/this->physicalBody_->getInvMass();
     }
 
@@ -221,4 +224,9 @@
         if (type != None && this->collisionType_ == None)
         {
+            // First, check whether our SceneNode is relative to the root space of the scene.
+            // TODO: Static and Kinematic objects don't always have to obey this rule.
+            if (this->node_->getParent() != this->getScene()->getRootSceneNode())
+                ThrowException(PhysicsViolation, "Cannot make WorldEntity physical that is not in the root space of the Scene.");
+
             // Create new rigid body
             btRigidBody::btRigidBodyConstructionInfo bodyConstructionInfo(0, this, 0, btVector3(0,0,0));
@@ -227,5 +235,5 @@
 
             // Adjust parameters according to the node
-            btTransform nodeTransform;
+            //btTransform nodeTransform;
             //this->
         }
@@ -303,5 +311,5 @@
     }
 
-    std::string WorldEntity::getCollisionTypeStr()
+    std::string WorldEntity::getCollisionTypeStr() const
     {
         switch (this->getCollisionType())
@@ -334,5 +342,5 @@
     }
 
-    float WorldEntity::getCollisionRadius()
+    float WorldEntity::getCollisionRadius() const
     {
         if (checkPhysics())
@@ -345,5 +353,5 @@
     }
 
-    bool WorldEntity::checkPhysics()
+    bool WorldEntity::checkPhysics() const
     {
         if (!this->physicalBody_)
Index: code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h	(revision 2300)
@@ -168,7 +168,8 @@
             std::set<WorldEntity*> children_;
 
-            /////////////
-            // Physics //
-            /////////////
+
+        /////////////
+        // Physics //
+        /////////////
 
         public:
@@ -181,21 +182,21 @@
             };
 
-            bool hasPhysics()  { return getCollisionType() != None; }
-
-            CollisionType getCollisionType() { return this->collisionType_; }
+            bool hasPhysics() const { return getCollisionType() != None; }
+
+            CollisionType getCollisionType() const { return this->collisionType_; }
             void setCollisionType(CollisionType type);
 
             void setCollisionTypeStr(const std::string& type);
-            std::string getCollisionTypeStr();
-
-            bool isStatic()    { return getCollisionType() == Static   ; }
-            bool isKinematic() { return getCollisionType() == Kinematic; }
-            bool isDynamic()   { return getCollisionType() == Dynamic  ; }
+            std::string getCollisionTypeStr() const;
+
+            bool isStatic()    const { return getCollisionType() == Static   ; }
+            bool isKinematic() const { return getCollisionType() == Kinematic; }
+            bool isDynamic()   const { return getCollisionType() == Dynamic  ; }
 
             void setMass(float mass);
-            float getMass();
+            float getMass() const;
 
             void setCollisionRadius(float radius);
-            float getCollisionRadius();
+            float getCollisionRadius() const;
 
         protected:
@@ -203,6 +204,6 @@
             //virtual void attachPhysicalObject(WorldEntity* object);
 
-            virtual bool isCollisionTypeLegal(CollisionType type) = 0;
-            bool checkPhysics();
+            virtual bool isCollisionTypeLegal(CollisionType type) const = 0;
+            bool checkPhysics() const;
             void updateCollisionType();
 
Index: code/branches/physics/src/orxonox/objects/worldentities/triggers/Trigger.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/triggers/Trigger.cc	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/triggers/Trigger.cc	(revision 2300)
@@ -44,5 +44,5 @@
   CreateFactory(Trigger);
 
-  Trigger::Trigger(BaseObject* creator) : PositionableEntity(creator)
+  Trigger::Trigger(BaseObject* creator) : StaticEntity(creator)
   {
     RegisterObject(Trigger);
Index: code/branches/physics/src/orxonox/objects/worldentities/triggers/Trigger.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/triggers/Trigger.h	(revision 2299)
+++ code/branches/physics/src/orxonox/objects/worldentities/triggers/Trigger.h	(revision 2300)
@@ -36,5 +36,5 @@
 
 #include "objects/Tickable.h"
-#include "objects/worldentities/PositionableEntity.h"
+#include "objects/worldentities/StaticEntity.h"
 #include "tools/BillboardSet.h"
 
@@ -48,5 +48,5 @@
   };
 
-  class _OrxonoxExport Trigger : public PositionableEntity, public Tickable
+  class _OrxonoxExport Trigger : public StaticEntity, public Tickable
   {
     public:
Index: code/branches/physics/visual_studio/vc8/orxonox.vcproj
===================================================================
--- code/branches/physics/visual_studio/vc8/orxonox.vcproj	(revision 2299)
+++ code/branches/physics/visual_studio/vc8/orxonox.vcproj	(revision 2300)
@@ -305,8 +305,4 @@
 					</File>
 					<File
-						RelativePath="..\..\src\orxonox\objects\worldentities\PositionableEntity.cc"
-						>
-					</File>
-					<File
 						RelativePath="..\..\src\orxonox\objects\worldentities\SpawnPoint.cc"
 						>
@@ -1213,8 +1209,4 @@
 					</File>
 					<File
-						RelativePath="..\..\src\orxonox\objects\worldentities\PositionableEntity.h"
-						>
-					</File>
-					<File
 						RelativePath="..\..\src\orxonox\objects\worldentities\SpawnPoint.h"
 						>
