Index: code/trunk/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDNavigation.cc	(revision 8858)
+++ code/trunk/src/modules/overlays/hud/HUDNavigation.cc	(revision 8891)
@@ -63,4 +63,5 @@
 {
   SetConfigValue(markerLimit_, 3);
+
 }
 
@@ -77,4 +78,5 @@
     setTextSize ( 0.05f );
     setNavMarkerSize ( 0.05f );
+    setDetectionLimit( 10000.0f );
 }
 
@@ -95,7 +97,8 @@
     SUPER ( HUDNavigation, XMLPort, xmlelement, mode );
 
-    XMLPortParam ( HUDNavigation, "font",          setFont,          getFont,          xmlelement, mode );
-    XMLPortParam ( HUDNavigation, "textSize",      setTextSize,      getTextSize,      xmlelement, mode );
-    XMLPortParam ( HUDNavigation, "navMarkerSize", setNavMarkerSize, getNavMarkerSize, xmlelement, mode );
+    XMLPortParam ( HUDNavigation, "font",           setFont,           getFont,           xmlelement, mode );
+    XMLPortParam ( HUDNavigation, "textSize",       setTextSize,       getTextSize,       xmlelement, mode );
+    XMLPortParam ( HUDNavigation, "navMarkerSize",  setNavMarkerSize,  getNavMarkerSize,  xmlelement, mode );
+    XMLPortParam ( HUDNavigation, "detectionLimit", setDetectionLimit, getDetectionLimit, xmlelement, mode );
 }
 
@@ -161,11 +164,11 @@
 
     unsigned int markerCount_ = 0;
-
+    bool closeEnough_ = false; //only display objects that are close enough to be relevant for the player
 //         for (ObjectMap::iterator it = activeObjectList_.begin(); it != activeObjectList_.end(); ++it)
     for ( sortedList::iterator listIt = sortedObjectList_.begin(); listIt != sortedObjectList_.end(); ++markerCount_, ++listIt )
     {
         ObjectMap::iterator it = activeObjectList_.find ( listIt->first );
-
-        if ( markerCount_ < markerLimit_ )
+        closeEnough_ = listIt->second < detectionLimit_ ;
+        if ( markerCount_ < markerLimit_ && (closeEnough_ ||  detectionLimit_ < 0) ) // display on HUD if the statement is true
         {
 
@@ -277,5 +280,5 @@
             it->second.text_->show();
         }
-        else
+        else // do not display on HUD
         {
             it->second.panel_->hide();
@@ -309,5 +312,5 @@
 void HUDNavigation::addObject ( RadarViewable* object )
 {
-    if( showObject(object)==false )
+    if( showObject(object) == false )
         return;
 
@@ -396,5 +399,5 @@
         return false;
     assert( rv->getWorldEntity() );
-    if ( rv->getWorldEntity()->isVisible()==false || rv->getRadarVisibility()==false )
+    if ( rv->getWorldEntity()->isVisible() == false || rv->getRadarVisibility() == false )
         return false;
     return true;
Index: code/trunk/src/modules/overlays/hud/HUDNavigation.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDNavigation.h	(revision 8858)
+++ code/trunk/src/modules/overlays/hud/HUDNavigation.h	(revision 8891)
@@ -85,4 +85,9 @@
     { return navMarkerSize_; }
 
+    void setDetectionLimit( float limit )
+    { this->detectionLimit_ = limit; }
+    float getDetectionLimit() const
+    { return this->detectionLimit_; }
+
     void setTextSize ( float size );
     float getTextSize() const;
@@ -102,7 +107,7 @@
     float textSize_;
 
-    unsigned int markerLimit_;; //TODO: is it possible to set this over the console and/or the IG-Setting
-
-
+    unsigned int markerLimit_; //TODO: is it possible to set this over the console and/or the IG-Setting
+    float detectionLimit_; //!< Objects that are more far away than detectionLimit_ are not displayed on the HUD. 10000.0f is the default value.
+                           //!< In order to bypass this behaviour, set a negative detectionLimit_. Then the detection range is "infinite".
 };
 }
Index: code/trunk/src/modules/overlays/hud/HUDRadar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDRadar.cc	(revision 8858)
+++ code/trunk/src/modules/overlays/hud/HUDRadar.cc	(revision 8891)
@@ -64,5 +64,5 @@
         this->shapeMaterials_[RadarViewable::Triangle] = "RadarTriangle.png";
         this->shapeMaterials_[RadarViewable::Square]   = "RadarSquare.png";
-
+        this->setDetectionLimit( 10000.0f );
         this->owner_ = 0;
     }
@@ -93,4 +93,6 @@
     {
         if (object == dynamic_cast<RadarViewable*>(this->owner_))
+            return;
+        if( showObject(object) == false ) //do not show objects that are "invisible" or "radar invisible"
             return;
 
@@ -123,11 +125,7 @@
 
     void HUDRadar::objectChanged( RadarViewable* rv )
-    {
-        if (rv == dynamic_cast<RadarViewable*>(this->owner_))
-            return;
-        assert( this->radarObjects_.find(rv) != this->radarObjects_.end() );
-        Ogre::PanelOverlayElement* panel = this->radarObjects_[rv];
-        panel->setMaterialName(TextureGenerator::getMaterialName(
-            shapeMaterials_[rv->getRadarObjectShape()], rv->getRadarObjectColour()));
+    {// The new implementation behaves more precisely, since inactive RadarViewables are not displayed anymore.
+        this->removeObject(rv);
+        this->addObject(rv);
     }
 
@@ -174,5 +172,8 @@
             coord *= math::pi / 3.5f; // small adjustment to make it fit the texture
             it->second->setPosition((1.0f + coord.x - size) * 0.5f, (1.0f - coord.y - size) * 0.5f);
-            it->second->show();
+            if( distance < detectionLimit_ || detectionLimit_ < 0 )
+                it->second->show();
+            else
+                it->second->hide();
 
             // if this object is in focus, then set the focus marker
@@ -186,4 +187,15 @@
     }
 
+    bool HUDRadar::showObject(RadarViewable* rv)
+    {
+        if ( rv == dynamic_cast<RadarViewable*> ( this->getOwner() ) )
+            return false;
+        assert( rv->getWorldEntity() );
+        if ( rv->getWorldEntity()->isVisible()==false || rv->getRadarVisibility()==false )
+            return false;
+        return true;
+    }
+
+
     void HUDRadar::changedOwner()
     {
Index: code/trunk/src/modules/overlays/hud/HUDRadar.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDRadar.h	(revision 8858)
+++ code/trunk/src/modules/overlays/hud/HUDRadar.h	(revision 8891)
@@ -57,4 +57,9 @@
         void setHalfDotSizeDistance(float distance) { this->halfDotSizeDistance_ = distance; }
 
+        void setDetectionLimit( float limit )
+        { this->detectionLimit_ = limit; }
+        float getDetectionLimit() const
+        { return this->detectionLimit_; }
+
         float getMaximumDotSize() const { return this->maximumDotSize_; }
         void setMaximumDotSize(float size) { this->maximumDotSize_ = size; }
@@ -69,4 +74,5 @@
         virtual void objectChanged( RadarViewable* rv );
         void radarTick(float dt);
+        bool showObject( RadarViewable* rv ); //!< Do not display an object on radar, if showObject(.) is false.
 
         void gatherObjects();
@@ -83,5 +89,5 @@
 
         float sensitivity_;
-
+        float detectionLimit_;
         ControllableEntity* owner_;
     };
