Index: code/branches/hudimprovements/data/overlays/HUDTemplates3.oxo
===================================================================
--- code/branches/hudimprovements/data/overlays/HUDTemplates3.oxo	(revision 7931)
+++ code/branches/hudimprovements/data/overlays/HUDTemplates3.oxo	(revision 7932)
@@ -67,5 +67,5 @@
     <HUDBoostBar
      name          = "BoostBar1"
-     background    = "Orxonox/BarBackground"
+     backgroundtex = "bar1.png"
      size          = "0.35, 0.05"
      position      = "0.0 , 1.0 "
Index: code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.cc
===================================================================
--- code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.cc	(revision 7931)
+++ code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.cc	(revision 7932)
@@ -26,4 +26,5 @@
  *      Fabian 'x3n' Landau
  *      Reto Grieder
+ *      Benjamin Knecht
  *
  */
Index: code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.h
===================================================================
--- code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.h	(revision 7931)
+++ code/branches/hudimprovements/src/modules/overlays/hud/HUDBar.h	(revision 7932)
@@ -26,4 +26,5 @@
  *      Fabian 'x3n' Landau
  *      Reto Grieder
+ *      Benjamin Knecht
  *
  */
Index: code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.cc
===================================================================
--- code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.cc	(revision 7931)
+++ code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.cc	(revision 7932)
@@ -43,4 +43,6 @@
 
         this->owner_ = 0;
+        this->flashInterval_ = 0.25f;
+        this->flashDt_ = 0.0f;
     }
 
@@ -55,5 +57,22 @@
         if (this->owner_)
         {
-            this->show();
+            if (this->owner_->isBoostCoolingDown())
+            {
+                this->setBackgroundColour(ColourValue(0.7f, 0.2f, 0.2f));
+                if (this->flashDt_ <= 0.0f)
+                {
+                    this->flashDt_ = this->flashInterval_;
+                    this->setVisible(!this->isVisible());
+                }
+                else
+                    this->flashDt_ -= dt;
+            }
+            else
+            {
+                this->flashDt_ = 0.0f;
+                this->show();
+                this->setBackgroundColour(ColourValue(0.2f, 0.7f, 0.2f));
+            }
+
             float value = this->owner_->getBoostPower() / this->owner_->getInitialBoostPower();
             this->setValue(value);
Index: code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.h
===================================================================
--- code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.h	(revision 7931)
+++ code/branches/hudimprovements/src/modules/overlays/hud/HUDBoostBar.h	(revision 7932)
@@ -47,5 +47,7 @@
 
     private:
-        SpaceShip* owner_;
+        SpaceShip*  owner_;
+        float       flashInterval_;
+        float       flashDt_;
     };
 }
Index: code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 7931)
+++ code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 7932)
@@ -136,4 +136,5 @@
         XMLPortParam(OrxonoxOverlay, "correctaspect", setAspectCorrection,   getAspectCorrection,   xmlelement, mode);
         XMLPortParam(OrxonoxOverlay, "background",    setBackgroundMaterial, getBackgroundMaterial, xmlelement, mode);
+        XMLPortParam(OrxonoxOverlay, "backgroundtex", setBackgroundTexture,  getBackgroundTexture,  xmlelement, mode);
     }
 
@@ -162,4 +163,32 @@
         if (this->background_)
             return this->background_->getMaterialName();
+        else
+            return BLANKSTRING;
+    }
+
+    //! Sets the background texture name and creates a new material if necessary
+    void OrxonoxOverlay::setBackgroundTexture(const std::string& texture)
+    {
+        if (this->background_ && this->background_->getMaterial().isNull() && !texture.empty())
+        {
+            // create new material
+            const std::string& materialname = "generated_material" + getUniqueNumberString();
+            Ogre::MaterialPtr material = static_cast<Ogre::MaterialPtr>(Ogre::MaterialManager::getSingleton().create(materialname, "General"));
+            material->getTechnique(0)->getPass(0)->setSceneBlending(Ogre::SBT_TRANSPARENT_ALPHA);
+            Ogre::TextureUnitState* textureUnitState_ = material->getTechnique(0)->getPass(0)->createTextureUnitState();
+            textureUnitState_->setTextureName(texture);
+            textureUnitState_->setNumMipmaps(0);
+            this->background_->setMaterialName(materialname);
+        }
+    }
+
+    //! Returns the the texture name of the background
+    const std::string& OrxonoxOverlay::getBackgroundTexture() const
+    {
+        if (this->background_)
+        {
+            Ogre::TextureUnitState* tempTx = this->background_->getMaterial()->getTechnique(0)->getPass(0)->getTextureUnitState(0);
+            return tempTx->getTextureName();
+        }
         else
             return BLANKSTRING;
@@ -385,8 +414,16 @@
     }
 
-    void OrxonoxOverlay::setBackgroundAlpha(float alpha) {
+    void OrxonoxOverlay::setBackgroundAlpha(float alpha)
+    {
         Ogre::MaterialPtr ptr = this->background_->getMaterial();
         Ogre::TextureUnitState* tempTx = ptr->getTechnique(0)->getPass(0)->getTextureUnitState(0);
         tempTx->setAlphaOperation(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, alpha);
     }
+
+    void OrxonoxOverlay::setBackgroundColour(ColourValue colour)
+    {
+        Ogre::MaterialPtr ptr = this->background_->getMaterial();
+        Ogre::TextureUnitState* tempTx = ptr->getTechnique(0)->getPass(0)->getTextureUnitState(0);
+        tempTx->setColourOperationEx(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, colour);
+    }
 }
Index: code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.h
===================================================================
--- code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.h	(revision 7931)
+++ code/branches/hudimprovements/src/orxonox/overlays/OrxonoxOverlay.h	(revision 7932)
@@ -159,5 +159,10 @@
         const std::string& getBackgroundMaterial() const;
 
+        void setBackgroundTexture(const std::string& texture);
+        const std::string& getBackgroundTexture() const;
+
         void setBackgroundAlpha(float alpha);
+
+        void setBackgroundColour(ColourValue colour);
 
         virtual void changedVisibility();
Index: code/branches/hudimprovements/src/orxonox/worldentities/pawns/SpaceShip.h
===================================================================
--- code/branches/hudimprovements/src/orxonox/worldentities/pawns/SpaceShip.h	(revision 7931)
+++ code/branches/hudimprovements/src/orxonox/worldentities/pawns/SpaceShip.h	(revision 7932)
@@ -74,7 +74,7 @@
                 { return this->bBoost_; }
 
-            inline float getBoostPower()
+            inline float getBoostPower() const
                 { return this->boostPower_; }
-            inline float getInitialBoostPower()
+            inline float getInitialBoostPower() const
                 { return this->initialBoostPower_; }
 
@@ -88,4 +88,7 @@
             inline bool getPermanentBoost() const
                 { return this->bPermanentBoost_; }
+
+            inline bool isBoostCoolingDown() const
+                { return bBoostCooldown_; }
 
         protected:
