Index: code/branches/console/src/util/Convert.h
===================================================================
--- code/branches/console/src/util/Convert.h	(revision 1318)
+++ code/branches/console/src/util/Convert.h	(revision 1319)
@@ -384,4 +384,6 @@
         else if (input.getType() == MT_vector3)
             return ConvertValue(output, input.getVector3());
+        else if (input.getType() == MT_vector4)
+            return ConvertValue(output, input.getVector4());
         else if (input.getType() == MT_quaternion)
             return ConvertValue(output, input.getQuaternion());
Index: code/branches/console/src/util/MultiType.h
===================================================================
--- code/branches/console/src/util/MultiType.h	(revision 1318)
+++ code/branches/console/src/util/MultiType.h	(revision 1319)
@@ -54,4 +54,5 @@
     MT_vector2,
     MT_vector3,
+    MT_vector4,
     MT_colourvalue,
     MT_quaternion,
Index: code/branches/console/src/util/MultiTypeMath.cc
===================================================================
--- code/branches/console/src/util/MultiTypeMath.cc	(revision 1318)
+++ code/branches/console/src/util/MultiTypeMath.cc	(revision 1319)
@@ -37,4 +37,6 @@
     else if (type == MT_vector3)
         this->vector3_ = orxonox::Vector3(0, 0, 0);
+    else if (type == MT_vector4)
+        this->vector4_ = orxonox::Vector4(0, 0, 0, 0);
     else if (type == MT_colourvalue)
         this->colourvalue_ = orxonox::ColourValue(0, 0, 0, 0);
@@ -55,4 +57,6 @@
         else if (this->type_ == MT_vector3)
             return (this->vector3_ == mtm.vector3_);
+        else if (this->type_ == MT_vector4)
+            return (this->vector4_ == mtm.vector4_);
         else if (this->type_ == MT_colourvalue)
             return (this->colourvalue_ == mtm.colourvalue_);
@@ -76,4 +80,6 @@
         else if (this->type_ == MT_vector3)
             return (this->vector3_ != mtm.vector3_);
+        else if (this->type_ == MT_vector4)
+            return (this->vector4_ != mtm.vector4_);
         else if (this->type_ == MT_colourvalue)
             return (this->colourvalue_ != mtm.colourvalue_);
@@ -123,4 +129,6 @@
 MultiTypeMath::operator orxonox::Vector3() const
 { return (this->type_ == MT_vector3) ? this->vector3_ : getConvertedValue<MultiTypeMath, orxonox::Vector3>(*this); }
+MultiTypeMath::operator orxonox::Vector4() const
+{ return (this->type_ == MT_vector4) ? this->vector4_ : getConvertedValue<MultiTypeMath, orxonox::Vector4>(*this); }
 MultiTypeMath::operator orxonox::Quaternion() const
 { return (this->type_ == MT_quaternion) ? this->quaternion_ : getConvertedValue<MultiTypeMath, orxonox::Quaternion>(*this); }
@@ -137,4 +145,5 @@
     this->vector2_ = mtm.vector2_;
     this->vector3_ = mtm.vector3_;
+    this->vector4_ = mtm.vector4_;
     this->quaternion_ = mtm.quaternion_;
     this->colourvalue_ = mtm.colourvalue_;
@@ -149,4 +158,6 @@
     else if (this->type_ == MT_vector3)
         return "Vector3";
+    else if (this->type_ == MT_vector4)
+        return "Vector4";
     else if (this->type_ == MT_colourvalue)
         return "ColourValue";
@@ -169,4 +180,6 @@
     else if (this->type_ == MT_vector3)
         ConvertValue(&output, this->vector3_);
+    else if (this->type_ == MT_vector4)
+        ConvertValue(&output, this->vector4_);
     else if (this->type_ == MT_colourvalue)
         ConvertValue(&output, this->colourvalue_);
@@ -189,4 +202,6 @@
     else if (this->type_ == MT_vector3)
         return ConvertValue(&this->vector3_, value, orxonox::Vector3(0, 0, 0));
+    else if (this->type_ == MT_vector4)
+        return ConvertValue(&this->vector4_, value, orxonox::Vector4(0, 0, 0, 0));
     else if (this->type_ == MT_colourvalue)
         return ConvertValue(&this->colourvalue_, value, orxonox::ColourValue(0, 0, 0, 0));
@@ -199,4 +214,24 @@
     else
         return MultiTypeString::fromString(value);
+}
+
+void MultiTypeMath::assimilate(const MultiTypeMath& mtm)
+{
+    if (this->type_ == MT_vector2)
+        this->vector2_ = mtm.operator orxonox::Vector2();
+    else if (this->type_ == MT_vector3)
+        this->vector3_ = mtm.operator orxonox::Vector3();
+    else if (this->type_ == MT_vector4)
+        this->vector4_ = mtm.operator orxonox::Vector4();
+    else if (this->type_ == MT_colourvalue)
+        this->colourvalue_ = mtm;
+    else if (this->type_ == MT_quaternion)
+        this->quaternion_ = mtm;
+    else if (this->type_ == MT_radian)
+        this->radian_ = mtm.operator orxonox::Radian();
+    else if (this->type_ == MT_degree)
+        this->degree_ = mtm.operator orxonox::Degree();
+    else
+        MultiTypeString::assimilate(mtm);
 }
 
Index: code/branches/console/src/util/MultiTypeMath.h
===================================================================
--- code/branches/console/src/util/MultiTypeMath.h	(revision 1318)
+++ code/branches/console/src/util/MultiTypeMath.h	(revision 1319)
@@ -63,4 +63,5 @@
         inline MultiTypeMath(const orxonox::Vector2&     value) { this->setValue(value); }
         inline MultiTypeMath(const orxonox::Vector3&     value) { this->setValue(value); }
+        inline MultiTypeMath(const orxonox::Vector4&     value) { this->setValue(value); }
         inline MultiTypeMath(const orxonox::ColourValue& value) { this->setValue(value); }
         inline MultiTypeMath(const orxonox::Quaternion&  value) { this->setValue(value); }
@@ -73,4 +74,5 @@
         inline MultiTypeMath& operator=(const orxonox::Vector2&     value) { this->setValue(value); return *this; }
         inline MultiTypeMath& operator=(const orxonox::Vector3&     value) { this->setValue(value); return *this; }
+        inline MultiTypeMath& operator=(const orxonox::Vector4&     value) { this->setValue(value); return *this; }
         inline MultiTypeMath& operator=(const orxonox::ColourValue& value) { this->setValue(value); return *this; }
         inline MultiTypeMath& operator=(const orxonox::Quaternion&  value) { this->setValue(value); return *this; }
@@ -82,4 +84,5 @@
         inline bool operator==(const orxonox::Vector2&     value) const { return (this->vector2_     == value); }
         inline bool operator==(const orxonox::Vector3&     value) const { return (this->vector3_     == value); }
+        inline bool operator==(const orxonox::Vector4&     value) const { return (this->vector4_     == value); }
         inline bool operator==(const orxonox::ColourValue& value) const { return (this->colourvalue_ == value); }
         inline bool operator==(const orxonox::Quaternion&  value) const { return (this->quaternion_  == value); }
@@ -91,4 +94,5 @@
         inline bool operator!=(const orxonox::Vector2&     value) const { return (this->vector2_     != value); }
         inline bool operator!=(const orxonox::Vector3&     value) const { return (this->vector3_     != value); }
+        inline bool operator!=(const orxonox::Vector4&     value) const { return (this->vector4_     != value); }
         inline bool operator!=(const orxonox::ColourValue& value) const { return (this->colourvalue_ != value); }
         inline bool operator!=(const orxonox::Quaternion&  value) const { return (this->quaternion_  != value); }
@@ -114,4 +118,5 @@
         virtual operator orxonox::Vector2()     const;
         virtual operator orxonox::Vector3()     const;
+        virtual operator orxonox::Vector4()     const;
         virtual operator orxonox::ColourValue() const;
         virtual operator orxonox::Quaternion()  const;
@@ -122,4 +127,5 @@
         inline void setValue(const orxonox::Vector2&     value) { this->type_ = MT_vector2;     this->vector2_     = value; }
         inline void setValue(const orxonox::Vector3&     value) { this->type_ = MT_vector3;     this->vector3_     = value; }
+        inline void setValue(const orxonox::Vector4&     value) { this->type_ = MT_vector4;     this->vector4_     = value; }
         inline void setValue(const orxonox::ColourValue& value) { this->type_ = MT_colourvalue; this->colourvalue_ = value; }
         inline void setValue(const orxonox::Quaternion&  value) { this->type_ = MT_quaternion;  this->quaternion_  = value; }
@@ -130,4 +136,5 @@
         inline orxonox::Vector2     getVector2()     const { return this->vector2_;     }
         inline orxonox::Vector3     getVector3()     const { return this->vector3_;     }
+        inline orxonox::Vector4     getVector4()     const { return this->vector4_;     }
         inline orxonox::ColourValue getColourValue() const { return this->colourvalue_; }
         inline orxonox::Quaternion  getQuaternion()  const { return this->quaternion_;  }
@@ -137,4 +144,5 @@
         inline orxonox::Vector2&     getVector2()     { return this->vector2_;     }
         inline orxonox::Vector3&     getVector3()     { return this->vector3_;     }
+        inline orxonox::Vector4&     getVector4()     { return this->vector4_;     }
         inline orxonox::ColourValue& getColourValue() { return this->colourvalue_; }
         inline orxonox::Quaternion&  getQuaternion()  { return this->quaternion_;  }
@@ -145,4 +153,5 @@
         inline void getValue(orxonox::Vector2*     variable) const { (*variable) = orxonox::Vector2     (this->vector2_);     }
         inline void getValue(orxonox::Vector3*     variable) const { (*variable) = orxonox::Vector3     (this->vector3_);     }
+        inline void getValue(orxonox::Vector4*     variable) const { (*variable) = orxonox::Vector4     (this->vector4_);     }
         inline void getValue(orxonox::ColourValue* variable) const { (*variable) = orxonox::ColourValue (this->colourvalue_); }
         inline void getValue(orxonox::Quaternion*  variable) const { (*variable) = orxonox::Quaternion  (this->quaternion_);  }
@@ -155,7 +164,10 @@
         virtual bool fromString(const std::string value);
 
+        virtual void assimilate(const MultiTypeMath& mtm);
+
     protected:
         orxonox::Vector2      vector2_;
         orxonox::Vector3      vector3_;
+        orxonox::Vector4      vector4_;
         orxonox::ColourValue  colourvalue_;
         orxonox::Quaternion   quaternion_;
Index: code/branches/console/src/util/MultiTypePrimitive.cc
===================================================================
--- code/branches/console/src/util/MultiTypePrimitive.cc	(revision 1318)
+++ code/branches/console/src/util/MultiTypePrimitive.cc	(revision 1319)
@@ -266,4 +266,34 @@
 }
 
+void MultiTypePrimitive::assimilate(const MultiTypePrimitive& mtp)
+{
+    if (this->type_ == MT_void)
+        this->value_.void_ = mtp;
+    else if (this->type_ == MT_int)
+        this->value_.int_ = mtp;
+    else if (this->type_ == MT_uint)
+        this->value_.uint_ = mtp;
+    else if (this->type_ == MT_char)
+        this->value_.char_ = mtp;
+    else if (this->type_ == MT_uchar)
+        this->value_.uchar_ = mtp;
+    else if (this->type_ == MT_short)
+        this->value_.short_ = mtp;
+    else if (this->type_ == MT_ushort)
+        this->value_.ushort_ = mtp;
+    else if (this->type_ == MT_long)
+        this->value_.long_ = mtp;
+    else if (this->type_ == MT_ulong)
+        this->value_.ulong_ = mtp;
+    else if (this->type_ == MT_float)
+        this->value_.float_ = mtp;
+    else if (this->type_ == MT_double)
+        this->value_.double_ = mtp;
+    else if (this->type_ == MT_longdouble)
+        this->value_.longdouble_ = mtp;
+    else if (this->type_ == MT_bool)
+        this->value_.bool_ = mtp;
+}
+
 std::ostream& operator<<(std::ostream& out, const MultiTypePrimitive& mtp)
 {
Index: code/branches/console/src/util/MultiTypePrimitive.h
===================================================================
--- code/branches/console/src/util/MultiTypePrimitive.h	(revision 1318)
+++ code/branches/console/src/util/MultiTypePrimitive.h	(revision 1319)
@@ -187,4 +187,6 @@
         virtual bool fromString(const std::string value);
 
+        virtual void assimilate(const MultiTypePrimitive& mtp);
+
     protected:
         MultiTypeValue  value_;
Index: code/branches/console/src/util/MultiTypeString.cc
===================================================================
--- code/branches/console/src/util/MultiTypeString.cc	(revision 1318)
+++ code/branches/console/src/util/MultiTypeString.cc	(revision 1319)
@@ -136,4 +136,14 @@
 }
 
+void MultiTypeString::assimilate(const MultiTypeString& mts)
+{
+    if (this->type_ == MT_constchar)
+        this->string_ = mts.toString();
+    else if (this->type_ == MT_string)
+        this->string_ = mts.toString();
+    else
+        MultiTypePrimitive::assimilate(mts);
+}
+
 std::ostream& operator<<(std::ostream& out, MultiTypeString& mts)
 {
Index: code/branches/console/src/util/MultiTypeString.h
===================================================================
--- code/branches/console/src/util/MultiTypeString.h	(revision 1318)
+++ code/branches/console/src/util/MultiTypeString.h	(revision 1319)
@@ -117,4 +117,6 @@
         virtual bool fromString(const std::string value);
 
+        virtual void assimilate(const MultiTypeString& mts);
+
     protected:
         std::string      string_;
