Index: code/trunk/src/orxonox/overlays/hud/HUDBar.cc
===================================================================
--- code/trunk/src/orxonox/overlays/hud/HUDBar.cc	(revision 1626)
+++ code/trunk/src/orxonox/overlays/hud/HUDBar.cc	(revision 1627)
@@ -55,6 +55,13 @@
         BaseObject::XMLPort(xmlElement, mode);
 
-        XMLPortParam(BarColour, "colour", setColour, getColour, xmlElement, mode);
-        XMLPortParam(BarColour, "position", setPosition, getPosition, xmlElement, mode);
+        if (mode == XMLPort::LoadObject)
+        {
+            this->setColour(ColourValue(1.0, 1.0, 1.0, 1.0));
+            this->setPosition(0.0f);
+        }
+
+        XMLPortParam(BarColour, "colour", setColour, getColour, xmlElement, mode)
+            .defaultValues(ColourValue(1.0, 1.0, 1.0, 1.0));
+        XMLPortParam(BarColour, "position", setPosition, getPosition, xmlElement, mode).defaultValues(0.0f);
     }
 
@@ -90,10 +97,4 @@
             this->textureUnitState_->setColourOperationEx(Ogre::LBX_MODULATE, Ogre::LBS_MANUAL, Ogre::LBS_CURRENT, ColourValue(0.2, 0.7, 0.2));
 
-            // create bar
-            barWidth_s = 0.88f;
-            barHeight_s = 1.0f;
-            barOffsetLeft_s = 0.06f;
-            barOffsetTop_s = 0.0f;
-
             this->bar_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
                 .createOverlayElement("Panel", "HUDBar_bar_" + getUniqueNumberStr()));
@@ -101,17 +102,17 @@
             this->background_->addChild(bar_);
 
-            this->setValue(0);
-            this->autoColour_ = true;
-            this->right2Left_ = false; // default is left to right progress
+            this->setValue(0.0f);
+            this->setRightToLeft(false);
+            this->setAutoColour(true);
         }
 
-        XMLPortParamLoadOnly(HUDBar, "value", setValue, xmlElement, mode);
-        XMLPortParam(HUDBar, "right2left", setRightToLeft, getRightToLeft, xmlElement, mode);
+        XMLPortParam(HUDBar, "initialValue", setValue,       getValue,       xmlElement, mode).defaultValues(0.0f);
+        XMLPortParam(HUDBar, "rightToLeft",   setRightToLeft, getRightToLeft, xmlElement, mode).defaultValues(false);
+        XMLPortParam(HUDBar, "autoColour",   setAutoColour,  getAutoColour,  xmlElement, mode).defaultValues(true);
         XMLPortObject(HUDBar, BarColour, "", addColour, getColour, xmlElement, mode, false, true);
     }
 
-    void HUDBar::setValue(float value)
+    void HUDBar::valueChanged()
     {
-        this->value_ = clamp<float>(value, 0, 1);
         if (this->autoColour_ && this->textureUnitState_)
         {
@@ -153,12 +154,12 @@
         {
             // backward casew
-            this->bar_->setPosition(barOffsetLeft_s + barWidth_s * (1 - this->value_), barOffsetTop_s);
-            this->bar_->setDimensions(barWidth_s * this->value_, barHeight_s);
+            this->bar_->setPosition(0.06f + 0.88f * (1 - this->value_), 0.0f);
+            this->bar_->setDimensions(0.88f * this->value_, 1.0f);
         }
         else
         {
             // default case
-            this->bar_->setPosition(barOffsetLeft_s, barOffsetTop_s);
-            this->bar_->setDimensions(barWidth_s * this->value_, barHeight_s);
+            this->bar_->setPosition(0.06f, 0.0f);
+            this->bar_->setDimensions(0.88f * this->value_, 1.0f);
         }
         if (this->value_ != 0)
Index: code/trunk/src/orxonox/overlays/hud/HUDBar.h
===================================================================
--- code/trunk/src/orxonox/overlays/hud/HUDBar.h	(revision 1626)
+++ code/trunk/src/orxonox/overlays/hud/HUDBar.h	(revision 1627)
@@ -60,4 +60,5 @@
     };
 
+
     class _OrxonoxExport HUDBar : public OrxonoxOverlay
     {
@@ -68,13 +69,17 @@
         virtual void XMLPort(Element& xmlElement, XMLPort::Mode mode);
 
-        virtual void setValue(float value);
         void clearColours();
 
-        inline void setRightToLeft(bool r2l)
-        { this->right2Left_ = r2l; this->setValue(this->value_); }
-        inline bool getRightToLeft() const
-        { return this->right2Left_; }
-        inline float getValue() const
-        { return this->value_; }
+        void setRightToLeft(bool r2l) { this->right2Left_ = r2l; this->valueChanged(); }
+        bool getRightToLeft() const   { return this->right2Left_; }
+
+        void setValue(float value)    { this->value_ = clamp(value, 0.0f, 1.0f); this->valueChanged(); }
+        float getValue() const        { return this->value_; }
+
+        void setAutoColour(bool val)  { this->autoColour_ = val; this->valueChanged(); }
+        bool getAutoColour() const    { return this->autoColour_; }
+
+    protected:
+        virtual void valueChanged();
 
     private:
@@ -91,9 +96,4 @@
         std::vector<BarColour*> barColours_;
 
-        float barWidth_s;
-        float barHeight_s;
-        float barOffsetLeft_s;
-        float barOffsetTop_s;
-
         static unsigned int materialcount_s;
     };
Index: code/trunk/src/orxonox/overlays/hud/HUDNavigation.cc
===================================================================
--- code/trunk/src/orxonox/overlays/hud/HUDNavigation.cc	(revision 1626)
+++ code/trunk/src/orxonox/overlays/hud/HUDNavigation.cc	(revision 1627)
@@ -76,6 +76,4 @@
             navText_ = static_cast<Ogre::TextAreaOverlayElement*>(Ogre::OverlayManager::getSingleton()
                 .createOverlayElement("TextArea", "HUDNavigation_navText_" + getUniqueNumberStr()));
-            navText_->setCharHeight(0.05f);
-            navText_->setFontName("Monofur");
 
             // create nav marker
@@ -83,5 +81,4 @@
                 .createOverlayElement("Panel", "HUDNavigation_navMarker_" + getUniqueNumberStr()));
             navMarker_->setMaterialName("Orxonox/NavArrows");
-            navMarkerSize_ = 0.05; //default
             wasOutOfView_ = true; // just to ensure the material is changed right the first time..
 
@@ -90,5 +87,4 @@
                 .createOverlayElement("Panel", "HUDNavigation_aimMarker_" + getUniqueNumberStr()));
             aimMarker_->setMaterialName("Orxonox/NavCrosshair");
-            aimMarkerSize_ = 0.04; // default
             
             background_->addChild(navMarker_);
@@ -98,15 +94,17 @@
             // hide at first
             this->setVisible(false);
-        }
-
-        XMLPortParam(HUDNavigation, "font", setFont, getFont, xmlElement, mode);
-        XMLPortParam(HUDNavigation, "textSize", setTextSize, getTextSize, xmlElement, mode);
-        XMLPortParam(HUDNavigation, "navMarkerSize", setNavMarkerSize, getNavMarkerSize, xmlElement, mode);
-        XMLPortParam(HUDNavigation, "aimMarkerSize", setAimMarkerSize, getAimMarkerSize, xmlElement, mode);
-
-        if (mode == XMLPort::LoadObject)
-        {
-            this->sizeChanged();
-        }
+
+            this->setFont("Monofur");
+            this->setTextSize(0.05f);
+            this->setNavMarkerSize(0.05f);
+            this->setAimMarkerSize(0.04f);
+        }
+
+        XMLPortParam(HUDNavigation, "font",     setFont,     getFont,     xmlElement, mode).defaultValues("Monofur");
+        XMLPortParam(HUDNavigation, "textSize", setTextSize, getTextSize, xmlElement, mode).defaultValues(0.05f);
+        XMLPortParam(HUDNavigation, "navMarkerSize", setNavMarkerSize, getNavMarkerSize, xmlElement, mode)
+            .defaultValues(0.05f);
+        XMLPortParam(HUDNavigation, "aimMarkerSize", setAimMarkerSize, getAimMarkerSize, xmlElement, mode)
+            .defaultValues(0.04f);
     }
 
Index: code/trunk/src/orxonox/overlays/hud/HUDNavigation.h
===================================================================
--- code/trunk/src/orxonox/overlays/hud/HUDNavigation.h	(revision 1626)
+++ code/trunk/src/orxonox/overlays/hud/HUDNavigation.h	(revision 1627)
@@ -54,8 +54,8 @@
 
         // XMLPort accessors
-        void setNavMarkerSize(float size) { this->navMarkerSize_ = size; }
+        void setNavMarkerSize(float size) { this->navMarkerSize_ = size; this->sizeChanged(); }
         float getNavMarkerSize() const    { return this->navMarkerSize_; }
 
-        void setAimMarkerSize(float size) { this->aimMarkerSize_ = size; }
+        void setAimMarkerSize(float size) { this->aimMarkerSize_ = size; this->sizeChanged(); }
         float getAimMarkerSize() const    { return this->aimMarkerSize_; }
 
Index: code/trunk/src/orxonox/overlays/hud/HUDRadar.cc
===================================================================
--- code/trunk/src/orxonox/overlays/hud/HUDRadar.cc	(revision 1626)
+++ code/trunk/src/orxonox/overlays/hud/HUDRadar.cc	(revision 1627)
@@ -66,7 +66,4 @@
     void HUDRadar::XMLPort(Element& xmlElement, XMLPort::Mode mode)
     {
-        if (mode == XMLPort::LoadObject)
-            this->bCorrectAspect_ = true;
-
         OrxonoxOverlay::XMLPort(xmlElement, mode);
 
@@ -79,12 +76,15 @@
             marker_->hide();
 
-            this->sensitivity_ = 1.0f;
-            this->halfDotSizeDistance_ = 3000.0f;
-            this->maximumDotSize_ = 0.1;
+            this->setRadarSensitivity(1.0f);
+            this->setHalfDotSizeDistance(3000.0f);
+            this->setMaximumDotSize(0.1f);
         }
 
-        XMLPortParam(HUDRadar, "sensitivity", setRadarSensitivity, getRadarSensitivity, xmlElement, mode);
-        XMLPortParam(HUDRadar, "halfDotSizeDistance", setHalfDotSizeDistance, getHalfDotSizeDistance, xmlElement, mode);
-        XMLPortParam(HUDRadar, "maximumDotSize", setMaximumDotSize, getMaximumDotSize, xmlElement, mode);
+        XMLPortParam(HUDRadar, "sensitivity", setRadarSensitivity, getRadarSensitivity, xmlElement, mode)
+            .defaultValues(1.0f);
+        XMLPortParam(HUDRadar, "halfDotSizeDistance", setHalfDotSizeDistance, getHalfDotSizeDistance,
+            xmlElement, mode).defaultValues(3000.0f);
+        XMLPortParam(HUDRadar, "maximumDotSize", setMaximumDotSize, getMaximumDotSize, xmlElement, mode)
+            .defaultValues(0.1f);
 
         shapeMaterials_[RadarViewable::Dot]      = "RadarSquare.tga";
