Index: code/branches/hud/src/orxonox/CMakeLists.txt
===================================================================
--- code/branches/hud/src/orxonox/CMakeLists.txt	(revision 1603)
+++ code/branches/hud/src/orxonox/CMakeLists.txt	(revision 1604)
@@ -13,9 +13,9 @@
   overlays/hud/HUDFPSText.cc
   overlays/hud/HUDNavigation.cc
+  overlays/hud/HUDRadar.cc
   overlays/hud/HUDRTRText.cc
   overlays/hud/HUDSpeedBar.cc
   overlays/hud/HUDText.cc
   overlays/hud/RadarObject.cc
-  overlays/hud/RadarOverlayElement.cc
 
   tolua/tolua_bind.cc
Index: code/branches/hud/src/orxonox/Orxonox.cc
===================================================================
--- code/branches/hud/src/orxonox/Orxonox.cc	(revision 1603)
+++ code/branches/hud/src/orxonox/Orxonox.cc	(revision 1604)
@@ -95,16 +95,18 @@
    * Create a new instance of Orxonox. Avoid doing any actual work here.
    */
-  Orxonox::Orxonox() :
-    ogre_(0),
-    //auMan_(0),
-    timer_(0),
+  Orxonox::Orxonox()
+    : ogre_(0)
+    , startLevel_(0)
+    , hud_(0)
+    //, auMan_(0)
+    , timer_(0)
     // turn on frame smoothing by setting a value different from 0
-    frameSmoothingTime_(0.0f),
-    //orxonoxHUD_(0),
-    bAbort_(false),
-    timefactor_(1.0f),
-    mode_(STANDALONE),
-    serverIp_(""),
-    serverPort_(NETWORK_PORT)
+    , frameSmoothingTime_(0.0f)
+    //orxonoxHUD_(0)
+    , bAbort_(false)
+    , timefactor_(1.0f)
+    , mode_(STANDALONE)
+    , serverIp_("")
+    , serverPort_(NETWORK_PORT)
   {
   }
@@ -116,8 +118,13 @@
   {
     // keep in mind: the order of deletion is very important!
-    /*if (this->orxonoxHUD_)
-      delete this->orxonoxHUD_;*/
+    Loader::unload(startLevel_);
+    if (this->startLevel_)
+      delete this->startLevel_;
+
+    Loader::unload(hud_);
+    if (this->hud_)
+      delete this->hud_;
+
     Loader::close();
-    InputManager::destroy();
     //if (this->auMan_)
     //  delete this->auMan_;
@@ -125,4 +132,5 @@
     if (this->timer_)
       delete this->timer_;
+    InputManager::destroy();
     GraphicsEngine::getSingleton().destroy();
 
@@ -335,6 +343,6 @@
     COUT(3) << "Orxonox: Loading HUD" << std::endl;
 
-    Level* hud = new Level(Settings::getDataPath() + "overlay/hud.oxo");
-    Loader::load(hud);
+    hud_ = new Level(Settings::getDataPath() + "overlay/hud.oxo");
+    Loader::load(hud_);
 
     return true;
@@ -397,6 +405,6 @@
   bool Orxonox::loadScene()
   {
-    Level* startlevel = new Level("levels/sample.oxw");
-    Loader::open(startlevel);
+    startLevel_ = new Level("levels/sample.oxw");
+    Loader::open(startLevel_);
 
     return true;
Index: code/branches/hud/src/orxonox/Orxonox.h
===================================================================
--- code/branches/hud/src/orxonox/Orxonox.h	(revision 1603)
+++ code/branches/hud/src/orxonox/Orxonox.h	(revision 1604)
@@ -93,4 +93,6 @@
     private:
       GraphicsEngine*       ogre_;          //!< our dearest graphics engine <3
+      Level*                startLevel_;    //!< current hard coded default level
+      Level*                hud_;           //!< 'level' object fo the HUD
       //audio::AudioManager*  auMan_;         //!< audio manager
       Ogre::Timer*          timer_;         //!< Main loop timer
Index: code/branches/hud/src/orxonox/objects/SpaceShip.cc
===================================================================
--- code/branches/hud/src/orxonox/objects/SpaceShip.cc	(revision 1603)
+++ code/branches/hud/src/orxonox/objects/SpaceShip.cc	(revision 1604)
@@ -49,5 +49,5 @@
 #include "core/ConsoleCommand.h"
 #include "network/Client.h"
-#include "overlays/OverlayGroup.h"
+#include "overlays/hud/HUDRadar.h"
 
 namespace orxonox
@@ -152,5 +152,5 @@
 
             if (!this->myShip_)
-                OverlayGroup::getHUD().removeRadarObject(this);
+                HUDRadar::getInstance().removeRadarObject(this);
         }
     }
@@ -161,5 +161,5 @@
           myShip_=true;
         else
-          OverlayGroup::getHUD().addRadarObject(this, this->getProjectileColour());
+          HUDRadar::getInstance().addRadarObject(this, this->getProjectileColour());
       }
       if(Model::create())
Index: code/branches/hud/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/branches/hud/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 1603)
+++ code/branches/hud/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 1604)
@@ -66,5 +66,5 @@
 
     XMLPortParam(OrxonoxOverlay, "correctAspect", setAspectCorrection, getAspectCorrection, xmlElement, mode);
-    XMLPortParam(OrxonoxOverlay, "size", setSize, getSize, xmlElement, mode);
+    XMLPortParam(OrxonoxOverlay, "size", setSize, getUncorrectedSize, xmlElement, mode);
     XMLPortParam(OrxonoxOverlay, "rotation", setRotation, getRotation, xmlElement, mode);
     XMLPortParam(OrxonoxOverlay, "origin", setOrigin, getOrigin, xmlElement, mode);
@@ -78,4 +78,6 @@
 
       this->sizeChanged();
+      this->positionChanged();
+      this->angleChanged();
     }
   }
@@ -129,4 +131,5 @@
   {
     this->overlay_->setScale(size_.x * sizeCorrection_.x, size_.y * sizeCorrection_.y);
+    positionChanged();
   }
 
@@ -146,5 +149,5 @@
   void OrxonoxOverlay::positionChanged()
   {
-    Vector2 scroll = (position_ - 0.5 - size_ * (origin_ - 0.5)) * 2.0;
+    Vector2 scroll = (position_ - 0.5 - size_ * sizeCorrection_ * (origin_ - 0.5)) * 2.0;
     this->overlay_->setScroll(scroll.x, -scroll.y);
   }
Index: code/branches/hud/src/orxonox/overlays/OrxonoxOverlay.h
===================================================================
--- code/branches/hud/src/orxonox/overlays/OrxonoxOverlay.h	(revision 1603)
+++ code/branches/hud/src/orxonox/overlays/OrxonoxOverlay.h	(revision 1604)
@@ -42,4 +42,5 @@
   {
     public:
+      Ogre::Overlay* getOverlay() { return this->overlay_; }
       OrxonoxOverlay();
       virtual ~OrxonoxOverlay();
@@ -74,12 +75,12 @@
       void rotate(const Radian& angle) { this->angle_ += angle; this->angleChanged(); }
 
-      /** Sets the scaling factor of this overlay. */
+      /** Sets the size of this overlay. */
       void setSize(const Vector2& size) { this->size_ = size; this->sizeChanged(); }
 
       /** Gets the current size (not corrected) */
-      Vector2 getSize() const { return this->size_; }
+      Vector2 getUncorrectedSize() const { return this->size_; }
 
       /** Gets the current size (corrected) */
-      Vector2 getActualSize() const { return this->size_ * this->sizeCorrection_; }
+      Vector2 getSize() const { return this->size_ * this->sizeCorrection_; }
 
       /** Gets the current size correction */
Index: code/branches/hud/src/orxonox/overlays/OverlayGroup.cc
===================================================================
--- code/branches/hud/src/orxonox/overlays/OverlayGroup.cc	(revision 1603)
+++ code/branches/hud/src/orxonox/overlays/OverlayGroup.cc	(revision 1604)
@@ -21,7 +21,7 @@
  *
  *   Author:
- *      Yuning Chai
+ *      Reto Grieder
  *   Co-authors:
- *      Felix Schulthess
+ *      ...
  *
  */
@@ -30,220 +30,91 @@
 #include "OverlayGroup.h"
 
-#include <string>
-#include <set>
 #include <assert.h>
-#include <OgreOverlay.h>
-#include <OgreOverlayContainer.h>
-#include <OgreOverlayManager.h>
-#include <OgreStringConverter.h>
-
 #include "core/Debug.h"
 #include "core/ConsoleCommand.h"
 #include "core/CoreIncludes.h"
-#include "objects/SpaceShip.h"
-#include "objects/WorldEntity.h"
-#include "GraphicsEngine.h"
-#include "hud/HUDBar.h"
-#include "hud/RadarObject.h"
-#include "hud/RadarOverlayElement.h"
-#include "hud/HUDNavigation.h"
+#include "OrxonoxOverlay.h"
 
 namespace orxonox
 {
-    CreateFactory(OverlayGroup);
+  CreateFactory(OverlayGroup);
 
-    SetConsoleCommandShortcut(OverlayGroup, cycleNavigationFocus).setAccessLevel(AccessLevel::User);
-    SetConsoleCommandShortcut(OverlayGroup, releaseNavigationFocus).setAccessLevel(AccessLevel::User);
-    SetConsoleCommand(OverlayGroup, toggleVisibility, false).setAccessLevel(AccessLevel::User);
+  SetConsoleCommand(OverlayGroup, toggleVisibility, false).setAccessLevel(AccessLevel::User);
 
-    OverlayGroup* OverlayGroup::hudInstance_s = 0;
+  OverlayGroup* OverlayGroup::hudInstance_s = 0;
 
-    using namespace Ogre;
+  using namespace Ogre;
 
-    OverlayGroup::OverlayGroup()
+  OverlayGroup::OverlayGroup()
+    : scale_(1.0, 1.0)
+  {
+    RegisterObject(OverlayGroup);
+
+    // Singleton like in Ogre. Constructor and destructor are public,
+    // but the assert prevents from having multiple instances.
+    assert(hudInstance_s == 0);
+    hudInstance_s = this;
+  }
+
+  OverlayGroup::~OverlayGroup()
+  {
+    if (this->isInitialized())
     {
-        assert(hudInstance_s == 0);
-        hudInstance_s = this;
-        RegisterObject(OverlayGroup);
-
-        // Singleton like in Ogre. Constructor and destructor are public,
-        // but the assert prevents from having multiple instances.
-
-        orxonoxHUD_ = 0;
-        container_ = 0;
-        fpsText_ = 0;
-        rTRText_ = 0;
-        energyBar_ = 0;
-        speedoBar_ = 0;
-        radar_ = 0;
-        nav_ = 0;
-        showFPS_ = true;
-        showRenderTime_ = true;
     }
 
-    OverlayGroup::~OverlayGroup()
+    hudInstance_s = 0;
+  }
+
+  void OverlayGroup::XMLPort(Element& xmlElement, XMLPort::Mode mode)
+  {
+    BaseObject::XMLPort(xmlElement, mode);
+
+    XMLPortObject(OverlayGroup, OrxonoxOverlay, "", addElement, getElement, xmlElement, mode, false, true);
+    XMLPortParam(OverlayGroup, "scale", scale, getScale, xmlElement, mode);
+  }
+
+  void OverlayGroup::scale(const Vector2& scale)
+  {
+    for (std::map<std::string, OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
+      (*it).second->scale(scale);
+    this->scale_ = scale;
+  }
+
+  void OverlayGroup::addElement(OrxonoxOverlay* element)
+  {
+    if (hudElements_.find(element->getName()) != hudElements_.end())
     {
-        if (this->isInitialized())
-        {
-            if (this->container_)
-                Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->container_);
-            this->container_ = 0;
-            if (this->fpsText_)
-                Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->fpsText_);
-            this->fpsText_ = 0;
-            if (this->rTRText_)
-                Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->rTRText_);
-            this->rTRText_ = 0;
-            if (this->energyBar_)
-                delete this->energyBar_;
-            this->energyBar_ = 0;
-            /*if (this->speedoBar_)
-                Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->speedoBar_);*/
-            this->speedoBar_ = 0;
-            if (this->radar_)
-                Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->radar_);
-            this->radar_ = 0;
-            if (this->orxonoxHUD_)
-                Ogre::OverlayManager::getSingleton().destroy(this->orxonoxHUD_);
-            this->orxonoxHUD_ = 0;
-        }
+      COUT(1) << "Ambiguous names encountered while load the HUD overlays" << std::endl;
+    }
+    else
+      hudElements_[element->getName()] = element;
+  }
 
-        hudInstance_s = 0;
+  OrxonoxOverlay* OverlayGroup::getElement(unsigned int index)
+  {
+    if (index < this->hudElements_.size())
+    {
+      std::map<std::string, OrxonoxOverlay*>::const_iterator it = hudElements_.begin();
+      for (unsigned int i = 0; i != index; ++it, ++i)
+        ;
+      return (*it).second;
     }
+    else
+      return 0;
+  }
 
-    void OverlayGroup::XMLPort(Element& xmlElement, XMLPort::Mode mode)
+  /*static*/ OverlayGroup& OverlayGroup::getHUD()
+  {
+    assert(hudInstance_s);
+    return *hudInstance_s;
+  }
+
+  /*static*/ void OverlayGroup::toggleVisibility(const std::string& name)
+  {
+    if (OverlayGroup::getHUD().hudElements_.find(name) != OverlayGroup::getHUD().hudElements_.end())
     {
-        BaseObject::XMLPort(xmlElement, mode);
+      OverlayGroup::getHUD().hudElements_[name]->setVisibility(!OverlayGroup::getHUD().hudElements_[name]->isVisible());
+    }
+  }
 
-        showFPS_ = true;
-        showRenderTime_ = true;
-
-        XMLPortObject(OverlayGroup, OrxonoxOverlay, "", addElement, getElement, xmlElement, mode, false, true);
-
-        // create Factories
-        Ogre::OverlayManager::getSingleton().addOverlayElementFactory(&radarOverlayElementFactory_);
-
-        // set up screen-wide container
-        container_ = static_cast<Ogre::OverlayContainer*>(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", "Orxonox/HUD/container"));
-        container_->setLeft(0.0);
-        container_->setTop(0.0);
-        container_->setWidth(1.0);
-        container_->setHeight(1.0);
-        container_->setMetricsMode(Ogre::GMM_RELATIVE);
-
-        orxonoxHUD_ = Ogre::OverlayManager::getSingleton().create("Orxonox/HUD");
-        orxonoxHUD_->add2D(container_);
-
-        // create radar
-        radar_ = static_cast<RadarOverlayElement*>(Ogre::OverlayManager::getSingleton().createOverlayElement("Radar", "radar"));
-        radar_->init(0.5, 0.9, 0.2, container_);
-
-        WorldEntity* object;
-        object = new WorldEntity();
-        object->setPosition(2000.0, 0.0, 0.0);
-        addRadarObject(object, ColourValue(0.5, 0, 0, 1));
-        object = new WorldEntity();
-        object->setPosition(0.0, 2000.0, 0.0);
-        addRadarObject(object, ColourValue(0.5, 0, 0, 1));
-        object = new WorldEntity();
-        object->setPosition(0.0, 0.0, 2000.0);
-        addRadarObject(object, ColourValue(0.5, 0, 0, 1));
-        object = new WorldEntity();
-        object->setPosition(10000.0,16000.0,0.0);
-        addRadarObject(object);
-
-        orxonoxHUD_->show();
-    }
-
-    void OverlayGroup::addElement(OrxonoxOverlay* element)
-    {
-        if (hudElements_.find(element->getName()) != hudElements_.end())
-        {
-          COUT(1) << "Ambiguous names encountered while load the HUD overlays" << std::endl;
-        }
-        else
-          hudElements_[element->getName()] = element;
-    }
-
-    OrxonoxOverlay* OverlayGroup::getElement(unsigned int index)
-    {
-        if (index < this->hudElements_.size())
-        {
-          std::map<std::string, OrxonoxOverlay*>::const_iterator it = hudElements_.begin();
-          for (unsigned int i = 0; i != index; ++it, ++i)
-            ;
-          return (*it).second;
-        }
-        else
-            return 0;
-    }
-
-    void OverlayGroup::tick(float dt)
-    {
-        radar_->update();
-    }
-
-    void OverlayGroup::windowResized(int newWidth, int newHeight)
-    {
-        this->radar_->resize();
-    }
-
-    void OverlayGroup::addRadarObject(WorldEntity* object, const ColourValue& colour){
-        RadarObject* obj = new RadarObject(container_, object, colour);
-        roSet_.insert(roSet_.end(), obj);
-//        // check if this is the first RadarObject to create
-//        if(firstRadarObject == NULL){
-//            firstRadarObject = new RadarObject(container_, object, colour);
-//            lastRadarObject = firstRadarObject;
-//        }
-//        else{ // if not, append to list
-//            lastRadarObject->next = new RadarObject(container_, object, colour);
-//            lastRadarObject = lastRadarObject->next;
-//        }
-    }
-
-    void OverlayGroup::removeRadarObject(WorldEntity* object){
-        for(std::list<RadarObject*>::iterator it=roSet_.begin(); it!=roSet_.end(); ++it){
-            if ((*it)->getObject() == object)
-            {
-                /*if (this->nav_ && this->nav_->getFocus() == (*it))
-                    this->nav_->releaseFocus();*/
-
-                delete (*it);
-                roSet_.erase(it);
-                return;
-            }
-        }
-    }
-
-    /*static*/ OverlayGroup& OverlayGroup::getHUD()
-    {
-        assert(hudInstance_s);
-        return *hudInstance_s;
-    }
-
-    /*static*/ void OverlayGroup::toggleVisibility(const std::string& name)
-    {
-        if (OverlayGroup::getHUD().hudElements_.find(name) != OverlayGroup::getHUD().hudElements_.end())
-        {
-            OverlayGroup::getHUD().hudElements_[name]->setVisibility(!OverlayGroup::getHUD().hudElements_[name]->isVisible());
-        }
-    }
-
-    /*static*/ void OverlayGroup::setEnergy(float value){
-        OverlayGroup::getHUD().energyBar_->setValue(value);
-    }
-
-    /*static*/ void OverlayGroup::cycleNavigationFocus()
-    {
-        if (OverlayGroup::getHUD().hudElements_.find("Navigation") != OverlayGroup::getHUD().hudElements_.end())
-        {
-            HUDNavigation* navi = dynamic_cast<HUDNavigation*>(OverlayGroup::getHUD().hudElements_["Navigation"]);
-            navi->cycleFocus();
-        }
-    }
-
-    /*static*/ void OverlayGroup::releaseNavigationFocus(){
-        //OverlayGroup::getHUD().nav_->releaseFocus();
-    }
 }
Index: code/branches/hud/src/orxonox/overlays/OverlayGroup.h
===================================================================
--- code/branches/hud/src/orxonox/overlays/OverlayGroup.h	(revision 1603)
+++ code/branches/hud/src/orxonox/overlays/OverlayGroup.h	(revision 1604)
@@ -21,10 +21,9 @@
  *
  *   Author:
- *      Yuning Chai
+ *      Reto Grieder
  *   Co-authors:
- *      Felix Schulthess
+ *      ...
  *
  */
-
 
 #ifndef _OverlayGroup_H__
@@ -33,11 +32,8 @@
 #include "OrxonoxPrereqs.h"
 
+#include <map>
 #include <OgrePrerequisites.h>
-#include <OgreTextAreaOverlayElement.h>
 #include "core/BaseObject.h"
-#include "objects/Tickable.h"
 #include "util/Math.h"
-#include "hud/OverlayElementFactories.h"
-#include "tools/WindowEventListener.h"
 
 namespace orxonox
@@ -46,5 +42,5 @@
     class OrxonoxOverlay;
 
-    class _OrxonoxExport OverlayGroup : public BaseObject, public TickableReal, public WindowEventListener
+    class _OrxonoxExport OverlayGroup : public BaseObject
     {
       public:
@@ -54,20 +50,9 @@
         virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
 
-        virtual void tick(float);
+        void scale(const Vector2& scale);
+        Vector2 getScale() const { return this->scale_; }
 
-        void resize();
-        void addRadarObject(WorldEntity* object, const ColourValue& colour = ColourValue(0.5, 0.5, 0.5, 1));
-        void removeRadarObject(WorldEntity* object);
-        void setFPS();
-
-        inline std::list<RadarObject*>& getRadarObjects()
-            { return this->roSet_; }
-
+        static void toggleVisibility(const std::string& name);
         static OverlayGroup& getHUD();
-
-        static void setEnergy(float value);
-        static void cycleNavigationFocus();
-        static void releaseNavigationFocus();
-        static void toggleVisibility(const std::string& name);
 
       private:
@@ -77,23 +62,6 @@
         OrxonoxOverlay* getElement(unsigned int index);
 
-        void windowResized(int newWidth, int newHeight);
-
         std::map<std::string, OrxonoxOverlay*> hudElements_;
-
-        std::list<RadarObject*> roSet_;
-
-        RadarOverlayElementFactory radarOverlayElementFactory_;
-
-        Ogre::Overlay* orxonoxHUD_;
-        Ogre::OverlayContainer* container_;
-        Ogre::TextAreaOverlayElement* fpsText_;
-        Ogre::TextAreaOverlayElement* rTRText_;
-        HUDBar* energyBar_;
-        BarOverlayElement* speedoBar_;
-        RadarOverlayElement* radar_;
-        HUDNavigation* nav_;
-
-        bool showFPS_;
-        bool showRenderTime_;
+        Vector2 scale_;
 
         static OverlayGroup* hudInstance_s;
Index: code/branches/hud/src/orxonox/overlays/hud/HUDBar.cc
===================================================================
--- code/branches/hud/src/orxonox/overlays/hud/HUDBar.cc	(revision 1603)
+++ code/branches/hud/src/orxonox/overlays/hud/HUDBar.cc	(revision 1604)
@@ -81,7 +81,4 @@
                     OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "_Background"));
             this->background_->setMaterialName("Orxonox/BarBackground");
-            this->background_->setMetricsMode(GMM_RELATIVE);
-            this->background_->setDimensions(1.0f, 1.0f);
-            this->background_->setPosition(0.0f, 0.0f);
             this->overlay_->add2D(this->background_);
 
@@ -98,5 +95,4 @@
             this->bar_ = static_cast<PanelOverlayElement*>(OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "Bar"));
             this->bar_->setMaterialName(materialname);
-            this->bar_->setMetricsMode(GMM_RELATIVE);
             this->background_->addChild(bar_);
         }
Index: code/branches/hud/src/orxonox/overlays/hud/HUDNavigation.cc
===================================================================
--- code/branches/hud/src/orxonox/overlays/hud/HUDNavigation.cc	(revision 1603)
+++ code/branches/hud/src/orxonox/overlays/hud/HUDNavigation.cc	(revision 1604)
@@ -35,4 +35,7 @@
 //#include "GraphicsEngine.h"
 // TODO: remove the SpaceShip and CameraHandler dependencies
+#include "core/Debug.h"
+#include "core/CoreIncludes.h"
+#include "core/ConsoleCommand.h"
 #include "objects/SpaceShip.h"
 #include "objects/Projectile.h"
@@ -40,11 +43,14 @@
 #include "overlays/OverlayGroup.h"
 #include "RadarObject.h"
-#include "RadarOverlayElement.h"
-#include "core/Debug.h"
-#include "core/CoreIncludes.h"
+#include "HUDRadar.h"
 
 namespace orxonox
 {
     CreateFactory(HUDNavigation);
+
+    SetConsoleCommand(HUDNavigation, cycleNavigationFocus, true).setAccessLevel(AccessLevel::User);
+    SetConsoleCommand(HUDNavigation, releaseNavigationFocus, true).setAccessLevel(AccessLevel::User);
+
+    HUDNavigation* HUDNavigation::instance_s = 0;
 
     using namespace Ogre;
@@ -58,4 +64,7 @@
     {
         RegisterObject(HUDNavigation);
+        
+        assert(instance_s == 0); // singleton class
+        HUDNavigation::instance_s = this;
     }
 
@@ -73,4 +82,6 @@
                 OverlayManager::getSingleton().destroyOverlayElement(this->aimMarker_);
         }
+
+        HUDNavigation::instance_s = 0;
     }
 
@@ -83,14 +94,7 @@
             // create container
             container_ = static_cast<OverlayContainer*>(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "_navContainer"));
-            container_->setMetricsMode(Ogre::GMM_RELATIVE);
-            container_->setLeft(0.0);
-            container_->setTop(0.0);
-            container_->setWidth(1.0);
-            container_->setHeight(1.0);
 
             // create nav text
             navText_ = static_cast<TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton().createOverlayElement("TextArea", getName() + "_navText"));
-            navText_->setMetricsMode(Ogre::GMM_RELATIVE);
-            navText_->setPosition(0.0f, 0.0f);
             navText_->setCharHeight(0.05f);
             navText_->setFontName("Monofur");
@@ -98,14 +102,12 @@
             // create nav marker
             navMarker_ = static_cast<PanelOverlayElement*>(OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "_navMarker"));
-            navMarker_->setMetricsMode(GMM_RELATIVE);
             navMarker_->setMaterialName("Orxonox/NavArrows");
-            this->navMarkerSize_ = 0.05;
-            this->wasOutOfView_ = true; // just a to ensure the material is changed right the first time..
+            navMarkerSize_ = 0.05; //default
+            wasOutOfView_ = true; // just to ensure the material is changed right the first time..
 
             // create aim marker
             aimMarker_ = static_cast<PanelOverlayElement*>(OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "_aimMarker"));
-            aimMarker_->setMetricsMode(GMM_RELATIVE);
             aimMarker_->setMaterialName("Orxonox/NavCrosshair");
-            this->aimMarkerSize_ = 0.04;
+            aimMarkerSize_ = 0.04; // default
             
             container_->addChild(navMarker_);
@@ -114,6 +116,6 @@
             container_->show();
 
-            this->overlay_->add2D(container_);
-            this->overlay_->hide();
+            overlay_->add2D(container_);
+            overlay_->hide();
         }
 
@@ -182,9 +184,4 @@
             return;
 
-        updateMarker();
-    }
-
-    void HUDNavigation::updateMarker()
-    {
         // set text
         int dist = (int) getDist2Focus()/100.0f;
@@ -298,7 +295,7 @@
             float distance = (unsigned int) -1;
             Vector3 shipPos = SpaceShip::getLocalShip()->getPosition();
-            it_ = OverlayGroup::getHUD().getRadarObjects().begin();
-
-            for (std::list<RadarObject*>::iterator it = OverlayGroup::getHUD().getRadarObjects().begin(); it != OverlayGroup::getHUD().getRadarObjects().end(); ++it)
+            it_ = HUDRadar::getInstance().getRadarObjects().begin();
+
+            for (std::list<RadarObject*>::iterator it = HUDRadar::getInstance().getRadarObjects().begin(); it != HUDRadar::getInstance().getRadarObjects().end(); ++it)
             {
                 float newdist = (*it)->getPosition().squaredDistance(shipPos);
@@ -310,19 +307,19 @@
             }
 
-            if (it_ != OverlayGroup::getHUD().getRadarObjects().end())
+            if (it_ != HUDRadar::getInstance().getRadarObjects().end())
             {
                 focus_ = *it_;
 
                 // move the focused object to the begin of the list, so we will iterate through all other objects when cycling
-                OverlayGroup::getHUD().getRadarObjects().erase(it_);
-                OverlayGroup::getHUD().getRadarObjects().insert(OverlayGroup::getHUD().getRadarObjects().begin(), focus_);
-                it_ = OverlayGroup::getHUD().getRadarObjects().begin();
-            }
-        }
-        else if (it_ != OverlayGroup::getHUD().getRadarObjects().end())
+                HUDRadar::getInstance().getRadarObjects().erase(it_);
+                HUDRadar::getInstance().getRadarObjects().insert(HUDRadar::getInstance().getRadarObjects().begin(), focus_);
+                it_ = HUDRadar::getInstance().getRadarObjects().begin();
+            }
+        }
+        else if (it_ != HUDRadar::getInstance().getRadarObjects().end())
         {
             focus_->resetMaterial();
             ++it_;
-            if (it_ != OverlayGroup::getHUD().getRadarObjects().end())
+            if (it_ != HUDRadar::getInstance().getRadarObjects().end())
                 focus_ = *it_;
             else
@@ -363,8 +360,13 @@
     }
 
+    /**
+    @brief Overridden method of OrxonoxOverlay. Usually the entire overlay
+           scales with scale(). Here we obviously have to adjust this.
+    */
     void HUDNavigation::sizeChanged()
     {
-        float xScale = this->getActualSize().x;
-        float yScale = this->getActualSize().y;
+        // use size to compensate for apspect ratio if enabled.
+        float xScale = this->getSize().x;
+        float yScale = this->getSize().y;
         if (this->navMarker_)
             navMarker_->setDimensions(navMarkerSize_ * xScale, navMarkerSize_ * yScale);
@@ -374,3 +376,25 @@
             navText_->setCharHeight(navText_->getCharHeight() * yScale);
     }
+
+    /*static*/ HUDNavigation& HUDNavigation::getInstance()
+    {
+        assert(instance_s);
+        return *instance_s;
+    }
+
+    /*static*/ void HUDNavigation::cycleNavigationFocus()
+    {
+        // avoid using getInstance because of the assert().
+        // User might call this fuction even if HUDNavigation doesn't exist.
+        if (instance_s)
+            instance_s->cycleFocus();
+    }
+
+    /*static*/ void HUDNavigation::releaseNavigationFocus()
+    {
+        // avoid using getInstance because of the assert().
+        // User might call this fuction even if HUDNavigation doesn't exist.
+        if (instance_s)
+            instance_s->releaseFocus();
+    }
 }
Index: code/branches/hud/src/orxonox/overlays/hud/HUDNavigation.h
===================================================================
--- code/branches/hud/src/orxonox/overlays/hud/HUDNavigation.h	(revision 1603)
+++ code/branches/hud/src/orxonox/overlays/hud/HUDNavigation.h	(revision 1604)
@@ -44,9 +44,9 @@
       public:
         HUDNavigation();
-        virtual ~HUDNavigation();
+        ~HUDNavigation();
 
-        virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
+        void XMLPort(Element& xmlElement, XMLPort::Mode mode);
 
-        virtual void tick(float dt);
+        void tick(float dt);
 
         void cycleFocus();
@@ -57,14 +57,19 @@
         void releaseFocus();
 
-    protected:
-      virtual void sizeChanged();
-      virtual void angleChanged() { }
-      virtual void positionChanged() { }
+        static void cycleNavigationFocus();
+        static void releaseNavigationFocus();
+        static HUDNavigation& getInstance();
+
+      protected:
+        void sizeChanged();
+        void angleChanged() { }
+        void positionChanged() { }
 
       private:
-        void init();
+        HUDNavigation(HUDNavigation& instance);
         void updateMarker();
         void updateFocus();
 
+        // XMLPort accessors
         void setNavMarkerSize(float size);
         float getNavMarkerSize() const;
@@ -84,5 +89,7 @@
         std::list<RadarObject*>::iterator it_;
         RadarObject* focus_;                        // next pointer of linked list
-        bool wasOutOfView_;
+        bool wasOutOfView_;                         //!< Performance booster variable: setMaterial is not cheap
+
+        static HUDNavigation* instance_s;
   };
 }
Index: code/branches/hud/src/orxonox/overlays/hud/HUDRadar.cc
===================================================================
--- code/branches/hud/src/orxonox/overlays/hud/HUDRadar.cc	(revision 1604)
+++ code/branches/hud/src/orxonox/overlays/hud/HUDRadar.cc	(revision 1604)
@@ -0,0 +1,151 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Yuning Chai
+ *   Co-authors:
+ *      Felix Schulthess
+ *
+ */
+
+#include "OrxonoxStableHeaders.h"
+#include "HUDRadar.h"
+
+#include <assert.h>
+#include <OgreOverlayManager.h>
+
+#include "core/ConsoleCommand.h"
+#include "util/Math.h"
+#include "objects/SpaceShip.h"
+#include "objects/WorldEntity.h"
+#include "RadarObject.h"
+
+namespace orxonox
+{
+    CreateFactory(HUDRadar);
+
+    HUDRadar* HUDRadar::instance_s = 0;
+
+    using namespace Ogre;
+
+    HUDRadar::HUDRadar()
+      : background_(0)
+    {
+        RegisterObject(HUDRadar);
+
+        assert(instance_s == 0);
+        instance_s = this;
+    }
+
+    HUDRadar::~HUDRadar()
+    {
+        if (this->isInitialized())
+        {
+            if (this->background_)
+                OverlayManager::getSingleton().destroyOverlayElement(this->background_);
+        }
+
+        instance_s = 0;
+    }
+
+    void HUDRadar::XMLPort(Element& xmlElement, XMLPort::Mode mode)
+    {
+        OrxonoxOverlay::XMLPort(xmlElement, mode);
+
+        if (mode == XMLPort::LoadObject)
+        {
+            background_ = (Ogre::PanelOverlayElement*)Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "_Background");
+            background_->setMaterialName("Orxonox/Radar");
+            overlay_->add2D(background_);
+
+            WorldEntity* object;
+            object = new WorldEntity();
+            object->setPosition(2000.0, 0.0, 0.0);
+            addRadarObject(object, ColourValue(0.5, 0, 0, 1));
+            object = new WorldEntity();
+            object->setPosition(0.0, 2000.0, 0.0);
+            addRadarObject(object, ColourValue(0.5, 0, 0, 1));
+            object = new WorldEntity();
+            object->setPosition(0.0, 0.0, 2000.0);
+            addRadarObject(object, ColourValue(0.5, 0, 0, 1));
+            object = new WorldEntity();
+            object->setPosition(10000.0,16000.0,0.0);
+            addRadarObject(object);
+        }
+
+    }
+
+    void HUDRadar::tick(float dt)
+    {
+        // iterate through all RadarObjects
+        for(std::list<RadarObject*>::iterator it = getRadarObjects().begin(); it!= getRadarObjects().end(); it++)
+        {
+            // calc position on radar...
+            // set size to fit distance...
+            float size = 1.0/(((*it)->getPosition() - SpaceShip::getLocalShip()->getPosition()).length());
+            size = clamp(size * 100.0f, 0.02f, 0.12f);
+            (*it)->getPanel()->setDimensions(size, size);
+
+            Vector2 coord = get2DViewcoordinates(SpaceShip::getLocalShip()->getPosition(), SpaceShip::getLocalShip()->getDir(), SpaceShip::getLocalShip()->getOrth(), (*it)->getPosition());
+            coord *= Ogre::Math::PI / 3.5; // small adjustment to make it fit the texture
+            (*it)->getPanel()->setPosition((1.0 + coord.x) * 0.5, (1.0 - coord.y) * 0.5);
+        }
+    }
+
+    void HUDRadar::listObjects()
+    {
+        int i = 0;
+        COUT(3) << "List of RadarObjects:\n";
+        // iterate through all Radar Objects
+        for(std::list<RadarObject*>::const_iterator it = getRadarObjects().begin(); it != getRadarObjects().end(); ++it)
+        {
+            COUT(3) << i++ << ": " << (*it)->getPosition() << std::endl;
+        }
+    }
+
+    void HUDRadar::addRadarObject(WorldEntity* object, const ColourValue& colour)
+    {
+        RadarObject* obj = new RadarObject(overlay_, object, colour);
+        roSet_.insert(roSet_.end(), obj);
+    }
+
+    void HUDRadar::removeRadarObject(WorldEntity* object)
+    {
+        for(std::list<RadarObject*>::iterator it=roSet_.begin(); it!=roSet_.end(); ++it)
+        {
+            if ((*it)->getObject() == object)
+            {
+                /*if (this->nav_ && this->nav_->getFocus() == (*it))
+                    this->nav_->releaseFocus();*/
+
+                delete (*it);
+                roSet_.erase(it);
+                return;
+            }
+        }
+    }
+
+    /*static*/ HUDRadar& HUDRadar::getInstance()
+    {
+        assert(instance_s);
+        return *instance_s;
+    }
+}
Index: code/branches/hud/src/orxonox/overlays/hud/HUDRadar.h
===================================================================
--- code/branches/hud/src/orxonox/overlays/hud/HUDRadar.h	(revision 1604)
+++ code/branches/hud/src/orxonox/overlays/hud/HUDRadar.h	(revision 1604)
@@ -0,0 +1,71 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *                    > www.orxonox.net <
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Yuning Chai
+ *   Co-authors:
+ *      Felix Schulthess
+ *
+ */
+
+#ifndef _HUDRadar_H__
+#define _HUDRadar_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include <OgrePrerequisites.h>
+#include <OgrePanelOverlayElement.h>
+#include "overlays/OrxonoxOverlay.h"
+#include "objects/Tickable.h"
+
+namespace orxonox
+{
+    class _OrxonoxExport HUDRadar : public OrxonoxOverlay, public Tickable
+    {
+      public:
+        HUDRadar();
+        ~HUDRadar();
+
+        void XMLPort(Element& xmlElement, XMLPort::Mode mode);
+
+        void tick(float dt);
+
+        void listObjects();
+
+        inline std::list<RadarObject*>& getRadarObjects()
+            { return this->roSet_; }
+
+        void addRadarObject(WorldEntity* object, const ColourValue& colour = ColourValue(0.5, 0.5, 0.5, 1));
+        void removeRadarObject(WorldEntity* object);
+
+        static HUDRadar& getInstance();
+
+      private:
+        HUDRadar(HUDRadar& instance);
+
+        std::list<RadarObject*> roSet_;
+        Ogre::PanelOverlayElement* background_;
+
+        static HUDRadar* instance_s;
+    };
+}
+
+#endif /* _HUDRadar_H__ */
Index: code/branches/hud/src/orxonox/overlays/hud/HUDText.cc
===================================================================
--- code/branches/hud/src/orxonox/overlays/hud/HUDText.cc	(revision 1603)
+++ code/branches/hud/src/orxonox/overlays/hud/HUDText.cc	(revision 1604)
@@ -67,11 +67,6 @@
       this->background_ = static_cast<PanelOverlayElement*>(
               OverlayManager::getSingleton().createOverlayElement("Panel", getName() + "_Background"));
-      this->background_->setMetricsMode(GMM_RELATIVE);
-      this->background_->setDimensions(1.0f, 1.0f);
-      this->background_->setPosition(0.0f, 0.0f);
 
       this->text_ = static_cast<TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton().createOverlayElement("TextArea", getName() + "_Text"));
-      this->text_->setMetricsMode(Ogre::GMM_RELATIVE);
-      this->text_->setPosition(0.0f, 0.0f);
       this->text_->setCharHeight(1.0f);
       this->text_->setFontName("Monofur");
Index: code/branches/hud/src/orxonox/overlays/hud/RadarObject.cc
===================================================================
--- code/branches/hud/src/orxonox/overlays/hud/RadarObject.cc	(revision 1603)
+++ code/branches/hud/src/orxonox/overlays/hud/RadarObject.cc	(revision 1604)
@@ -41,24 +41,20 @@
 {
     template <>
-    class less<orxonox::ColourValue>
+    bool less<orxonox::ColourValue>::operator()(const orxonox::ColourValue& __x, const orxonox::ColourValue& __y) const
     {
-        public:
-            bool operator()(const orxonox::ColourValue& __x, const orxonox::ColourValue& __y) const
+        if (__x.r == __y.r)
+        {
+            if (__x.g == __y.g)
             {
-                if (__x.r == __y.r)
+                if (__x.b == __y.b)
                 {
-                    if (__x.g == __y.g)
-                    {
-                        if (__x.b == __y.b)
-                        {
-                            return __x.a < __y.a;
-                        }
-                        return __x.b < __y.b;
-                    }
-                    return __x.g < __y.g;
+                    return __x.a < __y.a;
                 }
-                return __x.r < __y.r;
+                return __x.b < __y.b;
             }
-    };
+            return __x.g < __y.g;
+        }
+        return __x.r < __y.r;
+    }
 }
 
@@ -69,5 +65,5 @@
     std::map<std::string, std::map<ColourValue, std::string> > RadarObject::materials_s;
 
-    RadarObject::RadarObject(Ogre::OverlayContainer* container, WorldEntity* object, const ColourValue& colour, const std::string& texturename)
+    RadarObject::RadarObject(Ogre::Overlay* container, WorldEntity* object, const ColourValue& colour, const std::string& texturename)
     {
         this->colour_ = colour;
@@ -78,10 +74,6 @@
         this->panel_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton().createOverlayElement("Panel", "RadarObject" + getConvertedValue<unsigned int, std::string>(RadarObject::count_s++)));
         this->setMaterial(colour, texturename);
-
-        this->panel_->setDimensions(3, 3);
-        this->panel_->setMetricsMode(Ogre::GMM_PIXELS);
-        this->panel_->show();
-
-        container->addChild(panel_);
+        this->panel_->setDimensions(0.01, 0.01);
+        container->add2D(panel_);
     }
 
Index: code/branches/hud/src/orxonox/overlays/hud/RadarObject.h
===================================================================
--- code/branches/hud/src/orxonox/overlays/hud/RadarObject.h	(revision 1603)
+++ code/branches/hud/src/orxonox/overlays/hud/RadarObject.h	(revision 1604)
@@ -42,5 +42,5 @@
     {
       public:
-        RadarObject(Ogre::OverlayContainer* container, WorldEntity* object, const ColourValue& colour = ColourValue(0.5, 0.5, 0.5, 1), const std::string& texturename = "white.tga");
+        RadarObject(Ogre::Overlay* container, WorldEntity* object, const ColourValue& colour = ColourValue(0.5, 0.5, 0.5, 1), const std::string& texturename = "white.tga");
         ~RadarObject();
 
Index: code/branches/hud/src/orxonox/overlays/hud/RadarOverlayElement.cc
===================================================================
--- code/branches/hud/src/orxonox/overlays/hud/RadarOverlayElement.cc	(revision 1603)
+++ 	(revision )
@@ -1,107 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Yuning Chai
- *   Co-authors:
- *      Felix Schulthess
- *
- */
-
-#include "OrxonoxStableHeaders.h"
-#include "RadarOverlayElement.h"
-
-#include <string>
-#include <OgreOverlayManager.h>
-#include <OgreStringConverter.h>
-
-#include "core/ConsoleCommand.h"
-#include "objects/Tickable.h"
-#include "objects/SpaceShip.h"
-#include "util/Math.h"
-
-#include "GraphicsEngine.h"
-#include "RadarObject.h"
-#include "overlays/OverlayGroup.h"
-
-namespace orxonox
-{
-    using namespace Ogre;
-
-    RadarOverlayElement::RadarOverlayElement(const String& name):PanelOverlayElement(name){
-    }
-
-    RadarOverlayElement::~RadarOverlayElement(){
-    }
-
-    void RadarOverlayElement::init(Real leftRel, Real topRel, Real dimRel, OverlayContainer* container){
-        // some initial data
-        dimRel_ = dimRel;
-        leftRel_ = leftRel;
-        topRel_ = topRel;
-
-        setMetricsMode(GMM_PIXELS);
-        setMaterialName("Orxonox/Radar");
-        resize();
-
-        container->addChild(this);
-    }
-
-    void RadarOverlayElement::resize() {
-        // if window is resized, we must adapt these...
-        dim_ = (int) (dimRel_*GraphicsEngine::getSingleton().getWindowHeight());
-        left_ = (int) (leftRel_*GraphicsEngine::getSingleton().getWindowWidth()-dim_/2);
-        top_ = (int) (topRel_*GraphicsEngine::getSingleton().getWindowHeight()-dim_/2);
-        setPosition(left_, top_);
-        setDimensions(dim_,dim_);
-    }
-
-    void RadarOverlayElement::update() {
-        // iterate through all RadarObjects
-        for(std::list<RadarObject*>::iterator it=OverlayGroup::getHUD().getRadarObjects().begin(); it!=OverlayGroup::getHUD().getRadarObjects().end(); it++)
-        {
-            // calc position on radar...
-            // set size to fit distance...
-            float distance = ((*it)->getPosition() - SpaceShip::getLocalShip()->getPosition()).length();
-            if (distance > 20000) (*it)->getPanel()->setDimensions(1, 1);
-            else if (distance > 10000) (*it)->getPanel()->setDimensions(2, 2);
-            else if (distance > 5000) (*it)->getPanel()->setDimensions(3, 3);
-            else if (distance > 2500) (*it)->getPanel()->setDimensions(4, 4);
-            else if (distance > 1000) (*it)->getPanel()->setDimensions(5, 5);
-            else (*it)->getPanel()->setDimensions(6,6);
-
-            Vector2 coord = get2DViewcoordinates(SpaceShip::getLocalShip()->getPosition(), SpaceShip::getLocalShip()->getDir(), SpaceShip::getLocalShip()->getOrth(), (*it)->getPosition());
-            coord = coord * Ogre::Math::PI / 3.5; // small adjustment to make it fit the texture
-            float dimfactor = dim_ / 2.0;
-            (*it)->getPanel()->setPosition((1 + coord.x) * dimfactor + left_ - 2,
-                                           (1 - coord.y) * dimfactor + top_ - 2);
-        }
-    }
-
-    void RadarOverlayElement::listObjects() const {
-        int i = 0;
-        COUT(3) << "List of RadarObjects:\n";
-        // iterate through all Radar Objects
-        for(std::list<RadarObject*>::const_iterator it=OverlayGroup::getHUD().getRadarObjects().begin(); it!=OverlayGroup::getHUD().getRadarObjects().end(); ++it){
-            COUT(3) << i++ << ": " << (*it)->getPosition() << std::endl;
-        }
-    }
-}
Index: code/branches/hud/src/orxonox/overlays/hud/RadarOverlayElement.h
===================================================================
--- code/branches/hud/src/orxonox/overlays/hud/RadarOverlayElement.h	(revision 1603)
+++ 	(revision )
@@ -1,56 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Yuning Chai
- *   Co-authors:
- *      Felix Schulthess
- *
- */
-
-#ifndef _RadarOverlayElement_H__
-#define _RadarOverlayElement_H__
-
-#include "OrxonoxPrereqs.h"
-
-#include <OgrePrerequisites.h>
-#include <OgrePanelOverlayElement.h>
-#include "util/Math.h"
-
-namespace orxonox
-{
-    class _OrxonoxExport RadarOverlayElement : public Ogre::PanelOverlayElement
-    {
-      public:
-        RadarOverlayElement(const Ogre::String& name);
-        ~RadarOverlayElement();
-        void init(Real leftRel, Real topRel, Real dimRel, Ogre::OverlayContainer* container);
-        void resize();
-        void update();
-        void listObjects() const;
-
-      private:
-        Ogre::Real leftRel_, topRel_, dimRel_;  // relative position/dimension
-        int left_, top_, dim_;                  // absolute position/dimension
-  };
-}
-
-#endif /* _RadarOverlayElement_H__ */
Index: code/branches/hud/visual_studio/vc8/orxonox.vcproj
===================================================================
--- code/branches/hud/visual_studio/vc8/orxonox.vcproj	(revision 1603)
+++ code/branches/hud/visual_studio/vc8/orxonox.vcproj	(revision 1604)
@@ -463,4 +463,8 @@
 					</File>
 					<File
+						RelativePath="..\..\src\orxonox\overlays\hud\HUDRadar.cc"
+						>
+					</File>
+					<File
 						RelativePath="..\..\src\orxonox\overlays\hud\HUDRTRText.cc"
 						>
@@ -476,8 +480,4 @@
 					<File
 						RelativePath="..\..\src\orxonox\overlays\hud\RadarObject.cc"
-						>
-					</File>
-					<File
-						RelativePath="..\..\src\orxonox\overlays\hud\RadarOverlayElement.cc"
 						>
 					</File>
@@ -665,4 +665,8 @@
 					</File>
 					<File
+						RelativePath="..\..\src\orxonox\overlays\hud\HUDRadar.h"
+						>
+					</File>
+					<File
 						RelativePath="..\..\src\orxonox\overlays\hud\HUDRTRText.h"
 						>
@@ -682,8 +686,4 @@
 					<File
 						RelativePath="..\..\src\orxonox\overlays\hud\RadarObject.h"
-						>
-					</File>
-					<File
-						RelativePath="..\..\src\orxonox\overlays\hud\RadarOverlayElement.h"
 						>
 					</File>
