Index: code/branches/physics/src/orxonox/objects/worldentities/Billboard.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Billboard.cc	(revision 2292)
+++ code/branches/physics/src/orxonox/objects/worldentities/Billboard.cc	(revision 2296)
@@ -50,5 +50,5 @@
         {
             if (this->isInitialized() && this->billboard_.getBillboardSet())
-                this->getNode()->detachObject(this->billboard_.getName());
+                this->detachOgreObject(this->billboard_.getName());
         }
     }
@@ -75,5 +75,5 @@
             {
                 this->billboard_.setBillboardSet(this->getScene()->getSceneManager(), this->material_, this->colour_, 1);
-                this->getNode()->attachObject(this->billboard_.getBillboardSet());
+                this->attachOgreObject(this->billboard_.getBillboardSet());
                 this->billboard_.setVisible(this->isVisible());
             }
@@ -90,5 +90,5 @@
             {
                 this->billboard_.setBillboardSet(this->getScene()->getSceneManager(), this->material_, this->colour_, 1);
-                this->getNode()->attachObject(this->billboard_.getBillboardSet());
+                this->attachOgreObject(this->billboard_.getBillboardSet());
                 this->billboard_.setVisible(this->isVisible());
             }
Index: code/branches/physics/src/orxonox/objects/worldentities/Camera.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Camera.cc	(revision 2292)
+++ code/branches/physics/src/orxonox/objects/worldentities/Camera.cc	(revision 2296)
@@ -55,5 +55,5 @@
 
         this->camera_ = this->getScene()->getSceneManager()->createCamera(getUniqueNumberString());
-        this->getNode()->attachObject(this->camera_);
+        this->attachOgreObject(this->camera_);
 
         this->bHasFocus_ = false;
Index: code/branches/physics/src/orxonox/objects/worldentities/Light.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Light.cc	(revision 2292)
+++ code/branches/physics/src/orxonox/objects/worldentities/Light.cc	(revision 2296)
@@ -53,5 +53,5 @@
         if (this->getScene() && this->getScene()->getSceneManager())
         this->light_ = this->getScene()->getSceneManager()->createLight("Light" + convertToString(Light::lightCounter_s++));
-        this->getNode()->attachObject(this->light_);
+        this->attachOgreObject(this->light_);
 
         this->registerVariables();
Index: code/branches/physics/src/orxonox/objects/worldentities/Model.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/Model.cc	(revision 2292)
+++ code/branches/physics/src/orxonox/objects/worldentities/Model.cc	(revision 2296)
@@ -48,5 +48,5 @@
     {
         if (this->isInitialized() && this->mesh_.getEntity())
-            this->getNode()->detachObject(this->mesh_.getEntity());
+            this->detachOgreObject(this->mesh_.getEntity());
     }
 
@@ -68,5 +68,5 @@
     {
         if (this->mesh_.getEntity())
-            this->getNode()->detachObject(this->mesh_.getEntity());
+            this->detachOgreObject(this->mesh_.getEntity());
 
         this->mesh_.setMeshSource(this->getScene()->getSceneManager(), this->meshSrc_);
@@ -74,5 +74,5 @@
         if (this->mesh_.getEntity())
         {
-            this->getNode()->attachObject(this->mesh_.getEntity());
+            this->attachOgreObject(this->mesh_.getEntity());
             this->mesh_.getEntity()->setCastShadows(this->bCastShadows_);
             this->mesh_.setVisible(this->isVisible());
Index: code/branches/physics/src/orxonox/objects/worldentities/ParticleEmitter.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/ParticleEmitter.cc	(revision 2292)
+++ code/branches/physics/src/orxonox/objects/worldentities/ParticleEmitter.cc	(revision 2296)
@@ -61,5 +61,8 @@
     {
         if (this->isInitialized() && this->particles_)
+        {
+            this->detachOgreObject(this->particles_->getParticleSystem());
             delete this->particles_;
+        }
     }
 
@@ -104,5 +107,5 @@
             {
                 this->particles_ = new ParticleInterface(this->getScene()->getSceneManager(), this->source_, this->LOD_);
-                this->particles_->addToSceneNode(this->getNode());
+                this->attachOgreObject(particles_->getParticleSystem());
                 this->particles_->setVisible(this->isVisible());
                 this->particles_->setEnabled(this->isActive());
Index: code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h	(revision 2292)
+++ code/branches/physics/src/orxonox/objects/worldentities/WorldEntity.h	(revision 2296)
@@ -61,5 +61,5 @@
             void registerVariables();
 
-            inline Ogre::SceneNode* getNode() const
+            inline const Ogre::SceneNode* getNode() const
                 { return this->node_; }
 
@@ -145,4 +145,11 @@
                 { return this->children_; }
 
+            inline void attachOgreObject(Ogre::MovableObject* object)
+                { this->node_->attachObject(object); }
+            inline void detachOgreObject(Ogre::MovableObject* object)
+                { this->node_->detachObject(object); }
+            inline Ogre::MovableObject* detachOgreObject(const Ogre::String& name)
+                { return this->node_->detachObject(name); }
+
             inline void attachToParent(WorldEntity* parent)
                 { parent->attach(this); }
Index: code/branches/physics/src/orxonox/objects/worldentities/triggers/Trigger.cc
===================================================================
--- code/branches/physics/src/orxonox/objects/worldentities/triggers/Trigger.cc	(revision 2292)
+++ code/branches/physics/src/orxonox/objects/worldentities/triggers/Trigger.cc	(revision 2296)
@@ -71,5 +71,5 @@
     }
 
-    this->getNode()->attachObject(this->debugBillboard_.getBillboardSet());
+    this->attachOgreObject(this->debugBillboard_.getBillboardSet());
     this->setObjectMode(0x0);
   }
Index: code/branches/physics/src/orxonox/tools/ParticleInterface.cc
===================================================================
--- code/branches/physics/src/orxonox/tools/ParticleInterface.cc	(revision 2292)
+++ code/branches/physics/src/orxonox/tools/ParticleInterface.cc	(revision 2296)
@@ -56,5 +56,4 @@
 
         this->scenemanager_ = scenemanager;
-        this->sceneNode_ = 0;
 
         this->bEnabled_ = true;
@@ -72,24 +71,5 @@
     {
         this->particleSystem_->removeAllEmitters();
-        this->detachFromSceneNode();
         this->scenemanager_->destroyParticleSystem(particleSystem_);
-    }
-
-    void ParticleInterface::addToSceneNode(Ogre::SceneNode* sceneNode)
-    {
-        if (this->sceneNode_)
-            this->detachFromSceneNode();
-
-        this->sceneNode_ = sceneNode;
-        this->sceneNode_->attachObject(this->particleSystem_);
-    }
-
-    void ParticleInterface::detachFromSceneNode()
-    {
-        if (this->sceneNode_)
-        {
-            this->sceneNode_->detachObject(this->particleSystem_);
-            this->sceneNode_ = 0;
-        }
     }
 
Index: code/branches/physics/src/orxonox/tools/ParticleInterface.h
===================================================================
--- code/branches/physics/src/orxonox/tools/ParticleInterface.h	(revision 2292)
+++ code/branches/physics/src/orxonox/tools/ParticleInterface.h	(revision 2296)
@@ -54,7 +54,4 @@
                 { return this->particleSystem_; }
 
-            void addToSceneNode(Ogre::SceneNode* sceneNode);
-            void detachFromSceneNode();
-
             Ogre::ParticleEmitter* createNewEmitter();
             Ogre::ParticleEmitter* getEmitter(unsigned int emitterNr) const;
@@ -96,5 +93,4 @@
             static unsigned int       counter_s;
 
-            Ogre::SceneNode*          sceneNode_;
             Ogre::ParticleSystem*     particleSystem_;
             bool                      bVisible_;
