Index: /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.cc	(revision 449)
+++ /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.cc	(revision 450)
@@ -144,17 +144,17 @@
 
     /**
-        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_vector3_.
+        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_vector2_.
         @param classname The name of the class the variable belongs to
         @param varname The name of the variable
         @param defvalue The default-value
     */
-    ConfigValueContainer::ConfigValueContainer(const std::string& classname, const std::string& varname, Ogre::Vector3 defvalue)
-    {
-        // Try to convert the default-value from Vector3 to string
+    ConfigValueContainer::ConfigValueContainer(const std::string& classname, const std::string& varname, Ogre::Vector2 defvalue)
+    {
+        // Try to convert the default-value from Vector2 to string
         std::ostringstream ostream;
-        if (ostream << "(" << defvalue.x << "," << defvalue.y << "," << defvalue.z << ")")
+        if (ostream << "(" << defvalue.x << "," << defvalue.y << ")")
             this->defvalue_ = ostream.str();
         else
-            this->defvalue_ = "(0,0,0)";
+            this->defvalue_ = "(0,0)";
 
         // Set the default values, then get the value-string
@@ -187,29 +187,22 @@
         }
 
-        if (count != 2)
-            bEntryIsCorrupt = true;
-
-        // Try to convert the stripped value-string to Vector3
+        if (count != 1)
+            bEntryIsCorrupt = true;
+
+        // Try to convert the stripped value-string to Vector2
         if (!bEntryIsCorrupt)
         {
             std::istringstream istream(valueString);
-            if (!(istream >> this->value_vector3_.x))
-            {
-                // The conversion failed - use the default value and restore the entry in the config-file
-                this->value_vector3_.x = defvalue.x;
-                (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
-                ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
-            }
-            if (!(istream >> this->value_vector3_.y))
-            {
-                // The conversion failed - use the default value and restore the entry in the config-file
-                this->value_vector3_.y = defvalue.y;
-                (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
-                ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
-            }
-            if (!(istream >> this->value_vector3_.z))
-            {
-                // The conversion failed - use the default value and restore the entry in the config-file
-                this->value_vector3_.z = defvalue.z;
+            if (!(istream >> this->value_vector2_.x))
+            {
+                // The conversion failed - use the default value and restore the entry in the config-file
+                this->value_vector2_.x = defvalue.x;
+                (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
+                ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
+            }
+            if (!(istream >> this->value_vector2_.y))
+            {
+                // The conversion failed - use the default value and restore the entry in the config-file
+                this->value_vector2_.y = defvalue.y;
                 (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
                 ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
@@ -219,5 +212,5 @@
         {
             // The conversion failed - use the default value and restore the entry in the config-file
-            this->value_vector3_ = defvalue;
+            this->value_vector2_ = defvalue;
             (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
             ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
@@ -226,17 +219,17 @@
 
     /**
-        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_colourvalue_.
+        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_vector3_.
         @param classname The name of the class the variable belongs to
         @param varname The name of the variable
         @param defvalue The default-value
     */
-    ConfigValueContainer::ConfigValueContainer(const std::string& classname, const std::string& varname, Ogre::ColourValue defvalue)
-    {
-        // Try to convert the default-value from ColourValue to string
+    ConfigValueContainer::ConfigValueContainer(const std::string& classname, const std::string& varname, Ogre::Vector3 defvalue)
+    {
+        // Try to convert the default-value from Vector3 to string
         std::ostringstream ostream;
-        if (ostream << "(" << defvalue.r << "," << defvalue.g << "," << defvalue.b << "," << defvalue.a << ")")
+        if (ostream << "(" << defvalue.x << "," << defvalue.y << "," << defvalue.z << ")")
             this->defvalue_ = ostream.str();
         else
-            this->defvalue_ = "(0,0,0,0)";
+            this->defvalue_ = "(0,0,0)";
 
         // Set the default values, then get the value-string
@@ -269,4 +262,86 @@
         }
 
+        if (count != 2)
+            bEntryIsCorrupt = true;
+
+        // Try to convert the stripped value-string to Vector3
+        if (!bEntryIsCorrupt)
+        {
+            std::istringstream istream(valueString);
+            if (!(istream >> this->value_vector3_.x))
+            {
+                // The conversion failed - use the default value and restore the entry in the config-file
+                this->value_vector3_.x = defvalue.x;
+                (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
+                ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
+            }
+            if (!(istream >> this->value_vector3_.y))
+            {
+                // The conversion failed - use the default value and restore the entry in the config-file
+                this->value_vector3_.y = defvalue.y;
+                (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
+                ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
+            }
+            if (!(istream >> this->value_vector3_.z))
+            {
+                // The conversion failed - use the default value and restore the entry in the config-file
+                this->value_vector3_.z = defvalue.z;
+                (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
+                ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
+            }
+        }
+        else
+        {
+            // The conversion failed - use the default value and restore the entry in the config-file
+            this->value_vector3_ = defvalue;
+            (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
+            ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
+        }
+    }
+
+    /**
+        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_colourvalue_.
+        @param classname The name of the class the variable belongs to
+        @param varname The name of the variable
+        @param defvalue The default-value
+    */
+    ConfigValueContainer::ConfigValueContainer(const std::string& classname, const std::string& varname, Ogre::ColourValue defvalue)
+    {
+        // Try to convert the default-value from ColourValue to string
+        std::ostringstream ostream;
+        if (ostream << "(" << defvalue.r << "," << defvalue.g << "," << defvalue.b << "," << defvalue.a << ")")
+            this->defvalue_ = ostream.str();
+        else
+            this->defvalue_ = "(0,0,0,0)";
+
+        // Set the default values, then get the value-string
+        this->setDefaultValues(classname, varname);
+        std::string valueString = this->getValueString();
+
+        // Strip the value-string
+        bool bEntryIsCorrupt = false;
+        valueString = this->getStrippedLine(valueString);
+        unsigned int pos1, pos2, pos3;
+        pos1 = valueString.find("(");
+        if (pos1 == 0)
+            valueString.erase(pos1, 1);
+        else
+            bEntryIsCorrupt = true;
+
+        pos2 = valueString.find(")");
+        if (pos2 == valueString.length() - 1)
+            valueString.erase(pos2, 1);
+        else
+            bEntryIsCorrupt = true;
+
+        int count = 0;
+        while ((pos3 = valueString.find(",")) < valueString.length())
+        {
+            count++;
+            valueString.replace(pos3, 1, " ");
+            if (pos3 < pos1)
+                bEntryIsCorrupt = true;
+        }
+
         if (count != 3)
             bEntryIsCorrupt = true;
@@ -333,4 +408,5 @@
         this->value_bool_ = false;
         this->value_string_ = "";
+        this->value_vector2_ = Ogre::Vector2(0, 0);
         this->value_vector3_ = Ogre::Vector3(0, 0, 0);
         this->value_colourvalue_ = Ogre::ColourValue(0, 0, 0, 0);
Index: /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.h	(revision 449)
+++ /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.h	(revision 450)
@@ -18,4 +18,6 @@
 #include <string>
 #include <list>
+
+#include "OgreVector2.h"
 #include "OgreVector3.h"
 #include "OgreColourValue.h"
@@ -46,4 +48,5 @@
             ConfigValueContainer(const std::string& classname, const std::string& varname, bool defvalue);
             ConfigValueContainer(const std::string& classname, const std::string& varname, const char* defvalue);
+            ConfigValueContainer(const std::string& classname, const std::string& varname, Ogre::Vector2 defvalue);
             ConfigValueContainer(const std::string& classname, const std::string& varname, Ogre::Vector3 defvalue);
             ConfigValueContainer(const std::string& classname, const std::string& varname, Ogre::ColourValue defvalue);
@@ -67,4 +70,6 @@
             /** @returns the value of the type std::string. @param value This is only needed to determine the right type. */
             inline std::string getValue(const std::string& value)               { return this->value_string_; }
+            /** @returns the value of the type Vector2. @param value This is only needed to determine the right type. */
+            inline Ogre::Vector2 getValue(const Ogre::Vector2& value)           { return this->value_vector2_; }
             /** @returns the value of the type Vector3. @param value This is only needed to determine the right type. */
             inline Ogre::Vector3 getValue(const Ogre::Vector3& value)           { return this->value_vector3_; }
@@ -81,4 +86,5 @@
             bool                value_bool_;                    //!< The value, if the variable is of the type bool
             std::string         value_string_;                  //!< The value, if the variable is of the type string
+            Ogre::Vector2       value_vector2_;                 //!< The value, if the variable is of the type Vector2
             Ogre::Vector3       value_vector3_;                 //!< The value, if the variable is of the type Vector3
             Ogre::ColourValue   value_colourvalue_;             //!< The value, if the variable is of the type ColourValue
Index: /code/branches/objecthierarchy/src/orxonox/core/CoreIncludes.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/core/CoreIncludes.h	(revision 449)
+++ /code/branches/objecthierarchy/src/orxonox/core/CoreIncludes.h	(revision 450)
@@ -18,4 +18,5 @@
 #include "ConfigValueContainer.h"
 
+#include "OgreVector2.h"
 #include "OgreVector3.h"
 #include "OgreColourValue.h"
@@ -25,4 +26,5 @@
 namespace orxonox
 {
+    typedef Ogre::Vector2 Vector2;
     typedef Ogre::Vector3 Vector3;
     typedef Ogre::ColourValue ColourValue;
@@ -109,3 +111,3 @@
         this->getIdentifier()->setConfigValueContainer(#varname, container##varname); \
     } \
-    this->varname = container##varname->getValue(varname)
+    varname = container##varname->getValue(varname)
Index: /code/branches/objecthierarchy/src/orxonox/objects/test3.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/test3.cc	(revision 449)
+++ /code/branches/objecthierarchy/src/orxonox/objects/test3.cc	(revision 450)
@@ -20,4 +20,5 @@
         SetConfigValue(value_bool_, true);
         SetConfigValue(value_string_, "Dies ist ein Test");
+        SetConfigValue(value_vector2_, Vector2(101, 202));
         SetConfigValue(value_vector3_, Vector3(13, 26, 39));
         SetConfigValue(value_colourvalue_, ColourValue(1.0, 0.5, 0.25, 0.887));
@@ -28,4 +29,5 @@
     }
 
+        #include <fstream>
     void Test3::configOutput()
     {
@@ -34,4 +36,5 @@
         std::cout << this->value_bool_ << std::endl;
         std::cout << this->value_string_ << std::endl;
+        std::cout << this->value_vector2_ << std::endl;
         std::cout << this->value_vector3_ << std::endl;
         std::cout << this->value_colourvalue_ << std::endl;
Index: /code/branches/objecthierarchy/src/orxonox/objects/test3.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/objects/test3.h	(revision 449)
+++ /code/branches/objecthierarchy/src/orxonox/objects/test3.h	(revision 450)
@@ -27,4 +27,5 @@
             bool                value_bool_;
             std::string         value_string_;
+            Vector2             value_vector2_;
             Vector3             value_vector3_;
             ColourValue         value_colourvalue_;
