Index: /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.cc
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.cc	(revision 450)
+++ /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.cc	(revision 451)
@@ -12,5 +12,5 @@
 
     /**
-        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_int_.
+        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_.value_int_.
         @param classname The name of the class the variable belongs to
         @param varname The name of the variable
@@ -32,8 +32,8 @@
         // Try to convert the value-string to int
         std::istringstream istream(valueString);
-        if (!(istream >> this->value_int_))
+        if (!(istream >> this->value_.value_int_))
         {
             // The conversion failed - use the default value and restore the entry in the config-file
-            this->value_int_ = defvalue;
+            this->value_.value_int_ = defvalue;
             (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
             ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
@@ -42,5 +42,5 @@
 
     /**
-        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_double_.
+        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_.value_double_.
         @param classname The name of the class the variable belongs to
         @param varname The name of the variable
@@ -62,8 +62,8 @@
         // Try to convert the value-string to double
         std::istringstream istream(valueString);
-        if (!(istream >> this->value_double_))
+        if (!(istream >> this->value_.value_double_))
         {
             // The conversion failed - use the default value and restore the entry in the config-file
-            this->value_double_ = defvalue;
+            this->value_.value_double_ = defvalue;
             (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
             ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
@@ -72,5 +72,5 @@
 
     /**
-        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_bool_.
+        @brief Constructor: Converts the default-value to a string, checks the config-file for a changed value, sets this->value_.value_bool_.
         @param classname The name of the class the variable belongs to
         @param varname The name of the variable
@@ -91,15 +91,15 @@
         // Try to parse the value-string - is it a word?
         if (valueString.find("true") < valueString.size() || valueString.find("yes") < valueString.size())
-            this->value_bool_ = true;
+            this->value_.value_bool_ = true;
         else if (valueString.find("false") < valueString.size() || valueString.find("no") < valueString.size())
-            this->value_bool_ = false;
+            this->value_.value_bool_ = false;
         else
         {
             // Its not a known word - is it a number?
             std::istringstream istream(valueString);
-            if (!(istream >> this->value_bool_))
-            {
-                // The conversion failed - use the default value and restore the entry in the config-file
-                this->value_bool_ = defvalue;
+            if (!(istream >> this->value_.value_bool_))
+            {
+                // The conversion failed - use the default value and restore the entry in the config-file
+                this->value_.value_bool_ = defvalue;
                 (*this->configFileLine_) = this->varname_ + "=" + this->defvalue_;
                 ConfigValueContainer::writeConfigFile(CONFIGFILEPATH);
@@ -404,7 +404,7 @@
 
         // Set the values of all types to zero
-        this->value_int_ = 0;
-        this->value_double_ = 0.000000;
-        this->value_bool_ = false;
+        this->value_.value_int_ = 0;
+        this->value_.value_double_ = 0.000000;
+        this->value_.value_bool_ = false;
         this->value_string_ = "";
         this->value_vector2_ = Ogre::Vector2(0, 0);
Index: /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.h
===================================================================
--- /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.h	(revision 450)
+++ /code/branches/objecthierarchy/src/orxonox/core/ConfigValueContainer.h	(revision 451)
@@ -63,9 +63,9 @@
 
             /** @returns the value of the type int. @param value This is only needed to determine the right type. */
-            inline int getValue(int value)                                      { return this->value_int_; }
+            inline int getValue(int value)                                      { return this->value_.value_int_; }
             /** @returns the value of the type double. @param value This is only needed to determine the right type. */
-            inline double getValue(double value)                                { return this->value_double_; }
+            inline double getValue(double value)                                { return this->value_.value_double_; }
             /** @returns the value of the type bool. @param value This is only needed to determine the right type. */
-            inline bool getValue(bool value)                                    { return this->value_bool_; }
+            inline bool getValue(bool value)                                    { return this->value_.value_bool_; }
             /** @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_; }
@@ -82,7 +82,11 @@
             std::string         defvalue_;                      //!< The string of the default-variable
 
-            int                 value_int_;                     //!< The value, if the variable is of the type int
-            double              value_double_;                  //!< The value, if the variable is of the type double
-            bool                value_bool_;                    //!< The value, if the variable is of the type bool
+            union MultiType
+            {
+                int                 value_int_;                 //!< The value, if the variable is of the type int
+                double              value_double_;              //!< The value, if the variable is of the type double
+                bool                value_bool_;                //!< The value, if the variable is of the type bool
+            } value_;
+
             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
