Index: orxonox/trunk/src/lib/graphics/render2D/element_2d.cc
===================================================================
--- orxonox/trunk/src/lib/graphics/render2D/element_2d.cc	(revision 4857)
+++ orxonox/trunk/src/lib/graphics/render2D/element_2d.cc	(revision 4858)
@@ -21,4 +21,7 @@
 #include "graphics_engine.h"
 #include "p_node.h"
+#include "load_param.h"
+#include "tinyxml.h"
+#include "class_list.h"
 
 using namespace std;
@@ -44,4 +47,7 @@
 
 
+/**
+ * initializes a Element2D
+ */
 void Element2D::init()
 {
@@ -52,4 +58,70 @@
 
   Render2D::getInstance()->registerElement2D(this);
+}
+
+/**
+ * Loads the Parameters of an Element2D from...
+ * @param root The XML-element to load from
+ */
+void Element2D::loadParams(const TiXmlElement* root)
+{
+  LoadParam<Element2D>(root, "alignment", this, &Element2D::setAlignment)
+      .describe("loads the alignment: (either: center, left, right or screen-center)");
+
+  LoadParam<Element2D>(root, "layer", this, &Element2D::setLayer)
+      .describe("loads the layer onto which to project: (either: top, medium, bottom, below-all)");
+
+  LoadParam<Element2D>(root, "bind-node", this, &Element2D::setBindNode)
+      .describe("sets a node, this 2D-Element should be shown upon (name of the node)");
+
+  LoadParam<Element2D>(root, "2d-position", this, &Element2D::setPosition2D)
+      .describe("the _relative_ position (away from alignment) this 2d-element shows");
+
+//  LoadParam<Element2D>(root, "visibility", this, &Element2D::setVisibility)
+//      .describe("if the Element is visible or not");
+}
+
+/**
+ * sets the alignment of the 2D-element in form of a String
+ * @param alignment the alignment @see loadParams
+*/
+void Element2D::setAlignment(const char* alignment)
+{
+  if (!strcmp(alignment, "center"))
+    this->setAlignment(E2D_ALIGN_CENTER);
+  else if (!strcmp(alignment, "left"))
+    this->setAlignment(E2D_ALIGN_LEFT);
+  else if (!strcmp(alignment, "right"))
+    this->setAlignment(E2D_ALIGN_RIGHT);
+  else if (!strcmp(alignment, "screen-center"))
+    this->setAlignment(E2D_ALIGN_SCREEN_CENTER);
+}
+
+/**
+ * sets the layer onto which this 2D-element is projected to.
+ * @param layer the layer @see loadParams
+ */
+void Element2D::setLayer(const char* layer)
+{
+  if (!strcmp(layer, "top"))
+    this->setLayer(E2D_TOP);
+  else if (!strcmp(layer, "medium"))
+    this->setLayer(E2D_MEDIUM);
+  else if (!strcmp(layer, "bottom"))
+    this->setLayer(E2D_BOTTOM);
+  else if (!strcmp(layer, "below-all"))
+    this->setLayer(E2D_BELOW_ALL);
+}
+
+
+/**
+ * sets a node, this 2D-Element should be shown upon
+ * @param bindNode the name of the Node (should be existing)
+ */
+void Element2D::setBindNode(const char* bindNode)
+{
+  const PNode* tmpBindNode = dynamic_cast<const PNode*>(ClassList::getObject(bindNode, CL_PARENT_NODE));
+  if (tmpBindNode != NULL)
+    this->bindNode = tmpBindNode;
 }
 
Index: orxonox/trunk/src/lib/graphics/render2D/element_2d.h
===================================================================
--- orxonox/trunk/src/lib/graphics/render2D/element_2d.h	(revision 4857)
+++ orxonox/trunk/src/lib/graphics/render2D/element_2d.h	(revision 4858)
@@ -11,4 +11,5 @@
 // FORWARD DECLARATION
 class PNode;
+class TiXmlElement;
 
 //!< An enumerator defining the Depth of a 2D-element.
@@ -48,4 +49,7 @@
     virtual ~Element2D();
 
+    void init();
+    void loadParams(const TiXmlElement* root);
+
     /** @param xCoord the xCoordinate @param yCoord the y-Coordinate. These coordinates are Relative */
     inline void setPosition2D(int xCoord, int yCoord) { this->relPos2D[0] = xCoord; this->relPos2D[1] = yCoord; };
@@ -54,20 +58,22 @@
     /** @param alignment the new Alignment of the 2D-Element */
     inline void setAlignment(E2D_ALIGNMENT alignment) { this->alignment = alignment; };
+    void setAlignment(const char* alignment);
     /** @param layer the Layer this is drawn on */
     inline void setLayer(E2DLayer layer) { this->layer = layer; };
+    void setLayer(const char* layer);
     /** @param visible true if the Element should be visible false otherwise (will not be rendered) */
     inline void setVisibility(bool visible) { this->visible = visible; };
     /** @param bindNode the Node this 2D-element should follow. if NULL the Element will not follow anything */
     inline void setBindNode(const PNode* bindNode) { this->bindNode = bindNode; };
+    void setBindNode(const char* bindNode);
 
     /** @returns the visibility state */
     inline bool isVisible() { return this->visible; };
 
-    void positioning();
     virtual void tick(float dt);
     virtual void draw() const = NULL;
 
-  private:
-    void init();
+  protected:
+    void positioning();
 
   protected:
