Index: /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/Backlight.cc
===================================================================
--- /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/Backlight.cc	(revision 2206)
+++ /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/Backlight.cc	(revision 2207)
@@ -35,4 +35,5 @@
 #include "core/Core.h"
 #include "core/CoreIncludes.h"
+#include "core/Executor.h"
 #include "core/XMLPort.h"
 #include "objects/Scene.h"
@@ -51,6 +52,10 @@
         this->width_ = 0;
         this->length_ = 1.0f;
-        this->lifetime_ = 1.0f;
+        this->lifetime_ = 0.001f;
+        this->turnofftime_ = 0.5f;
+        this->bTurningOff_ = false;
         this->maxelements_ = 1;
+
+        this->tickcount_ = 0;
 
         if (Core::showsGraphics())
@@ -61,11 +66,8 @@
 
             this->ribbonTrail_ = this->getScene()->getSceneManager()->createRibbonTrail(this->getNode()->getName());
+            this->ribbonTrail_->addNode(this->getNode());
             this->ribbonTrailNode_ = this->getScene()->getRootSceneNode()->createChildSceneNode();
             this->ribbonTrailNode_->attachObject(this->ribbonTrail_);
-            this->ribbonTrail_->addNode(this->getNode());
-
-            this->ribbonTrail_->setMaxChainElements(this->maxelements_);
-            this->ribbonTrail_->setTrailLength(this->length_);
-            this->ribbonTrail_->setInitialWidth(0, this->width_);
+            this->ribbonTrail_->setInitialWidth(0, 0);
         }
 
@@ -97,4 +99,5 @@
         XMLPortParam(Backlight, "elements",      setMaxElements,   getMaxElements,   xmlelement, mode).defaultValues(10);
         XMLPortParam(Backlight, "lifetime",      setLifetime,      getLifetime,      xmlelement, mode).defaultValues(1.0f);
+        XMLPortParam(Backlight, "turnofftime",   setTurnOffTime,   getTurnOffTime,   xmlelement, mode).defaultValues(0.5f);
         XMLPortParam(Backlight, "trailmaterial", setTrailMaterial, getTrailMaterial, xmlelement, mode);
     }
@@ -113,5 +116,5 @@
         Billboard::changedColour();
 
-        if (this->ribbonTrail_ && this->isActive())
+        if (this->ribbonTrail_ && this->isActive() && this->tickcount_ >= 2)
             this->ribbonTrail_->setInitialColour(0, this->getColour());
     }
@@ -119,5 +122,5 @@
     void Backlight::update_width()
     {
-        if (this->ribbonTrail_)
+        if (this->ribbonTrail_ && this->tickcount_ >= 2)
             this->ribbonTrail_->setInitialWidth(0, this->width_);
         this->update_lifetime();
@@ -126,5 +129,5 @@
     void Backlight::update_lifetime()
     {
-        if (this->ribbonTrail_)
+        if (this->ribbonTrail_ && this->tickcount_ >= 2)
         {
             this->ribbonTrail_->setWidthChange(0, this->width_ / this->lifetime_/* * Backlight::timeFactor_s*/);
@@ -135,11 +138,11 @@
     void Backlight::update_length()
     {
-//        if (this->ribbonTrail_)
-//            this->ribbonTrail_->setTrailLength(this->length_);
+        if (this->ribbonTrail_ && this->tickcount_ >= 2)
+            this->ribbonTrail_->setTrailLength(this->length_);
     }
 
     void Backlight::update_maxelements()
     {
-        if (this->ribbonTrail_)
+        if (this->ribbonTrail_ && this->tickcount_ >= 2)
             this->ribbonTrail_->setMaxChainElements(this->maxelements_);
     }
@@ -147,5 +150,5 @@
     void Backlight::update_trailmaterial()
     {
-        if (this->ribbonTrail_)
+        if (this->ribbonTrail_ && this->tickcount_ >= 2)
             this->ribbonTrail_->setMaterialName(this->trailmaterial_);
     }
@@ -168,23 +171,36 @@
                 this->ribbonTrail_->setInitialColour(0, this->getColour());
             else
-                this->ribbonTrail_->setInitialColour(0, 0, 0, 0, 0);
-        }
-    }
-
-    void Backlight::notifyAttached()
-    {
-        Billboard::notifyAttached();
-
-//        if (this->ribbonTrail_)
-//            this->ribbonTrail_->clearChain(0);
-
-//        if (this->ribbonTrail_)
-//            this->ribbonTrail_->setTrailLength(this->length_);
+            {
+                this->bTurningOff_ = true;
+                this->turnofftimer_.setTimer(this->turnofftime_, false, this, createExecutor(createFunctor(&Backlight::stopturnoff)));
+            }
+        }
+    }
+
+    void Backlight::stopturnoff()
+    {
+        this->bTurningOff_ = false;
     }
 
     void Backlight::tick(float dt)
     {
-        if (this->ribbonTrail_)
-            this->ribbonTrail_->setTrailLength(this->length_);
+        if (this->tickcount_ < 2)
+        {
+            ++this->tickcount_;
+            if (this->tickcount_ == 2)
+            {
+                this->changedColour();
+                this->update_width();
+                this->update_lifetime();
+                this->update_length();
+                this->update_maxelements();
+                this->update_trailmaterial();
+            }
+        }
+
+        if (this->bTurningOff_ && this->ribbonTrail_)
+        {
+            this->ribbonTrail_->setInitialColour(0, this->ribbonTrail_->getInitialColour(0) - this->getColour() / this->turnofftime_ * dt);
+        }
     }
 
Index: /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/Backlight.h
===================================================================
--- /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/Backlight.h	(revision 2206)
+++ /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/Backlight.h	(revision 2207)
@@ -33,4 +33,5 @@
 #include "Billboard.h"
 #include "objects/Tickable.h"
+#include "tools/Timer.h"
 
 namespace orxonox
@@ -59,4 +60,9 @@
                 { return this->lifetime_; }
 
+            inline void setTurnOffTime(float turnofftime)
+                { this->turnofftime_ = turnofftime; }
+            inline float getTurnOffTime() const
+                { return this->turnofftime_; }
+
             inline void setLength(float length)
                 { this->length_ = length; this->update_length(); }
@@ -74,8 +80,6 @@
                 { return this->trailmaterial_; }
 
-        protected:
-            virtual void notifyAttached();
-
         private:
+            void stopturnoff();
             virtual void changedColour();
             void update_width();
@@ -90,6 +94,10 @@
             float length_;
             float lifetime_;
+            float turnofftime_;
+            bool bTurningOff_;
             size_t maxelements_;
             std::string trailmaterial_;
+            char tickcount_;
+            Timer<Backlight> turnofftimer_;
     };
 
Index: /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/Billboard.cc
===================================================================
--- /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/Billboard.cc	(revision 2206)
+++ /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/Billboard.cc	(revision 2207)
@@ -73,4 +73,7 @@
     void Billboard::changedMaterial()
     {
+        if (this->material_ == "")
+            return;
+
         if (!this->billboard_.getBillboardSet())
         {
Index: /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/WorldEntity.cc
===================================================================
--- /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2206)
+++ /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/WorldEntity.cc	(revision 2207)
@@ -131,6 +131,4 @@
         object->parent_ = this;
         object->parentID_ = this->getObjectID();
-
-        object->notifyAttached();
     }
 
Index: /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/WorldEntity.h
===================================================================
--- /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/WorldEntity.h	(revision 2206)
+++ /code/branches/objecthierarchy2/src/orxonox/objects/worldentities/WorldEntity.h	(revision 2207)
@@ -139,6 +139,4 @@
 
         protected:
-            virtual void notifyAttached() {}
-
             Ogre::SceneNode* node_;
 
