Index: code/branches/network/src/orxonox/hud/HUD.cc
===================================================================
--- code/branches/network/src/orxonox/hud/HUD.cc	(revision 1446)
+++ code/branches/network/src/orxonox/hud/HUD.cc	(revision 1450)
@@ -53,4 +53,5 @@
     HUD::HUD(){
         om = &Ogre::OverlayManager::getSingleton();
+        sm = GraphicsEngine::getSingleton().getSceneManager();
         firstRadarObject = NULL;
         lastRadarObject = NULL;
@@ -117,7 +118,11 @@
 
         radar->init(0.5, 0.9, 0.2, container);
-        addRadarObject(Vector3(2000.0, 0.0, 0.0));
-        addRadarObject(Vector3(0.0, 2000.0, 0.0));
-        addRadarObject(Vector3(0.0, 0.0, 2000.0));
+        SceneNode* node;
+        node = sm->getRootSceneNode()->createChildSceneNode("tomato1", Vector3(2000.0, 0.0, 0.0));
+        addRadarObject(node);
+        node = sm->getRootSceneNode()->createChildSceneNode("tomato2", Vector3(0.0, 2000.0, 0.0));
+        addRadarObject(node);
+        node = sm->getRootSceneNode()->createChildSceneNode("tomato3", Vector3(0.0, 0.0, 2000.0));
+        addRadarObject(node);
     }
 
@@ -151,12 +156,12 @@
     }
 
-    void HUD::addRadarObject(Vector3 pos){
+    void HUD::addRadarObject(SceneNode* node, int colour){
         // check if this is the first RadarObject to create
         if(firstRadarObject == NULL){
-            firstRadarObject = new RadarObject(container, pos);
+            firstRadarObject = new RadarObject(container, node, colour);
             lastRadarObject = firstRadarObject;
         }
         else{ // if not, append to list
-            lastRadarObject->next = new RadarObject(container, pos);
+            lastRadarObject->next = new RadarObject(container, node, colour);
             lastRadarObject = lastRadarObject->next;
         }
Index: code/branches/network/src/orxonox/hud/HUD.h
===================================================================
--- code/branches/network/src/orxonox/hud/HUD.h	(revision 1446)
+++ code/branches/network/src/orxonox/hud/HUD.h	(revision 1450)
@@ -34,4 +34,5 @@
 #include <OgrePrerequisites.h>
 #include <OgreTextAreaOverlayElement.h>
+#include <OgreSceneNode.h>
 #include "core/Tickable.h"
 #include "util/Math.h"
@@ -46,4 +47,5 @@
         ~HUD();
         Ogre::OverlayManager* om;
+        Ogre::SceneManager* sm;
         Ogre::Overlay* orxonoxHUD;
         Ogre::OverlayContainer* container;
@@ -59,5 +61,5 @@
       public:
         virtual void tick(float);
-        void addRadarObject(Vector3 pos);
+        void addRadarObject(Ogre::SceneNode* node, int colour = 0);
         RadarObject* getFirstRadarObject();
         void setRenderTimeRatio(float ratio);
Index: code/branches/network/src/orxonox/hud/Navigation.cc
===================================================================
--- code/branches/network/src/orxonox/hud/Navigation.cc	(revision 1446)
+++ code/branches/network/src/orxonox/hud/Navigation.cc	(revision 1450)
@@ -96,5 +96,5 @@
 
         if(navCam_ == NULL) navCam_ = SpaceShip::getLocalShip()->getCamera()->cam_;
-        Vector3 pos = focus_->pos_;
+        Vector3 pos = focus_->getPosition();
         // transform to screen coordinates
         pos = navCam_->getProjectionMatrix()*navCam_->getViewMatrix()*pos;
@@ -107,6 +107,6 @@
         // is object in view?
         float radius = RadarOverlayElement::calcRadius(navCamPos_, currentDir_, currentOrth_, focus_);
-        bool isRight = (currentDir_.crossProduct(currentOrth_)).dotProduct(focus_->pos_ - navCamPos_)>0;
-        bool isAbove = currentOrth_.dotProduct(focus_->pos_ - navCamPos_)>0;
+        bool isRight = (currentDir_.crossProduct(currentOrth_)).dotProduct(focus_->getPosition() - navCamPos_)>0;
+        bool isAbove = currentOrth_.dotProduct(focus_->getPosition() - navCamPos_)>0;
         bool outOfView = (xPosRel<0 || xPosRel>1 || yPosRel<0 || yPosRel>1);
         // if object is behind us, it is out of view anyway:
@@ -206,5 +206,5 @@
         }
         else{
-            focus_->panel_->setMaterialName("Orxonox/RedDot");
+            focus_->resetColour();
             if(focus_ != NULL) focus_ = focus_->next;
         }
@@ -217,5 +217,5 @@
             navMarker_->show();
             navText_->show();
-            focus_->panel_->setMaterialName("Orxonox/WhiteDot");
+            focus_->setColour(RadarObject::WHITE);
         }
     }
@@ -223,5 +223,5 @@
     float Navigation::getDist2Focus(){
         if(focus_ == NULL) return(0.0);
-        return((focus_->pos_-SpaceShip::getLocalShip()->getPosition()).length());
+        return((focus_->getPosition()-SpaceShip::getLocalShip()->getPosition()).length());
     }
 }
Index: code/branches/network/src/orxonox/hud/RadarObject.cc
===================================================================
--- code/branches/network/src/orxonox/hud/RadarObject.cc	(revision 1446)
+++ code/branches/network/src/orxonox/hud/RadarObject.cc	(revision 1450)
@@ -26,9 +26,9 @@
 */
 
-#include "OrxonoxStableHeaders.h"
-#include "RadarObject.h"
-
 #include <OgreOverlayManager.h>
 #include <OgreStringConverter.h>
+#include "OrxonoxStableHeaders.h"
+#include "GraphicsEngine.h"
+#include "RadarObject.h"
 
 namespace orxonox
@@ -38,24 +38,13 @@
     int RadarObject::count = 0;		// initialize static variable
 
-    RadarObject::RadarObject(OverlayContainer* container){
+    RadarObject::RadarObject(OverlayContainer* container, SceneNode* node, int colour){
         container_ = container;
-        pos_ = Vector3(0.0, 0.0, 0.0);
-        init();
-    }
-
-    RadarObject::RadarObject(OverlayContainer* container, Vector3 pos){
-        container_ = container;
-        pos_ = pos;
-        init();
-    }
-
-    RadarObject::~RadarObject(){}
-
-    void RadarObject::init(){
+        node_ = node;
+        colour_ = colour;
         next = NULL;
         om = &OverlayManager::getSingleton();
         panel_ = static_cast<PanelOverlayElement*>(om->createOverlayElement("Panel",
-          "Object"+StringConverter::toString(count)));
-        panel_->setMaterialName("Orxonox/RedDot");
+            "Object"+StringConverter::toString(count)));
+        setColour(colour_);
         panel_->setDimensions(3,3);
         panel_->setMetricsMode(Ogre::GMM_PIXELS);
@@ -65,3 +54,27 @@
         container_->addChild(panel_);
     }
+
+    RadarObject::~RadarObject(){
+        // todo: clean up stuff
+    }
+
+    void RadarObject::setColour(int colour){
+        switch(colour){
+        case RED: panel_->setMaterialName("Orxonox/RedDot"); break;
+        case YELLOW: panel_->setMaterialName("Orxonox/YellowDot"); break;
+        case GREEN: panel_->setMaterialName("Orxonox/GreenDot"); break;
+        case BLUE: panel_->setMaterialName("Orxonox/BlueDot"); break;
+        case WHITE: panel_->setMaterialName("Orxonox/WhiteDot"); break;
+        default: panel_->setMaterialName("Orxonox/RedDot"); break;
+        }
+    }
+
+    void RadarObject::resetColour(){
+        setColour(colour_);
+    }
+
+    Vector3 RadarObject::getPosition(){
+        return node_->getPosition();
+    }
 }
+
Index: code/branches/network/src/orxonox/hud/RadarObject.h
===================================================================
--- code/branches/network/src/orxonox/hud/RadarObject.h	(revision 1446)
+++ code/branches/network/src/orxonox/hud/RadarObject.h	(revision 1450)
@@ -29,8 +29,8 @@
 #define _RadarObject_H__
 
+#include <OgrePrerequisites.h>
+#include <OgreSceneNode.h>
+#include <OgrePanelOverlayElement.h>
 #include "OrxonoxPrereqs.h"
-
-#include <OgrePrerequisites.h>
-#include <OgrePanelOverlayElement.h>
 #include "util/Math.h"
 
@@ -41,14 +41,16 @@
       private:
         Ogre::OverlayManager* om;				// our one and only overlay manager
-        void init();
+        Ogre::SceneNode* node_;					// node of object
+        int colour_;
 
       public:
-        RadarObject(Ogre::OverlayContainer* container);
-        RadarObject(Ogre::OverlayContainer* container, Vector3 pos);
+        RadarObject(Ogre::OverlayContainer* container, Ogre::SceneNode* node, int colour = 0);
         ~RadarObject();
+        void setColour(int colour);
+        void resetColour();
+        Vector3 getPosition();
 
         bool right_;
         int index_;                             // index number of object
-        Vector3 pos_;							// position in space
         Ogre::OverlayContainer* container_;
         Ogre::PanelOverlayElement* panel_;		// the panel used to show the dot
@@ -56,4 +58,9 @@
 
         static int count;
+        static const int RED = 0;
+        static const int YELLOW = 1;
+        static const int GREEN = 2;
+        static const int BLUE = 3;
+        static const int WHITE = 99;            // used if object got nav focus
   };
 }
Index: code/branches/network/src/orxonox/hud/RadarOverlayElement.cc
===================================================================
--- code/branches/network/src/orxonox/hud/RadarOverlayElement.cc	(revision 1446)
+++ code/branches/network/src/orxonox/hud/RadarOverlayElement.cc	(revision 1450)
@@ -89,5 +89,5 @@
 
             // set size to fit distance...
-            float d = (ro->pos_-shipPos_).length();
+            float d = (ro->getPosition()-shipPos_).length();
             if(d<4000) ro->panel_->setDimensions(4,4);
             else if(d<8000) ro->panel_->setDimensions(3,3);
@@ -113,5 +113,5 @@
         // iterate through all Radar Objects
         while(ro != NULL) {
-            COUT(3) << i++ << ": " << ro->pos_ << std::endl;
+            COUT(3) << i++ << ": " << ro->getPosition() << std::endl;
             ro = ro->next;
         }
@@ -119,11 +119,11 @@
 
     float RadarOverlayElement::calcRadius(Vector3 pos, Vector3 dir, Vector3 orth, RadarObject* obj){
-        return(acos((dir.dotProduct(obj->pos_ - pos))/
-        ((obj->pos_ - pos).length()*dir.length())));
+        return(acos((dir.dotProduct(obj->getPosition() - pos))/
+        ((obj->getPosition() - pos).length()*dir.length())));
     }
 
     float RadarOverlayElement::calcPhi(Vector3 pos, Vector3 dir, Vector3 orth, RadarObject* obj){
         // project difference vector on our plane...
-        Vector3 proj = Plane(dir, pos).projectVector(obj->pos_ - pos);
+        Vector3 proj = Plane(dir, pos).projectVector(obj->getPosition() - pos);
         // ...and find out the angle
         return(acos((orth.dotProduct(proj))/
@@ -132,5 +132,5 @@
 
     bool RadarOverlayElement::calcRight(Vector3 pos, Vector3 dir, Vector3 orth, RadarObject* obj){
-        if((dir.crossProduct(orth)).dotProduct(obj->pos_ - pos) > 0)
+        if((dir.crossProduct(orth)).dotProduct(obj->getPosition() - pos) > 0)
             return true;
         else return false;
