Index: code/branches/physics/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/branches/physics/src/orxonox/OrxonoxPrereqs.h	(revision 2177)
+++ code/branches/physics/src/orxonox/OrxonoxPrereqs.h	(revision 2178)
@@ -203,4 +203,13 @@
 }
 
+// Bullet Physics Engine
+
+class btRigidBody;
+class btCollisionObject;
+class btGhostObject;
+class btCollisionShape;
+class btSphereShape;
+
+
 struct lua_State;
 
Index: code/branches/physics/src/orxonox/OrxonoxStableHeaders.h
===================================================================
--- code/branches/physics/src/orxonox/OrxonoxStableHeaders.h	(revision 2177)
+++ code/branches/physics/src/orxonox/OrxonoxStableHeaders.h	(revision 2178)
@@ -48,4 +48,6 @@
 #include <CEGUI.h>
 #include "ois/OIS.h"
+//#include "btBulletCollisionCommon.h"
+//#include "btBulletDynamicsCommon.h"
 #include <boost/thread/recursive_mutex.hpp>
 //#include <boost/thread/mutex.hpp>
@@ -97,5 +99,5 @@
 #include "network/Synchronisable.h"
 
-#include "Settings.h"
+//#include "Settings.h"
 
 //#endif /* ifdef NDEBUG */
Index: code/branches/physics/src/orxonox/objects/HelloBullet.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/HelloBullet.cc	(revision 2177)
+++ code/branches/physics/src/orxonox/objects/HelloBullet.cc	(revision 2178)
@@ -34,6 +34,4 @@
 #include <OgreEntity.h>
 
-// #include "ogreode/OgreOde_Core.h"
-// #include "ogreode/OgreOdeGeometry.h"
 #include "util/Convert.h"
 #include "core/CoreIncludes.h"
@@ -52,7 +50,7 @@
         : BaseObject(creator)
     {
- 	   RegisterObject(HelloBullet);
-  	   COUT(0) << "HelloBullet loaded" << std::endl ;
-           int maxProxies = 1024;
+        RegisterObject(HelloBullet);
+        COUT(0) << "HelloBullet loaded" << std::endl ;
+        int maxProxies = 1024;
 
 
@@ -68,6 +66,5 @@
   //      dynamicsWorld = new btDiscreteDynamicsWorld(dispatcher,broadphase,solver,collisionConfiguration);
 
-	dynamicsWorld =  creator->getScene()->getPhysicalWorld();
-        dynamicsWorld-> setGravity(btVector3(0,-10,0));
+        dynamicsWorld = getCreator()->getScene()->getPhysicalWorld();
 
 
@@ -94,6 +91,5 @@
 
  
-
-//load floor mash
+        //load floor mash
         Ogre::SceneManager* sceneMgr = creator->getScene()->getSceneManager();
 
@@ -119,5 +115,5 @@
 
 
-// crate
+        // crate
 
         entity_ = sceneMgr->createEntity("crate","crate.mesh");
@@ -127,10 +123,5 @@
         entity_->setNormaliseNormals(true);
         entity_->setCastShadows(true);
-	sceneNode_ -> setPosition(Vector3(0,100,0));
-
-
-      
-
-
+        sceneNode_ -> setPosition(Vector3(0,100,0));
     }
 
@@ -181,13 +172,10 @@
     void HelloBullet::tick(float dt)
     {
-                dynamicsWorld->stepSimulation(dt,10);
-                btTransform trans;
-                fallRigidBody->getMotionState()->getWorldTransform(trans);
-	       // COUT(0) << "sphere height: " << trans.getOrigin().getY() << std::endl;
-		sceneNode_ -> setPosition(Vector3(0,trans.getOrigin().getY(),0));
-	//	msleep(20);
-		
-		
+        dynamicsWorld->stepSimulation(dt,10);
+        btTransform trans;
+        fallRigidBody->getMotionState()->getWorldTransform(trans);
+        // COUT(0) << "sphere height: " << trans.getOrigin().getY() << std::endl;
+        sceneNode_ -> setPosition(Vector3(0,trans.getOrigin().getY(),0));
+        //	msleep(20);
     }
-
 }
Index: code/branches/physics/src/orxonox/objects/HelloBullet.h
===================================================================
--- code/branches/physics/src/orxonox/objects/HelloBullet.h	(revision 2177)
+++ code/branches/physics/src/orxonox/objects/HelloBullet.h	(revision 2178)
@@ -33,5 +33,6 @@
 #include "core/BaseObject.h"
 
-#include "ogrebullet/Dynamics/OgreBulletDynamics.h"
+#include "btBulletCollisionCommon.h"
+#include "btBulletDynamicsCommon.h"
 
 #include "Tickable.h"
Index: code/branches/physics/src/orxonox/objects/Scene.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/Scene.cc	(revision 2177)
+++ code/branches/physics/src/orxonox/objects/Scene.cc	(revision 2178)
@@ -62,5 +62,17 @@
                 this->rootSceneNode_ = 0;
             }
-	// create bullet world; bullet solver etc.
+        }
+        else
+        {
+            // create a dummy SceneManager of our own since we don't have Ogre::Root.
+            this->sceneManager_ = new Ogre::DefaultSceneManager("");
+            this->rootSceneNode_ = this->sceneManager_->getRootSceneNode();
+        }
+
+        /////////////
+        // Physics //
+        /////////////
+
+        // create bullet world; bullet solver etc.
 
         // int maxProxies = 1024;
@@ -70,5 +82,5 @@
         bt32BitAxisSweep3* broadphase = new bt32BitAxisSweep3(worldAabbMin,worldAabbMax);
 
-	this -> collisionConfiguration_ = new btDefaultCollisionConfiguration();
+        this -> collisionConfiguration_ = new btDefaultCollisionConfiguration();
         this -> dispatcher_ = new btCollisionDispatcher(collisionConfiguration_);
 
@@ -77,13 +89,6 @@
         this -> dynamicsWorld_ =  new btDiscreteDynamicsWorld(dispatcher_,broadphase,solver_,collisionConfiguration_);
 
-      //  dynamicsWorld->setGravity(btVector3(0,-10,0));
+        dynamicsWorld_->setGravity(btVector3(0,-10,0));
 
-        }
-        else
-        {
-            // create a dummy SceneManager of our own since we don't have Ogre::Root.
-            this->sceneManager_ = new Ogre::DefaultSceneManager("");
-            this->rootSceneNode_ = this->sceneManager_->getRootSceneNode();
-        }
 
         // test test test
@@ -108,5 +113,4 @@
             if (Ogre::Root::getSingletonPtr())
             {
-//                this->sceneManager_->destroySceneNode(this->rootSceneNode_->getName()); // TODO: remove getName() for newer versions of Ogre
                 Ogre::Root::getSingleton().destroySceneManager(this->sceneManager_);
             }
Index: code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc	(revision 2177)
+++ code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.cc	(revision 2178)
@@ -44,5 +44,5 @@
     CreateFactory(ControllableEntity);
 
-    ControllableEntity::ControllableEntity(BaseObject* creator) : WorldEntity(creator)
+    ControllableEntity::ControllableEntity(BaseObject* creator) : MovableEntity(creator)
     {
         RegisterObject(ControllableEntity);
Index: code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 2177)
+++ code/branches/physics/src/orxonox/objects/worldentities/ControllableEntity.h	(revision 2178)
@@ -32,10 +32,10 @@
 #include "OrxonoxPrereqs.h"
 
-#include "WorldEntity.h"
+#include "MovableEntity.h"
 #include "objects/Tickable.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport ControllableEntity : public WorldEntity, public Tickable
+    class _OrxonoxExport ControllableEntity : public MovableEntity, public Tickable
     {
         public:
Index: code/branches/physics/src/orxonox/objects/worldentities/DynamicEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/DynamicEntity.cc	(revision 2177)
+++ 	(revision )
@@ -1,178 +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 "DynamicEntity.h"
-
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "core/Executor.h"
-#include "tools/Timer.h"
-
-namespace orxonox
-{
-    static const float MAX_RESYNCHRONIZE_TIME = 3.0f;
-
-    CreateFactory(DynamicEntity);
-
-    DynamicEntity::DynamicEntity(BaseObject* creator) : WorldEntity(creator)
-    {
-        RegisterObject(DynamicEntity);
-
-        this->velocity_ = Vector3::ZERO;
-        this->acceleration_ = Vector3::ZERO;
-        this->rotationAxis_ = Vector3::ZERO;
-        this->rotationRate_ = 0;
-        this->momentum_ = 0;
-
-        this->overwrite_position_ = Vector3::ZERO;
-        this->overwrite_orientation_ = Quaternion::IDENTITY;
-
-        this->registerVariables();
-    }
-
-    DynamicEntity::~DynamicEntity()
-    {
-    }
-
-    void DynamicEntity::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(DynamicEntity, XMLPort, xmlelement, mode);
-
-        XMLPortParamTemplate(DynamicEntity, "velocity", setVelocity, getVelocity, xmlelement, mode, const Vector3&);
-        XMLPortParamTemplate(DynamicEntity, "rotationaxis", setRotationAxis, getRotationAxis, xmlelement, mode, const Vector3&);
-        XMLPortParamTemplate(DynamicEntity, "rotationrate", setRotationRate, getRotationRate, xmlelement, mode, const Degree&);
-    }
-
-    void DynamicEntity::tick(float dt)
-    {
-        if (this->isActive())
-        {
-            this->velocity_ += (dt * this->acceleration_);
-            this->node_->translate(dt * this->velocity_);
-
-            this->rotationRate_ += (dt * this->momentum_);
-            this->node_->rotate(this->rotationAxis_, this->rotationRate_  * dt);
-        }
-    }
-
-    void DynamicEntity::registerVariables()
-    {
-        REGISTERDATA(this->velocity_.x, network::direction::toclient);
-        REGISTERDATA(this->velocity_.y, network::direction::toclient);
-        REGISTERDATA(this->velocity_.z, network::direction::toclient);
-
-        REGISTERDATA(this->rotationAxis_.x, network::direction::toclient);
-        REGISTERDATA(this->rotationAxis_.y, network::direction::toclient);
-        REGISTERDATA(this->rotationAxis_.z, network::direction::toclient);
-
-        REGISTERDATA(this->rotationRate_, network::direction::toclient);
-
-        REGISTERDATA(this->overwrite_position_,    network::direction::toclient, new network::NetworkCallback<DynamicEntity>(this, &DynamicEntity::overwritePosition));
-        REGISTERDATA(this->overwrite_orientation_, network::direction::toclient, new network::NetworkCallback<DynamicEntity>(this, &DynamicEntity::overwriteOrientation));
-    }
-
-    void DynamicEntity::overwritePosition()
-    {
-        this->node_->setPosition(this->overwrite_position_);
-    }
-
-    void DynamicEntity::overwriteOrientation()
-    {
-        this->node_->setOrientation(this->overwrite_orientation_);
-    }
-
-    void DynamicEntity::clientConnected(unsigned int clientID)
-    {
-        new Timer<DynamicEntity>(rnd() * MAX_RESYNCHRONIZE_TIME, false, this, createExecutor(createFunctor(&DynamicEntity::resynchronize)), true);
-    }
-
-    void DynamicEntity::clientDisconnected(unsigned int clientID)
-    {
-    }
-
-    void DynamicEntity::resynchronize()
-    {
-        this->overwrite_position_ = this->getPosition();
-        this->overwrite_orientation_ = this->getOrientation();
-    }
-
-    void DynamicEntity::setPosition(const Vector3& position)
-    {
-        this->node_->setPosition(position);
-        this->overwrite_position_ = this->node_->getPosition();
-    }
-
-    void DynamicEntity::translate(const Vector3& distance, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->translate(distance, relativeTo);
-        this->overwrite_position_ = this->node_->getPosition();
-    }
-
-    void DynamicEntity::setOrientation(const Quaternion& orientation)
-    {
-        this->node_->setOrientation(orientation);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void DynamicEntity::rotate(const Quaternion& rotation, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->rotate(rotation, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void DynamicEntity::yaw(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->yaw(angle, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void DynamicEntity::pitch(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->pitch(angle, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void DynamicEntity::roll(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->roll(angle, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void DynamicEntity::lookAt(const Vector3& target, Ogre::Node::TransformSpace relativeTo, const Vector3& localDirectionVector)
-    {
-        this->node_->lookAt(target, relativeTo, localDirectionVector);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void DynamicEntity::setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo, const Vector3& localDirectionVector)
-    {
-        this->node_->setDirection(direction, relativeTo, localDirectionVector);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-}
Index: code/branches/physics/src/orxonox/objects/worldentities/DynamicEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/DynamicEntity.h	(revision 2177)
+++ 	(revision )
@@ -1,124 +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 _DynamicEntity_H__
-#define _DynamicEntity_H__
-
-#include "OrxonoxPrereqs.h"
-
-#include "WorldEntity.h"
-#include "objects/Tickable.h"
-#include "network/ClientConnectionListener.h"
-
-namespace orxonox
-{
-    class _OrxonoxExport DynamicEntity : public WorldEntity, public Tickable
-    {
-        public:
-            DynamicEntity(BaseObject* creator);
-            virtual ~DynamicEntity();
-
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void tick(float dt);
-            void registerVariables();
-
-            using WorldEntity::setPosition;
-            using WorldEntity::translate;
-            using WorldEntity::setOrientation;
-            using WorldEntity::rotate;
-            using WorldEntity::yaw;
-            using WorldEntity::pitch;
-            using WorldEntity::roll;
-            using WorldEntity::lookAt;
-            using WorldEntity::setDirection;
-
-            void setPosition(const Vector3& position);
-            void translate(const Vector3& distance, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void setOrientation(const Quaternion& orientation);
-            void rotate(const Quaternion& rotation, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void yaw(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void pitch(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void roll(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void lookAt(const Vector3& target, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
-            void setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
-
-            inline void setVelocity(const Vector3& velocity)
-                { this->velocity_ = 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; }
-            inline void setAcceleration(float x, float y, float z)
-                { this->acceleration_.x = x; this->acceleration_.y = y; this->acceleration_.z = z; }
-            inline const Vector3& getAcceleration() const
-                { return this->acceleration_; }
-
-            inline void setRotationAxis(const Vector3& axis)
-                { this->rotationAxis_ = axis; this->rotationAxis_.normalise(); }
-            inline void setRotationAxis(float x, float y, float z)
-                { this->rotationAxis_.x = x; this->rotationAxis_.y = y; this->rotationAxis_.z = z; rotationAxis_.normalise(); }
-            inline const Vector3& getRotationAxis() const
-                { return this->rotationAxis_; }
-
-            inline void setRotationRate(const Degree& angle)
-                { this->rotationRate_ = angle; }
-            inline void setRotationRate(const Radian& angle)
-                { this->rotationRate_ = angle; }
-            inline const Degree& getRotationRate() const
-                { return this->rotationRate_; }
-
-            inline void setMomentum(const Degree& angle)
-                { this->momentum_ = angle; }
-            inline void setMomentum(const Radian& angle)
-                { this->momentum_ = angle; }
-            inline const Degree& getMomentum() const
-                { return this->momentum_; }
-
-        private:
-            void clientConnected(unsigned int clientID);
-            void clientDisconnected(unsigned int clientID);
-            void resynchronize();
-
-            void overwritePosition();
-            void overwriteOrientation();
-
-            Vector3 velocity_;
-            Vector3 acceleration_;
-            Vector3 rotationAxis_;
-            Degree rotationRate_;
-            Degree momentum_;
-
-            Vector3 overwrite_position_;
-            Quaternion overwrite_orientation_;
-    };
-}
-
-#endif /* _DynamicEntity_H__ */
Index: code/branches/physics/src/orxonox/objects/worldentities/KinematicEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/KinematicEntity.cc	(revision 2177)
+++ 	(revision )
@@ -1,178 +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 "KinematicEntity.h"
-
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "core/Executor.h"
-#include "tools/Timer.h"
-
-namespace orxonox
-{
-    static const float MAX_RESYNCHRONIZE_TIME = 3.0f;
-
-    CreateFactory(KinematicEntity);
-
-    KinematicEntity::KinematicEntity(BaseObject* creator) : WorldEntity(creator)
-    {
-        RegisterObject(KinematicEntity);
-
-        this->velocity_ = Vector3::ZERO;
-        this->acceleration_ = Vector3::ZERO;
-        this->rotationAxis_ = Vector3::ZERO;
-        this->rotationRate_ = 0;
-        this->momentum_ = 0;
-
-        this->overwrite_position_ = Vector3::ZERO;
-        this->overwrite_orientation_ = Quaternion::IDENTITY;
-
-        this->registerVariables();
-    }
-
-    KinematicEntity::~KinematicEntity()
-    {
-    }
-
-    void KinematicEntity::XMLPort(Element& xmlelement, XMLPort::Mode mode)
-    {
-        SUPER(KinematicEntity, XMLPort, xmlelement, mode);
-
-        XMLPortParamTemplate(KinematicEntity, "velocity", setVelocity, getVelocity, xmlelement, mode, const Vector3&);
-        XMLPortParamTemplate(KinematicEntity, "rotationaxis", setRotationAxis, getRotationAxis, xmlelement, mode, const Vector3&);
-        XMLPortParamTemplate(KinematicEntity, "rotationrate", setRotationRate, getRotationRate, xmlelement, mode, const Degree&);
-    }
-
-    void KinematicEntity::tick(float dt)
-    {
-        if (this->isActive())
-        {
-            this->velocity_ += (dt * this->acceleration_);
-            this->node_->translate(dt * this->velocity_);
-
-            this->rotationRate_ += (dt * this->momentum_);
-            this->node_->rotate(this->rotationAxis_, this->rotationRate_  * dt);
-        }
-    }
-
-    void KinematicEntity::registerVariables()
-    {
-        REGISTERDATA(this->velocity_.x, network::direction::toclient);
-        REGISTERDATA(this->velocity_.y, network::direction::toclient);
-        REGISTERDATA(this->velocity_.z, network::direction::toclient);
-
-        REGISTERDATA(this->rotationAxis_.x, network::direction::toclient);
-        REGISTERDATA(this->rotationAxis_.y, network::direction::toclient);
-        REGISTERDATA(this->rotationAxis_.z, network::direction::toclient);
-
-        REGISTERDATA(this->rotationRate_, network::direction::toclient);
-
-        REGISTERDATA(this->overwrite_position_,    network::direction::toclient, new network::NetworkCallback<KinematicEntity>(this, &KinematicEntity::overwritePosition));
-        REGISTERDATA(this->overwrite_orientation_, network::direction::toclient, new network::NetworkCallback<KinematicEntity>(this, &KinematicEntity::overwriteOrientation));
-    }
-
-    void KinematicEntity::overwritePosition()
-    {
-        this->node_->setPosition(this->overwrite_position_);
-    }
-
-    void KinematicEntity::overwriteOrientation()
-    {
-        this->node_->setOrientation(this->overwrite_orientation_);
-    }
-
-    void KinematicEntity::clientConnected(unsigned int clientID)
-    {
-        new Timer<KinematicEntity>(rnd() * MAX_RESYNCHRONIZE_TIME, false, this, createExecutor(createFunctor(&KinematicEntity::resynchronize)), true);
-    }
-
-    void KinematicEntity::clientDisconnected(unsigned int clientID)
-    {
-    }
-
-    void KinematicEntity::resynchronize()
-    {
-        this->overwrite_position_ = this->getPosition();
-        this->overwrite_orientation_ = this->getOrientation();
-    }
-
-    void KinematicEntity::setPosition(const Vector3& position)
-    {
-        this->node_->setPosition(position);
-        this->overwrite_position_ = this->node_->getPosition();
-    }
-
-    void KinematicEntity::translate(const Vector3& distance, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->translate(distance, relativeTo);
-        this->overwrite_position_ = this->node_->getPosition();
-    }
-
-    void KinematicEntity::setOrientation(const Quaternion& orientation)
-    {
-        this->node_->setOrientation(orientation);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void KinematicEntity::rotate(const Quaternion& rotation, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->rotate(rotation, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void KinematicEntity::yaw(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->yaw(angle, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void KinematicEntity::pitch(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->pitch(angle, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void KinematicEntity::roll(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->roll(angle, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void KinematicEntity::lookAt(const Vector3& target, Ogre::Node::TransformSpace relativeTo, const Vector3& localDirectionVector)
-    {
-        this->node_->lookAt(target, relativeTo, localDirectionVector);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void KinematicEntity::setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo, const Vector3& localDirectionVector)
-    {
-        this->node_->setDirection(direction, relativeTo, localDirectionVector);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-}
Index: code/branches/physics/src/orxonox/objects/worldentities/KinematicEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/KinematicEntity.h	(revision 2177)
+++ 	(revision )
@@ -1,124 +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 _KinematicEntity_H__
-#define _KinematicEntity_H__
-
-#include "OrxonoxPrereqs.h"
-
-#include "WorldEntity.h"
-#include "objects/Tickable.h"
-#include "network/ClientConnectionListener.h"
-
-namespace orxonox
-{
-    class _OrxonoxExport KinematicEntity : public WorldEntity, public Tickable, public network::ClientConnectionListener
-    {
-        public:
-            KinematicEntity(BaseObject* creator);
-            virtual ~KinematicEntity();
-
-            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void tick(float dt);
-            void registerVariables();
-
-            using WorldEntity::setPosition;
-            using WorldEntity::translate;
-            using WorldEntity::setOrientation;
-            using WorldEntity::rotate;
-            using WorldEntity::yaw;
-            using WorldEntity::pitch;
-            using WorldEntity::roll;
-            using WorldEntity::lookAt;
-            using WorldEntity::setDirection;
-
-            void setPosition(const Vector3& position);
-            void translate(const Vector3& distance, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void setOrientation(const Quaternion& orientation);
-            void rotate(const Quaternion& rotation, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void yaw(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void pitch(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void roll(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void lookAt(const Vector3& target, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
-            void setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
-
-            inline void setVelocity(const Vector3& velocity)
-                { this->velocity_ = 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; }
-            inline void setAcceleration(float x, float y, float z)
-                { this->acceleration_.x = x; this->acceleration_.y = y; this->acceleration_.z = z; }
-            inline const Vector3& getAcceleration() const
-                { return this->acceleration_; }
-
-            inline void setRotationAxis(const Vector3& axis)
-                { this->rotationAxis_ = axis; this->rotationAxis_.normalise(); }
-            inline void setRotationAxis(float x, float y, float z)
-                { this->rotationAxis_.x = x; this->rotationAxis_.y = y; this->rotationAxis_.z = z; rotationAxis_.normalise(); }
-            inline const Vector3& getRotationAxis() const
-                { return this->rotationAxis_; }
-
-            inline void setRotationRate(const Degree& angle)
-                { this->rotationRate_ = angle; }
-            inline void setRotationRate(const Radian& angle)
-                { this->rotationRate_ = angle; }
-            inline const Degree& getRotationRate() const
-                { return this->rotationRate_; }
-
-            inline void setMomentum(const Degree& angle)
-                { this->momentum_ = angle; }
-            inline void setMomentum(const Radian& angle)
-                { this->momentum_ = angle; }
-            inline const Degree& getMomentum() const
-                { return this->momentum_; }
-
-        private:
-            void clientConnected(unsigned int clientID);
-            void clientDisconnected(unsigned int clientID);
-            void resynchronize();
-
-            void overwritePosition();
-            void overwriteOrientation();
-
-            Vector3 velocity_;
-            Vector3 acceleration_;
-            Vector3 rotationAxis_;
-            Degree rotationRate_;
-            Degree momentum_;
-
-            Vector3 overwrite_position_;
-            Quaternion overwrite_orientation_;
-    };
-}
-
-#endif /* _KinematicEntity_H__ */
Index: code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.cc	(revision 2178)
+++ code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.cc	(revision 2178)
@@ -0,0 +1,178 @@
+/*
+ *   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 "LinearEntity.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "core/Executor.h"
+#include "tools/Timer.h"
+
+namespace orxonox
+{
+    static const float MAX_RESYNCHRONIZE_TIME = 3.0f;
+
+    CreateFactory(LinearEntity);
+
+    LinearEntity::LinearEntity(BaseObject* creator) : MovableEntity(creator)
+    {
+        RegisterObject(LinearEntity);
+
+        this->velocity_ = Vector3::ZERO;
+        this->acceleration_ = Vector3::ZERO;
+        this->rotationAxis_ = Vector3::ZERO;
+        this->rotationRate_ = 0;
+        this->momentum_ = 0;
+
+        this->overwrite_position_ = Vector3::ZERO;
+        this->overwrite_orientation_ = Quaternion::IDENTITY;
+
+        this->registerVariables();
+    }
+
+    LinearEntity::~LinearEntity()
+    {
+    }
+
+    void LinearEntity::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+    {
+        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&);
+    }
+
+    void LinearEntity::tick(float dt)
+    {
+        if (this->isActive())
+        {
+            this->velocity_ += (dt * this->acceleration_);
+            this->node_->translate(dt * this->velocity_);
+
+            this->rotationRate_ += (dt * this->momentum_);
+            this->node_->rotate(this->rotationAxis_, this->rotationRate_  * dt);
+        }
+    }
+
+    void LinearEntity::registerVariables()
+    {
+        REGISTERDATA(this->velocity_.x, network::direction::toclient);
+        REGISTERDATA(this->velocity_.y, network::direction::toclient);
+        REGISTERDATA(this->velocity_.z, network::direction::toclient);
+
+        REGISTERDATA(this->rotationAxis_.x, network::direction::toclient);
+        REGISTERDATA(this->rotationAxis_.y, network::direction::toclient);
+        REGISTERDATA(this->rotationAxis_.z, network::direction::toclient);
+
+        REGISTERDATA(this->rotationRate_, network::direction::toclient);
+
+        REGISTERDATA(this->overwrite_position_,    network::direction::toclient, new network::NetworkCallback<LinearEntity>(this, &LinearEntity::overwritePosition));
+        REGISTERDATA(this->overwrite_orientation_, network::direction::toclient, new network::NetworkCallback<LinearEntity>(this, &LinearEntity::overwriteOrientation));
+    }
+
+    void LinearEntity::overwritePosition()
+    {
+        this->node_->setPosition(this->overwrite_position_);
+    }
+
+    void LinearEntity::overwriteOrientation()
+    {
+        this->node_->setOrientation(this->overwrite_orientation_);
+    }
+
+    void LinearEntity::clientConnected(unsigned int clientID)
+    {
+        new Timer<LinearEntity>(rnd() * MAX_RESYNCHRONIZE_TIME, false, this, createExecutor(createFunctor(&LinearEntity::resynchronize)), true);
+    }
+
+    void LinearEntity::clientDisconnected(unsigned int clientID)
+    {
+    }
+
+    void LinearEntity::resynchronize()
+    {
+        this->overwrite_position_ = this->getPosition();
+        this->overwrite_orientation_ = this->getOrientation();
+    }
+
+    void LinearEntity::setPosition(const Vector3& position)
+    {
+        this->node_->setPosition(position);
+        this->overwrite_position_ = this->node_->getPosition();
+    }
+
+    void LinearEntity::translate(const Vector3& distance, Ogre::Node::TransformSpace relativeTo)
+    {
+        this->node_->translate(distance, relativeTo);
+        this->overwrite_position_ = this->node_->getPosition();
+    }
+
+    void LinearEntity::setOrientation(const Quaternion& orientation)
+    {
+        this->node_->setOrientation(orientation);
+        this->overwrite_orientation_ = this->node_->getOrientation();
+    }
+
+    void LinearEntity::rotate(const Quaternion& rotation, Ogre::Node::TransformSpace relativeTo)
+    {
+        this->node_->rotate(rotation, relativeTo);
+        this->overwrite_orientation_ = this->node_->getOrientation();
+    }
+
+    void LinearEntity::yaw(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
+    {
+        this->node_->yaw(angle, relativeTo);
+        this->overwrite_orientation_ = this->node_->getOrientation();
+    }
+
+    void LinearEntity::pitch(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
+    {
+        this->node_->pitch(angle, relativeTo);
+        this->overwrite_orientation_ = this->node_->getOrientation();
+    }
+
+    void LinearEntity::roll(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
+    {
+        this->node_->roll(angle, relativeTo);
+        this->overwrite_orientation_ = this->node_->getOrientation();
+    }
+
+    void LinearEntity::lookAt(const Vector3& target, Ogre::Node::TransformSpace relativeTo, const Vector3& localDirectionVector)
+    {
+        this->node_->lookAt(target, relativeTo, localDirectionVector);
+        this->overwrite_orientation_ = this->node_->getOrientation();
+    }
+
+    void LinearEntity::setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo, const Vector3& localDirectionVector)
+    {
+        this->node_->setDirection(direction, relativeTo, localDirectionVector);
+        this->overwrite_orientation_ = this->node_->getOrientation();
+    }
+}
Index: code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.h	(revision 2178)
+++ code/branches/physics/src/orxonox/objects/worldentities/LinearEntity.h	(revision 2178)
@@ -0,0 +1,124 @@
+/*
+ *   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 _LinearEntity_H__
+#define _LinearEntity_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include "MovableEntity.h"
+#include "objects/Tickable.h"
+#include "network/ClientConnectionListener.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport LinearEntity : public MovableEntity, public network::ClientConnectionListener
+    {
+        public:
+            LinearEntity(BaseObject* creator);
+            virtual ~LinearEntity();
+
+            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+            virtual void tick(float dt);
+            void registerVariables();
+
+            using WorldEntity::setPosition;
+            using WorldEntity::translate;
+            using WorldEntity::setOrientation;
+            using WorldEntity::rotate;
+            using WorldEntity::yaw;
+            using WorldEntity::pitch;
+            using WorldEntity::roll;
+            using WorldEntity::lookAt;
+            using WorldEntity::setDirection;
+
+            void setPosition(const Vector3& position);
+            void translate(const Vector3& distance, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
+            void setOrientation(const Quaternion& orientation);
+            void rotate(const Quaternion& rotation, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
+            void yaw(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
+            void pitch(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
+            void roll(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
+            void lookAt(const Vector3& target, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
+            void setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
+
+            inline void setVelocity(const Vector3& velocity)
+                { this->velocity_ = 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; }
+            inline void setAcceleration(float x, float y, float z)
+                { this->acceleration_.x = x; this->acceleration_.y = y; this->acceleration_.z = z; }
+            inline const Vector3& getAcceleration() const
+                { return this->acceleration_; }
+
+            inline void setRotationAxis(const Vector3& axis)
+                { this->rotationAxis_ = axis; this->rotationAxis_.normalise(); }
+            inline void setRotationAxis(float x, float y, float z)
+                { this->rotationAxis_.x = x; this->rotationAxis_.y = y; this->rotationAxis_.z = z; rotationAxis_.normalise(); }
+            inline const Vector3& getRotationAxis() const
+                { return this->rotationAxis_; }
+
+            inline void setRotationRate(const Degree& angle)
+                { this->rotationRate_ = angle; }
+            inline void setRotationRate(const Radian& angle)
+                { this->rotationRate_ = angle; }
+            inline const Degree& getRotationRate() const
+                { return this->rotationRate_; }
+
+            inline void setMomentum(const Degree& angle)
+                { this->momentum_ = angle; }
+            inline void setMomentum(const Radian& angle)
+                { this->momentum_ = angle; }
+            inline const Degree& getMomentum() const
+                { return this->momentum_; }
+
+        private:
+            void clientConnected(unsigned int clientID);
+            void clientDisconnected(unsigned int clientID);
+            void resynchronize();
+
+            void overwritePosition();
+            void overwriteOrientation();
+
+            Vector3 velocity_;
+            Vector3 acceleration_;
+            Vector3 rotationAxis_;
+            Degree rotationRate_;
+            Degree momentum_;
+
+            Vector3 overwrite_position_;
+            Quaternion overwrite_orientation_;
+    };
+}
+
+#endif /* _LinearEntity_H__ */
Index: code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc	(revision 2177)
+++ code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.cc	(revision 2178)
@@ -32,25 +32,10 @@
 #include "core/CoreIncludes.h"
 #include "core/XMLPort.h"
-#include "core/Executor.h"
-#include "tools/Timer.h"
 
 namespace orxonox
 {
-    static const float MAX_RESYNCHRONIZE_TIME = 3.0f;
-
-    CreateFactory(MovableEntity);
-
     MovableEntity::MovableEntity(BaseObject* creator) : WorldEntity(creator)
     {
         RegisterObject(MovableEntity);
-
-        this->velocity_ = Vector3::ZERO;
-        this->acceleration_ = Vector3::ZERO;
-        this->rotationAxis_ = Vector3::ZERO;
-        this->rotationRate_ = 0;
-        this->momentum_ = 0;
-
-        this->overwrite_position_ = Vector3::ZERO;
-        this->overwrite_orientation_ = Quaternion::IDENTITY;
 
         this->registerVariables();
@@ -64,115 +49,8 @@
     {
         SUPER(MovableEntity, XMLPort, xmlelement, mode);
-
-        XMLPortParamTemplate(MovableEntity, "velocity", setVelocity, getVelocity, xmlelement, mode, const Vector3&);
-        XMLPortParamTemplate(MovableEntity, "rotationaxis", setRotationAxis, getRotationAxis, xmlelement, mode, const Vector3&);
-        XMLPortParamTemplate(MovableEntity, "rotationrate", setRotationRate, getRotationRate, xmlelement, mode, const Degree&);
-    }
-
-    void MovableEntity::tick(float dt)
-    {
-        if (this->isActive())
-        {
-            this->velocity_ += (dt * this->acceleration_);
-            this->node_->translate(dt * this->velocity_);
-
-            this->rotationRate_ += (dt * this->momentum_);
-            this->node_->rotate(this->rotationAxis_, this->rotationRate_  * dt);
-        }
     }
 
     void MovableEntity::registerVariables()
     {
-        REGISTERDATA(this->velocity_.x, network::direction::toclient);
-        REGISTERDATA(this->velocity_.y, network::direction::toclient);
-        REGISTERDATA(this->velocity_.z, network::direction::toclient);
-
-        REGISTERDATA(this->rotationAxis_.x, network::direction::toclient);
-        REGISTERDATA(this->rotationAxis_.y, network::direction::toclient);
-        REGISTERDATA(this->rotationAxis_.z, network::direction::toclient);
-
-        REGISTERDATA(this->rotationRate_, network::direction::toclient);
-
-        REGISTERDATA(this->overwrite_position_,    network::direction::toclient, new network::NetworkCallback<MovableEntity>(this, &MovableEntity::overwritePosition));
-        REGISTERDATA(this->overwrite_orientation_, network::direction::toclient, new network::NetworkCallback<MovableEntity>(this, &MovableEntity::overwriteOrientation));
-    }
-
-    void MovableEntity::overwritePosition()
-    {
-        this->node_->setPosition(this->overwrite_position_);
-    }
-
-    void MovableEntity::overwriteOrientation()
-    {
-        this->node_->setOrientation(this->overwrite_orientation_);
-    }
-
-    void MovableEntity::clientConnected(unsigned int clientID)
-    {
-        new Timer<MovableEntity>(rnd() * MAX_RESYNCHRONIZE_TIME, false, this, createExecutor(createFunctor(&MovableEntity::resynchronize)), true);
-    }
-
-    void MovableEntity::clientDisconnected(unsigned int clientID)
-    {
-    }
-
-    void MovableEntity::resynchronize()
-    {
-        this->overwrite_position_ = this->getPosition();
-        this->overwrite_orientation_ = this->getOrientation();
-    }
-
-    void MovableEntity::setPosition(const Vector3& position)
-    {
-        this->node_->setPosition(position);
-        this->overwrite_position_ = this->node_->getPosition();
-    }
-
-    void MovableEntity::translate(const Vector3& distance, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->translate(distance, relativeTo);
-        this->overwrite_position_ = this->node_->getPosition();
-    }
-
-    void MovableEntity::setOrientation(const Quaternion& orientation)
-    {
-        this->node_->setOrientation(orientation);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void MovableEntity::rotate(const Quaternion& rotation, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->rotate(rotation, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void MovableEntity::yaw(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->yaw(angle, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void MovableEntity::pitch(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->pitch(angle, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void MovableEntity::roll(const Degree& angle, Ogre::Node::TransformSpace relativeTo)
-    {
-        this->node_->roll(angle, relativeTo);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void MovableEntity::lookAt(const Vector3& target, Ogre::Node::TransformSpace relativeTo, const Vector3& localDirectionVector)
-    {
-        this->node_->lookAt(target, relativeTo, localDirectionVector);
-        this->overwrite_orientation_ = this->node_->getOrientation();
-    }
-
-    void MovableEntity::setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo, const Vector3& localDirectionVector)
-    {
-        this->node_->setDirection(direction, relativeTo, localDirectionVector);
-        this->overwrite_orientation_ = this->node_->getOrientation();
     }
 }
Index: code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h	(revision 2177)
+++ code/branches/physics/src/orxonox/objects/worldentities/MovableEntity.h	(revision 2178)
@@ -38,5 +38,5 @@
 namespace orxonox
 {
-    class _OrxonoxExport MovableEntity : public WorldEntity, public Tickable, public network::ClientConnectionListener
+    class _OrxonoxExport MovableEntity : public WorldEntity
     {
         public:
@@ -45,78 +45,24 @@
 
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-            virtual void tick(float dt);
             void registerVariables();
 
-            using WorldEntity::setPosition;
-            using WorldEntity::translate;
-            using WorldEntity::setOrientation;
-            using WorldEntity::rotate;
-            using WorldEntity::yaw;
-            using WorldEntity::pitch;
-            using WorldEntity::roll;
-            using WorldEntity::lookAt;
-            using WorldEntity::setDirection;
+        private:
 
-            void setPosition(const Vector3& position);
-            void translate(const Vector3& distance, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void setOrientation(const Quaternion& orientation);
-            void rotate(const Quaternion& rotation, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void yaw(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void pitch(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void roll(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL);
-            void lookAt(const Vector3& target, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
-            void setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
+            //void attachPhysicalObject(WorldEntity* object);
 
-            inline void setVelocity(const Vector3& velocity)
-                { this->velocity_ = 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_; }
+            //// Bullet btMotionState related
+            //void setWorldTransform(const btTransform& worldTrans)
+            //{
+            //    this->node_->setPosition(worldTrans.getOrigin().x(), worldTrans.getOrigin().y(), worldTrans.getOrigin().z());
+            //    this->node_->setOrientation(worldTrans.getRotation().w(), worldTrans.getRotation().x(), worldTrans.getRotation().y(), worldTrans.getRotation().z());
+            //    //this->velocity_.x = this->physicalBody_->
+            //}
 
-            inline void setAcceleration(const Vector3& acceleration)
-                { this->acceleration_ = acceleration; }
-            inline void setAcceleration(float x, float y, float z)
-                { this->acceleration_.x = x; this->acceleration_.y = y; this->acceleration_.z = z; }
-            inline const Vector3& getAcceleration() const
-                { return this->acceleration_; }
-
-            inline void setRotationAxis(const Vector3& axis)
-                { this->rotationAxis_ = axis; this->rotationAxis_.normalise(); }
-            inline void setRotationAxis(float x, float y, float z)
-                { this->rotationAxis_.x = x; this->rotationAxis_.y = y; this->rotationAxis_.z = z; rotationAxis_.normalise(); }
-            inline const Vector3& getRotationAxis() const
-                { return this->rotationAxis_; }
-
-            inline void setRotationRate(const Degree& angle)
-                { this->rotationRate_ = angle; }
-            inline void setRotationRate(const Radian& angle)
-                { this->rotationRate_ = angle; }
-            inline const Degree& getRotationRate() const
-                { return this->rotationRate_; }
-
-            inline void setMomentum(const Degree& angle)
-                { this->momentum_ = angle; }
-            inline void setMomentum(const Radian& angle)
-                { this->momentum_ = angle; }
-            inline const Degree& getMomentum() const
-                { return this->momentum_; }
-
-        private:
-            void clientConnected(unsigned int clientID);
-            void clientDisconnected(unsigned int clientID);
-            void resynchronize();
-
-            void overwritePosition();
-            void overwriteOrientation();
-
-            Vector3 velocity_;
-            Vector3 acceleration_;
-            Vector3 rotationAxis_;
-            Degree rotationRate_;
-            Degree momentum_;
-
-            Vector3 overwrite_position_;
-            Quaternion overwrite_orientation_;
+            //// Bullet btMotionState related
+            //void getWorldTransform(btTransform& worldTrans) const
+            //{
+            //    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));
+            //}
     };
 }
Index: code/branches/physics/src/orxonox/objects/worldentities/PositionableEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/PositionableEntity.cc	(revision 2178)
+++ code/branches/physics/src/orxonox/objects/worldentities/PositionableEntity.cc	(revision 2178)
@@ -0,0 +1,63 @@
+/*
+ *   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 2178)
+++ code/branches/physics/src/orxonox/objects/worldentities/PositionableEntity.h	(revision 2178)
@@ -0,0 +1,79 @@
+/*
+ *   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();
+
+            using WorldEntity::setPosition;
+            using WorldEntity::translate;
+            using WorldEntity::setOrientation;
+            using WorldEntity::rotate;
+            using WorldEntity::yaw;
+            using WorldEntity::pitch;
+            using WorldEntity::roll;
+            using WorldEntity::lookAt;
+            using WorldEntity::setDirection;
+
+            inline void setPosition(const Vector3& position)
+                { this->node_->setPosition(position); }
+            inline void translate(const Vector3& distance, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL)
+                { this->node_->translate(distance, relativeTo); }
+            inline void setOrientation(const Quaternion& orientation)
+                { this->node_->setOrientation(orientation); }
+            inline void rotate(const Quaternion& rotation, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL)
+                { this->node_->rotate(rotation, relativeTo); }
+            inline void yaw(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL)
+                { this->node_->yaw(angle, relativeTo); }
+            inline void pitch(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL)
+                { this->node_->pitch(angle, relativeTo); }
+            inline void roll(const Degree& angle, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL)
+                { this->node_->roll(angle, relativeTo); }
+            inline void lookAt(const Vector3& target, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z)
+                { this->node_->lookAt(target, relativeTo, localDirectionVector); }
+            inline void setDirection(const Vector3& direction, Ogre::Node::TransformSpace relativeTo = Ogre::Node::TS_LOCAL, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z)
+                { this->node_->setDirection(direction, relativeTo, localDirectionVector); }
+
+        private:
+            //void attachPhysicalObject(WorldEntity* object);
+    };
+}
+
+#endif /* _PositionableEntity_H__ */
Index: code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2177)
+++ code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2178)
@@ -32,4 +32,5 @@
 #include <cassert>
 #include <OgreSceneManager.h>
+#include "BulletCollision/CollisionShapes/btSphereShape.h"
 
 #include "core/CoreIncludes.h"
@@ -63,4 +64,8 @@
         this->node_->setOrientation(Quaternion::IDENTITY);
 
+        // Default behaviour does not include physics
+        this->bAddedToPhysicalWorld_ = false;
+        this->physicalBody_ = 0;
+
         this->registerVariables();
     }
@@ -73,4 +78,14 @@
             if (this->getScene()->getSceneManager())
                 this->getScene()->getSceneManager()->destroySceneNode(this->node_->getName());
+            
+            // Physics is not guaranteed, so check first
+            if (this->physicalBody_)
+            {
+                if (this->bAddedToPhysicalWorld_)
+                    this->getScene()->getPhysicalWorld()->removeRigidBody(this->physicalBody_);
+                if (this->physicalBody_->getCollisionShape())
+                    delete this->physicalBody_->getCollisionShape();
+                delete this->physicalBody_;
+            }
         }
     }
@@ -89,4 +104,5 @@
         XMLPortParamTemplate(WorldEntity, "scale3D", setScale3D, getScale3D, xmlelement, mode, const Vector3&);
         XMLPortParam(WorldEntity, "scale", setScale, getScale, xmlelement, mode);
+        XMLPortParam(WorldEntity, "collisionRadius", setcollisionRadius, getcollisionRadius, xmlelement, mode);
 
         XMLPortObject(WorldEntity, WorldEntity, "attached", attach, getAttachedObject, xmlelement, mode);
@@ -127,4 +143,7 @@
         object->parent_ = this;
         object->parentID_ = this->getObjectID();
+
+        // Do the physical connection if required
+        this->attachPhysicalObject(object);
     }
 
@@ -150,3 +169,36 @@
         return 0;
     }
+
+    void WorldEntity::createPhysicalBody()
+    {
+        // Note: The motion state will be configured in a derived class.
+        btRigidBody::btRigidBodyConstructionInfo bodyConstructionInfo(0, this, 0, btVector3(0,0,0));
+        this->physicalBody_ = new btRigidBody(bodyConstructionInfo);
+        this->getScene()->getPhysicalWorld()->addRigidBody(this->physicalBody_);
+        this->bAddedToPhysicalWorld_ = true;
+    }
+
+    void WorldEntity::setcollisionRadius(float radius)
+    {
+        if (!this->physicalBody_)
+            createPhysicalBody();
+
+        // destroy old onw first
+        btCollisionShape* oldShape = this->physicalBody_->getCollisionShape();
+        if (oldShape)
+            delete oldShape;
+
+        this->physicalBody_->setCollisionShape(new btSphereShape(btScalar(radius)));
+    }
+
+    float WorldEntity::getcollisionRadius()
+    {
+        if (this->physicalBody_)
+        {
+            btSphereShape* sphere = dynamic_cast<btSphereShape*>(this->physicalBody_->getCollisionShape());
+            if (sphere)
+                return (float)sphere->getRadius();
+        }
+        return 0.0f;
+    }
 }
Index: code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h	(revision 2177)
+++ code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h	(revision 2178)
@@ -33,6 +33,8 @@
 
 #define OGRE_FORCE_ANGLE_TYPES
+#include <OgreSceneNode.h>
 
-#include <OgreSceneNode.h>
+#include "LinearMath/btMotionState.h"
+#include "BulletDynamics/Dynamics/btRigidBody.h"
 
 #include "network/Synchronisable.h"
@@ -42,5 +44,5 @@
 namespace orxonox
 {
-    class _OrxonoxExport WorldEntity : public BaseObject, public network::Synchronisable
+    class _OrxonoxExport WorldEntity : public BaseObject, public network::Synchronisable, public btMotionState
     {
         public:
@@ -125,4 +127,11 @@
                 { this->node_->scale(scale, scale, scale); }
 
+            void setcollisionRadius(float radius);
+            float getcollisionRadius();
+
+            bool hasPhysics()  { return this->physicalBody_; }
+            bool isKinematic() { return this->physicalBody_ && this->physicalBody_->isKinematicObject(); }
+            bool isDynamic()   { return this->physicalBody_ && !this->physicalBody_->isStaticOrKinematicObject(); }
+
             void attach(WorldEntity* object);
             void detach(WorldEntity* object);
@@ -139,5 +148,12 @@
 
         protected:
+            //virtual btCollisionShape* getCollisionShape() = 0;
+
+            void createPhysicalBody();
+            virtual void attachPhysicalObject(WorldEntity* object) { }
+
             Ogre::SceneNode* node_;
+            bool bAddedToPhysicalWorld_;
+            btRigidBody* physicalBody_;
 
         private:
@@ -155,4 +171,14 @@
                 { this->roll(angle); }
 
+            // Bullet btMotionState related
+            virtual void setWorldTransform(const btTransform& worldTrans)
+            {
+            }
+
+            // Bullet btMotionState related
+            virtual void getWorldTransform(btTransform& worldTrans) const
+            {
+            }
+
             WorldEntity* parent_;
             unsigned int parentID_;
Index: code/branches/physics/visual_studio/vc8/bullet_collision.vcproj
===================================================================
--- code/branches/physics/visual_studio/vc8/bullet_collision.vcproj	(revision 2177)
+++ code/branches/physics/visual_studio/vc8/bullet_collision.vcproj	(revision 2178)
@@ -494,4 +494,8 @@
 			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 			>
+			<File
+				RelativePath="..\..\src\bullet\btBulletCollisionCommon.h"
+				>
+			</File>
 			<Filter
 				Name="BroadphaseCollision"
Index: code/branches/physics/visual_studio/vc8/bullet_dynamics.vcproj
===================================================================
--- code/branches/physics/visual_studio/vc8/bullet_dynamics.vcproj	(revision 2177)
+++ code/branches/physics/visual_studio/vc8/bullet_dynamics.vcproj	(revision 2178)
@@ -214,4 +214,8 @@
 			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 			>
+			<File
+				RelativePath="..\..\src\bullet\btBulletDynamicsCommon.h"
+				>
+			</File>
 			<Filter
 				Name="ConstraintSolver"
Index: code/branches/physics/visual_studio/vc8/bullet_linearmath.vcproj
===================================================================
--- code/branches/physics/visual_studio/vc8/bullet_linearmath.vcproj	(revision 2177)
+++ code/branches/physics/visual_studio/vc8/bullet_linearmath.vcproj	(revision 2178)
@@ -154,4 +154,96 @@
 			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
 			>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btAabbUtil2.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btAlignedAllocator.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btAlignedObjectArray.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btConvexHull.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btDefaultMotionState.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btGeometryUtil.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btHashMap.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btIDebugDraw.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btList.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btMatrix3x3.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btMinMax.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btMotionState.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btPoint3.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btPoolAllocator.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btQuadWord.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btQuaternion.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btQuickprof.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btRandom.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btScalar.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btStackAlloc.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btTransform.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btTransformUtil.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bullet\LinearMath\btVector3.h"
+				>
+			</File>
 		</Filter>
 	</Files>
Index: code/branches/physics/visual_studio/vc8/orxonox.vcproj
===================================================================
--- code/branches/physics/visual_studio/vc8/orxonox.vcproj	(revision 2177)
+++ code/branches/physics/visual_studio/vc8/orxonox.vcproj	(revision 2178)
@@ -301,16 +301,12 @@
 					</File>
 					<File
-						RelativePath="..\..\src\orxonox\objects\worldentities\DynamicEntity.cc"
-						>
-					</File>
-					<File
-						RelativePath="..\..\src\orxonox\objects\worldentities\KinematicEntity.cc"
-						>
-					</File>
-					<File
 						RelativePath="..\..\src\orxonox\objects\worldentities\Light.cc"
 						>
 					</File>
 					<File
+						RelativePath="..\..\src\orxonox\objects\worldentities\LinearEntity.cc"
+						>
+					</File>
+					<File
 						RelativePath="..\..\src\orxonox\objects\worldentities\Model.cc"
 						>
@@ -326,4 +322,8 @@
 					<File
 						RelativePath="..\..\src\orxonox\objects\worldentities\ParticleSpawner.cc"
+						>
+					</File>
+					<File
+						RelativePath="..\..\src\orxonox\objects\worldentities\PositionableEntity.cc"
 						>
 					</File>
@@ -419,8 +419,40 @@
 						RelativePath="..\..\src\orxonox\objects\weaponSystem\Munition.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\weaponSystem\Weapon.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
@@ -575,60 +607,300 @@
 						RelativePath="..\..\src\orxonox\objects\quest\AddQuest.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\AddQuestHint.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\AddReward.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\ChangeQuestStatus.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\CompleteQuest.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\FailQuest.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\GlobalQuest.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\LocalQuest.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\Quest.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\QuestDescription.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\QuestEffect.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\QuestHint.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\QuestItem.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\QuestManager.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 					<File
 						RelativePath="..\..\src\orxonox\objects\quest\Rewardable.cc"
 						>
+						<FileConfiguration
+							Name="Debug|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
+						<FileConfiguration
+							Name="Release|Win32"
+							ExcludedFromBuild="true"
+							>
+							<Tool
+								Name="VCCLCompilerTool"
+							/>
+						</FileConfiguration>
 					</File>
 				</Filter>
@@ -941,16 +1213,12 @@
 					</File>
 					<File
-						RelativePath="..\..\src\orxonox\objects\worldentities\DynamicEntity.h"
-						>
-					</File>
-					<File
-						RelativePath="..\..\src\orxonox\objects\worldentities\KinematicEntity.h"
-						>
-					</File>
-					<File
 						RelativePath="..\..\src\orxonox\objects\worldentities\Light.h"
 						>
 					</File>
 					<File
+						RelativePath="..\..\src\orxonox\objects\worldentities\LinearEntity.h"
+						>
+					</File>
+					<File
 						RelativePath="..\..\src\orxonox\objects\worldentities\Model.h"
 						>
@@ -966,4 +1234,8 @@
 					<File
 						RelativePath="..\..\src\orxonox\objects\worldentities\ParticleSpawner.h"
+						>
+					</File>
+					<File
+						RelativePath="..\..\src\orxonox\objects\worldentities\PositionableEntity.h"
 						>
 					</File>
