Index: code/branches/presentation3/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/branches/presentation3/src/modules/overlays/hud/HUDNavigation.cc	(revision 7050)
+++ code/branches/presentation3/src/modules/overlays/hud/HUDNavigation.cc	(revision 7051)
@@ -47,4 +47,5 @@
 #include "worldentities/WorldEntity.h"
 #include "core/ConfigValueIncludes.h"
+#include "tools/TextureGenerator.h"
 // #include <boost/bind/bind_template.hpp>
 
@@ -199,5 +200,5 @@
                 if ( !it->second.wasOutOfView_ )
                 {
-                    it->second.panel_->setMaterialName ( "Orxonox/NavArrows" );
+                    it->second.panel_->setMaterialName( TextureGenerator::getMaterialName( "arrows.tga", it->first->getRadarObjectColour()) );
                     it->second.wasOutOfView_ = true;
                 }
@@ -256,5 +257,6 @@
                 if ( it->second.wasOutOfView_ )
                 {
-                    it->second.panel_->setMaterialName ( "Orxonox/NavTDC" );
+                  //it->second.panel_->setMaterialName ( "Orxonox/NavTDC" );
+                    it->second.panel_->setMaterialName( TextureGenerator::getMaterialName( "tdc.tga", it->first->getRadarObjectColour()) );
                     it->second.wasOutOfView_ = false;
                 }
@@ -306,4 +308,6 @@
 void HUDNavigation::addObject ( RadarViewable* object )
 {
+    if( showObject(object)==false )
+        return;
 
     if ( activeObjectList_.size() >= markerLimit_ )
@@ -311,8 +315,4 @@
             return;
 
-    // Don't display our own ship
-    if ( object == dynamic_cast<RadarViewable*> ( this->getOwner() ) )
-        return;
-
     // Object hasn't been added yet (we know that)
     assert ( this->activeObjectList_.find ( object ) == this->activeObjectList_.end() );
@@ -327,6 +327,8 @@
     Ogre::PanelOverlayElement* panel = static_cast<Ogre::PanelOverlayElement*> ( Ogre::OverlayManager::getSingleton()
                                        .createOverlayElement ( "Panel", "HUDNavigation_navMarker_" + getUniqueNumberString() ) );
-    panel->setMaterialName ( "Orxonox/NavTDC" );
+//     panel->setMaterialName ( "Orxonox/NavTDC" );
+    panel->setMaterialName( TextureGenerator::getMaterialName( "tdc.tga", object->getRadarObjectColour()) );
     panel->setDimensions ( navMarkerSize_ * xScale, navMarkerSize_ * yScale );
+//     panel->setColour( object->getRadarObjectColour() );
 
     Ogre::TextAreaOverlayElement* text = static_cast<Ogre::TextAreaOverlayElement*> ( Ogre::OverlayManager::getSingleton()
@@ -334,4 +336,5 @@
     text->setFontName ( this->fontName_ );
     text->setCharHeight ( text->getCharHeight() * yScale );
+    text->setColour( object->getRadarObjectColour() );
 
     panel->hide();
@@ -351,5 +354,5 @@
 void HUDNavigation::removeObject ( RadarViewable* viewable )
 {
-    if ( viewable == dynamic_cast<RadarViewable*> ( this->getOwner() ) )
+    if( showObject(viewable)==false )
         return;
 
@@ -386,4 +389,22 @@
 }
 
+void HUDNavigation::objectChanged(RadarViewable* viewable)
+{
+    // TODO: niceification neccessary ;)
+    removeObject(viewable);
+    addObject(viewable);
+}
+
+
+bool HUDNavigation::showObject(RadarViewable* rv)
+{
+    if ( rv == dynamic_cast<RadarViewable*> ( this->getOwner() ) )
+        return false;
+    assert( rv->getWorldEntity() );
+    if ( rv->getWorldEntity()->isVisible()==false )
+        return false;
+    return true;
+}
+
 void HUDNavigation::changedOwner()
 {
Index: code/branches/presentation3/src/modules/overlays/hud/HUDNavigation.h
===================================================================
--- code/branches/presentation3/src/modules/overlays/hud/HUDNavigation.h	(revision 7050)
+++ code/branches/presentation3/src/modules/overlays/hud/HUDNavigation.h	(revision 7051)
@@ -56,5 +56,5 @@
     virtual void addObject ( RadarViewable* object );
     virtual void removeObject ( RadarViewable* viewable );
-    virtual void objectChanged ( RadarViewable* viewable ) {}
+    virtual void objectChanged ( RadarViewable* viewable );
 
     virtual void changedOwner();
@@ -76,4 +76,6 @@
 
     };
+    
+    bool showObject( RadarViewable* rv );
 
     // XMLPort accessors
