Index: code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.cc
===================================================================
--- code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.cc	(revision 2114)
+++ code/branches/objecthierarchy/src/orxonox/tools/BillboardSet.cc	(revision 2161)
@@ -36,4 +36,5 @@
 #include <OgreBillboard.h>
 
+#include "core/Core.h"
 #include "util/Convert.h"
 #include "util/String.h"
@@ -70,11 +71,15 @@
         try
         {
-            this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
-            this->billboardSet_->createBillboard(position);
-            this->billboardSet_->setMaterialName(file);
+            if (Core::showsGraphics())
+            {
+                this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
+                this->billboardSet_->createBillboard(position);
+                this->billboardSet_->setMaterialName(file);
+            }
         }
         catch (...)
         {
             COUT(1) << "Error: Couln't load billboard \"" << file << "\"" << std::endl;
+            this->billboardSet_ = 0;
         }
 
@@ -89,11 +94,15 @@
         try
         {
-            this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
-            this->billboardSet_->createBillboard(position, colour);
-            this->billboardSet_->setMaterialName(file);
+            if (Core::showsGraphics())
+            {
+                this->billboardSet_ = scenemanager->createBillboardSet("Billboard" + convertToString(BillboardSet::billboardSetCounter_s++), count);
+                this->billboardSet_->createBillboard(position, colour);
+                this->billboardSet_->setMaterialName(file);
+            }
         }
         catch (...)
         {
             COUT(1) << "Error: Couln't load billboard \"" << file << "\"" << std::endl;
+            this->billboardSet_ = 0;
         }
 
@@ -105,4 +114,5 @@
         if (this->billboardSet_ && this->scenemanager_)
             this->scenemanager_->destroyBillboardSet(this->billboardSet_);
+        this->billboardSet_ = 0;
     }
 
Index: code/branches/objecthierarchy/src/orxonox/tools/Mesh.cc
===================================================================
--- code/branches/objecthierarchy/src/orxonox/tools/Mesh.cc	(revision 2114)
+++ code/branches/objecthierarchy/src/orxonox/tools/Mesh.cc	(revision 2161)
@@ -73,4 +73,5 @@
             {
                 COUT(1) << "Error: Couln't load mesh \"" << meshsource << "\"" << std::endl;
+                this->entity_ = 0;
             }
         }
Index: code/branches/objecthierarchy/src/orxonox/tools/ParticleInterface.cc
===================================================================
--- code/branches/objecthierarchy/src/orxonox/tools/ParticleInterface.cc	(revision 2114)
+++ code/branches/objecthierarchy/src/orxonox/tools/ParticleInterface.cc	(revision 2161)
@@ -41,4 +41,5 @@
 
 #include "GraphicsEngine.h"
+#include "core/Core.h"
 #include "core/CoreIncludes.h"
 #include "util/Convert.h"
@@ -57,4 +58,5 @@
         this->scenemanager_ = scenemanager;
         this->sceneNode_ = 0;
+        this->particleSystem_ = 0;
 
         this->bEnabled_ = true;
@@ -62,7 +64,18 @@
         this->bAllowedByLOD_ = true;
 
-        this->particleSystem_ = this->scenemanager_->createParticleSystem("particles" + getConvertedValue<unsigned int, std::string>(ParticleInterface::counter_s++), templateName);
-        this->particleSystem_->setSpeedFactor(1.0f);
-        //this->particleSystem_->setSpeedFactor(Orxonox::getInstance().getTimeFactor());
+        if (Core::showsGraphics())
+        {
+            try
+            {
+                this->particleSystem_ = this->scenemanager_->createParticleSystem("particles" + getConvertedValue<unsigned int, std::string>(ParticleInterface::counter_s++), templateName);
+                this->particleSystem_->setSpeedFactor(1.0f);
+//                this->particleSystem_->setSpeedFactor(Orxonox::getInstance().getTimeFactor());
+            }
+            catch (...)
+            {
+                COUT(1) << "Error: Couln't load particle system \"" << templateName << "\"" << std::endl;
+                this->particleSystem_ = 0;
+            }
+        }
 
         this->setDetailLevel((unsigned int)detaillevel);
@@ -71,7 +84,10 @@
     ParticleInterface::~ParticleInterface()
     {
-        this->particleSystem_->removeAllEmitters();
-        this->detachFromSceneNode();
-        this->scenemanager_->destroyParticleSystem(particleSystem_);
+        if (this->particleSystem_)
+        {
+            this->particleSystem_->removeAllEmitters();
+            this->detachFromSceneNode();
+            this->scenemanager_->destroyParticleSystem(this->particleSystem_);
+        }
     }
 
@@ -81,6 +97,9 @@
             this->detachFromSceneNode();
 
-        this->sceneNode_ = sceneNode;
-        this->sceneNode_->attachObject(this->particleSystem_);
+        if (this->particleSystem_)
+        {
+            this->sceneNode_ = sceneNode;
+            this->sceneNode_->attachObject(this->particleSystem_);
+        }
     }
 
@@ -89,5 +108,6 @@
         if (this->sceneNode_)
         {
-            this->sceneNode_->detachObject(this->particleSystem_);
+            if (this->particleSystem_)
+                this->sceneNode_->detachObject(this->particleSystem_);
             this->sceneNode_ = 0;
         }
@@ -96,5 +116,5 @@
     Ogre::ParticleEmitter* ParticleInterface::createNewEmitter()
     {
-        if (this->particleSystem_->getNumEmitters() > 0)
+        if (this->particleSystem_ && this->particleSystem_->getNumEmitters() > 0)
         {
             Ogre::ParticleEmitter* newemitter = this->particleSystem_->addEmitter(this->particleSystem_->getEmitter(0)->getType());
@@ -107,5 +127,5 @@
     Ogre::ParticleEmitter* ParticleInterface::getEmitter(unsigned int emitterNr) const
     {
-        if (emitterNr < this->particleSystem_->getNumEmitters())
+        if (this->particleSystem_ && (emitterNr < this->particleSystem_->getNumEmitters()))
             return this->particleSystem_->getEmitter(emitterNr);
         else
@@ -114,23 +134,30 @@
     void ParticleInterface::removeEmitter(unsigned int emitterNr)
     {
-        if (emitterNr < this->particleSystem_->getNumEmitters())
+        if (this->particleSystem_ && (emitterNr < this->particleSystem_->getNumEmitters()))
             this->particleSystem_->removeEmitter(emitterNr);
     }
     void ParticleInterface::removeAllEmitters()
     {
-        this->particleSystem_->removeAllEmitters();
+        if (this->particleSystem_)
+            this->particleSystem_->removeAllEmitters();
     }
     unsigned int ParticleInterface::getNumEmitters() const
     {
-        return this->particleSystem_->getNumEmitters();
+        if (this->particleSystem_)
+            return this->particleSystem_->getNumEmitters();
+        else
+            return 0;
     }
 
     Ogre::ParticleAffector* ParticleInterface::addAffector(const std::string& name)
     {
-        return this->particleSystem_->addAffector(name);
+        if (this->particleSystem_)
+            return this->particleSystem_->addAffector(name);
+        else
+            return 0;
     }
     Ogre::ParticleAffector* ParticleInterface::getAffector(unsigned int affectorNr) const
     {
-        if (affectorNr < this->particleSystem_->getNumAffectors())
+        if (this->particleSystem_ && (affectorNr < this->particleSystem_->getNumAffectors()))
             return this->particleSystem_->getAffector(affectorNr);
         else
@@ -139,14 +166,18 @@
     void ParticleInterface::removeAffector(unsigned int affectorNr)
     {
-        if (affectorNr < this->particleSystem_->getNumAffectors())
+        if (this->particleSystem_ && (affectorNr < this->particleSystem_->getNumAffectors()))
             this->particleSystem_->removeAffector(affectorNr);
     }
     void ParticleInterface::removeAllAffectors()
     {
-        this->particleSystem_->removeAllAffectors();
+        if (this->particleSystem_)
+            this->particleSystem_->removeAllAffectors();
     }
     unsigned int ParticleInterface::getNumAffectors() const
     {
-        return this->particleSystem_->getNumAffectors();
+        if (this->particleSystem_)
+            return this->particleSystem_->getNumAffectors();
+        else
+            return 0;
     }
 
@@ -155,6 +186,7 @@
         this->bEnabled_ = enable;
 
-        for (unsigned int i = 0; i < this->particleSystem_->getNumEmitters(); i++)
-            this->particleSystem_->getEmitter(i)->setEnabled(this->bEnabled_ && this->bAllowedByLOD_);
+        if (this->particleSystem_)
+            for (unsigned int i = 0; i < this->particleSystem_->getNumEmitters(); i++)
+                this->particleSystem_->getEmitter(i)->setEnabled(this->bEnabled_ && this->bAllowedByLOD_);
     }
 
@@ -163,5 +195,6 @@
         this->bVisible_ = visible;
 
-        this->particleSystem_->setVisible(this->bVisible_ && this->bAllowedByLOD_);
+        if (this->particleSystem_)
+            this->particleSystem_->setVisible(this->bVisible_ && this->bAllowedByLOD_);
     }
 
@@ -169,5 +202,6 @@
     {
         this->detaillevel_ = level;
-        this->detailLevelChanged(GraphicsEngine::getInstance().getDetailLevelParticle());
+        if (GraphicsEngine::getInstancePtr())
+            this->detailLevelChanged(GraphicsEngine::getInstance().getDetailLevelParticle());
     }
 
@@ -190,20 +224,32 @@
     void ParticleInterface::setSpeedFactor(float factor)
     {
-        //this->particleSystem_->setSpeedFactor(Orxonox::getInstance().getTimeFactor() * factor);
-        this->particleSystem_->setSpeedFactor(1.0f * factor);
+        if (this->particleSystem_)
+        {
+//            this->particleSystem_->setSpeedFactor(Orxonox::getInstance().getTimeFactor() * factor);
+            this->particleSystem_->setSpeedFactor(1.0f * factor);
+        }
     }
     float ParticleInterface::getSpeedFactor() const
     {
-        //return (this->particleSystem_->getSpeedFactor() / Orxonox::getInstance().getTimeFactor());
-        return (this->particleSystem_->getSpeedFactor() / 1.0f);
+        if (this->particleSystem_)
+        {
+//            return (this->particleSystem_->getSpeedFactor() / Orxonox::getInstance().getTimeFactor());
+            return (this->particleSystem_->getSpeedFactor() / 1.0f);
+        }
+        else
+            return 1.0f;
     }
 
     bool ParticleInterface::getKeepParticlesInLocalSpace() const
     {
-        return this->particleSystem_->getKeepParticlesInLocalSpace();
+        if (this->particleSystem_)
+            return this->particleSystem_->getKeepParticlesInLocalSpace();
+        else
+            return false;
     }
     void ParticleInterface::setKeepParticlesInLocalSpace(bool keep)
     {
-        this->particleSystem_->setKeepParticlesInLocalSpace(keep);
+        if (this->particleSystem_)
+            this->particleSystem_->setKeepParticlesInLocalSpace(keep);
     }
 }
