Index: code/branches/presentation/src/orxonox/objects/worldentities/WorldEntity.cc
===================================================================
--- code/branches/presentation/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2563)
+++ code/branches/presentation/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2565)
@@ -91,4 +91,5 @@
         this->friction_       = 0.5;
         this->bCollisionCallbackActive_ = false;
+        this->bCollisionResponseActive_ = true;
 
         this->registerVariables();
@@ -139,11 +140,12 @@
 
         // Physics
-        XMLPortParam(WorldEntity, "collisionType",  setCollisionTypeStr, getCollisionTypeStr, xmlelement, mode);
-        XMLPortParam(WorldEntity, "mass",           setMass,             getMass,             xmlelement, mode);
-        XMLPortParam(WorldEntity, "restitution",    setRestitution,      getRestitution,      xmlelement, mode);
-        XMLPortParam(WorldEntity, "angularFactor",  setAngularFactor,    getAngularFactor,    xmlelement, mode);
-        XMLPortParam(WorldEntity, "linearDamping",  setLinearDamping,    getLinearDamping,    xmlelement, mode);
-        XMLPortParam(WorldEntity, "angularDamping", setAngularDamping,   getAngularDamping,   xmlelement, mode);
-        XMLPortParam(WorldEntity, "friction",       setFriction,         getFriction,         xmlelement, mode);
+        XMLPortParam(WorldEntity, "collisionType",     setCollisionTypeStr,  getCollisionTypeStr,  xmlelement, mode);
+        XMLPortParam(WorldEntity, "collisionResponse", setCollisionResponse, hasCollisionResponse, xmlelement, mode);
+        XMLPortParam(WorldEntity, "mass",              setMass,              getMass,              xmlelement, mode);
+        XMLPortParam(WorldEntity, "restitution",       setRestitution,       getRestitution,       xmlelement, mode);
+        XMLPortParam(WorldEntity, "angularFactor",     setAngularFactor,     getAngularFactor,     xmlelement, mode);
+        XMLPortParam(WorldEntity, "linearDamping",     setLinearDamping,     getLinearDamping,     xmlelement, mode);
+        XMLPortParam(WorldEntity, "angularDamping",    setAngularDamping,    getAngularDamping,    xmlelement, mode);
+        XMLPortParam(WorldEntity, "friction",          setFriction,          getFriction,          xmlelement, mode);
 
         // Other attached WorldEntities
@@ -171,4 +173,6 @@
         registerVariable(this->bCollisionCallbackActive_,
                                                 variableDirection::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::collisionCallbackActivityChanged));
+        registerVariable(this->bCollisionResponseActive_,
+                                                variableDirection::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::collisionResponseActivityChanged));
         registerVariable((int&)this->collisionTypeSynchronised_,
                                                 variableDirection::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::collisionTypeChanged));
@@ -253,10 +257,10 @@
     }
 
-    //! Function is called to set the right flags in Bullet (if there is physics at all)
+    //! Function sets whether Bullet should issue a callback on collisions
     void WorldEntity::collisionCallbackActivityChanged()
     {
         if (this->hasPhysics())
         {
-            if (bCollisionCallbackActive_)
+            if (this->bCollisionCallbackActive_)
                 this->physicalBody_->setCollisionFlags(this->physicalBody_->getCollisionFlags() |
                     btCollisionObject::CF_CUSTOM_MATERIAL_CALLBACK);
@@ -264,4 +268,18 @@
                 this->physicalBody_->setCollisionFlags(this->physicalBody_->getCollisionFlags() &
                     ~btCollisionObject::CF_CUSTOM_MATERIAL_CALLBACK);
+        }
+    }
+
+    //! Function sets whether Bullet should react itself to a collision
+    void WorldEntity::collisionResponseActivityChanged()
+    {
+        if (this->hasPhysics())
+        {
+            if (this->bCollisionResponseActive_)
+                this->physicalBody_->setCollisionFlags(this->physicalBody_->getCollisionFlags() &
+                    ~btCollisionObject::CF_NO_CONTACT_RESPONSE);
+            else
+                this->physicalBody_->setCollisionFlags(this->physicalBody_->getCollisionFlags() |
+                    btCollisionObject::CF_NO_CONTACT_RESPONSE);
         }
     }
@@ -759,4 +777,5 @@
         internalSetPhysicsProps();
         collisionCallbackActivityChanged();
+        collisionResponseActivityChanged();
         if (bReactivatePhysics)
             activatePhysics();
