Index: sandbox_qt/src/libraries/util/CRC32.cc
===================================================================
--- sandbox_qt/src/libraries/util/CRC32.cc	(revision 7418)
+++ 	(revision )
@@ -1,59 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      ...
- *   Co-authors:
- *      ...
- *
- */
-
-#include "CRC32.h"
-
-namespace orxonox
-{
-    void calcCRCBit(uint32_t &crc32, int bit)
-    {
-        int hbit = (crc32 & 0x80000000) ? 1 : 0;
-        if (hbit != bit)
-            crc32 = (crc32 << 1) ^ UTIL_CRC32POLY;
-        else
-            crc32 = crc32 << 1;
-      }
-
-    uint32_t calcCRC(unsigned char *data, unsigned int dataLength)
-    {
-        uint32_t crc32 = 0;
-        for(unsigned int i = 0; i < dataLength; i++)
-        {
-            calcCRCBit(crc32, (data[i] & 0x1) >> 0); // 1st bit
-            calcCRCBit(crc32, (data[i] & 0x2) >> 1); // 2nd bit
-            calcCRCBit(crc32, (data[i] & 0x3) >> 2); // 3rd bit
-            calcCRCBit(crc32, (data[i] & 0x4) >> 3); // 4th bit
-            calcCRCBit(crc32, (data[i] & 0x5) >> 4); // 5th bit
-            calcCRCBit(crc32, (data[i] & 0x6) >> 5); // 6th bit
-            calcCRCBit(crc32, (data[i] & 0x7) >> 6); // 7th bit
-            calcCRCBit(crc32, (data[i] & 0x8) >> 7); // 8th bit
-        }
-        return crc32;
-    }
-}
-
Index: sandbox_qt/src/libraries/util/CRC32.h
===================================================================
--- sandbox_qt/src/libraries/util/CRC32.h	(revision 7418)
+++ 	(revision )
@@ -1,43 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      ...
- *   Co-authors:
- *      ...
- *
- */
-
-#ifndef _Util_CRC_H__
-#define _Util_CRC_H__
-
-#include "UtilPrereqs.h"
-
-namespace orxonox
-{
-    const unsigned int UTIL_CRC32POLY = 0x04C11DB7; /* CRC-32 Polynom */
-
-    _UtilExport void calcCRCBit(uint32_t &crc32, int bit);
-
-    _UtilExport uint32_t calcCRC(unsigned char *data, unsigned int dataLength);
-}
-
-#endif /* _Util_CRC_H__ */
Index: sandbox_qt/src/libraries/util/Clipboard.cc
===================================================================
--- sandbox_qt/src/libraries/util/Clipboard.cc	(revision 7418)
+++ 	(revision )
@@ -1,142 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- *   Windows version inspired by "Copy Text To Clipboard" by Laszlo Szathmary, 2007
- *      http://www.loria.fr/~szathmar/off/projects/C/CopyTextToClipboard/index.php
- */
-
-/**
-    @file
-    @brief OS-specific implementations of the clipboard functions.
-*/
-
-#include "Clipboard.h"
-
-#ifdef ORXONOX_PLATFORM_WINDOWS
-
-/////////////
-// Windows //
-/////////////
-
-#ifndef WIN32_LEAN_AND_MEAN
-#  define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#undef min
-#undef max
-#include "Debug.h"
-
-namespace orxonox
-{
-
-    /**
-        @brief Puts text into the Windows-clipboard
-        @return True if the action was successful
-    */
-    bool toClipboard(const std::string& text)
-    {
-        try
-        {
-            if (OpenClipboard(0))
-            {
-                EmptyClipboard();
-                HGLOBAL clipbuffer = GlobalAlloc(GMEM_DDESHARE, text.size() + 1);
-                char* buffer = static_cast<char*>(GlobalLock(clipbuffer));
-                strcpy(buffer, text.c_str());
-                GlobalUnlock(clipbuffer);
-                SetClipboardData(CF_TEXT, clipbuffer);
-                CloseClipboard();
-
-                return true;
-            }
-        }
-        catch (...)
-        {
-            COUT(1) << "Error: Unable to copy the following text to the clipboard:" << std::endl;
-            COUT(1) << "       \"" << text << '"' << std::endl;
-        }
-        return false;
-    }
-
-    /**
-        @brief Gets text from the windows-clipboard if there is any text.
-        @return The retrieved text
-    */
-    std::string fromClipboard()
-    {
-        try
-        {
-            if (OpenClipboard(0))
-            {
-                HANDLE hData = GetClipboardData(CF_TEXT);
-                if (hData == NULL)
-                    return "";
-                std::string output(static_cast<char*>(GlobalLock(hData)));
-                GlobalUnlock(hData);
-                CloseClipboard();
-
-                return output;
-            }
-        }
-        catch (...)
-        {
-            COUT(1) << "Error: Unable to retrieve text from the clipboard." << std::endl;
-        }
-        return "";
-    }
-}
-
-#else /* ORXONOX_PLATFORM_WINDOWS */
-
-/////////////
-// Default //
-/////////////
-
-namespace orxonox
-{
-    static std::string clipboard; ///< Keeps the text of our internal clipboard
-
-    /**
-        @brief Default implementation if there is no OS-specific implementation or no clipboard. Copies the text into an internal clipboard.
-        @see fromClipboard()
-    */
-    bool toClipboard(const std::string& text)
-    {
-        clipboard = text;
-        return true;
-    }
-
-    /**
-        @brief Default implementation if there is no OS-specific implementation or no clipboard. Gets the text from the internal clipboard.
-        @see toClipboard()
-    */
-    std::string fromClipboard()
-    {
-        return clipboard;
-    }
-}
-
-#endif /* ORXONOX_PLATFORM_WINDOWS */
Index: sandbox_qt/src/libraries/util/Clipboard.h
===================================================================
--- sandbox_qt/src/libraries/util/Clipboard.h	(revision 7418)
+++ 	(revision )
@@ -1,55 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @ingroup Util Command
-    @brief Some functions to exchange text between the OS clipboard and the Shell in Orxonox.
-
-    Use fromClipboard() to get text from the clipboard (if there is any text) and
-    toClipboard() to put text into the clipboard.
-
-    These functions can only work properly if there's an OS-specific implementation
-    in Clipboard.cc. If a specific OS is not supported, the clipboard only works
-    within Orxonox, but the exchange with other programs is not possible.
-*/
-
-#ifndef _Clipboard_H__
-#define _Clipboard_H__
-
-#include "UtilPrereqs.h"
-#include <string>
-
-namespace orxonox
-{
-    _UtilExport bool toClipboard(const std::string& text);
-    _UtilExport std::string fromClipboard();
-}
-
-#endif /* _Clipboard_H__ */
-
Index: sandbox_qt/src/libraries/util/Clock.cc
===================================================================
--- sandbox_qt/src/libraries/util/Clock.cc	(revision 7418)
+++ 	(revision )
@@ -1,58 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Reto Grieder
- *   Co-authors:
- *      ...
- *
- */
-
-#include "Clock.h"
-#include <OgreTimer.h>
-
-namespace orxonox
-{
-    Clock::Clock()
-        : timer_(new Ogre::Timer())
-        , tickTime_(0)
-        , tickDt_(0)
-        , tickDtFloat_(0.0f)
-    {
-    }
-
-    Clock::~Clock()
-    {
-        delete timer_;
-    }
-
-    void Clock::capture()
-    {
-        tickDt_ = timer_->getMicroseconds() - (unsigned long)tickTime_;
-        tickTime_ += tickDt_;
-        tickDtFloat_ = static_cast<float>(tickDt_) / 1000000.0f;
-    }
-
-    unsigned long long Clock::getRealMicroseconds() const
-    {
-        return tickTime_ + (timer_->getMicroseconds() - (unsigned long)tickTime_);
-    }
-}
Index: sandbox_qt/src/libraries/util/Clock.h
===================================================================
--- sandbox_qt/src/libraries/util/Clock.h	(revision 7418)
+++ 	(revision )
@@ -1,114 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Reto Grieder
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @ingroup Util
-*/
-
-#ifndef _Clock_H__
-#define _Clock_H__
-
-#include "UtilPrereqs.h"
-#include "OgreForwardRefs.h"
-
-namespace orxonox
-{
-    /** Simple real time clock based on Ogre::Timer
-    @details
-        The class can be used to both capture the current real time or to
-        incrementally capture the time and then distribute that time information
-        via Clock& references (for instance for the game tick). <br>
-        Precision: <br>
-    @par Precision
-        The maximum precision is given by the Ogre::Timer and that is somewhere
-        in the microsecond range for both Windows and UNIX.
-    @par Remarks for Usage on Windows
-        For proper functionality this class MUST be used in the same thread! <br>
-        Furthermore it might be possible that the Ogre::Timer has a performance
-        caveat because it will only capture the time on the same CPU core.
-        Confining the main thread to one process could speed up the game.
-        See \ref cmdargspage "Ccommandline Argument" 'limitToCPU' (only on Windows)
-    */
-    class _UtilExport Clock
-    {
-    public:
-        /// Starts the time at 0
-        Clock();
-        ~Clock();
-
-        /** Internally captures the time and stays at that particular time
-        @remarks
-            Mind the types! Ogre::Timer::getMicroseconds() will return an unsigned
-            long, which will eventually overflow. But if you use the subtraction of
-            the current time minus the last time the timer gave us and sum these up to
-            a 64 bit integer, we get the desired result. <br>
-            Also mind that we don't have to store the last timer's time as unsigned long
-            as well because (unsigned long)tickTime_ will do exactly that.
-        */
-        void capture();
-
-        /// Returns the last captured absolute time in microseconds
-        unsigned long long getMicroseconds() const
-            { return tickTime_; }
-        /// Returns the last captured absolute time in milliseconds
-        unsigned long long getMilliseconds() const
-            { return tickTime_ / 1000; }
-        /// Returns the last captured absolute time in seconds
-        unsigned long getSeconds() const
-            { return static_cast<long> (tickTime_ / 1000000); }
-        /// Returns the last captured absolute time in seconds as float
-        float getSecondsPrecise() const
-            { return static_cast<float>(tickTime_ / 1000000.0f); }
-
-        /// Returns the timespan in seconds between the last two calls to capture()
-        float getDeltaTime() const
-            { return tickDtFloat_; }
-        /// Returns the timespan in microseconds between the last two calls to capture()
-        long getDeltaTimeMicroseconds() const
-            { return tickDt_; }
-
-        /** Returns the current real time in microseconds
-        @note
-            This is especially useful to measure execution times because of the
-            high precision.
-        */
-        unsigned long long getRealMicroseconds() const;
-
-    private:
-        /// Undefined
-        Clock(const Clock& instance);
-
-        Ogre::Timer*       timer_;       ///< Ogre timer object
-        unsigned long long tickTime_;    ///< Currently captured time
-        long               tickDt_;      ///< Delta time in microseconds (cache value)
-        float              tickDtFloat_; ///< Delta time in seconds (cache value)
-    };
-}
-
-#endif /* _Clock_H__ */
Index: sandbox_qt/src/libraries/util/DisplayStringConversions.h
===================================================================
--- sandbox_qt/src/libraries/util/DisplayStringConversions.h	(revision 7418)
+++ 	(revision )
@@ -1,79 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *      Reto Grieder
- *   Co-authors:
- *      ...
- */
-
-/**
-@file
-@brief
-    std::sring to Ogre::UTFString conversion functions
-*/
-
-#ifndef _DisplayStringConversions_H__
-#define _DisplayStringConversions_H__
-
-#include "UtilPrereqs.h"
-#include <OgreOverlayElement.h>
-
-#if OGRE_UNICODE_SUPPORT
-    #include <OgreUTFString.h>
-
-    namespace orxonox
-    {
-        template <>
-        struct ConverterExplicit<std::string, Ogre::DisplayString>
-        {
-            //! Converts an std::string into an Ogre::UTFString
-            inline static bool convert(Ogre::DisplayString* output, const std::string& input)
-            {
-                Ogre::UTFString::code_point cp;
-                for (unsigned int i = 0; i < input.size(); ++i)
-                {
-                  cp = input[i];
-                  cp &= 0xFF;
-                  output->append(1, cp);
-                }
-                return true;
-            }
-        };
-    }
-#else
-    namespace orxonox
-    {
-        template <>
-        struct ConverterExplicit<std::string, Ogre::DisplayString>
-        {
-            //! Converts an std::string into an Ogre::String
-            inline static bool convert(Ogre::DisplayString* output, const std::string& input)
-            {
-                *output = input;
-                return true;
-            }
-        };
-    }
-#endif
-
-#endif /* _DisplayStringConversions_H__ */
Index: sandbox_qt/src/libraries/util/ExprParser.cc
===================================================================
--- sandbox_qt/src/libraries/util/ExprParser.cc	(revision 7418)
+++ 	(revision )
@@ -1,464 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Reto Grieder
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-  @file
-  @brief Declaration of FloatParser
-*/
-
-#include "ExprParser.h"
-
-#include <cmath>
-#include <cstring>
-#include <cstdlib>
-#include "Math.h"
-
-// macros for easier if, else statements
-#define CASE_1(var) if (!strcmp(SWITCH,var))
-#define CASE(var) else if (!strcmp(SWITCH,var))
-#define CASE_ELSE else
-
-//! skip white spaces
-#define PARSE_BLANKS while (*reading_stream == ' ') ++reading_stream
-
-namespace orxonox
-{
-    ExprParser::ExprParser()
-    {
-        this->failed_ = false;
-        this->variables_["pi"] = math::pi_d;
-        this->variables_["e"] = math::e_d;
-    }
-
-    void ExprParser::setVariable(const std::string& varname, double value)
-    {
-        this->variables_[varname] = value;
-    }
-
-    void ExprParser::parse(const std::string& str)
-    {
-        this->reading_stream = str.c_str();
-        if (str.size() == 0 || *reading_stream == '\0')
-        {
-            this->failed_ = true;
-            this->result_ = 0.0;
-        }
-        else
-        {
-            this->result_ = parse_expr_8();
-            this->remains_ = reading_stream;
-        }
-    }
-
-    //Private functions:
-    /******************/
-    double ExprParser::parse_argument()
-    {
-        double value = parse_expr_8();
-        if (*reading_stream == ',')
-        {
-            ++reading_stream;
-            return value;
-        }
-        else
-        {
-            this->failed_ = true;
-            return 0;
-        }
-    }
-
-    double ExprParser::parse_last_argument()
-    {
-        double value = parse_expr_8();
-        if (*reading_stream == ')')
-        {
-            ++reading_stream;
-            return value;
-        }
-        else
-        {
-            this->failed_ = true;
-            return 0;
-        }
-    }
-
-    double ExprParser::parse_expr_8()
-    {
-        double value = parse_expr_7();
-        for(;;)
-        {
-            switch (op)
-            {
-            case oder:
-                value = parse_expr_7() || value;
-                break;
-            default: return value;
-            }
-        };
-    }
-
-
-    double ExprParser::parse_expr_7()
-    {
-        double value = parse_expr_6();
-        for(;;)
-        {
-            switch (op)
-            {
-            case und:
-                value = value && parse_expr_6();
-                break;
-            default: return value;
-            }
-        };
-    }
-
-    double ExprParser::parse_expr_6()
-    {
-        double value = parse_expr_5();
-        for(;;)
-        {
-            switch (op)
-            {
-            case gleich:
-                value = (value == parse_expr_5());
-                break;
-            case ungleich:
-                value = (value != parse_expr_5());
-                break;
-            default:
-                return value;
-            }
-        };
-    }
-
-    double ExprParser::parse_expr_5()
-    {
-        double value = parse_expr_4();
-        for(;;)
-        {
-            switch (op)
-            {
-            case kleiner:
-                value = (value < parse_expr_4());
-                break;
-            case kleinergleich:
-                value = (value <= parse_expr_4());
-                break;
-            case groesser:
-                value = (value > parse_expr_4());
-                break;
-            case groessergleich:
-                value = (value >= parse_expr_4());
-                break;
-            default:
-                return value;
-            }
-        };
-    }
-
-    double ExprParser::parse_expr_4()
-    {
-        double value = parse_expr_3();
-        for(;;)
-        {
-            switch (op)
-            {
-            case b_plus:
-                value += parse_expr_3();
-                break;
-            case b_minus:
-                value -= parse_expr_3();
-                break;
-            default:
-                return value;
-            }
-        };
-    }
-
-    double ExprParser::parse_expr_3()
-    {
-        double value = parse_expr_2();
-        for(;;)
-        {
-            switch (op)
-            {
-            case mal:
-                value *= parse_expr_2();
-                break;
-            case durch:
-                value /= parse_expr_2();
-                break;
-            case modulo:
-                {
-                    double temp = parse_expr_2();
-                    value = value - floor(value/temp)*temp;
-                    break;
-                }
-            default:
-                return value;
-            }
-        };
-    }
-
-    double ExprParser::parse_expr_2()
-    {
-        double value = parse_expr_1();
-        while (*reading_stream != '\0')
-        {
-            op = parse_binary_operator();
-            switch (op)
-            {
-            case hoch:
-                value = pow(value,parse_expr_1());
-                break;
-            default:
-                return value;
-            }
-        };
-        op = undef;
-        return value;
-    }
-
-    double ExprParser::parse_expr_1()
-    {
-        PARSE_BLANKS;
-        double value;
-
-        unary_operator op = parse_unary_operator();
-        PARSE_BLANKS;
-
-        if (*reading_stream == '\0')
-        {
-            // end of string
-            this->failed_ = true;
-            return 0;
-        }
-        else if ((*reading_stream > 47 && *reading_stream < 59) || *reading_stream == 46)
-        {  // number
-            value = strtod(reading_stream, const_cast<char**>(&reading_stream));
-        }
-        else if ((*reading_stream > 64 && *reading_stream < 91) || (*reading_stream > 96 && *reading_stream < 123) || *reading_stream == 46)
-        {  // variable or function
-            char* word = new char[256];
-            parse_word(word);
-            PARSE_BLANKS;
-            if (*reading_stream == '(')
-            {
-                ++reading_stream;
-#define SWITCH word
-                CASE_1("sin")
-                    value = sin(parse_last_argument());
-                CASE("asin")
-                    value = asin(parse_last_argument());
-                CASE("sinh")
-                    value = sinh(parse_last_argument());
-                CASE("asinh")
-                {
-                    value = parse_last_argument();
-                    value = log(sqrt(pow(value, 2) + 1) + value);
-                }
-                CASE("cos")
-                    value = cos(parse_last_argument());
-                CASE("acos")
-                    value = acos(parse_last_argument());
-                CASE("cosh")
-                    value = cosh(parse_last_argument());
-                CASE("acosh")
-                {
-                    value = parse_last_argument();
-                    value = log(sqrt(pow(value, 2) - 1) + value);
-                }
-                CASE("tan")
-                    value = tan(parse_last_argument());
-                CASE("atan")
-                    value = atan(parse_last_argument());
-                CASE("atan2")
-                    value = atan2(parse_argument(),parse_last_argument());
-                CASE("tanh")
-                    value = tanh(parse_last_argument());
-                CASE("atanh")
-                {
-                    value = parse_last_argument();
-                    value = 0.5*log((value + 1)/(value - 1));
-                }
-                CASE("int")
-                    value = floor(parse_last_argument());
-                CASE("floor")
-                    value = floor(parse_last_argument());
-                CASE("ceil")
-                    value = ceil(parse_last_argument());
-                CASE("abs")
-                    value = fabs(parse_last_argument());
-                CASE("exp")
-                    value = exp(parse_last_argument());
-                CASE("log")
-                    value = log10(parse_last_argument());
-                CASE("ln")
-                    value = log(parse_last_argument());
-                CASE("sign")
-                {
-                    value = parse_last_argument();
-                    value = (value>0 ? 1 : (value<0 ? -1 : 0));
-                }
-                CASE("sqrt")
-                    value = sqrt(parse_last_argument());
-                CASE("degrees")
-                    value = parse_last_argument()*180/math::pi_d;
-                CASE("radians")
-                    value = parse_last_argument()*math::pi_d/180;
-                CASE("mod")
-                {
-                    value = parse_argument();
-                    double value2 = parse_last_argument();
-                    value = value - floor(value/value2)*value2;
-                }
-                CASE("pow")
-                    value = pow(parse_argument(),parse_last_argument());
-                CASE("div")
-                    value = floor(parse_argument()/parse_last_argument());
-                CASE("max")
-                    value = std::max(parse_argument(),parse_last_argument());
-                CASE("min")
-                    value = std::min(parse_argument(),parse_last_argument());
-                CASE_ELSE
-                {
-                    this->failed_ = true;
-                    delete[] word;
-                    return 0;
-                }
-            }
-            else
-            {
-                std::map<std::string, double>::const_iterator it = this->variables_.find(word);
-                if (it != this->variables_.end())
-                    value = it->second;
-                else
-                {
-                    this->failed_ = true;
-                    delete[] word;
-                    return 0;
-                }
-            }
-            delete[] word;
-        }
-        else if (*reading_stream == 40)
-        {  // expression in parenthesis
-            ++reading_stream;
-            value = parse_last_argument();
-        }
-        else
-        {
-            this->failed_ = true;
-            return 0;
-        }
-
-        PARSE_BLANKS;
-        switch (op)
-        {
-        case u_nicht: return !value;
-        case u_plus:  return  value;
-        case u_minus: return -value;
-        default:
-            this->failed_ = true;
-            return 0;
-        }
-    }
-
-    char* ExprParser::parse_word(char* str)
-    {
-        char* word = str;
-        int counter = 0;
-        while ((*reading_stream > 47 && *reading_stream < 58) || (*reading_stream > 64 && *reading_stream < 91) || (*reading_stream > 96 && *reading_stream < 123) || *reading_stream == 46)
-        {
-            *word++ = *reading_stream++;
-            counter++;
-            if (counter > 255)
-            {
-                this->failed_ = true;
-                return '\0';
-            }
-        };
-        *word = '\0';
-        return str;
-    }
-
-    ExprParser::binary_operator ExprParser::parse_binary_operator()
-    {
-        binary_operator op;
-        switch (*reading_stream)
-        {
-        case '+': op = b_plus; break;
-        case '-': op = b_minus; break;
-        case '*': op = mal; break;
-        case '/': op = durch; break;
-        case '^': op = hoch; break;
-        case '%': op = modulo; break;
-        case '&': op = und; break;
-        case '|': op = oder; break;
-        case '=': op = gleich; break;
-        case '!': op = b_nicht; break;
-        case '<': op = kleiner; break;
-        case '>': op = groesser; break;
-        default: return undef;
-        }
-        if (*++reading_stream == '=')
-        {
-            if (op > 9)
-            {
-                ++reading_stream;
-                return (binary_operator)(op + 3);
-            }
-            else
-            {
-                --reading_stream;
-                return undef;
-            }
-        }
-        else
-            return op;
-    }
-
-    ExprParser::unary_operator ExprParser::parse_unary_operator()
-    {
-        switch (*reading_stream)
-        {
-        case '!':
-            ++reading_stream;
-            return u_nicht;
-        case '+':
-            ++reading_stream;
-            return u_plus;
-        case '-':
-            ++reading_stream;
-            return u_minus;
-        default :
-            return u_plus;
-        }
-    }
-}
Index: sandbox_qt/src/libraries/util/ExprParser.h
===================================================================
--- sandbox_qt/src/libraries/util/ExprParser.h	(revision 7418)
+++ 	(revision )
@@ -1,164 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Reto Grieder
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-@file
-@ingroup Util
-@brief Declaration of FloatParser
-*/
-
-#ifndef _FloatParser_H__
-#define _FloatParser_H__
-
-#include "UtilPrereqs.h"
-
-#include <map>
-#include <string>
-
-namespace orxonox
-{
-    /** Parser for expressions like \c "3 * cos(5 + 4) / a" where \a a is a predeclared
-        variable.
-    @par Usage
-        Using it is rather simple:
-        @code
-        std::string str("3 + 4");
-        ExprParser expr;
-        expr.parse(str);
-        if (expr.getSuccess())
-        {
-            if (!expr.getRemains().empty())
-            {
-                COUT(2) << "Warning: Expression could not be parsed to the end! Remains: '" << expr.getRemains() << '\'' << std::endl;
-            }
-            double result = expr.getResult();
-        }
-        else
-            COUT(1) << "Error: Cannot calculate expression: Parse error." << std::endl;
-        @endcode
-        getRemains() returns the expression after what could be parsed. For instance
-        \c "2*3 text" will return \c "text" as remains.
-    @details
-        The implementation of this class is really old and sort of a trial for
-        a first C++ class by Reto. That explains why it looks more like C than
-        C++... Also some of the variable names are in German. <br>
-        Explaining how it works exactly is probably not possible anymore, but it
-        is based on recursively parsing the expression character by character.
-        That much I can remember.
-    @par Functions, operators and variables supported
-        - Variables:
-            - e
-            - pi
-        - Functions:
-            - sin, asin, sinh, asinh
-            - cos, acos, cosh, acosh
-            - tan, atan, tanh, atanh
-            - int, floor, ceil, abs, sign
-            - pow, sqrt, exp, ln, log
-            - mod, div
-            - min, max
-            - radians, degrees
-        - Operators:
-            - +, -, ! (unary)
-            - +, -, *, /, %, ^, |, &, !, <, >, !=, <=, >=, =
-    @note
-        Operators may not be very consistent with C++ rules, but using the class
-        for plus and minus should be perfectly ok.
-    */
-    class _UtilExport ExprParser
-    {
-    public:
-        enum binary_operator
-        {
-            b_plus,
-            b_minus,
-            mal,
-            durch,
-            modulo,
-            hoch,
-            undef,
-            oder,
-            und,
-            gleich,
-            b_nicht,
-            kleiner,
-            groesser,
-            ungleich,
-            kleinergleich,
-            groessergleich
-        };
-
-        enum unary_operator
-        {
-            u_plus,
-            u_minus,
-            u_nicht
-        };
-
-
-        ExprParser();
-        void parse(const std::string& str);
-        const std::string& getRemains() { return  this->remains_; }
-        double             getResult()  { return  this->result_; }
-        bool               getSuccess() { return !this->failed_; }
-
-        void setVariable(const std::string& varname, double value);
-
-    private:
-        double parse_expr_1();
-        double parse_expr_2();
-        double parse_expr_3();
-        double parse_expr_4();
-        double parse_expr_5();
-        double parse_expr_6();
-        double parse_expr_7();
-        double parse_expr_8();
-        char* parse_word(char* str);
-        binary_operator parse_binary_operator();
-        unary_operator parse_unary_operator();
-
-        double parse_argument();
-        double parse_last_argument();
-
-        binary_operator op;
-        const char* reading_stream;
-        bool failed_;
-        double result_;
-        std::string remains_;
-        std::map<std::string, double> variables_;
-    };
-
-    //Endzeichen für float expression: ')', '}', ']', ',', ';'
-    _UtilExport bool parse_float(char* const, char**, double*);
-    //Endzeichen angegeben
-    _UtilExport bool parse_float(char* const, char**, char, double*);
-    //Letzter Teil-float eines Vektors parsen (keine Vergleichs- und Logikoperationen)
-    _UtilExport bool parse_vector_float(char* const, char**, bool, double*);
-}
-
-#endif /* _FloatParser_H__ */
Index: sandbox_qt/src/libraries/util/MathConvert.h
===================================================================
--- sandbox_qt/src/libraries/util/MathConvert.h	(revision 7418)
+++ 	(revision )
@@ -1,210 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *      Reto Grieder
- *   Co-authors:
- *      ...
- */
-
-/**
-@file
-@ingroup Convert
-@brief
-    Conversion functions for Math types like Ogre::Vector3 (definitions are in Math.cc)
-*/
-
-#ifndef _MathConvert_H__
-#define _MathConvert_H__
-
-#include "UtilPrereqs.h"
-#include "Math.h"
-#include "Convert.h"
-
-namespace orxonox
-{
-    ////////////////////
-    // Math to string //
-    ////////////////////
-
-    /// Ogre::Vector2 to std::string conversion
-    template <>
-    struct ConverterExplicit<orxonox::Vector2, std::string>
-    {
-        FORCEINLINE static bool convert(std::string* output, const orxonox::Vector2& input)
-        {
-            std::ostringstream ostream;
-            if (ostream << input.x << ',' << input.y)
-            {
-                (*output) = ostream.str();
-                return true;
-            }
-            return false;
-        }
-    };
-
-    /// Ogre::Vector3 to std::string conversion
-    template <>
-    struct ConverterExplicit<orxonox::Vector3, std::string>
-    {
-        FORCEINLINE static bool convert(std::string* output, const orxonox::Vector3& input)
-        {
-            std::ostringstream ostream;
-            if (ostream << input.x << ',' << input.y << ',' << input.z)
-            {
-                (*output) = ostream.str();
-                return true;
-            }
-            return false;
-        }
-    };
-
-    /// Ogre::Vector4 to std::string conversion
-    template <>
-    struct ConverterExplicit<orxonox::Vector4, std::string>
-    {
-        FORCEINLINE static bool convert(std::string* output, const orxonox::Vector4& input)
-        {
-            std::ostringstream ostream;
-            if (ostream << input.x << ',' << input.y << ',' << input.z << ',' << input.w)
-            {
-                (*output) = ostream.str();
-                return true;
-            }
-            return false;
-        }
-    };
-
-    /// Ogre::Quaternion to std::string conversion
-    template <>
-    struct ConverterExplicit<orxonox::Quaternion, std::string>
-    {
-        FORCEINLINE static bool convert(std::string* output, const orxonox::Quaternion& input)
-        {
-            std::ostringstream ostream;
-            if (ostream << input.w << ',' << input.x << ',' << input.y << ',' << input.z)
-            {
-                (*output) = ostream.str();
-                return true;
-            }
-            return false;
-        }
-    };
-
-    /// Ogre::ColourValue to std::string conversion
-    template <>
-    struct ConverterExplicit<orxonox::ColourValue, std::string>
-    {
-        FORCEINLINE static bool convert(std::string* output, const orxonox::ColourValue& input)
-        {
-            std::ostringstream ostream;
-            if (ostream << input.r << ',' << input.g << ',' << input.b << ',' << input.a)
-            {
-                (*output) = ostream.str();
-                return true;
-            }
-            return false;
-        }
-    };
-
-
-    ////////////////////
-    // string to Math //
-    ////////////////////
-
-    /// std::string to Ogre::Vector2 conversion
-    template <> struct _UtilExport ConverterFallback<std::string, orxonox::Vector2>
-    { static bool convert(orxonox::Vector2*     output, const std::string& input); };
-    /// std::string to Ogre::Vector3 conversion
-    template <> struct _UtilExport ConverterFallback<std::string, orxonox::Vector3>
-    { static bool convert(orxonox::Vector3*     output, const std::string& input); };
-    /// std::string to Ogre::Vector4 conversion
-    template <> struct _UtilExport ConverterFallback<std::string, orxonox::Vector4>
-    { static bool convert(orxonox::Vector4*     output, const std::string& input); };
-    /// std::string to Ogre::Quaternion conversion
-    template <> struct _UtilExport ConverterFallback<std::string, orxonox::Quaternion>
-    { static bool convert(orxonox::Quaternion*  output, const std::string& input); };
-    /// std::string to Ogre::ColourValue conversion
-    template <> struct _UtilExport ConverterFallback<std::string, orxonox::ColourValue>
-    { static bool convert(orxonox::ColourValue* output, const std::string& input); };
-
-
-    ///////////////////////////////
-    // From and to Radian/Degree //
-    ///////////////////////////////
-
-    /// Delegates conversions from Radian to conversions from float
-    template <class ToType>
-    struct ConverterFallback<orxonox::Radian, ToType>
-    {
-        FORCEINLINE static bool convert(ToType* output, const orxonox::Radian& input)
-        {
-            return convertValue<Ogre::Real, ToType>(output, input.valueRadians());
-        }
-    };
-
-    /// Delegates conversions from Degree to conversions from float
-    template <class ToType>
-    struct ConverterFallback<orxonox::Degree, ToType>
-    {
-        FORCEINLINE static bool convert(ToType* output, const orxonox::Degree& input)
-        {
-            return convertValue<Ogre::Real, ToType>(output, input.valueDegrees());
-        }
-    };
-
-    /// Delegates conversions to Radian to conversions to float
-    template <class FromType>
-    struct ConverterFallback<FromType, orxonox::Radian>
-    {
-        FORCEINLINE static bool convert(orxonox::Radian* output, const FromType& input)
-        {
-            float temp;
-            if (convertValue(&temp, input))
-            {
-                *output = temp;
-                return true;
-            }
-            else
-                return false;
-        }
-    };
-
-    /// Delegates conversions to Degree to conversions to float
-    template <class FromType>
-    struct ConverterFallback<FromType, orxonox::Degree>
-    {
-        FORCEINLINE static bool convert(orxonox::Degree* output, const FromType& input)
-        {
-            float temp;
-            if (convertValue(&temp, input))
-            {
-                *output = temp;
-                return true;
-            }
-            else
-                return false;
-        }
-    };
-}
-
-#endif /* _MathConvert_H__ */
Index: sandbox_qt/src/libraries/util/MultiType.cc
===================================================================
--- sandbox_qt/src/libraries/util/MultiType.cc	(revision 7418)
+++ 	(revision )
@@ -1,208 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Implementation of the MultiType.
-*/
-
-#include "MultiType.h"
-#include "MultiTypeValue.h"
-
-namespace orxonox
-{
-    /**
-        @brief Converts the current value of the MultiType to a new type.
-        @param type The type
-    */
-    bool MultiType::convert(MT_Type::Value type)
-    {
-        switch (type)
-        {
-            case MT_Type::Null:
-                this->reset(); return true;
-            case MT_Type::Char:
-                return this->convert<char>(); break;
-            case MT_Type::UnsignedChar:
-                return this->convert<unsigned char>(); break;
-            case MT_Type::Short:
-                return this->convert<short>(); break;
-            case MT_Type::UnsignedShort:
-                return this->convert<unsigned short>(); break;
-            case MT_Type::Int:
-                return this->convert<int>(); break;
-            case MT_Type::UnsignedInt:
-                return this->convert<unsigned int>(); break;
-            case MT_Type::Long:
-                return this->convert<long>(); break;
-            case MT_Type::UnsignedLong:
-                return this->convert<unsigned long>(); break;
-            case MT_Type::LongLong:
-                return this->convert<long long>(); break;
-            case MT_Type::UnsignedLongLong:
-                return this->convert<unsigned long long>(); break;
-            case MT_Type::Float:
-                return this->convert<float>(); break;
-            case MT_Type::Double:
-                return this->convert<double>(); break;
-            case MT_Type::LongDouble:
-                return this->convert<long double>(); break;
-            case MT_Type::Bool:
-                return this->convert<bool>(); break;
-            case MT_Type::VoidPointer:
-                return this->convert<void*>(); break;
-            case MT_Type::String:
-                return this->convert<std::string>(); break;
-            case MT_Type::Vector2:
-                return this->convert<orxonox::Vector2>(); break;
-            case MT_Type::Vector3:
-                return this->convert<orxonox::Vector3>(); break;
-            case MT_Type::Vector4:
-                return this->convert<orxonox::Vector4>(); break;
-            case MT_Type::ColourValue:
-                return this->convert<orxonox::ColourValue>(); break;
-            case MT_Type::Quaternion:
-                return this->convert<orxonox::Quaternion>(); break;
-            case MT_Type::Radian:
-                return this->convert<orxonox::Radian>(); break;
-            case MT_Type::Degree:
-                return this->convert<orxonox::Degree>(); break;
-            default:
-                this->reset(); return false; break;
-        };
-    }
-
-    /**
-        @brief Returns the name of the current type.
-        @return The name
-    */
-    std::string MultiType::getTypename() const
-    {
-        MT_Type::Value type = (this->value_) ? this->value_->type_ : MT_Type::Null;
-
-        switch (type)
-        {
-            case MT_Type::Char:
-                return "char"; break;
-            case MT_Type::UnsignedChar:
-                return "unsigned char"; break;
-            case MT_Type::Short:
-                return "short"; break;
-            case MT_Type::UnsignedShort:
-                return "unsigned short"; break;
-            case MT_Type::Int:
-                return "int"; break;
-            case MT_Type::UnsignedInt:
-                return "unsigned int"; break;
-            case MT_Type::Long:
-                return "long"; break;
-            case MT_Type::UnsignedLong:
-                return "unsigned long"; break;
-            case MT_Type::LongLong:
-                return "long long"; break;
-            case MT_Type::UnsignedLongLong:
-                return "unsigned long long"; break;
-            case MT_Type::Float:
-                return "float"; break;
-            case MT_Type::Double:
-                return "double"; break;
-            case MT_Type::LongDouble:
-                return "long double"; break;
-            case MT_Type::Bool:
-                return "bool"; break;
-            case MT_Type::VoidPointer:
-                return "void*"; break;
-            case MT_Type::String:
-                return "std::string"; break;
-            case MT_Type::Vector2:
-                return "orxonox::Vector2"; break;
-            case MT_Type::Vector3:
-                return "orxonox::Vector3"; break;
-            case MT_Type::Vector4:
-                return "orxonox::Vector4"; break;
-            case MT_Type::ColourValue:
-                return "orxonox::ColourValue"; break;
-            case MT_Type::Quaternion:
-                return "orxonox::Quaternion"; break;
-            case MT_Type::Radian:
-                return "orxonox::Radian"; break;
-            case MT_Type::Degree:
-                return "orxonox::Degree"; break;
-            default:
-                return "unknown"; break;
-        };
-    }
-
-    MultiType::operator char()                 const { return (this->value_) ? ((this->value_->type_ == MT_Type::Char            ) ? (static_cast<MT_Value<char>                *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator unsigned char()        const { return (this->value_) ? ((this->value_->type_ == MT_Type::UnsignedChar    ) ? (static_cast<MT_Value<unsigned char>       *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator short()                const { return (this->value_) ? ((this->value_->type_ == MT_Type::Short           ) ? (static_cast<MT_Value<short>               *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator unsigned short()       const { return (this->value_) ? ((this->value_->type_ == MT_Type::UnsignedShort   ) ? (static_cast<MT_Value<unsigned short>      *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator int()                  const { return (this->value_) ? ((this->value_->type_ == MT_Type::Int             ) ? (static_cast<MT_Value<int>                 *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator unsigned int()         const { return (this->value_) ? ((this->value_->type_ == MT_Type::UnsignedInt     ) ? (static_cast<MT_Value<unsigned int>        *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator long()                 const { return (this->value_) ? ((this->value_->type_ == MT_Type::Long            ) ? (static_cast<MT_Value<long>                *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator unsigned long()        const { return (this->value_) ? ((this->value_->type_ == MT_Type::UnsignedLong    ) ? (static_cast<MT_Value<unsigned long>       *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator long long()            const { return (this->value_) ? ((this->value_->type_ == MT_Type::LongLong        ) ? (static_cast<MT_Value<long long>           *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator unsigned long long()   const { return (this->value_) ? ((this->value_->type_ == MT_Type::UnsignedLongLong) ? (static_cast<MT_Value<unsigned long long>  *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator float()                const { return (this->value_) ? ((this->value_->type_ == MT_Type::Float           ) ? (static_cast<MT_Value<float>               *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator double()               const { return (this->value_) ? ((this->value_->type_ == MT_Type::Double          ) ? (static_cast<MT_Value<double>              *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator long double()          const { return (this->value_) ? ((this->value_->type_ == MT_Type::LongDouble      ) ? (static_cast<MT_Value<long double>         *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator bool()                 const { return (this->value_) ? ((this->value_->type_ == MT_Type::Bool            ) ? (static_cast<MT_Value<bool>                *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator void*()                const { return (this->value_) ? ((this->value_->type_ == MT_Type::VoidPointer     ) ? (static_cast<MT_Value<void*>               *>(this->value_))->value_ : (*this->value_)) : 0;                      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator std::string()          const { return (this->value_) ? ((this->value_->type_ == MT_Type::String          ) ? (static_cast<MT_Value<std::string>         *>(this->value_))->value_ : (*this->value_)) : NilValue<std::string>();          } ///< Returns the current value, converted to the requested type.
-    MultiType::operator orxonox::Vector2()     const { return (this->value_) ? ((this->value_->type_ == MT_Type::Vector2         ) ? (static_cast<MT_Value<orxonox::Vector2>    *>(this->value_))->value_ : (*this->value_)) : NilValue<orxonox::Vector2>();     } ///< Returns the current value, converted to the requested type.
-    MultiType::operator orxonox::Vector3()     const { return (this->value_) ? ((this->value_->type_ == MT_Type::Vector3         ) ? (static_cast<MT_Value<orxonox::Vector3>    *>(this->value_))->value_ : (*this->value_)) : NilValue<orxonox::Vector3>();     } ///< Returns the current value, converted to the requested type.
-    MultiType::operator orxonox::Vector4()     const { return (this->value_) ? ((this->value_->type_ == MT_Type::Vector4         ) ? (static_cast<MT_Value<orxonox::Vector4>    *>(this->value_))->value_ : (*this->value_)) : NilValue<orxonox::Vector4>();     } ///< Returns the current value, converted to the requested type.
-    MultiType::operator orxonox::ColourValue() const { return (this->value_) ? ((this->value_->type_ == MT_Type::ColourValue     ) ? (static_cast<MT_Value<orxonox::ColourValue>*>(this->value_))->value_ : (*this->value_)) : NilValue<orxonox::ColourValue>(); } ///< Returns the current value, converted to the requested type.
-    MultiType::operator orxonox::Quaternion()  const { return (this->value_) ? ((this->value_->type_ == MT_Type::Quaternion      ) ? (static_cast<MT_Value<orxonox::Quaternion> *>(this->value_))->value_ : (*this->value_)) : NilValue<orxonox::Quaternion>();  } ///< Returns the current value, converted to the requested type.
-    MultiType::operator orxonox::Radian()      const { return (this->value_) ? ((this->value_->type_ == MT_Type::Radian          ) ? (static_cast<MT_Value<orxonox::Radian>     *>(this->value_))->value_ : (*this->value_)) : NilValue<orxonox::Radian>();      } ///< Returns the current value, converted to the requested type.
-    MultiType::operator orxonox::Degree()      const { return (this->value_) ? ((this->value_->type_ == MT_Type::Degree          ) ? (static_cast<MT_Value<orxonox::Degree>     *>(this->value_))->value_ : (*this->value_)) : NilValue<orxonox::Degree>();      } ///< Returns the current value, converted to the requested type.
-
-    template <> void MultiType::createNewValueContainer(const char& value)                 { this->value_ = new MT_Value<char>                (value, MT_Type::Char            ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const unsigned char& value)        { this->value_ = new MT_Value<unsigned char>       (value, MT_Type::UnsignedChar    ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const short& value)                { this->value_ = new MT_Value<short>               (value, MT_Type::Short           ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const unsigned short& value)       { this->value_ = new MT_Value<unsigned short>      (value, MT_Type::UnsignedShort   ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const int& value)                  { this->value_ = new MT_Value<int>                 (value, MT_Type::Int             ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const unsigned int& value)         { this->value_ = new MT_Value<unsigned int>        (value, MT_Type::UnsignedInt     ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const long& value)                 { this->value_ = new MT_Value<long>                (value, MT_Type::Long            ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const unsigned long& value)        { this->value_ = new MT_Value<unsigned long>       (value, MT_Type::UnsignedLong    ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const long long& value)            { this->value_ = new MT_Value<long long>           (value, MT_Type::LongLong        ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const unsigned long long& value)   { this->value_ = new MT_Value<unsigned long long>  (value, MT_Type::UnsignedLongLong); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const float& value)                { this->value_ = new MT_Value<float>               (value, MT_Type::Float           ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const double& value)               { this->value_ = new MT_Value<double>              (value, MT_Type::Double          ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const long double& value)          { this->value_ = new MT_Value<long double>         (value, MT_Type::LongDouble      ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const bool& value)                 { this->value_ = new MT_Value<bool>                (value, MT_Type::Bool            ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(      void* const& value)          { this->value_ = new MT_Value<void*>               (value, MT_Type::VoidPointer     ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const std::string& value)          { this->value_ = new MT_Value<std::string>         (value, MT_Type::String          ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const orxonox::Vector2& value)     { this->value_ = new MT_Value<orxonox::Vector2>    (value, MT_Type::Vector2         ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const orxonox::Vector3& value)     { this->value_ = new MT_Value<orxonox::Vector3>    (value, MT_Type::Vector3         ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const orxonox::Vector4& value)     { this->value_ = new MT_Value<orxonox::Vector4>    (value, MT_Type::Vector4         ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const orxonox::ColourValue& value) { this->value_ = new MT_Value<orxonox::ColourValue>(value, MT_Type::ColourValue     ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const orxonox::Quaternion& value)  { this->value_ = new MT_Value<orxonox::Quaternion> (value, MT_Type::Quaternion      ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const orxonox::Radian& value)      { this->value_ = new MT_Value<orxonox::Radian>     (value, MT_Type::Radian          ); } ///< Creates a new value container for the given type.
-    template <> void MultiType::createNewValueContainer(const orxonox::Degree& value)      { this->value_ = new MT_Value<orxonox::Degree>     (value, MT_Type::Degree          ); } ///< Creates a new value container for the given type.
-}
Index: sandbox_qt/src/libraries/util/MultiType.h
===================================================================
--- sandbox_qt/src/libraries/util/MultiType.h	(revision 7418)
+++ 	(revision )
@@ -1,602 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @defgroup MultiType MultiType
-    @ingroup Util
-*/
-
-/**
-    @file
-    @ingroup MultiType
-    @brief Declaration of the MultiType and some helper constructs.
-
-    @anchor MultiTypeExamples
-
-    The MultiType can hold a value of one of the following types:
-     - all primitives (int, float, bool, etc.)
-     - all pointers (void* and T*)
-     - std::string
-     - Vector2, Vector3, Vector4
-     - Quaternion
-     - ColourValue
-     - Radian, Degree
-
-    The MultiType has an internal "type" determined by the first assigned value, using one of these ways:
-     - @ref orxonox::MultiType::MultiType "The constructor"
-     - The assignment operator= (orxonox::MultiType::operator=())
-     - @ref orxonox::MultiType::setValue() "setValue(value)"
-
-    If you assign another value of another type, the MultiType keeps "its" type and
-    converts the new value to the old type.
-
-    If you want to change the type, there are three possibilities:
-     - @ref orxonox::MultiType::convert "convert<T>()" sets the type to T and converts the currently assigned value
-     - @ref orxonox::MultiType::setType "setType<T>()" sets the type to T and resets the value to zero using zeroise<T>()
-     - setValue<T>(value) assigns a new value and changes the type to T.
-
-    Examples:
-    @code
-    MultiType a = 10;          // a has now the type int and the value 10
-    a.setValue("3.14");        // a has still the type int and "3.14" gets converted, therefore the value is now 3
-    a.setValue<float>("3.14"); // a has now the type float and "3.14" gets converted to 3.14f
-    a.convert<bool>();         // converts 3.14f to bool, which is true
-    a = false;                 // assigns false, this is equivalent to a.setValue(false)
-    @endcode
-
-    You can pass a MultiType to a function as an argument, even if the argument is
-    not of type MultiType. This works, because the MultiType is automatically converted
-    to the right type.
-
-    Example:
-    @code
-    void myfunction(int value)
-    {
-        COUT(0) << "doubled value is " << (2 * value) << std::endl;
-    }
-
-    MultiType a = "50";        // Note: We assigned a string
-    myfunction(a);             // a is converted to int and passed to the function, which prints "value is 100"
-    @endcode
-
-    Note however that it is of course quite expensive to convert values, especially std::string <-> value.
-    So if you can, always assign a value with the right type to avoid conversion.
-
-    @note
-    Whenever a value gets converted, there is a boolean return value telling you whether it was
-    successful or not. If it wasn't a zero value is assigned with the help of zeroise<T>().
-*/
-
-#ifndef _MultiType_H__
-#define _MultiType_H__
-
-#include "UtilPrereqs.h"
-
-#include <cassert>
-#include <string>
-#include <OgreVector2.h>
-#include <OgreVector3.h>
-#include <OgreVector4.h>
-#include <OgreQuaternion.h>
-#include <OgreColourValue.h>
-#include <loki/TypeTraits.h>
-#include "mbool.h"
-
-namespace orxonox
-{
-    /**
-        @brief Enum of all possible types of a MultiType.
-    */
-    namespace MT_Type
-    {
-        enum Value
-        {
-            Null,
-            Char,
-            UnsignedChar,
-            Short,
-            UnsignedShort,
-            Int,
-            UnsignedInt,
-            Long,
-            UnsignedLong,
-            LongLong,
-            UnsignedLongLong,
-            Float,
-            Double,
-            LongDouble,
-            Bool,
-            VoidPointer,
-            String,
-            Vector2,
-            Vector3,
-            Vector4,
-            ColourValue,
-            Quaternion,
-            Radian,
-            Degree
-        };
-    }
-
-    /**
-        @brief The MultiType can hold a value of many possible types and convert them to other types.
-
-        The following types are supported by the MultiType:
-         - all primitves
-         - all pointers
-         - string
-         - Vector2, Vector3, Vector4
-         - Quaternion
-         - ColourValue
-         - Radian, Degree
-
-        For more information and some examples see the description @ref MultiTypeExamples "here".
-
-        @see MultiType.h
-    */
-    class _UtilExport MultiType
-    {
-        _UtilExport friend std::ostream& operator<<(std::ostream& outstream, const MultiType& mt);
-        template <typename T> friend class MT_Value;
-
-    public:
-        /**
-            @brief MT_ValueBase is an almost pure virtual baseclass of MT_Value<T>, which holds the value of the MultiType.
-            This class is only used within the MultiType.
-        */
-        class _UtilExport MT_ValueBase
-        {
-        public:
-            MT_ValueBase(MT_Type::Value type) : type_(type), bHasDefaultValue_(false) {}
-            virtual ~MT_ValueBase() {}
-
-            virtual MT_ValueBase* clone() const = 0;
-
-            virtual void reset() = 0;
-            virtual bool assimilate(const MultiType& other) = 0;
-
-            /// Returns the type of the current value.
-            const MT_Type::Value& getType() const { return this->type_; }
-
-            /// Checks whether the value is a default one.
-            bool hasDefaultValue()   const { return this->bHasDefaultValue_; }
-
-            virtual bool setValue(const char& value)                 = 0;
-            virtual bool setValue(const unsigned char& value)        = 0;
-            virtual bool setValue(const short& value)                = 0;
-            virtual bool setValue(const unsigned short& value)       = 0;
-            virtual bool setValue(const int& value)                  = 0;
-            virtual bool setValue(const unsigned int& value)         = 0;
-            virtual bool setValue(const long& value)                 = 0;
-            virtual bool setValue(const unsigned long& value)        = 0;
-            virtual bool setValue(const long long& value)            = 0;
-            virtual bool setValue(const unsigned long long& value)   = 0;
-            virtual bool setValue(const float& value)                = 0;
-            virtual bool setValue(const double& value)               = 0;
-            virtual bool setValue(const long double& value)          = 0;
-            virtual bool setValue(const bool& value)                 = 0;
-            virtual bool setValue(      void* const& value)          = 0;
-            virtual bool setValue(const std::string& value)          = 0;
-            virtual bool setValue(const orxonox::Vector2& value)     = 0;
-            virtual bool setValue(const orxonox::Vector3& value)     = 0;
-            virtual bool setValue(const orxonox::Vector4& value)     = 0;
-            virtual bool setValue(const orxonox::ColourValue& value) = 0;
-            virtual bool setValue(const orxonox::Quaternion& value)  = 0;
-            virtual bool setValue(const orxonox::Radian& value)      = 0;
-            virtual bool setValue(const orxonox::Degree& value)      = 0;
-
-            virtual bool getValue(char*                 value) const = 0;
-            virtual bool getValue(unsigned char*        value) const = 0;
-            virtual bool getValue(short*                value) const = 0;
-            virtual bool getValue(unsigned short*       value) const = 0;
-            virtual bool getValue(int*                  value) const = 0;
-            virtual bool getValue(unsigned int*         value) const = 0;
-            virtual bool getValue(long*                 value) const = 0;
-            virtual bool getValue(unsigned long*        value) const = 0;
-            virtual bool getValue(long long*            value) const = 0;
-            virtual bool getValue(unsigned long long*   value) const = 0;
-            virtual bool getValue(float*                value) const = 0;
-            virtual bool getValue(double*               value) const = 0;
-            virtual bool getValue(long double*          value) const = 0;
-            virtual bool getValue(bool*                 value) const = 0;
-            virtual bool getValue(void**                value) const = 0;
-            virtual bool getValue(std::string*          value) const = 0;
-            virtual bool getValue(orxonox::Vector2*     value) const = 0;
-            virtual bool getValue(orxonox::Vector3*     value) const = 0;
-            virtual bool getValue(orxonox::Vector4*     value) const = 0;
-            virtual bool getValue(orxonox::ColourValue* value) const = 0;
-            virtual bool getValue(orxonox::Quaternion*  value) const = 0;
-            virtual bool getValue(orxonox::Radian*      value) const = 0;
-            virtual bool getValue(orxonox::Degree*      value) const = 0;
-
-            virtual operator char()                 const = 0;
-            virtual operator unsigned char()        const = 0;
-            virtual operator short()                const = 0;
-            virtual operator unsigned short()       const = 0;
-            virtual operator int()                  const = 0;
-            virtual operator unsigned int()         const = 0;
-            virtual operator long()                 const = 0;
-            virtual operator unsigned long()        const = 0;
-            virtual operator long long()            const = 0;
-            virtual operator unsigned long long()   const = 0;
-            virtual operator float()                const = 0;
-            virtual operator double()               const = 0;
-            virtual operator long double()          const = 0;
-            virtual operator bool()                 const = 0;
-            virtual operator void*()                const = 0;
-            virtual operator std::string()          const = 0;
-            virtual operator orxonox::Vector2()     const = 0;
-            virtual operator orxonox::Vector3()     const = 0;
-            virtual operator orxonox::Vector4()     const = 0;
-            virtual operator orxonox::ColourValue() const = 0;
-            virtual operator orxonox::Quaternion()  const = 0;
-            virtual operator orxonox::Radian()      const = 0;
-            virtual operator orxonox::Degree()      const = 0;
-
-            virtual void toString(std::ostream& outstream) const = 0;
-
-            virtual void importData( uint8_t*& mem )=0;
-            virtual void exportData( uint8_t*& mem ) const=0;
-            virtual uint8_t getSize() const=0;
-
-            MT_Type::Value type_;   ///< The type of the current value
-            bool bHasDefaultValue_; ///< True if the last conversion wasn't successful
-        };
-
-        public:
-            inline MultiType()                                  : value_(0) {}                                      ///< Default constructor: Assigns no value and no type. The type will be determined by the first assignment of a value.
-            inline MultiType(const char& value)                 : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const unsigned char& value)        : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const short& value)                : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const unsigned short& value)       : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const int& value)                  : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const unsigned int& value)         : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const long& value)                 : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const unsigned long& value)        : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const long long& value)            : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const unsigned long long& value)   : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const float& value)                : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const double& value)               : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const long double& value)          : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const bool& value)                 : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(      void* const& value)          : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const std::string& value)          : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const orxonox::Vector2& value)     : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const orxonox::Vector3& value)     : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const orxonox::Vector4& value)     : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const orxonox::ColourValue& value) : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const orxonox::Quaternion& value)  : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const orxonox::Radian& value)      : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const orxonox::Degree& value)      : value_(0) { this->assignValue(value); }           ///< Constructor: Assigns the given value and sets the type.
-            inline MultiType(const orxonox::mbool& value)       : value_(0) { this->assignValue((bool)value); }     ///< Constructor: Assigns the given mbool and converts it to bool.
-            inline MultiType(const char* value)                 : value_(0) { this->setValue(std::string(value)); } ///< Constructor: Converts the char array to a std::string, assigns the value and sets the type.
-            inline MultiType(const MultiType& other)            : value_(0) { this->setValue(other); }              ///< Copyconstructor: Assigns value and type of the other MultiType.
-            inline MultiType(MT_Type::Value type)               : value_(0) { this->setType(type); }                ///< Constructor: Sets the type, the next assignment will determine the value.
-
-            /// Destructor: Deletes the MT_Value.
-            inline ~MultiType() { if (this->value_) { delete this->value_; } }
-
-            template <typename V> inline MultiType& operator=(const V& value)         { this->setValue(value); return (*this); } ///< Assigns a new value. The value will be converted to the current type of the MultiType.
-            template <typename V> inline MultiType& operator=(V* value)               { this->setValue(value); return (*this); } ///< Assigns a pointer.
-            inline                       MultiType& operator=(const MultiType& other) { this->setValue(other); return (*this); } ///< Assigns the value of the other MultiType and converts it to the current type of the MultiType.
-            inline                       MultiType& operator=(MT_Type::Value type)    { this->setType(type);   return (*this); } ///< Resets the value and changes the type.
-
-            inline bool                                   setValue(const char& value);
-            inline bool                                   setValue(const unsigned char& value);
-            inline bool                                   setValue(const short& value);
-            inline bool                                   setValue(const unsigned short& value);
-            inline bool                                   setValue(const int& value);
-            inline bool                                   setValue(const unsigned int& value);
-            inline bool                                   setValue(const long& value);
-            inline bool                                   setValue(const unsigned long& value);
-            inline bool                                   setValue(const long long& value);
-            inline bool                                   setValue(const unsigned long long& value);
-            inline bool                                   setValue(const float& value);
-            inline bool                                   setValue(const double& value);
-            inline bool                                   setValue(const long double& value);
-            inline bool                                   setValue(const bool& value);
-            inline bool                                   setValue(      void* const& value);
-            inline bool                                   setValue(const std::string& value);
-            inline bool                                   setValue(const orxonox::Vector2& value);
-            inline bool                                   setValue(const orxonox::Vector3& value);
-            inline bool                                   setValue(const orxonox::Vector4& value);
-            inline bool                                   setValue(const orxonox::ColourValue& value);
-            inline bool                                   setValue(const orxonox::Quaternion& value);
-            inline bool                                   setValue(const orxonox::Radian& value);
-            inline bool                                   setValue(const orxonox::Degree& value);
-            inline bool                                   setValue(const char* value);
-            /// Assigns a pointer.
-            template <typename V> inline bool setValue(V* value)
-            {
-                if (this->value_)
-                    return this->value_->setValue(static_cast<void*>(const_cast<typename Loki::TypeTraits<V>::UnqualifiedType*>(value)));
-                else
-                    return this->assignValue     (static_cast<void*>(const_cast<typename Loki::TypeTraits<V>::UnqualifiedType*>(value)));
-            }
-            /// Assigns the value of the other MultiType and converts it to the current type.
-            bool                                          setValue(const MultiType& other) { if (this->value_) { return this->value_->assimilate(other); } else { if (other.value_) { this->value_ = other.value_->clone(); } return true; } }
-            /// Changes the type to T and assigns the new value (which might be of another type than T - it gets converted).
-            template <typename T, typename V> inline bool setValue(const V& value) { this->setType<T>(); return this->setValue(value); }
-
-
-            /// Copies the other MultiType by assigning value and type.
-            inline void                       copy(const MultiType& other)    { if (this == &other) { return; } if (this->value_) { delete this->value_; } this->value_ = (other.value_) ? other.value_->clone() : 0; }
-
-            /// Converts the current value to type T.
-            template <typename T> inline bool convert()                       { return this->setValue<T>((typename Loki::TypeTraits<T>::UnqualifiedReferredType)(*this));  }
-            /// Converts the current value to the type of the other MultiType.
-            inline bool                       convert(const MultiType& other) { return this->convert(other.getType()); }
-            bool                              convert(MT_Type::Value type);
-
-            /// Current content gets deleted. New type is MT_Type::Null
-            inline void                       reset()                         { if (this->value_) delete this->value_; this->value_ = 0; }
-            /// Current content gets overridden with default zero value
-            inline void                       resetValue()                    { if (this->value_) this->value_->reset(); }
-
-            /// Resets the value and changes the internal type to T.
-            template <typename T> inline void setType()                       { this->assignValue(typename Loki::TypeTraits<T>::UnqualifiedReferredType()); }
-            /// Resets the value and changes the internal type to the type of the other MultiType.
-            inline void                       setType(const MultiType& other) { this->setType(other.getType());                                             }
-            /// Resets the value and changes the internal type to the given type.
-            inline void                       setType(MT_Type::Value type)    { this->reset(); this->convert(type); this->resetValue();                     }
-
-            /// Returns the current type.
-            inline MT_Type::Value             getType()                   const { return (this->value_) ? this->value_->type_ : MT_Type::Null; }
-            /// Returns true if the current type equals the given type.
-            inline bool                       isType(MT_Type::Value type) const { return (this->value_) ? (this->value_->type_ == type) : (type == MT_Type::Null); }
-            /// Returns true if the current type is T.
-            template <typename T> inline bool isType()                    const { return false; } // Only works for specialized values - see below
-            std::string                       getTypename()               const;
-
-            /// Saves the value of the MT to a bytestream (pointed at by mem) and increases mem pointer by size of MT
-            inline void                       exportData(uint8_t*& mem) const { assert(sizeof(MT_Type::Value)<=8); *static_cast<uint8_t*>(mem) = this->getType(); mem+=sizeof(uint8_t); this->value_->exportData(mem); }
-            /// Loads the value of the MT from a bytestream (pointed at by mem) and increases mem pointer by size of MT
-            inline void                       importData(uint8_t*& mem) { assert(sizeof(MT_Type::Value)<=8); this->setType(static_cast<MT_Type::Value>(*static_cast<uint8_t*>(mem))); mem+=sizeof(uint8_t); this->value_->importData(mem); }
-            /// Saves the value of the MT to a bytestream and increases pointer to bytestream by size of MT
-            inline uint8_t*&                  operator << (uint8_t*& mem) { importData(mem); return mem; }
-            /// Loads the value of the MT to a bytestream and increases pointer to bytestream by size of MT
-            inline void                       operator >> (uint8_t*& mem) const { exportData(mem); }
-            inline uint32_t                   getNetworkSize() const { assert(this->value_); return this->value_->getSize() + sizeof(uint8_t); }
-
-            /// Checks whether the value is a default one (assigned after a failed conversion)
-            bool                              hasDefaultValue() const { return this->value_->hasDefaultValue(); }
-
-            /// Checks if the MT contains no value.
-            bool                              null() const { return (!this->value_); }
-
-            operator char()                  const;
-            operator unsigned char()         const;
-            operator short()                 const;
-            operator unsigned short()        const;
-            operator int()                   const;
-            operator unsigned int()          const;
-            operator long()                  const;
-            operator unsigned long()         const;
-            operator long long()             const;
-            operator unsigned long long()    const;
-            operator float()                 const;
-            operator double()                const;
-            operator long double()           const;
-            operator bool()                  const;
-            operator void*()                 const;
-            operator std::string()           const;
-            operator orxonox::Vector2()      const;
-            operator orxonox::Vector3()      const;
-            operator orxonox::Vector4()      const;
-            operator orxonox::ColourValue()  const;
-            operator orxonox::Quaternion()   const;
-            operator orxonox::Radian()       const;
-            operator orxonox::Degree()       const;
-            /// Returns the current value, converted to a T* pointer.
-            template <class T> operator T*() const { return (static_cast<T*>(this->operator void*())); }
-
-            inline bool getValue(char*                 value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(unsigned char*        value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(short*                value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(unsigned short*       value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(int*                  value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(unsigned int*         value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(long*                 value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(unsigned long*        value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(long long*            value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(unsigned long long*   value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(float*                value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(double*               value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(long double*          value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(bool*                 value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(void**                value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(std::string*          value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(orxonox::Vector2*     value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(orxonox::Vector3*     value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(orxonox::Vector4*     value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(orxonox::ColourValue* value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(orxonox::Quaternion*  value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(orxonox::Radian*      value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-            inline bool getValue(orxonox::Degree*      value) const { if (this->value_) { return this->value_->getValue(value); } return false; } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-
-            inline char                     getChar()             const { return this->operator char();                 } ///< Returns the current value, converted to the requested type.
-            inline unsigned char            getUnsignedChar()     const { return this->operator unsigned char();        } ///< Returns the current value, converted to the requested type.
-            inline short                    getShort()            const { return this->operator short();                } ///< Returns the current value, converted to the requested type.
-            inline unsigned short           getUnsignedShort()    const { return this->operator unsigned short();       } ///< Returns the current value, converted to the requested type.
-            inline int                      getInt()              const { return this->operator int();                  } ///< Returns the current value, converted to the requested type.
-            inline unsigned int             getUnsignedInt()      const { return this->operator unsigned int();         } ///< Returns the current value, converted to the requested type.
-            inline long                     getLong()             const { return this->operator long();                 } ///< Returns the current value, converted to the requested type.
-            inline unsigned long            getUnsignedLong()     const { return this->operator unsigned long();        } ///< Returns the current value, converted to the requested type.
-            inline long long                getLongLong()         const { return this->operator long long();            } ///< Returns the current value, converted to the requested type.
-            inline unsigned long long       getUnsignedLongLong() const { return this->operator unsigned long long();   } ///< Returns the current value, converted to the requested type.
-            inline float                    getFloat()            const { return this->operator float();                } ///< Returns the current value, converted to the requested type.
-            inline double                   getDouble()           const { return this->operator double();               } ///< Returns the current value, converted to the requested type.
-            inline long double              getLongDouble()       const { return this->operator long double();          } ///< Returns the current value, converted to the requested type.
-            inline bool                     getBool()             const { return this->operator bool();                 } ///< Returns the current value, converted to the requested type.
-            inline void*                    getVoid()             const { return this->operator void*();                } ///< Returns the current value, converted to the requested type.
-            inline std::string              getString()           const { return this->operator std::string();          } ///< Returns the current value, converted to the requested type.
-            inline orxonox::Vector2         getVector2()          const { return this->operator orxonox::Vector2();     } ///< Returns the current value, converted to the requested type.
-            inline orxonox::Vector3         getVector3()          const { return this->operator orxonox::Vector3();     } ///< Returns the current value, converted to the requested type.
-            inline orxonox::Vector4         getVector4()          const { return this->operator orxonox::Vector4();     } ///< Returns the current value, converted to the requested type.
-            inline orxonox::ColourValue     getColourValue()      const { return this->operator orxonox::ColourValue(); } ///< Returns the current value, converted to the requested type.
-            inline orxonox::Quaternion      getQuaternion()       const { return this->operator orxonox::Quaternion();  } ///< Returns the current value, converted to the requested type.
-            inline orxonox::Radian          getRadian()           const { return this->operator orxonox::Radian();      } ///< Returns the current value, converted to the requested type.
-            inline orxonox::Degree          getDegree()           const { return this->operator orxonox::Degree();      } ///< Returns the current value, converted to the requested type.
-            template <typename T> inline T* getPointer()          const { return static_cast<T*>(this->getVoid());      } ///< Returns the current value, converted to a T* pointer.
-
-        private:
-            inline bool assignValue(const char& value)                 { if (this->value_ && this->value_->type_ == MT_Type::Char)             { return this->value_->setValue(value); } else { this->changeValueContainer<char>(value);                 return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const unsigned char& value)        { if (this->value_ && this->value_->type_ == MT_Type::UnsignedChar)     { return this->value_->setValue(value); } else { this->changeValueContainer<unsigned char>(value);        return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const short& value)                { if (this->value_ && this->value_->type_ == MT_Type::Short)            { return this->value_->setValue(value); } else { this->changeValueContainer<short>(value);                return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const unsigned short& value)       { if (this->value_ && this->value_->type_ == MT_Type::UnsignedShort)    { return this->value_->setValue(value); } else { this->changeValueContainer<unsigned short>(value);       return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const int& value)                  { if (this->value_ && this->value_->type_ == MT_Type::Int)              { return this->value_->setValue(value); } else { this->changeValueContainer<int>(value);                  return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const unsigned int& value)         { if (this->value_ && this->value_->type_ == MT_Type::UnsignedInt)      { return this->value_->setValue(value); } else { this->changeValueContainer<unsigned int>(value);         return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const long& value)                 { if (this->value_ && this->value_->type_ == MT_Type::Long)             { return this->value_->setValue(value); } else { this->changeValueContainer<long>(value);                 return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const unsigned long& value)        { if (this->value_ && this->value_->type_ == MT_Type::UnsignedLong)     { return this->value_->setValue(value); } else { this->changeValueContainer<unsigned long>(value);        return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const long long& value)            { if (this->value_ && this->value_->type_ == MT_Type::LongLong)         { return this->value_->setValue(value); } else { this->changeValueContainer<long long>(value);            return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const unsigned long long& value)   { if (this->value_ && this->value_->type_ == MT_Type::UnsignedLongLong) { return this->value_->setValue(value); } else { this->changeValueContainer<unsigned long long>(value);   return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const float& value)                { if (this->value_ && this->value_->type_ == MT_Type::Float)            { return this->value_->setValue(value); } else { this->changeValueContainer<float>(value);                return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const double& value)               { if (this->value_ && this->value_->type_ == MT_Type::Double)           { return this->value_->setValue(value); } else { this->changeValueContainer<double>(value);               return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const long double& value)          { if (this->value_ && this->value_->type_ == MT_Type::LongDouble)       { return this->value_->setValue(value); } else { this->changeValueContainer<long double>(value);          return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const bool& value)                 { if (this->value_ && this->value_->type_ == MT_Type::Bool)             { return this->value_->setValue(value); } else { this->changeValueContainer<bool>(value);                 return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(      void* const& value)          { if (this->value_ && this->value_->type_ == MT_Type::VoidPointer)      { return this->value_->setValue(value); } else { this->changeValueContainer<void*>(value);                return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const std::string& value)          { if (this->value_ && this->value_->type_ == MT_Type::String)           { return this->value_->setValue(value); } else { this->changeValueContainer<std::string>(value);          return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const orxonox::Vector2& value)     { if (this->value_ && this->value_->type_ == MT_Type::Vector2)          { return this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Vector2>(value);     return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const orxonox::Vector3& value)     { if (this->value_ && this->value_->type_ == MT_Type::Vector3)          { return this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Vector3>(value);     return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const orxonox::Vector4& value)     { if (this->value_ && this->value_->type_ == MT_Type::Vector4)          { return this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Vector4>(value);     return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const orxonox::ColourValue& value) { if (this->value_ && this->value_->type_ == MT_Type::ColourValue)      { return this->value_->setValue(value); } else { this->changeValueContainer<orxonox::ColourValue>(value); return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const orxonox::Quaternion& value)  { if (this->value_ && this->value_->type_ == MT_Type::Quaternion)       { return this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Quaternion>(value);  return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const orxonox::Radian& value)      { if (this->value_ && this->value_->type_ == MT_Type::Radian)           { return this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Radian>(value);      return true; } } ///< Assigns a new value by changing type and creating a new container.
-            inline bool assignValue(const orxonox::Degree& value)      { if (this->value_ && this->value_->type_ == MT_Type::Degree)           { return this->value_->setValue(value); } else { this->changeValueContainer<orxonox::Degree>(value);      return true; } } ///< Assigns a new value by changing type and creating a new container.
-
-            /// Changes the value container.
-            template <typename T> inline void changeValueContainer(const T& value) { if (this->value_) { delete this->value_; } this->createNewValueContainer<T>(value); }
-            /// Creates a new value container (works only with specialized types).
-            template <typename T>        void createNewValueContainer(const T& value) { /* STATIC ASSERT */ *****value; return false; }
-
-            MT_ValueBase* value_; //!< A pointer to the value container
-    };
-
-    /// Puts the MultiType on a stream by using the native << operator of the current type.
-    _UtilExport inline std::ostream& operator<<(std::ostream& outstream, const MultiType& mt) { if (mt.value_) { mt.value_->toString(outstream); } return outstream; }
-
-    template <> inline bool MultiType::isType<char>()                 const { return (this->value_ && this->value_->type_ == MT_Type::Char);             } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<unsigned char>()        const { return (this->value_ && this->value_->type_ == MT_Type::UnsignedChar);     } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<short>()                const { return (this->value_ && this->value_->type_ == MT_Type::Short);            } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<unsigned short>()       const { return (this->value_ && this->value_->type_ == MT_Type::UnsignedShort);    } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<int>()                  const { return (this->value_ && this->value_->type_ == MT_Type::Int);              } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<unsigned int>()         const { return (this->value_ && this->value_->type_ == MT_Type::UnsignedInt);      } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<long>()                 const { return (this->value_ && this->value_->type_ == MT_Type::Long);             } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<unsigned long>()        const { return (this->value_ && this->value_->type_ == MT_Type::UnsignedLong);     } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<long long>()            const { return (this->value_ && this->value_->type_ == MT_Type::LongLong);         } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<unsigned long long>()   const { return (this->value_ && this->value_->type_ == MT_Type::UnsignedLongLong); } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<float>()                const { return (this->value_ && this->value_->type_ == MT_Type::Float);            } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<double>()               const { return (this->value_ && this->value_->type_ == MT_Type::Double);           } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<long double>()          const { return (this->value_ && this->value_->type_ == MT_Type::LongDouble);       } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<bool>()                 const { return (this->value_ && this->value_->type_ == MT_Type::Bool);             } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<void*>()                const { return (this->value_ && this->value_->type_ == MT_Type::VoidPointer);      } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<std::string>()          const { return (this->value_ && this->value_->type_ == MT_Type::String);           } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<orxonox::Vector2>()     const { return (this->value_ && this->value_->type_ == MT_Type::Vector2);          } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<orxonox::Vector3>()     const { return (this->value_ && this->value_->type_ == MT_Type::Vector3);          } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<orxonox::Vector4>()     const { return (this->value_ && this->value_->type_ == MT_Type::Vector4);          } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<orxonox::ColourValue>() const { return (this->value_ && this->value_->type_ == MT_Type::ColourValue);      } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<orxonox::Quaternion>()  const { return (this->value_ && this->value_->type_ == MT_Type::Quaternion);       } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<orxonox::Radian>()      const { return (this->value_ && this->value_->type_ == MT_Type::Radian);           } ///< Returns true if the current type equals the given type.
-    template <> inline bool MultiType::isType<orxonox::Degree>()      const { return (this->value_ && this->value_->type_ == MT_Type::Degree);           } ///< Returns true if the current type equals the given type.
-
-    /// Deletes the content, type becomes MT_Type::Null.
-    template <> inline bool MultiType::convert<void>()                 { this->reset(); return true; }
-
-    // Specialization to avoid ambiguities with the conversion operator
-    template <> inline bool MultiType::convert<std::string>()          { return this->setValue<std::string>         (this->operator std::string());          } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<orxonox::Vector2>()     { return this->setValue<orxonox::Vector2>    (this->operator orxonox::Vector2());     } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<orxonox::Vector3>()     { return this->setValue<orxonox::Vector3>    (this->operator orxonox::Vector3());     } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<orxonox::Vector4>()     { return this->setValue<orxonox::Vector4>    (this->operator orxonox::Vector4());     } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<orxonox::ColourValue>() { return this->setValue<orxonox::ColourValue>(this->operator orxonox::ColourValue()); } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<orxonox::Quaternion>()  { return this->setValue<orxonox::Quaternion> (this->operator orxonox::Quaternion());  } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<orxonox::Radian>()      { return this->setValue<orxonox::Radian>     (this->operator orxonox::Radian());      } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<orxonox::Degree>()      { return this->setValue<orxonox::Degree>     (this->operator orxonox::Degree());      } ///< Converts the current value to the given type.
-
-    // Specialization to avoid ambiguities with the conversion operator
-    template <> inline bool MultiType::convert<const std::string&>()          { return this->convert<std::string>();          } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<const orxonox::Vector2&>()     { return this->convert<orxonox::Vector2>();     } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<const orxonox::Vector3&>()     { return this->convert<orxonox::Vector3>();     } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<const orxonox::Vector4&>()     { return this->convert<orxonox::Vector4>();     } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<const orxonox::ColourValue&>() { return this->convert<orxonox::ColourValue>(); } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<const orxonox::Quaternion&>()  { return this->convert<orxonox::Quaternion>();  } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<const orxonox::Radian&>()      { return this->convert<orxonox::Radian>();      } ///< Converts the current value to the given type.
-    template <> inline bool MultiType::convert<const orxonox::Degree&>()      { return this->convert<orxonox::Degree>();      } ///< Converts the current value to the given type.
-
-    template <> _UtilExport void MultiType::createNewValueContainer(const char& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const unsigned char& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const short& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const unsigned short& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const int& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const unsigned int& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const long& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const unsigned long& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const long long& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const unsigned long long& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const float& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const double& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const bool& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const long double& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(      void* const& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const std::string& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const orxonox::Vector2& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const orxonox::Vector3& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const orxonox::Vector4& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const orxonox::ColourValue& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const orxonox::Quaternion& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const orxonox::Radian& value);
-    template <> _UtilExport void MultiType::createNewValueContainer(const orxonox::Degree& value);
-
-    inline bool MultiType::setValue(const char& value)                  { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const unsigned char& value)         { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const short& value)                 { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const unsigned short& value)        { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const int& value)                   { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const unsigned int& value)          { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const long& value)                  { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const unsigned long& value)         { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const long long& value)             { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const unsigned long long& value)    { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const float& value)                 { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const double& value)                { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const long double& value)           { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const bool& value)                  { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(      void* const& value)           { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const std::string& value)           { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const orxonox::Vector2& value)      { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const orxonox::Vector3& value)      { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const orxonox::Vector4& value)      { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const orxonox::ColourValue& value)  { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const orxonox::Quaternion& value)   { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const orxonox::Radian& value)       { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const orxonox::Degree& value)       { if (this->value_) { return this->value_->setValue(value); } else { return this->assignValue(value); } } ///< Assigns the given value and converts it to the current type.
-
-    /// Assigns the given value and converts it to the current type.
-    inline bool MultiType::setValue(const char* value)                  { if (this->value_) { return this->value_->setValue(std::string(value)); } else { return this->assignValue(std::string(value)); } }
-}
-
-#endif /* _MultiType_H__ */
Index: sandbox_qt/src/libraries/util/MultiTypeValue.h
===================================================================
--- sandbox_qt/src/libraries/util/MultiTypeValue.h	(revision 7418)
+++ 	(revision )
@@ -1,271 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @ingroup MultiType
-    @brief Declaration and Implementation of the MT_Value<T> class.
-
-    The MT_Value<T> class is used to hold a value of type T within a MultiType.
-*/
-
-#ifndef _MultiTypeValue_H__
-#define _MultiTypeValue_H__
-
-#include "UtilPrereqs.h"
-
-#include <cassert>
-#include "MathConvert.h"
-#include "MultiType.h"
-#include "Serialise.h"
-
-namespace orxonox
-{
-    /**
-        @brief The MT_Value<T> class is used to hold a value of type T within a MultiType.
-    */
-    template <typename T>
-    class MT_Value : public MultiType::MT_ValueBase
-    {
-    public:
-        /// Constructor: Assigns the value and the type identifier.
-        MT_Value(const T& value, MT_Type::Value type) : MT_ValueBase(type), value_(value) {}
-
-        /// Creates a copy of itself.
-        inline MT_ValueBase* clone() const { return new MT_Value<T>(this->value_, this->type_); }
-
-        /// Resets the current value to the default.
-        inline void reset() { this->value_ = zeroise<T>(); bHasDefaultValue_ = true; }
-
-        /**
-            @brief Assigns the value of the other MultiType, converted to T.
-            @param other The other MultiType
-        */
-        inline bool assimilate(const MultiType& other)
-        {
-            if (other.value_)
-            {
-                return !(bHasDefaultValue_ = !other.value_->getValue(&value_));
-            }
-            else
-            {
-                this->value_ = zeroise<T>();
-                return !(bHasDefaultValue_ = true);
-            }
-        }
-
-        inline bool getValue(char*                 value) const { return convertValue<T, char                >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(unsigned char*        value) const { return convertValue<T, unsigned char       >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(short*                value) const { return convertValue<T, short               >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(unsigned short*       value) const { return convertValue<T, unsigned short      >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(int*                  value) const { return convertValue<T, int                 >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(unsigned int*         value) const { return convertValue<T, unsigned int        >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(long*                 value) const { return convertValue<T, long                >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(unsigned long*        value) const { return convertValue<T, unsigned long       >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(long long*            value) const { return convertValue<T, long long           >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(unsigned long long*   value) const { return convertValue<T, unsigned long long  >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(float*                value) const { return convertValue<T, float               >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(double*               value) const { return convertValue<T, double              >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(long double*          value) const { return convertValue<T, long double         >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(bool*                 value) const { return convertValue<T, bool                >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(void**                value) const { return convertValue<T, void*               >(value, value_, 0); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(std::string*          value) const { return convertValue<T, std::string         >(value, value_, zeroise<std::string>         ()); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(orxonox::Vector2*     value) const { return convertValue<T, orxonox::Vector2    >(value, value_, zeroise<orxonox::Vector2>    ()); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(orxonox::Vector3*     value) const { return convertValue<T, orxonox::Vector3    >(value, value_, zeroise<orxonox::Vector3>    ()); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(orxonox::Vector4*     value) const { return convertValue<T, orxonox::Vector4    >(value, value_, zeroise<orxonox::Vector4>    ()); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(orxonox::ColourValue* value) const { return convertValue<T, orxonox::ColourValue>(value, value_, zeroise<orxonox::ColourValue>()); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(orxonox::Quaternion*  value) const { return convertValue<T, orxonox::Quaternion >(value, value_, zeroise<orxonox::Quaternion> ()); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(orxonox::Radian*      value) const { return convertValue<T, orxonox::Radian     >(value, value_, zeroise<orxonox::Radian>     ()); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-        inline bool getValue(orxonox::Degree*      value) const { return convertValue<T, orxonox::Degree     >(value, value_, zeroise<orxonox::Degree>     ()); } ///< Assigns the value to the given pointer. The value gets converted if the types don't match.
-
-        inline bool setValue(const char& value)                 { return !(bHasDefaultValue_ = !convertValue<char                , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const unsigned char& value)        { return !(bHasDefaultValue_ = !convertValue<unsigned char       , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const short& value)                { return !(bHasDefaultValue_ = !convertValue<short               , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const unsigned short& value)       { return !(bHasDefaultValue_ = !convertValue<unsigned short      , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const int& value)                  { return !(bHasDefaultValue_ = !convertValue<int                 , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const unsigned int& value)         { return !(bHasDefaultValue_ = !convertValue<unsigned int        , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const long& value)                 { return !(bHasDefaultValue_ = !convertValue<long                , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const unsigned long& value)        { return !(bHasDefaultValue_ = !convertValue<unsigned long       , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const long long& value)            { return !(bHasDefaultValue_ = !convertValue<long long           , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const unsigned long long& value)   { return !(bHasDefaultValue_ = !convertValue<unsigned long long  , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const float& value)                { return !(bHasDefaultValue_ = !convertValue<float               , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const double& value)               { return !(bHasDefaultValue_ = !convertValue<double              , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const long double& value)          { return !(bHasDefaultValue_ = !convertValue<long double         , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const bool& value)                 { return !(bHasDefaultValue_ = !convertValue<bool                , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(      void* const& value)          { return !(bHasDefaultValue_ = !convertValue<void*               , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const std::string& value)          { return !(bHasDefaultValue_ = !convertValue<std::string         , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const orxonox::Vector2& value)     { return !(bHasDefaultValue_ = !convertValue<orxonox::Vector2    , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const orxonox::Vector3& value)     { return !(bHasDefaultValue_ = !convertValue<orxonox::Vector3    , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const orxonox::Vector4& value)     { return !(bHasDefaultValue_ = !convertValue<orxonox::Vector4    , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const orxonox::ColourValue& value) { return !(bHasDefaultValue_ = !convertValue<orxonox::ColourValue, T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const orxonox::Quaternion& value)  { return !(bHasDefaultValue_ = !convertValue<orxonox::Quaternion , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const orxonox::Radian& value)      { return !(bHasDefaultValue_ = !convertValue<orxonox::Radian     , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-        inline bool setValue(const orxonox::Degree& value)      { return !(bHasDefaultValue_ = !convertValue<orxonox::Degree     , T>(&value_, value, zeroise<T>())); } ///< Assigns the value by converting it to T.
-
-        inline operator char()                 const { return getConvertedValue<T, char>                (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator unsigned char()        const { return getConvertedValue<T, unsigned char>       (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator short()                const { return getConvertedValue<T, short>               (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator unsigned short()       const { return getConvertedValue<T, unsigned short>      (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator int()                  const { return getConvertedValue<T, int>                 (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator unsigned int()         const { return getConvertedValue<T, unsigned int>        (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator long()                 const { return getConvertedValue<T, long>                (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator unsigned long()        const { return getConvertedValue<T, unsigned long>       (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator long long()            const { return getConvertedValue<T, long long>           (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator unsigned long long()   const { return getConvertedValue<T, unsigned long long>  (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator float()                const { return getConvertedValue<T, float>               (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator double()               const { return getConvertedValue<T, double>              (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator long double()          const { return getConvertedValue<T, long double>         (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator bool()                 const { return getConvertedValue<T, bool>                (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator void*()                const { return getConvertedValue<T, void*>               (this->value_, 0); }     ///< Returns the current value, converted to the requested type.
-        inline operator std::string()          const { return getConvertedValue<T, std::string>         (this->value_, NilValue<std::string         >()); } ///< Returns the current value, converted to the requested type.
-        inline operator orxonox::Vector2()     const { return getConvertedValue<T, orxonox::Vector2>    (this->value_, NilValue<orxonox::Vector2    >()); } ///< Returns the current value, converted to the requested type.
-        inline operator orxonox::Vector3()     const { return getConvertedValue<T, orxonox::Vector3>    (this->value_, NilValue<orxonox::Vector3    >()); } ///< Returns the current value, converted to the requested type.
-        inline operator orxonox::Vector4()     const { return getConvertedValue<T, orxonox::Vector4>    (this->value_, NilValue<orxonox::Vector4    >()); } ///< Returns the current value, converted to the requested type.
-        inline operator orxonox::ColourValue() const { return getConvertedValue<T, orxonox::ColourValue>(this->value_, NilValue<orxonox::ColourValue>()); } ///< Returns the current value, converted to the requested type.
-        inline operator orxonox::Quaternion()  const { return getConvertedValue<T, orxonox::Quaternion> (this->value_, NilValue<orxonox::Quaternion >()); } ///< Returns the current value, converted to the requested type.
-        inline operator orxonox::Radian()      const { return getConvertedValue<T, orxonox::Radian>     (this->value_, NilValue<orxonox::Radian     >()); } ///< Returns the current value, converted to the requested type.
-        inline operator orxonox::Degree()      const { return getConvertedValue<T, orxonox::Degree>     (this->value_, NilValue<orxonox::Degree     >()); } ///< Returns the current value, converted to the requested type.
-
-        /// Puts the current value on the stream
-        inline void toString(std::ostream& outstream) const { outstream << this->value_; }
-
-        /// loads data from the bytestream (mem) into the MT and increases the bytestream pointer by the size of the data
-        inline void importData( uint8_t*& mem )         { loadAndIncrease( /*(const T&)*/this->value_, mem ); }
-        /// saves data from the MT into the bytestream (mem) and increases the bytestream pointer by the size of the data
-        inline void exportData( uint8_t*& mem ) const   { saveAndIncrease( /*(const T&)*/this->value_, mem ); }
-        /// returns the size of the data that would be saved by exportData
-        inline uint8_t getSize() const { return returnSize( this->value_ ); }
-
-        T value_; ///< The stored value
-    };
-
-    // Import / Export specialisation
-    // ColourValue
-    template <> inline void MT_Value<ColourValue>::importData( uint8_t*& mem )
-    {
-        loadAndIncrease( this->value_.r, mem );
-        loadAndIncrease( this->value_.g, mem );
-        loadAndIncrease( this->value_.b, mem );
-        loadAndIncrease( this->value_.a, mem );
-    }
-    template <> inline void MT_Value<ColourValue>::exportData( uint8_t*& mem ) const
-    {
-        saveAndIncrease( this->value_.r, mem );
-        saveAndIncrease( this->value_.g, mem );
-        saveAndIncrease( this->value_.b, mem );
-        saveAndIncrease( this->value_.a, mem );
-    }
-    template <> inline uint8_t MT_Value<ColourValue>::getSize() const
-    {
-        return 4*returnSize(this->value_.r);
-    }
-    // Ogre::Quaternion
-    template <> inline void MT_Value<Ogre::Quaternion>::importData( uint8_t*& mem )
-    {
-        loadAndIncrease( this->value_.x, mem );
-        loadAndIncrease( this->value_.y, mem );
-        loadAndIncrease( this->value_.z, mem );
-        loadAndIncrease( this->value_.w, mem );
-    }
-    template <> inline void MT_Value<Ogre::Quaternion>::exportData( uint8_t*& mem ) const
-    {
-        saveAndIncrease( this->value_.x, mem );
-        saveAndIncrease( this->value_.y, mem );
-        saveAndIncrease( this->value_.z, mem );
-        saveAndIncrease( this->value_.w, mem );
-    }
-    template <> inline uint8_t MT_Value<Ogre::Quaternion>::getSize() const
-    {
-        return 4*returnSize(this->value_.x);
-    }
-    // Ogre::Vector2
-    template <> inline void MT_Value<Ogre::Vector2>::importData( uint8_t*& mem )
-    {
-        loadAndIncrease( this->value_.x, mem );
-        loadAndIncrease( this->value_.y, mem );
-    }
-    template <> inline void MT_Value<Ogre::Vector2>::exportData( uint8_t*& mem ) const
-    {
-        saveAndIncrease( this->value_.x, mem );
-        saveAndIncrease( this->value_.y, mem );
-    }
-    template <> inline uint8_t MT_Value<Ogre::Vector2>::getSize() const
-    {
-        return 2*returnSize(this->value_.x);
-    }
-    // Ogre::Vector3
-    template <> inline void MT_Value<Ogre::Vector3>::importData( uint8_t*& mem )
-    {
-        loadAndIncrease( this->value_.x, mem );
-        loadAndIncrease( this->value_.y, mem );
-        loadAndIncrease( this->value_.z, mem );
-    }
-    template <> inline void MT_Value<Ogre::Vector3>::exportData( uint8_t*& mem ) const
-    {
-        saveAndIncrease( this->value_.x, mem );
-        saveAndIncrease( this->value_.y, mem );
-        saveAndIncrease( this->value_.z, mem );
-    }
-    template <> inline uint8_t MT_Value<Ogre::Vector3>::getSize() const
-    {
-        return 3*returnSize(this->value_.x);
-    }
-    // Ogre::Vector4
-    template <> inline void MT_Value<Ogre::Vector4>::importData( uint8_t*& mem )
-    {
-        loadAndIncrease( this->value_.x, mem );
-        loadAndIncrease( this->value_.y, mem );
-        loadAndIncrease( this->value_.z, mem );
-        loadAndIncrease( this->value_.w, mem );
-    }
-    template <> inline void MT_Value<Ogre::Vector4>::exportData( uint8_t*& mem ) const
-    {
-        saveAndIncrease( this->value_.x, mem );
-        saveAndIncrease( this->value_.y, mem );
-        saveAndIncrease( this->value_.z, mem );
-        saveAndIncrease( this->value_.w, mem );
-    }
-    template <> inline uint8_t MT_Value<Ogre::Vector4>::getSize() const
-    {
-        return 4*returnSize(this->value_.x);
-    }
-    template <> inline void MT_Value<void*>::importData( uint8_t*& mem )
-    {
-        assert(0);
-    }
-    template <> inline void MT_Value<void*>::exportData( uint8_t*& mem ) const
-    {
-        assert(0);
-    }
-    template <> inline uint8_t MT_Value<void*>::getSize() const
-    {
-        assert(0); return 0;
-    }
-}
-
-#endif /* _MultiTypeValue_H__ */
Index: sandbox_qt/src/libraries/util/OgreForwardRefs.h
===================================================================
--- sandbox_qt/src/libraries/util/OgreForwardRefs.h	(revision 7418)
+++ 	(revision )
@@ -1,227 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Reto Grieder
- *   Co-authors:
- *      ...
- *
- */
-
-#ifndef _OgreForwardRefs_H__
-#define _OgreForwardRefs_H__
-
-#include "UtilPrereqs.h"
-
-namespace Ogre
-{
-    class Angle;
-    class Animation;
-    class AnimationState;
-    class AnimationStateSet;
-    class AnimationTrack;
-    class Archive;
-    class ArchiveFactory;
-    class ArchiveManager;
-    class AutoParamDataSource;
-    class AxisAlignedBox;
-    class AxisAlignedBoxSceneQuery;
-    class Billboard;
-    class BillboardChain;
-    class BillboardSet;
-    class Bone;
-    class Camera;
-    class Codec;
-    class ColourValue;
-    class ConfigDialog;
-    template <typename T> class Controller;
-    template <typename T> class ControllerFunction;
-    class ControllerManager;
-    template <typename T> class ControllerValue;
-    class Degree;
-    class DynLib;
-    class DynLibManager;
-    class EdgeData;
-    class EdgeListBuilder;
-    class Entity;
-    class ErrorDialog;
-    class ExternalTextureSourceManager;
-    class Factory;
-    class Font;
-    class FontPtr;
-    class FontManager;
-    struct FrameEvent;
-    class FrameListener;
-    class Frustum;
-    class GpuProgram;
-    class GpuProgramPtr;
-    class GpuProgramManager;
-    class GpuProgramUsage;
-    class HardwareIndexBuffer;
-    class HardwareOcclusionQuery;
-    class HardwareVertexBuffer;
-    class HardwarePixelBuffer;
-    class HardwarePixelBufferSharedPtr;
-    class HighLevelGpuProgram;
-    class HighLevelGpuProgramPtr;
-    class HighLevelGpuProgramManager;
-    class HighLevelGpuProgramFactory;
-    class IndexData;
-    class IntersectionSceneQuery;
-    class IntersectionSceneQueryListener;
-    class Image;
-    class KeyFrame;
-    class Light;
-    class Log;
-    class LogManager;
-    class ManualResourceLoader;
-    class ManualObject;
-    class Material;
-    class MaterialPtr;
-    class MaterialManager;
-    class MaterialScriptCompiler;
-    class Math;
-    class Matrix3;
-    class Matrix4;
-    class MemoryManager;
-    class Mesh;
-    class MeshPtr;
-    class MeshSerializer;
-    class MeshSerializerImpl;
-    class MeshManager;
-    class MovableObject;
-    class MovablePlane;
-    class Node;
-    class NodeAnimationTrack;
-    class NodeKeyFrame;
-    class NumericAnimationTrack;
-    class NumericKeyFrame;
-    class Overlay;
-    class OverlayContainer;
-    class OverlayElement;
-    class OverlayElementFactory;
-    class OverlayManager;
-    class Particle;
-    class ParticleAffector;
-    class ParticleAffectorFactory;
-    class ParticleEmitter;
-    class ParticleEmitterFactory;
-    class ParticleSystem;
-    class ParticleSystemManager;
-    class ParticleSystemRenderer;
-    class ParticleSystemRendererFactory;
-    class ParticleVisualData;
-    class Pass;
-    class PatchMesh;
-    class PixelBox;
-    class Plane;
-    class PlaneBoundedVolume;
-    class Plugin;
-    class Pose;
-    class ProgressiveMesh;
-    class Profile;
-    class Profiler;
-    class Quaternion;
-    class Radian;
-    class Ray;
-    class RaySceneQuery;
-    class RaySceneQueryListener;
-    class Renderable;
-    class RenderPriorityGroup;
-    class RenderQueue;
-    class RenderQueueGroup;
-    class RenderQueueInvocation;
-    class RenderQueueInvocationSequence;
-    class RenderQueueListener;
-    class RenderSystem;
-    class RenderSystemCapabilities;
-    class RenderTarget;
-    class RenderTargetListener;
-    class RenderTexture;
-    class MultiRenderTarget;
-    class RenderWindow;
-    class RenderOperation;
-    class Resource;
-    class ResourceBackgroundQueue;
-    class ResourceGroupManager;
-    class ResourceManager;
-    class RibbonTrail;
-    class Root;
-    class SceneManager;
-    class SceneManagerEnumerator;
-    class SceneNode;
-    class SceneQuery;
-    class SceneQueryListener;
-    class ScriptLoader;
-    class Serializer;
-    class ShadowCaster;
-    class ShadowRenderable;
-    class ShadowTextureManager;
-    class SimpleRenderable;
-    class SimpleSpline;
-    class Skeleton;
-    class SkeletonPtr;
-    class SkeletonInstance;
-    class SkeletonManager;
-    class Sphere;
-    class SphereSceneQuery;
-    class StaticGeometry;
-    class StringConverter;
-    class StringInterface;
-    class SubEntity;
-    class SubMesh;
-    class TagPoint;
-    class Technique;
-    class TempBlendedBufferInfo;
-    class ExternalTextureSource;
-    class TextureUnitState;
-    class Texture;
-    class TexturePtr;
-    class TextureFont;
-    class TextureManager;
-    class TransformKeyFrame;
-    class Timer;
-    class UserDefinedObject;
-    class Vector2;
-    class Vector3;
-    class Vector4;
-    class Viewport;
-    class VertexAnimationTrack;
-    class VertexBufferBinding;
-    class VertexData;
-    class VertexDeclaration;
-    class VertexMorphKeyFrame;
-    class WireBoundingBox;
-    class Compositor;
-    class CompositorManager;
-    class CompositorChain;
-    class CompositorInstance;
-    class CompositionTechnique;
-    class CompositionPass;
-    class CompositionTargetPass;
-
-    // Originally not in OgrePrerequisites.h
-    class BorderPanelOverlayElement;
-    class PanelOverlayElement;
-    class TextAreaOverlayElement;
-}
-
-#endif /* _OgreForwardRefs_H__ */
Index: sandbox_qt/src/libraries/util/OrxEnum.h
===================================================================
--- sandbox_qt/src/libraries/util/OrxEnum.h	(revision 7418)
+++ 	(revision )
@@ -1,85 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Reto Grieder
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @ingroup Util
-*/
-
-#ifndef _OrxEnum_H__
-#define _OrxEnum_H__
-
-#include "UtilPrereqs.h"
-
-namespace orxonox
-{
-    /** Lightweight enumeration class that can be extended at run time.
-    @details
-        The class accepts type int and also defines operator int(). Therefore
-        int and OrxEnum can be used interchangeably so you can extend the content
-        of the enumeration at run time by adding ints.
-    @par Declaring an OrxEnum
-        Write a struct that inherits OrxEnum and use some macros:
-        @code
-        struct MyEnum : OrxEnum<MyEnum>
-        {
-            OrxEnumConstructors(MyEnum);
-
-            static const int Value1 = -1;
-            static const int Value2 = 0;
-            static const int Value3 = Value2 + 10;
-        };
-        @endcode
-    */
-    template <class T>
-    struct OrxEnum
-    {
-        public:
-            OrxEnum() { }
-            OrxEnum(int type)            { type_ = type; }
-            OrxEnum(const T& instance)   { type_ = instance.type_; }
-
-            operator int()               { return type_; }
-            T& operator =(int type)      { type_ = type; return *this; }
-            bool operator <(const T& right) const { return (type_ < right.type_); }
-            bool operator >(const T& right) const { return (type_ > right.type_); }
-
-        private:
-            OrxEnum(const OrxEnum& instance);
-            int type_;
-    };
-}
-
-/// See orxonox::OrxEnum for more info
-#define OrxEnumConstructors(enumName)                        \
-enumName() { }                                               \
-enumName(int type) : OrxEnum<enumName>(type)             { } \
-enumName(const enumName& inst) : OrxEnum<enumName>(inst) { } \
-void dummyFunction()
-
-#endif /* _OrxEnum_H__ */
Index: sandbox_qt/src/libraries/util/Scope.cc
===================================================================
--- sandbox_qt/src/libraries/util/Scope.cc	(revision 7418)
+++ 	(revision )
@@ -1,40 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Static linkage of the two maps in orxonox::ScopeManager.
-*/
-
-#include "Scope.h"
-
-namespace orxonox
-{
-    std::map<ScopeID::Value, int> ScopeManager::instanceCounts_s;
-    std::map<ScopeID::Value, std::set<ScopeListener*> > ScopeManager::listeners_s;
-}
Index: sandbox_qt/src/libraries/util/Scope.h
===================================================================
--- sandbox_qt/src/libraries/util/Scope.h	(revision 7418)
+++ 	(revision )
@@ -1,192 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-@file
-@ingroup SingletonScope
-@brief Declaration of the classes that are needed to use Scopes:
-orxonox::Scope, orxonox::ScopeListener, and orxonox::ScopeManager.
-
-@anchor Scope
-
-A virtual scope can be represented by an instance of class orxonox::Scope. orxonox::Scope<@a scope> is a template
-an its template argument defines the name of the virtual scope. See orxonox::ScopeID for an enumeration of the
-available values for @a scope. The orxonox::Scope object for a given @a scope can be activated or deactivated.
-Instances of orxonox::ScopeListener can register for a given @a scope and will get a notification if the
-corresponding orxonox::Scope object changes its state.
-
-To avoid multiple instances of orxonox::Scope<@a scope> in different libraries, each instance of orxonox::Scope
-registers in orxonox::ScopeManager, where they are linked statically in the util library.
-
-Scopes are usually used to control the creation and destruction of Singletons.
-
-@see orxonox::ScopedSingletonManager
-@see orxonox::Singleton
-*/
-
-#ifndef __Util_Scope_H__
-#define __Util_Scope_H__
-
-#include "UtilPrereqs.h"
-
-#include <cassert>
-#include <map>
-#include <set>
-#include <loki/ScopeGuard.h>
-
-#include "Debug.h"
-
-namespace orxonox
-{
-    /**
-        @brief The ScopeManager stores the variables of the Scope templates in a statically linked context.
-
-        If all Scope objects are managed by this class, they are statically linked in the util library.
-        Without this, a new instance of Scope<T> for each T would be created in every library of Orxonox,
-        which is of course not the desired behavior.
-
-        @see See @ref Scope "this description" for details about the interrelationship of Scope, ScopeListener, and ScopeManager.
-    */
-    class _UtilExport ScopeManager
-    {
-        template <ScopeID::Value scope>
-        friend class Scope;
-        friend class ScopeListener;
-
-        private:
-            static std::map<ScopeID::Value, int> instanceCounts_s;                  //!< Counts the number of active instances (>0 means active) for a scope
-            static std::map<ScopeID::Value, std::set<ScopeListener*> > listeners_s; //!< Stores all listeners for a scope
-    };
-
-    /**
-        @brief ScopeListeners register themselves in the corresponding Scope and wait for notifications.
-        Notifications are sent if a Scope is activated or deactivated.
-
-        @see See @ref Scope "this description" for details about the interrelationship of Scope, ScopeListener, and ScopeManager.
-    */
-    class _UtilExport ScopeListener
-    {
-        template <ScopeID::Value scope>
-        friend class Scope;
-
-        protected:
-            //! Constructor: Registers the instance.
-            ScopeListener(ScopeID::Value scope) : scope_(scope), bActivated_(false)
-                { ScopeManager::listeners_s[this->scope_].insert(this); }
-            //! Destructor: Unregisters the instance.
-            virtual ~ScopeListener()
-                { ScopeManager::listeners_s[this->scope_].erase(this); }
-
-            //! Gets called if the scope is activated
-            virtual void activated() = 0;
-            //! Gets called if the scope is deactivated
-            virtual void deactivated() = 0;
-
-        private:
-            ScopeID::Value scope_; //!< Store the scope to unregister on destruction
-            bool bActivated_;
-    };
-
-    /**
-        @brief A scope for a given template argument is either active or not.
-
-        Objects inheriting from a ScopeListener are registered in a list (different for each scope).
-        If the scope gets activated or deactivated, all objects in this list are notified.
-
-        @see See @ref Scope "this description" for details about the interrelationship of Scope, ScopeListener, and ScopeManager.
-    */
-    template <ScopeID::Value scope>
-    class Scope
-    {
-        public:
-            //! Constructor: Increases the instance counter and activates the scope if the count went from 0 to 1. Counts >1 don't change anything.
-            Scope()
-            {
-                try
-                {
-                    ScopeManager::instanceCounts_s[scope]++;
-                    assert(ScopeManager::instanceCounts_s[scope] > 0);
-                    if (ScopeManager::instanceCounts_s[scope] == 1)
-                    {
-                        Loki::ScopeGuard deactivator = Loki::MakeObjGuard(*this, &Scope::deactivateListeners);
-                        for (typename std::set<ScopeListener*>::iterator it = ScopeManager::listeners_s[scope].begin(); it != ScopeManager::listeners_s[scope].end(); )
-                        {
-                            (*it)->activated();
-                            (*(it++))->bActivated_ = true;
-                        }
-                        deactivator.Dismiss();
-                    }
-                }
-                catch (...)
-                {
-                    ScopeManager::instanceCounts_s[scope]--;
-                    throw;
-                }
-            }
-
-            //! Destructor: Decreases the instance counter and deactivates the scope if the count went from 1 to 0. Counts >0 don't change anything.
-            ~Scope()
-            {
-                ScopeManager::instanceCounts_s[scope]--;
-
-                // This shouldn't happen but just to be sure: check if the count is positive
-                assert(ScopeManager::instanceCounts_s[scope] >= 0);
-                if (ScopeManager::instanceCounts_s[scope] < 0)
-                    ScopeManager::instanceCounts_s[scope] = 0;
-
-                if (ScopeManager::instanceCounts_s[scope] == 0)
-                    this->deactivateListeners();
-            }
-
-            //! Deactivates the listeners of this scope in case the scope is destroyed or the construction fails.
-            void deactivateListeners()
-            {
-                for (typename std::set<ScopeListener*>::iterator it = ScopeManager::listeners_s[scope].begin(); it != ScopeManager::listeners_s[scope].end(); )
-                {
-                    if ((*it)->bActivated_)
-                    {
-                        try
-                            { (*it)->deactivated(); }
-                        catch (...)
-                            { COUT(0) << "ScopeListener::deactivated() failed! This MUST NOT happen, fix it!" << std::endl; }
-                        (*(it++))->bActivated_ = false;
-                    }
-                    else
-                        ++it;
-                }
-            }
-
-            //! Returns true if the scope is active.
-            static bool isActive()
-            {
-                return (ScopeManager::instanceCounts_s[scope] > 0);
-            }
-    };
-}
-
-#endif /* __Util_Scope_H__ */
Index: sandbox_qt/src/libraries/util/ScopedSingletonManager.cc
===================================================================
--- sandbox_qt/src/libraries/util/ScopedSingletonManager.cc	(revision 7418)
+++ 	(revision )
@@ -1,54 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Reto Grieder
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Static linkage of the ScopedSingletonManager maps.
-*/
-
-#include "ScopedSingletonManager.h"
-
-namespace orxonox
-{
-    /*static*/ std::map<std::string, ScopedSingletonManager*>& ScopedSingletonManager::getManagers()
-    {
-        static std::map<std::string, ScopedSingletonManager*> managers;
-        return managers;
-    }
-    /*static*/ ScopedSingletonManager::ManagerMultiMap& ScopedSingletonManager::getManagersByScope()
-    {
-        static ManagerMultiMap managers;
-        return managers;
-    }
-
-    /*static*/ void ScopedSingletonManager::addManager(ScopedSingletonManager* manager)
-    {
-        getManagers()[manager->className_] = manager;
-        getManagersByScope().insert(std::make_pair(manager->scope_, manager));
-    }
-}
Index: sandbox_qt/src/libraries/util/ScopedSingletonManager.h
===================================================================
--- sandbox_qt/src/libraries/util/ScopedSingletonManager.h	(revision 7418)
+++ 	(revision )
@@ -1,282 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Reto Grieder
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @ingroup SingletonScope
-    @brief Definition of orxonox::ScopedSingletonManager, orxonox::ClassScopedSingletonManager, and the ManageScopedSingleton macro.
-
-    ScopedSingletonManager is used to create and destroy Singletons that belong to
-    a given Scope. For each one of these singletons, the macro ManageScopedSingleton()
-    has to be called to register the singleton with orxonox::ScopedSingletonManager.
-
-    See @ref SingletonExample "this code" for an example.
-
-    @see orxonox::Singleton
-    @see orxonox::Scope
-*/
-
-#ifndef __ScopedSingletonManager_H__
-#define __ScopedSingletonManager_H__
-
-#include "UtilPrereqs.h"
-
-#include <cassert>
-#include <map>
-#include "util/Exception.h"
-#include "util/Scope.h"
-#include "util/Singleton.h"
-
-/**
-    @brief Registers an orxonox::Singleton with orxonox::ScopedSingletonManager.
-    @param className The name of the singleton class
-    @param scope The scope in which the singleton should exist
-    @param allowedToFail If true, the singleton is allowed to fail and thus a try-catch block is used when creating the singleton.
-
-    If this macro is called for a singleton, it is registered with ScopedSingletonManager
-    and will thus be created if its scope becomes active and destroyed if is deactivated.
-*/
-#define ManageScopedSingleton(className, scope, allowedToFail) \
-    className* className::singletonPtr_s = NULL; \
-    static ClassScopedSingletonManager<className, scope, allowedToFail> className##ScopedSingletonManager(#className)
-
-namespace orxonox
-{
-    class OrxonoxClass;
-
-    /**
-        @brief Base class of ClassScopedSingletonManager, implements some static functions
-        used to dispatch calls to preUpdate and postUpdate to all instances of this class.
-        It also keeps track of all existing ScopedSingletonManagers and stores them in a
-        map, sorted by the scope they belong to.
-    */
-    class _UtilExport ScopedSingletonManager
-    {
-        public:
-            /// Constructor: Initializes all the values
-            ScopedSingletonManager(const std::string& className, ScopeID::Value scope)
-                : className_(className)
-                , scope_(scope)
-            { }
-            virtual ~ScopedSingletonManager() { }
-
-            /// Adds a new instance of ScopedSingletonManager to the map.
-            static void addManager(ScopedSingletonManager* manager);
-
-            /// Calls preUpdate in all instances of ScopedSingletonManager that are registered in the map.
-            template<ScopeID::Value scope>
-            static void preUpdate(const Clock& time)
-            {
-                assert(Scope<scope>::isActive());
-                for (ManagerMultiMap::iterator it = getManagersByScope().lower_bound(scope); it != getManagersByScope().upper_bound(scope); ++it)
-                    it->second->preUpdate(time);
-            }
-            virtual void preUpdate(const Clock& time) = 0;
-
-            /// Calls postUpdate in all instances of ScopedSingletonManager that are registered in the map.
-            template<ScopeID::Value scope>
-            static void postUpdate(const Clock& time)
-            {
-                assert(Scope<scope>::isActive());
-                for (ManagerMultiMap::iterator it = getManagersByScope().lower_bound(scope); it != getManagersByScope().upper_bound(scope); ++it)
-                    it->second->postUpdate(time);
-            }
-            virtual void postUpdate(const Clock& time) = 0;
-
-            static std::map<std::string, ScopedSingletonManager*>& getManagers();
-            typedef std::multimap<ScopeID::Value, ScopedSingletonManager*> ManagerMultiMap;
-            static ManagerMultiMap& getManagersByScope();
-
-        protected:
-            const std::string className_;   ///< The name of the scoped singleton class that is managed by this object
-            const ScopeID::Value scope_;    ///< The scope of the singleton that is managed by this object
-    };
-
-    /**
-        @anchor ClassScopedSingletonManager
-
-        @brief Manages a scoped singleton for a given scope.
-        @param T The managed singleton class
-        @param scope The scope in which the singleton @a T should be active
-        @param allowedToFail If true, a specialization of this template is used, that uses try-catch blocks to handle possible failures.
-
-        This class inherits from ScopeListener for the given scope and thus its functions
-        activated() and deactivated() are called whenever the Scope changes its state.
-
-        If the Scope is activated, a new instance of @a T (which must be a singleton) is created.
-        If the Scope is deactivated, the singleton is destroyed.
-
-        @see Singleton
-    */
-    template <class T, ScopeID::Value scope, bool allowedToFail>
-    class ClassScopedSingletonManager : public ScopedSingletonManager, public ScopeListener
-    {
-    public:
-        //! Constructor: Initializes the singleton pointer and passes the scope to ScopedSingletonManager and ScopeListener
-        ClassScopedSingletonManager(const std::string& className)
-            : ScopedSingletonManager(className, scope)
-            , ScopeListener(scope)
-            , singletonPtr_(NULL)
-        {
-            ScopedSingletonManager::addManager(this);
-        }
-
-        ~ClassScopedSingletonManager()
-        {
-        }
-
-        //! Called if the Scope of the Singleton gets active (creates the instance)
-        void activated()
-        {
-            assert(singletonPtr_ == NULL);
-            singletonPtr_ = new T();
-        }
-
-        //! Called if the Scope of this Singleton gets deactivated (destroys the instance)
-        void deactivated()
-        {
-            assert(singletonPtr_ != NULL);
-            this->destroy(singletonPtr_);
-            singletonPtr_ = NULL;
-        }
-
-        //! Destroys the singleton instance - overloaded for OrxonoxClass, calls OrxonoxClass::destroy()
-        void destroy(OrxonoxClass*)
-        {
-            singletonPtr_->destroy();
-        }
-        //! Destroys the singleton instance - overloaded for all other pointers, calls delete
-        void destroy(void*)
-        {
-            delete singletonPtr_;
-        }
-
-        //! Called every frame by the ScopedSingletonManager
-        void preUpdate(const Clock& time)
-        {
-            assert(Scope<scope>::isActive());
-            // assuming T inherits Singleton<T>
-            singletonPtr_->preUpdateSingleton(time);
-        }
-
-        //! Called every frame by the ScopedSingletonManager
-        void postUpdate(const Clock& time)
-        {
-            assert(Scope<scope>::isActive());
-            // assuming T inherits Singleton<T>
-            singletonPtr_->postUpdateSingleton(time);
-        }
-
-    private:
-        T* singletonPtr_;   ///< Unique instance of the singleton class @a T
-    };
-
-    /**
-        @brief This class partially spezializes ClassScopedSingletonManager for classes @a T that are allowed to fail.
-        @param T The managed singleton class
-        @param scope The scope in which the singleton @a T should be active
-
-        Because @a T could fail when being created, this partial spezialization of ClassScopedSingletonManager
-        uses a try-catch block to handle exceptions.
-
-        See @ref ClassScopedSingletonManager for a full documentation of the basis template.
-    */
-    template <class T, ScopeID::Value scope>
-    class ClassScopedSingletonManager<T, scope, true> : public ScopedSingletonManager, public ScopeListener
-    {
-    public:
-        //! Constructor: Initializes the singleton pointer and passes the scope to ScopedSingletonManager and ScopeListener
-        ClassScopedSingletonManager(const std::string& className)
-            : ScopedSingletonManager(className, scope)
-            , ScopeListener(scope)
-            , singletonPtr_(NULL)
-        {
-            ScopedSingletonManager::addManager(this);
-        }
-
-        ~ClassScopedSingletonManager()
-        {
-        }
-
-        //! Called if the Scope of the Singleton gets active (creates the instance)
-        void activated()
-        {
-            assert(singletonPtr_ == NULL);
-            try
-                { singletonPtr_ = new T(); }
-            catch (const InitialisationAbortedException& ex)
-                { COUT(3) << ex.getDescription() << std::endl; }
-            catch (...)
-                { COUT(1) << "Singleton creation failed: " << Exception::handleMessage() << std::endl; }
-        }
-
-        //! Called if the Scope of this Singleton gets deactivated (destroys the instance)
-        void deactivated()
-        {
-            if (singletonPtr_ != NULL)
-            {
-                this->destroy(singletonPtr_);
-                singletonPtr_ = NULL;
-            }
-        }
-
-        //! Destroys the singleton instance - overloaded for OrxonoxClass, calls OrxonoxClass::destroy()
-        void destroy(OrxonoxClass* ptr)
-        {
-            singletonPtr_->destroy();
-        }
-        //! Destroys the singleton instance - overloaded for void*, calls delete
-        void destroy(void* ptr)
-        {
-            delete singletonPtr_;
-        }
-
-        //! Called every frame by the ScopedSingletonManager
-        void preUpdate(const Clock& time)
-        {
-            assert(Scope<scope>::isActive());
-            // assuming T inherits Singleton<T>
-            if (singletonPtr_ != NULL)
-                singletonPtr_->preUpdateSingleton(time);
-        }
-
-        //! Called every frame by the ScopedSingletonManager
-        void postUpdate(const Clock& time)
-        {
-            assert(Scope<scope>::isActive());
-            // assuming T inherits Singleton<T>
-            if (singletonPtr_ != NULL)
-                singletonPtr_->postUpdateSingleton(time);
-        }
-
-    private:
-        T* singletonPtr_;   ///< Unique instance of the singleton class @a T
-    };
-}
-
-#endif /* __ScopedSingletonManager_H__ */
Index: sandbox_qt/src/libraries/util/Serialise.h
===================================================================
--- sandbox_qt/src/libraries/util/Serialise.h	(revision 7418)
+++ 	(revision )
@@ -1,736 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Oliver Scheuss
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @ingroup Util
-    @brief Functions to serialise most of the types/classed used in Orxonox
-*/
-
-#ifndef _Serialise_H__
-#define _Serialise_H__
-
-#include "UtilPrereqs.h"
-
-#include <cstring>
-#include <set>
-#include "Math.h"
-#include "mbool.h"
-
-namespace orxonox{
-
-    /** @brief returns the size of the variable in a datastream */
-    template <class T> inline uint32_t returnSize( const T& variable );
-    /** @brief loads the value of a variable out of the bytestream and increases the mem pointer */
-    template <class T> inline void loadAndIncrease( const T& variable, uint8_t*& mem );
-    /** @brief saves the value of a variable into the bytestream and increases the mem pointer */
-    template <class T> inline void saveAndIncrease( const T& variable, uint8_t*& mem );
-    /** @brief checks whether the variable of type T is the same as in the bytestream */
-    template <class T> inline bool checkEquality( const T& variable, uint8_t* mem );
-
-
-  // =========== char*
-
-  inline uint32_t returnSize( char*& variable )
-  {
-    return strlen(variable)+1;
-  }
-
-  inline void saveAndIncrease( char*& variable, uint8_t*& mem )
-  {
-    strcpy((char*)mem, variable);
-    mem += returnSize(variable);
-  }
-
-  inline void loadAndIncrease( char*& variable, uint8_t*& mem )
-  {
-    if( variable )
-      delete variable;
-    uint32_t len = strlen((char*)mem)+1;
-    variable = new char[len];
-    strcpy((char*)variable, (char*)mem);
-    mem += len;
-  }
-
-  inline bool checkEquality( char*& variable, uint8_t* mem )
-  {
-    return strcmp(variable, (char*)mem)==0;
-  }
-
-// =================== Template specialisation stuff =============
-
-// =========== bool
-
-    template <> inline uint32_t returnSize( const bool& variable )
-    {
-        return sizeof(uint8_t);
-    }
-
-    template <> inline void loadAndIncrease( const bool& variable, uint8_t*& mem )
-    {
-        *(uint8_t*)( &variable ) = *static_cast<uint8_t*>(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const bool& variable, uint8_t*& mem )
-    {
-        *static_cast<uint8_t*>(mem) = *(uint8_t*)( &variable );
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const bool& variable, uint8_t* mem )
-    {
-        return *static_cast<uint8_t*>(mem) == *(uint8_t*)( &variable );
-    }
-
-// =========== char
-
-    template <> inline uint32_t returnSize( const char& variable )
-    {
-        return sizeof(uint8_t);
-    }
-
-    template <> inline void loadAndIncrease( const char& variable, uint8_t*& mem )
-    {
-        *(uint8_t*)( &variable ) = *static_cast<uint8_t*>(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const char& variable, uint8_t*& mem )
-    {
-        *static_cast<uint8_t*>(mem) = *(uint8_t*)( &variable );
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const char& variable, uint8_t* mem )
-    {
-        return *static_cast<uint8_t*>(mem) == *(uint8_t*)( &variable );
-    }
-
-// =========== unsigned char
-
-    template <> inline uint32_t returnSize( const unsigned char& variable )
-    {
-        return sizeof(uint8_t);
-    }
-
-    template <> inline void loadAndIncrease( const unsigned char& variable, uint8_t*& mem )
-    {
-        *(uint8_t*)( &variable ) = *static_cast<uint8_t*>(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const unsigned char& variable, uint8_t*& mem )
-    {
-        *static_cast<uint8_t*>(mem) = *(uint8_t*)( &variable );
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const unsigned char& variable, uint8_t* mem )
-    {
-        return *static_cast<uint8_t*>(mem) == *(uint8_t*)( &variable );
-    }
-
-// =========== short
-
-    template <> inline uint32_t returnSize( const short& variable )
-    {
-        return sizeof(int16_t);
-    }
-
-    template <> inline void loadAndIncrease( const short& variable, uint8_t*& mem )
-    {
-        *(short*)( &variable ) = *(int16_t*)(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const short& variable, uint8_t*& mem )
-    {
-        *(int16_t*)(mem) = variable;
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const short& variable, uint8_t* mem )
-    {
-        return *(int16_t*)(mem) == static_cast<int16_t>(variable);
-    }
-
-// =========== unsigned short
-
-    template <> inline uint32_t returnSize( const unsigned short& variable )
-    {
-        return sizeof(uint16_t);
-    }
-
-    template <> inline void loadAndIncrease( const unsigned short& variable, uint8_t*& mem )
-    {
-        *(unsigned short*)( &variable ) = *(uint16_t*)(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const unsigned short& variable, uint8_t*& mem )
-    {
-        *(uint16_t*)(mem) = variable;
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const unsigned short& variable, uint8_t* mem )
-    {
-        return *(uint16_t*)(mem) == variable;
-    }
-
-// =========== int
-
-    template <> inline uint32_t returnSize( const int& variable )
-    {
-        return sizeof(int32_t);
-    }
-
-    template <> inline void loadAndIncrease( const int& variable, uint8_t*& mem )
-    {
-        *(int *)( &variable ) = *(int32_t*)(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const int& variable, uint8_t*& mem )
-    {
-        *(int32_t*)(mem) = variable;
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const int& variable, uint8_t* mem )
-    {
-        return *(int32_t*)(mem) == variable;
-    }
-
-// =========== unsigned int
-
-    template <> inline uint32_t returnSize( const unsigned int& variable )
-    {
-        return sizeof(uint32_t);
-    }
-
-    template <> inline void loadAndIncrease( const unsigned int& variable, uint8_t*& mem )
-    {
-        *(unsigned int*)( &variable ) = *(uint32_t*)(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const unsigned int& variable, uint8_t*& mem )
-    {
-        *(uint32_t*)(mem) = variable;
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const unsigned int& variable, uint8_t* mem )
-    {
-        return *(uint32_t*)(mem) == variable;
-    }
-
-// =========== long
-
-    template <> inline uint32_t returnSize( const long& variable )
-    {
-        return sizeof(int32_t);
-    }
-
-    template <> inline void loadAndIncrease( const long& variable, uint8_t*& mem )
-    {
-        *(long*)( &variable ) = *(int32_t*)(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const long& variable, uint8_t*& mem )
-    {
-        *(int32_t*)(mem) = variable;
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const long& variable, uint8_t* mem )
-    {
-        return *(int32_t*)(mem) == variable;
-    }
-
-// =========== unsigned long
-
-    template <> inline uint32_t returnSize( const unsigned long& variable )
-    {
-        return sizeof(uint32_t);
-    }
-
-    template <> inline void loadAndIncrease( const unsigned long& variable, uint8_t*& mem )
-    {
-        *(unsigned long*)( &variable ) = *(uint32_t*)(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const unsigned long& variable, uint8_t*& mem )
-    {
-        *(uint32_t*)(mem) = variable;
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const unsigned long& variable, uint8_t* mem )
-    {
-        return *(uint32_t*)(mem) == variable;
-    }
-
-// =========== long long
-
-    template <> inline uint32_t returnSize( const long long& variable )
-    {
-        return sizeof(int64_t);
-    }
-
-    template <> inline void loadAndIncrease( const long long& variable, uint8_t*& mem )
-    {
-        *(long long*)( &variable ) = *(int64_t*)(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const long long& variable, uint8_t*& mem )
-    {
-        *(int64_t*)(mem) = variable;
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const long long& variable, uint8_t* mem )
-    {
-        return *(int64_t*)(mem) == variable;
-    }
-
-// =========== unsigned long long
-
-    template <> inline uint32_t returnSize( const unsigned long long& variable )
-    {
-        return sizeof(uint64_t);
-    }
-
-    template <> inline void loadAndIncrease( const unsigned long long& variable, uint8_t*& mem )
-    {
-        *(unsigned long long*)( &variable ) = *(uint64_t*)(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const unsigned long long& variable, uint8_t*& mem )
-    {
-        *(uint64_t*)(mem) = variable;
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const unsigned long long& variable, uint8_t* mem )
-    {
-        return *(uint64_t*)(mem) == variable;
-    }
-
-// =========== float
-
-    template <> inline uint32_t returnSize( const float& variable )
-    {
-        return sizeof(uint32_t);
-    }
-
-    template <> inline void loadAndIncrease( const float& variable, uint8_t*& mem )
-    {
-        *(uint32_t*)( &variable ) = *(uint32_t*)(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const float& variable, uint8_t*& mem )
-    {
-        *(uint32_t*)(mem) = *(uint32_t*)( &variable );
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const float& variable, uint8_t* mem )
-    {
-        return *(uint32_t*)(mem) == *(uint32_t*)( &variable );
-    }
-
-// =========== double
-
-    template <> inline uint32_t returnSize( const double& variable )
-    {
-        return sizeof(uint64_t);
-    }
-
-    template <> inline void loadAndIncrease( const double& variable, uint8_t*& mem )
-    {
-        *(uint64_t*)( &variable ) = *(uint64_t*)(mem);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const double& variable, uint8_t*& mem )
-    {
-        *(uint64_t*)(mem) = *(uint64_t*)( &variable );
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const double& variable, uint8_t* mem )
-    {
-        return *(uint64_t*)(mem) == *(uint64_t*)( &variable );
-    }
-
-// =========== long double
-
-    template <> inline uint32_t returnSize( const long double& variable )
-    {
-        return sizeof(uint64_t);
-    }
-
-    template <> inline void loadAndIncrease( const long double& variable, uint8_t*& mem )
-    {
-        double temp;
-        memcpy(&temp, mem, sizeof(uint64_t));
-        *(long double*)( &variable ) = static_cast<long double>(temp);
-        mem += returnSize( variable );
-    }
-
-    template <> inline void saveAndIncrease( const long double& variable, uint8_t*& mem )
-    {
-        double temp = static_cast<double>(variable);
-        memcpy(mem, &temp, sizeof(uint64_t));
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const long double& variable, uint8_t* mem )
-    {
-        double temp = static_cast<double>(variable);
-        return memcmp(&temp, mem, sizeof(uint64_t))==0;
-    }
-
-// =========== string
-
-    template <> inline uint32_t returnSize( const std::string& variable )
-    {
-        return variable.length()+1;
-    }
-
-    template <> inline void saveAndIncrease( const std::string& variable, uint8_t*& mem )
-    {
-        memcpy(mem, variable.c_str(), variable.length()+1);
-        mem += variable.length()+1;
-    }
-
-    template <> inline void loadAndIncrease( const std::string& variable, uint8_t*& mem )
-    {
-        *(std::string*)( &variable ) = (const char *)mem;
-        mem += variable.length()+1;
-    }
-
-    template <> inline bool checkEquality( const std::string& variable, uint8_t* mem )
-    {
-        //return std::string((const char*)mem)==variable;
-        return (const char*)mem==variable;
-    }
-
-// =========== Degree
-
-    template <> inline uint32_t returnSize( const Degree& variable )
-    {
-        return sizeof(Ogre::Real);
-    }
-
-    template <> inline void saveAndIncrease( const Degree& variable, uint8_t*& mem )
-    {
-        Ogre::Real r = variable.valueDegrees();
-        memcpy(mem, &r, returnSize( variable ));
-        mem += returnSize( variable );
-    }
-
-    template <> inline void loadAndIncrease( const Degree& variable, uint8_t*& mem )
-    {
-        Ogre::Real* r = (Ogre::Real*)mem;
-        (Degree&)variable = *r;
-        mem += returnSize( variable );
-    }
-
-     template <> inline bool checkEquality( const Degree& variable, uint8_t* mem )
-    {
-        Ogre::Real* r = (Ogre::Real*)mem;
-        return variable==Degree(*r);
-    }
-
-// =========== Radian
-
-    template <> inline uint32_t returnSize( const Radian& variable )
-    {
-        return sizeof(Ogre::Real);
-    }
-
-    template <> inline void saveAndIncrease( const Radian& variable, uint8_t*& mem )
-    {
-        Ogre::Real r = variable.valueRadians();
-        memcpy(mem, &r, returnSize( variable ));
-        mem += returnSize( variable );
-    }
-
-    template <> inline void loadAndIncrease( const Radian& variable, uint8_t*& mem )
-    {
-        Ogre::Real* r = (Ogre::Real*)mem;
-        (Radian&)variable = *r;
-        mem += returnSize( variable );
-    }
-
-    template <> inline bool checkEquality( const Radian& variable, uint8_t* mem )
-    {
-        Ogre::Real* r = (Ogre::Real*)mem;
-        return variable==Degree(*r);
-    }
-
-    // =========== Vector2
-
-    template <> inline uint32_t returnSize( const Vector2& variable )
-    {
-        return returnSize( variable.x )+returnSize( variable.y );
-    }
-
-    template <> inline void saveAndIncrease( const Vector2& variable, uint8_t*& mem )
-    {
-        saveAndIncrease( variable.x, mem );
-        saveAndIncrease( variable.y, mem );
-    }
-
-    template <> inline void loadAndIncrease( const Vector2& variable, uint8_t*& mem )
-    {
-        loadAndIncrease( variable.x, mem );
-        loadAndIncrease( variable.y, mem );
-    }
-
-    template <> inline bool checkEquality( const Vector2& variable, uint8_t* mem )
-    {
-        return checkEquality(variable.x, mem) && checkEquality(variable.y, mem+returnSize(variable.x));
-    }
-
-    // =========== Vector3
-
-    template <> inline uint32_t returnSize( const Vector3& variable )
-    {
-        return returnSize( variable.x )+returnSize( variable.y )+returnSize( variable.z );
-    }
-
-    template <> inline void saveAndIncrease( const Vector3& variable, uint8_t*& mem )
-    {
-        saveAndIncrease( variable.x, mem );
-        saveAndIncrease( variable.y, mem );
-        saveAndIncrease( variable.z, mem );
-    }
-
-    template <> inline void loadAndIncrease( const Vector3& variable, uint8_t*& mem )
-    {
-        loadAndIncrease( variable.x, mem );
-        loadAndIncrease( variable.y, mem );
-        loadAndIncrease( variable.z, mem );
-    }
-
-    template <> inline bool checkEquality( const Vector3& variable, uint8_t* mem )
-    {
-        return checkEquality(variable.x, mem) && checkEquality(variable.y, mem+returnSize(variable.x)) &&
-            checkEquality(variable.z, mem+returnSize(variable.x)+returnSize(variable.y));
-    }
-
-    // =========== Vector4
-
-    template <> inline uint32_t returnSize( const Vector4& variable )
-    {
-        return returnSize( variable.w )+returnSize( variable.x )+returnSize( variable.y )+returnSize( variable.z );
-    }
-
-    template <> inline void saveAndIncrease( const Vector4& variable, uint8_t*& mem )
-    {
-        saveAndIncrease( variable.w, mem );
-        saveAndIncrease( variable.x, mem );
-        saveAndIncrease( variable.y, mem );
-        saveAndIncrease( variable.z, mem );
-    }
-
-    template <> inline void loadAndIncrease( const Vector4& variable, uint8_t*& mem )
-    {
-        loadAndIncrease( variable.w, mem );
-        loadAndIncrease( variable.x, mem );
-        loadAndIncrease( variable.y, mem );
-        loadAndIncrease( variable.z, mem );
-    }
-
-    template <> inline bool checkEquality( const Vector4& variable, uint8_t* mem )
-    {
-        return checkEquality(variable.w, mem) && checkEquality(variable.x, mem+returnSize(variable.w)) &&
-            checkEquality(variable.y, mem+returnSize(variable.w)+returnSize(variable.x)) &&
-            checkEquality(variable.z, mem+returnSize(variable.w)+returnSize(variable.x)+returnSize(variable.y));
-    }
-
-    // =========== Quaternion
-
-    template <> inline uint32_t returnSize( const Quaternion& variable )
-    {
-        return returnSize( variable.w )+returnSize( variable.x )+returnSize( variable.y )+returnSize( variable.z );
-    }
-
-    template <> inline void saveAndIncrease( const Quaternion& variable, uint8_t*& mem )
-    {
-        saveAndIncrease( variable.w, mem );
-        saveAndIncrease( variable.x, mem );
-        saveAndIncrease( variable.y, mem );
-        saveAndIncrease( variable.z, mem );
-    }
-
-    template <> inline void loadAndIncrease( const Quaternion& variable, uint8_t*& mem )
-    {
-        loadAndIncrease( variable.w, mem );
-        loadAndIncrease( variable.x, mem );
-        loadAndIncrease( variable.y, mem );
-        loadAndIncrease( variable.z, mem );
-    }
-
-    template <> inline bool checkEquality( const Quaternion& variable, uint8_t* mem )
-    {
-        return checkEquality(variable.w, mem) && checkEquality(variable.x, mem+returnSize(variable.w)) &&
-            checkEquality(variable.y, mem+returnSize(variable.w)+returnSize(variable.x)) &&
-            checkEquality(variable.z, mem+returnSize(variable.w)+returnSize(variable.x)+returnSize(variable.y));
-    }
-
-    // =========== ColourValue
-
-    template <> inline uint32_t returnSize( const ColourValue& variable )
-    {
-        return returnSize( variable.r )+returnSize( variable.g )+returnSize( variable.b )+returnSize( variable.a );
-    }
-
-    template <> inline void saveAndIncrease( const ColourValue& variable, uint8_t*& mem )
-    {
-        saveAndIncrease( variable.r, mem );
-        saveAndIncrease( variable.g, mem );
-        saveAndIncrease( variable.b, mem );
-        saveAndIncrease( variable.a, mem );
-    }
-
-    template <> inline void loadAndIncrease( const ColourValue& variable, uint8_t*& mem )
-    {
-        loadAndIncrease( variable.r, mem );
-        loadAndIncrease( variable.g, mem );
-        loadAndIncrease( variable.b, mem );
-        loadAndIncrease( variable.a, mem );
-    }
-
-    template <> inline bool checkEquality( const ColourValue& variable, uint8_t* mem )
-    {
-        return checkEquality(variable.r, mem) && checkEquality(variable.g, mem+returnSize(variable.r)) &&
-            checkEquality(variable.b, mem+returnSize(variable.r)+returnSize(variable.g)) &&
-            checkEquality(variable.a, mem+returnSize(variable.r)+returnSize(variable.g)+returnSize(variable.b));
-    }
-
-    // =========== mbool
-
-    template <> inline uint32_t returnSize( const mbool& variable )
-    {
-        return returnSize( (unsigned char&)((mbool&)variable).getMemory() );
-    }
-
-    template <> inline void saveAndIncrease( const mbool& variable, uint8_t*& mem )
-    {
-        saveAndIncrease( (unsigned char&)((mbool&)variable).getMemory(), mem );
-    }
-
-    template <> inline void loadAndIncrease( const mbool& variable, uint8_t*& mem )
-    {
-        loadAndIncrease( (unsigned char&)((mbool&)variable).getMemory(), mem );
-    }
-
-    template <> inline bool checkEquality( const mbool& variable, uint8_t* mem )
-    {
-        return checkEquality( (unsigned char&)((mbool&)variable).getMemory(), mem );
-    }
-
-    // =========== std::set
-
-    template <class T> inline uint32_t returnSize( const std::set<T>& variable )
-    {
-        uint32_t tempsize = sizeof(uint32_t); // for the number of entries
-        for( typename std::set<T>::iterator it=((std::set<T>*)(&variable))->begin(); it!=((std::set<T>*)(&variable))->end(); ++it)
-            tempsize += returnSize( *it );
-        return tempsize;
-    }
-
-    template <class T> inline void saveAndIncrease(  const std::set<T>& variable, uint8_t*& mem )
-    {
-        typename std::set<T>::const_iterator it = variable.begin();
-        saveAndIncrease( (uint32_t)variable.size(), mem );
-        for( ; it!=variable.end(); ++it )
-            saveAndIncrease( *it, mem );
-    }
-
-    template <class T> inline void loadAndIncrease(std::set<T>& variable, uint8_t*& mem )
-    {
-        uint32_t nrOfElements = 0;
-        loadAndIncrease( nrOfElements, mem );
-        typename std::set<T>::iterator it = variable.begin();
-        for( uint32_t i = 0; i<nrOfElements; ++i )
-        {
-            T temp;
-            loadAndIncrease(temp, mem);
-            while( it!=variable.end() && *it!=temp )
-            {
-                variable.erase(it++);
-                ++it;
-            }
-            if( it==variable.end() )
-            {
-                variable.insert(temp);
-            }
-        }
-    }
-
-    template <class T> inline bool checkEquality( const std::set<T>& variable, uint8_t* mem )
-    {
-        uint8_t* temp = mem;
-        uint32_t nrOfElements;
-        loadAndIncrease(nrOfElements, mem);
-        if( variable.size() == nrOfElements )
-        {
-            T tempT;
-            for( uint32_t i=0; i<nrOfElements; ++i )
-            {
-                loadAndIncrease(tempT, mem);
-                if( variable.find(tempT) == variable.end() )
-                {
-                    mem = temp;
-                    return false;
-                }
-            }
-        }
-        else
-        {
-            mem = temp;
-            return false;
-        }
-        return true;
-    }
-}
-
-
-#endif
Index: sandbox_qt/src/libraries/util/SharedPtr.cc
===================================================================
--- sandbox_qt/src/libraries/util/SharedPtr.cc	(revision 7418)
+++ 	(revision )
@@ -1,46 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Static linkage of the SmallObjectAllocator used by SharedPtr.
-*/
-
-#include "SharedPtr.h"
-
-namespace orxonox
-{
-    namespace detail
-    {
-        SmallObjectAllocator& createSharedCounterPool()
-        {
-            static SmallObjectAllocator instance(sizeof(SharedCounterImpl<void>));
-            return instance;
-        }
-    }
-}
Index: sandbox_qt/src/libraries/util/SharedPtr.h
===================================================================
--- sandbox_qt/src/libraries/util/SharedPtr.h	(revision 7418)
+++ 	(revision )
@@ -1,374 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @defgroup SharedPtr SharedPtr<T>
-    @ingroup Util
-*/
-
-/**
-    @file
-    @ingroup SharedPtr
-    @brief Definition of the SharedPtr template that is used to manage pointers.
-
-    @anchor SharedPtrExample
-
-    The orxonox::SharedPtr template can be used to manage a pointer to an object
-    that was created with new. The SharedPtr acts like the pointer itself, but it
-    keeps track of the number of references to it. If all references are removed,
-    SharedPtr deletes the managed object automatically.
-
-    Example:
-
-    Classic implementation using new and delete:
-    @code
-    void someFunction()
-    {
-        MyClass* object = new MyClass();            // Create a new instance of MyClass
-
-        object->myFunction();                       // Calls MyClass::myFunction()
-
-        delete object;                              // Delete the object at the end of the scope
-    }
-    @endcode
-
-    The same function using SharedPtr:
-    @code
-    void someFunction()
-    {
-        SharedPtr<MyClass> object = new MyClass();  // Create a new instance of MyClass and store its pointer in a SharedPtr
-
-        object->myFunction();                       // Calls MyClass::myFunction()
-
-    }                                               // At the end of the scope, the SharedPtr is destroyed. Because no other SharedPtrs
-                                                    // point at the object, the object itself is also destroyed automatically
-    @endcode
-
-    This is especially handy if you do not know what will happen with an object that was
-    created with new, for example if you pass it to another object. If multiple instances
-    share a pointer to the same object, none of these instances can delete the object
-    without interfering with the other instances. But if none of the instances destroy the
-    object, it will never be destroyed and results in a memory leak. With a SharedPtr
-    however you don't have to think about destroying the object, because the SharedPtr
-    itself keeps track of the references.
-
-    Example:
-
-    Classic implementation using new and delete:
-    @code
-    class OtherClass                                    // Declaration of some class
-    {
-        public:
-            OtherClass(MyClass* object)                 // Constructor
-            {
-                this->object_ = object;                 // Assigns the pointer to the member variable object_
-            }
-
-            ~OtherClass()                               // Destructor
-            {
-                ???                                     // What to do with object_?
-            }
-
-        private:
-            MyClass* object_;                           // A pointer to the object
-    };
-
-    void someFunction()
-    {
-        MyClass* object = new MyClass();                // Create a new instance of MyClass
-
-        OtherClass* other1 = new OtherClass(object);    // Create an instance of OtherClass and pass the object pointer
-        OtherClass* other2 = new OtherClass(object);    // "
-        OtherClass* other3 = new OtherClass(object);    // "
-
-        ???                                             // What happens with object now?
-    }
-    @endcode
-
-    If you use SharedPtr<MyClass> instead of a classic MyClass* pointer, the instance of
-    MyClass would be automatically destroyed if all instances of OtherClass are destroyed.
-    You don't need any code in the destructor and you can completely forget about the
-    object, because its managed by the SharedPtr.
-
-    The same code using SharedPtr:
-    @code
-    class OtherClass                                        // Declaration of some class
-    {
-        public:
-            OtherClass(const SharedPtr<MyClass>& object)    // Constructor
-            {
-                this->object_ = object;                     // Assigns the pointer to the member variable object_
-            }
-
-        private:
-            SharedPtr<MyClass> object_;                     // A SharedPtr to the object
-    };
-
-    void someFunction()
-    {
-        SharedPtr<MyClass> object = new MyClass();          // Create a new instance of MyClass
-
-        OtherClass* other1 = new OtherClass(object);        // Create an instance of OtherClass and pass the object pointer
-        OtherClass* other2 = new OtherClass(object);        // "
-        OtherClass* other3 = new OtherClass(object);        // "
-
-    }                                                       // The SmartPtr "object" is destroyed at the end of the scope,
-                                                            // but the three instances of OtherClass keep the object alive
-                                                            // until they are all destroyed.
-    @endcode
-*/
-
-#ifndef _SharedPtr_H__
-#define _SharedPtr_H__
-
-#include "UtilPrereqs.h"
-
-#include <algorithm>
-#include <cassert>
-
-#include "SmallObjectAllocator.h"
-
-namespace orxonox
-{
-    namespace detail
-    {
-        /// BaseClass of SharedCounterImpl, has a counter that is initialized with 1
-        class SharedCounter
-        {
-            public:
-                SharedCounter() : count_(1) {}
-                virtual void destroy() = 0;
-
-                int count_;
-        };
-
-        /// Child class of SharedCounter, keeps a pointer to an object of type T that can be destroyed with destroy()
-        template <class T>
-        class SharedCounterImpl : public SharedCounter
-        {
-            public:
-                SharedCounterImpl(T* pointer) : pointer_(pointer) {}
-
-                void destroy()
-                {
-                    delete this->pointer_;
-                }
-
-            private:
-                T* pointer_;
-        };
-
-        _UtilExport SmallObjectAllocator& createSharedCounterPool();
-
-        FORCEINLINE SmallObjectAllocator& getSharedCounterPool()
-        {
-            static SmallObjectAllocator& instance = createSharedCounterPool();
-            return instance;
-        }
-    }
-
-    /**
-        @brief The SharedPtr template is a utility to manage pointers to an object.
-        @param T The type of the managed object
-
-        SharedPtr acts like a real pointer, except that it keeps track of the number of
-        references to the object. If the the number of references drops to zero, the
-        object is destroyed automatically.
-
-        @see See @ref SharedPtrExample "this description" for some examples and more information.
-
-        @note The number of references is stored in a separate object that is shared
-        among all instances of SharedPtr that point to the same pointer. This object is
-        also responsible for destroying the pointer if the reference counter becomes zero.
-    */
-    template <class T>
-    class SharedPtr
-    {
-        template <class O>
-        friend class SharedPtr;
-
-        public:
-            /// Default constructor, the pointer is set to NULL.
-            inline SharedPtr() : pointer_(0), counter_(0)
-            {
-            }
-
-            /// Constructor, creates a SharedPtr that points to @a pointer, increments the counter.
-            inline SharedPtr(T* pointer) : pointer_(pointer), counter_(0)
-            {
-                if (this->pointer_)
-                {
-                    void* chunk = detail::getSharedCounterPool().alloc();
-                    this->counter_ = new (chunk) detail::SharedCounterImpl<T>(this->pointer_);
-                }
-            }
-
-            /// Copy-constructor, this SharedPtr now points to the same object like the other SharedPtr, increments the counter.
-            inline SharedPtr(const SharedPtr& other) : pointer_(other.pointer_), counter_(other.counter_)
-            {
-                if (this->pointer_)
-                    ++this->counter_->count_;
-            }
-
-            /// Copy-constructor for SharedPtr with another template agument, increments the counter.
-            template <class O>
-            inline SharedPtr(const SharedPtr<O>& other) : pointer_(other.pointer_), counter_(other.counter_)
-            {
-                if (this->pointer_)
-                    ++this->counter_->count_;
-            }
-
-            /// Destructor, decrements the counter and deletes the object if the counter becomes zero.
-            inline ~SharedPtr()
-            {
-                if (this->pointer_)
-                {
-                    --this->counter_->count_;
-
-                    if (this->counter_->count_ == 0)
-                    {
-                        this->counter_->destroy();
-                        detail::getSharedCounterPool().free(this->counter_);
-                    }
-                }
-            }
-
-            /// Assigns a new object, decrements the counter of the old object, increments the counter of the new object.
-            inline SharedPtr& operator=(const SharedPtr& other)
-            {
-                SharedPtr(other).swap(*this);
-                return *this;
-            }
-
-            /// Assigns a new object with another template argument, decrements the counter of the old object, increments the counter of the new object.
-            template <class O>
-            inline SharedPtr& operator=(const SharedPtr<O>& other)
-            {
-                SharedPtr(other).swap(*this);
-                return *this;
-            }
-
-            /// Casts the pointer to another type
-            template <class O>
-            inline SharedPtr<O> cast() const
-            {
-                O* temp = static_cast<O*>(this->pointer_); // temp value for prettier compiler error in case of an invalid static_cast
-                return SharedPtr<O>(temp, this->counter_);
-            }
-
-            /// Overloaded -> operator, returns the pointer to the managed object.
-            inline T* operator->() const
-            {
-                assert(this->pointer_ != 0);
-                return this->pointer_;
-            }
-
-            /// Overloaded * operator, returns a reference ot the managed object.
-            inline T& operator*() const
-            {
-                assert(this->pointer_ != 0);
-                return *this->pointer_;
-            }
-
-            /// Returns the pointer to the managed object.
-            inline T* get() const
-            {
-                return this->pointer_;
-            }
-
-            /// Returns true if the pointer is not NULL.
-            inline operator bool() const
-            {
-                return (this->pointer_ != 0);
-            }
-
-            /// Swaps the pointer and the counter of two instances of SharedPtr with the same template argument.
-            inline void swap(SharedPtr& other)
-            {
-                std::swap(this->pointer_, other.pointer_);
-                std::swap(this->counter_, other.counter_);
-            }
-
-        private:
-            /// Private constructor, used by the cast() function.
-            inline SharedPtr(T* pointer, detail::SharedCounter* counter) : pointer_(pointer), counter_(counter)
-            {
-                if (this->pointer_)
-                    ++this->counter_->count_;
-            }
-
-            T* pointer_;                        ///< A pointer to the managed object of type @a T
-            detail::SharedCounter* counter_;    ///< A pointer to the shared reference counter
-    };
-
-    /**
-        @brief A child class of SharedPtr, used to reflect the hierarchy of the underlying class @a T.
-        @param T The type of the managed object
-        @param Parent The type of the SharedPtr that manages the parent class of @a T
-
-        This class is used to reflect the hierarchy of the underlying class @a T.
-        For example the @c Functor classes: While a @c Functor* pointer would be managed by
-        @c SharedPtr<Functor>, the child class @c FunctorStatic is managed by the class
-        <tt>SharedChildPtr<FunctorStatic, SharedPtr<Functor> ></tt>.
-
-        The second template argument @a Parent is used as the parent class of
-        SharedChildPtr. This means that each instance of <tt>SharedChildPtr<T, Parent></tt>
-        can be upcasted to @c Parent.
-
-        So for example this works:
-        @code
-        SharedChildPtr<FunctorStatic, SharedPtr<Functor> > functorStatic = createFunctor(&MyClass::myStaticFunction);
-        SharedPtr<Functor> functor = functorStatic;
-        @endcode
-
-        @note There are some typedefs and more to make the usage of SharedChildPtr easier
-        for the classes Functor and Executor. See FunctorPtr.h and ExecutorPtr.h. The above
-        example could thus be simplified the following way:
-        @code
-        FunctorStaticPtr functorStatic = createFunctor(&MyClass::myStaticFunction);
-        FunctorPtr functor = functorStatic;
-        @endcode
-
-        @see See SharedPtr for more information about the base class SharedPtr.
-        @see See @ref SharedPtrExample "this description" for some examples about how to use SharedPtr.
-    */
-    template <class T, class Parent>
-    class SharedChildPtr : public Parent
-    {
-        public:
-            inline SharedChildPtr() : Parent() {}
-            inline SharedChildPtr(T* pointer) : Parent(pointer) {}
-            inline SharedChildPtr(const SharedPtr<T>& other) : Parent(other) {}
-
-            inline T* operator->() const { return static_cast<T*>(Parent::operator->()); }
-            inline T& operator*() const { return *static_cast<T*>(Parent::operator->()); }
-    };
-
-}
-
-#endif /* _SharedPtr_H__ */
Index: sandbox_qt/src/libraries/util/SignalHandler.cc
===================================================================
--- sandbox_qt/src/libraries/util/SignalHandler.cc	(revision 7418)
+++ 	(revision )
@@ -1,330 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Christoph Renner
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Implementation of the SignalHandler class.
-*/
-
-#include "SignalHandler.h"
-
-#include <iostream>
-#include <cstdlib>
-#include <cstring>
-#include "Debug.h"
-
-namespace orxonox
-{
-    SignalHandler* SignalHandler::singletonPtr_s = NULL;
-}
-
-#ifdef ORXONOX_PLATFORM_LINUX
-
-#include <wait.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include <X11/keysym.h>
-
-namespace orxonox
-{
-    /**
-     * register signal handlers for SIGSEGV and SIGABRT
-     * @param appName path to executable eg argv[0]
-     * @param filename filename to append backtrace to
-     */
-    void SignalHandler::doCatch( const std::string & appName, const std::string & filename )
-    {
-      this->appName = appName;
-      this->filename = filename;
-
-      // make sure doCatch is only called once without calling dontCatch
-      assert( sigRecList.size() == 0 );
-
-      catchSignal( SIGSEGV );
-      catchSignal( SIGABRT );
-      catchSignal( SIGILL );
-    }
-
-    /**
-     * restore previous signal handlers
-     */
-    void SignalHandler::dontCatch()
-    {
-      for ( SignalRecList::iterator it = sigRecList.begin(); it != sigRecList.end(); it++ )
-      {
-        signal( it->signal, it->handler );
-      }
-
-      sigRecList.clear();
-    }
-
-    /**
-     * catch signal sig
-     * @param sig signal to catch
-     */
-    void SignalHandler::catchSignal( int sig )
-    {
-      sig_t handler = signal( sig, SignalHandler::sigHandler );
-
-      assert( handler != SIG_ERR );
-
-      SignalRec rec;
-      rec.signal = sig;
-      rec.handler = handler;
-
-      sigRecList.push_front( rec );
-    }
-
-    /**
-     * sigHandler is called when receiving signals
-     * @param sig
-     */
-    void SignalHandler::sigHandler( int sig )
-    {
-      std::string sigName = "UNKNOWN";
-
-      switch ( sig )
-      {
-        case SIGSEGV:
-          sigName = "SIGSEGV";
-          break;
-        case SIGABRT:
-          sigName = "SIGABRT";
-          break;
-        case SIGILL:
-          sigName = "SIGILL";
-          break;
-      }
-      // if the signalhandler has already been destroyed then don't do anything
-      if( SignalHandler::singletonPtr_s == 0 )
-      {
-        COUT(0) << "received signal " << sigName.c_str() << std::endl << "can't write backtrace because SignalHandler already destroyed" << std::endl;
-        exit(EXIT_FAILURE);
-      }
-
-      for ( SignalCallbackList::iterator it = SignalHandler::getInstance().callbackList.begin(); it != SignalHandler::getInstance().callbackList.end(); it++  )
-      {
-        (*(it->cb))( it->someData );
-      }
-
-
-      COUT(0) << "received signal " << sigName.c_str() << std::endl << "try to write backtrace to file orxonox_crash.log" << std::endl;
-
-      int sigPipe[2];
-      if ( pipe(sigPipe) == -1 )
-      {
-        perror("pipe failed!\n");
-        exit(EXIT_FAILURE);
-      }
-
-      int sigPid = fork();
-
-      if ( sigPid == -1 )
-      {
-        perror("fork failed!\n");
-        exit(EXIT_FAILURE);
-      }
-
-      // gdb will be attached to this process
-      if ( sigPid == 0 )
-      {
-        getInstance().dontCatch();
-        // wait for message from parent when it has attached gdb
-        int someData;
-
-        read( sigPipe[0], &someData, sizeof(someData) );
-
-        if ( someData != 0x12345678 )
-        {
-          COUT(0) << "something went wrong :(" << std::endl;
-        }
-
-        return;
-      }
-
-      int gdbIn[2];
-      int gdbOut[2];
-      int gdbErr[2];
-
-      if ( pipe(gdbIn) == -1 || pipe(gdbOut) == -1 || pipe(gdbErr) == -1 )
-      {
-        perror("pipe failed!\n");
-        kill( sigPid, SIGTERM );
-        waitpid( sigPid, NULL, 0 );
-        exit(EXIT_FAILURE);
-      }
-
-      int gdbPid = fork();
-      // this process will run gdb
-
-      if ( gdbPid == -1 )
-      {
-        perror("fork failed\n");
-        kill( sigPid, SIGTERM );
-        waitpid( sigPid, NULL, 0 );
-        exit(EXIT_FAILURE);
-      }
-
-      if ( gdbPid == 0 )
-      {
-        // start gdb
-
-        close(gdbIn[1]);
-        close(gdbOut[0]);
-        close(gdbErr[0]);
-
-        dup2( gdbIn[0], STDIN_FILENO );
-        dup2( gdbOut[1], STDOUT_FILENO );
-        dup2( gdbErr[1], STDERR_FILENO );
-
-        execlp( "sh", "sh", "-c", "gdb", static_cast<void*>(NULL));
-      }
-
-      char cmd[256];
-      snprintf( cmd, 256, "file %s\nattach %d\nc\n", getInstance().appName.c_str(), sigPid );
-      write( gdbIn[1], cmd, strlen(cmd) );
-
-      int charsFound = 0;
-      int promptFound = 0;
-      char byte;
-      while ( read( gdbOut[0], &byte, 1 ) == 1 )
-      {
-        if (
-          (charsFound == 0 && byte == '(') ||
-          (charsFound == 1 && byte == 'g') ||
-          (charsFound == 2 && byte == 'd') ||
-          (charsFound == 3 && byte == 'b') ||
-          (charsFound == 4 && byte == ')') ||
-          (charsFound == 5 && byte == ' ')
-            )
-              charsFound++;
-        else
-          charsFound = 0;
-
-        if ( charsFound == 6 )
-        {
-          promptFound++;
-          charsFound = 0;
-        }
-
-        if ( promptFound == 3 )
-        {
-          break;
-        }
-      }
-
-      int someData = 0x12345678;
-      write( sigPipe[1], &someData, sizeof(someData) );
-
-      write( gdbIn[1], "bt\nk\nq\n", 7 );
-
-
-      charsFound = 0;
-      promptFound = 0;
-      std::string bt;
-      while ( read( gdbOut[0], &byte, 1 ) == 1 )
-      {
-        bt += std::string( &byte, 1 );
-
-        if (
-          (charsFound == 0 && byte == '(') ||
-          (charsFound == 1 && byte == 'g') ||
-          (charsFound == 2 && byte == 'd') ||
-          (charsFound == 3 && byte == 'b') ||
-          (charsFound == 4 && byte == ')') ||
-          (charsFound == 5 && byte == ' ')
-            )
-              charsFound++;
-        else
-          charsFound = 0;
-
-        if ( charsFound == 6 )
-        {
-          promptFound++;
-          charsFound = 0;
-          bt += "\n";
-        }
-
-        if ( promptFound == 3 )
-        {
-          break;
-        }
-      }
-
-
-      waitpid( sigPid, NULL, 0 );
-      waitpid( gdbPid, NULL, 0 );
-
-      int wsRemoved = 0;
-
-      while ( wsRemoved < 2 && bt.length() > 0 )
-      {
-        if ( bt[1] == '\n' )
-          wsRemoved++;
-        bt.erase(0, 1);
-      }
-
-      if ( bt.length() > 0 )
-        bt.erase(0, 1);
-
-      time_t now = time(NULL);
-
-      std::string timeString =
-                         "=======================================================\n"
-                         "= time: " + std::string(ctime(&now)) +
-                         "=======================================================\n";
-      bt.insert(0, timeString);
-
-      FILE * f = fopen( getInstance().filename.c_str(), "w" );
-
-      if ( !f )
-      {
-        perror( ( std::string( "could not append to " ) + getInstance().filename ).c_str() );
-        exit(EXIT_FAILURE);
-      }
-
-      if ( fwrite( bt.c_str(), 1, bt.length(), f ) != bt.length() )
-      {
-        COUT(0) << "could not write " << bt.length() << " byte to " << getInstance().filename << std::endl;
-        exit(EXIT_FAILURE);
-      }
-
-      exit(EXIT_FAILURE);
-    }
-
-    void SignalHandler::registerCallback( SignalCallback cb, void * someData )
-    {
-      SignalCallbackRec rec;
-      rec.cb = cb;
-      rec.someData = someData;
-
-      callbackList.push_back(rec);
-    }
-}
-
-#endif /* ORXONOX_PLATFORM_LINUX */
Index: sandbox_qt/src/libraries/util/SignalHandler.h
===================================================================
--- sandbox_qt/src/libraries/util/SignalHandler.h	(revision 7418)
+++ 	(revision )
@@ -1,121 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Christoph Renner
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @ingroup Util
-    @brief Declaration of the SignalHandler class.
-*/
-
-#ifndef _SignalHandler_H__
-#define _SignalHandler_H__
-
-#include "UtilPrereqs.h"
-
-#include <cassert>
-#include <list>
-#include <string>
-#include "Singleton.h"
-
-namespace orxonox
-{
-    typedef int (*SignalCallback)( void * someData );
-}
-
-#ifdef ORXONOX_PLATFORM_LINUX
-#include <signal.h>
-
-namespace orxonox
-{
-    struct SignalRec
-    {
-        int signal;
-        sig_t handler;
-    };
-
-    struct SignalCallbackRec
-    {
-        SignalCallback cb;
-        void * someData;
-    };
-
-
-    typedef std::list<SignalRec> SignalRecList;
-    typedef std::list<SignalCallbackRec> SignalCallbackList;
-
-    /// The SignalHandler is used to catch signals like SIGSEGV and write a backtrace to the logfile.
-    class SignalHandler : public Singleton<SignalHandler>
-    {
-        friend class Singleton<SignalHandler>;
-    public:
-        SignalHandler()  { }
-        ~SignalHandler() { }
-
-        void registerCallback( SignalCallback cb, void * someData );
-
-        void doCatch( const std::string & appName, const std::string & filename );
-        void dontCatch();
-
-    private:
-        static void sigHandler( int sig );
-
-        void catchSignal( int sig );
-        SignalRecList sigRecList;
-
-        SignalCallbackList callbackList;
-
-        static SignalHandler* singletonPtr_s;
-
-        std::string appName;
-        std::string filename;
-    };
-}
-
-#else /* ORXONOX_PLATFORM_LINUX */
-
-namespace orxonox
-{
-    /// The SignalHandler is used to catch signals like SIGSEGV and write a backtrace to the logfile. Not implemented on Windows.
-    class _UtilExport SignalHandler : public Singleton<SignalHandler>
-    {
-        friend class Singleton<SignalHandler>;
-    public:
-        SignalHandler()  { }
-        ~SignalHandler() { }
-        void doCatch( const std::string & appName, const std::string & filename ) {}
-        void dontCatch() {}
-        void registerCallback( SignalCallback cb, void * someData ) {}
-
-    private:
-        static SignalHandler* singletonPtr_s;
-    };
-}
-
-#endif /* ORXONOX_PLATFORM_LINUX */
-
-#endif /* _SignalHandler_H__ */
Index: sandbox_qt/src/libraries/util/SmallObjectAllocator.cc
===================================================================
--- sandbox_qt/src/libraries/util/SmallObjectAllocator.cc	(revision 7418)
+++ 	(revision )
@@ -1,122 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @brief Implementation of SmallObjectAllocator
-*/
-
-#include "SmallObjectAllocator.h"
-
-namespace orxonox
-{
-    /**
-        @brief Constructor: initializes the allocator and its values.
-        @param objectSize The size in bytes (returned by sizeof()) of the allocated objects
-        @param numObjects The number of objects that are allocated in one block of memory
-    */
-    SmallObjectAllocator::SmallObjectAllocator(size_t objectSize, size_t numObjects)
-    {
-        this->chunkSize_ = std::max(objectSize, sizeof(Chunk)); // the chunk's size will be the maximum of the object's size and the size of a Chunk object itself
-        this->numChunksPerBlock_ = numObjects;
-        this->first_ = 0;
-    }
-
-    /**
-        @brief Destructor: deletes the allocated memory blocks.
-    */
-    SmallObjectAllocator::~SmallObjectAllocator()
-    {
-        for (std::vector<char*>::iterator it = this->blocks_.begin(); it != this->blocks_.end(); ++it)
-            delete[] *it;
-    }
-
-    /**
-        @brief Helper function, used to set the next_ pointer of a Chunk.
-    */
-    /* static */ void SmallObjectAllocator::setNext(void* chunk, void* next)
-    {
-        static_cast<Chunk*>(chunk)->next_ = static_cast<Chunk*>(next);
-    }
-
-    /**
-        @brief Helper function, returns the next_ pointer of a Chunk
-    */
-    /* static */ void* SmallObjectAllocator::getNext(void* chunk)
-    {
-        return static_cast<Chunk*>(chunk)->next_;
-    }
-
-    /**
-        @brief Returns the first free memory chunk or allocates a new block of memory.
-    */
-    void* SmallObjectAllocator::alloc()
-    {
-        // get the first free chunk
-        void* chunk = this->first_;
-
-        // check if the chunk exists
-        if (chunk)
-        {
-            // yes it does - the first_ pointer now points to the second element in the list
-            this->first_ = getNext(chunk);
-        }
-        else
-        {
-            // no it doesnt - allocate a new block of memory
-            char* block = new char[this->chunkSize_ * this->numChunksPerBlock_];
-            this->blocks_.push_back(block);
-
-            // iterate through the chunks in the new memory block and link them together to a single linked list
-            for (size_t i = 1; i < this->numChunksPerBlock_ - 1; ++i)
-                setNext(block + i * this->chunkSize_, block + (i + 1) * this->chunkSize_);
-
-            // the next_ pointer of the last chunk must point to NULL
-            setNext(block + (this->numChunksPerBlock_ - 1) * this->chunkSize_, 0);
-
-            // The second chunk in the block is assigned to the first_ pointer
-            this->first_ = block + this->chunkSize_;
-
-            // The first chunk in the block is returned
-            chunk = block;
-        }
-
-        // return the pointer to the chunk
-        return chunk;
-    }
-
-    /**
-        @brief Puts the memory chunk back on the list of free memory.
-    */
-    void SmallObjectAllocator::free(void* chunk)
-    {
-        // The first_ pointer points to the freed chunk, its next_ pointer points to the rest of the list
-        setNext(chunk, this->first_);
-        this->first_ = chunk;
-    }
-}
Index: sandbox_qt/src/libraries/util/SmallObjectAllocator.h
===================================================================
--- sandbox_qt/src/libraries/util/SmallObjectAllocator.h	(revision 7418)
+++ 	(revision )
@@ -1,116 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @defgroup SmallObjectAllocator SmallObjectAllocator
-    @ingroup Util
-*/
-
-/**
-    @file
-    @ingroup SmallObjectAllocator
-    @brief Declaration of SmallObjectAllocator
-
-    @anchor SmallObjectAllocatorExample
-
-    The default implementations of new and delete are designed to work with objects of
-    arbitrary size. They are thus not optimal for small objects.
-    @ref orxonox::SmallObjectAllocator "SmallObjectAllocator" allocates a large memory
-    block and divides it into small chunks. These chunks are returned by the function
-    @ref orxonox::SmallObjectAllocator::alloc() "alloc()" and can be used to create a
-    new object using the placement new operator. Instead of delete, the function
-    @ref orxonox::SmallObjectAllocator::free() "free()" is used to give the memory
-    back to SmallObjectAllocator.
-
-    Example:
-    @code
-    SmallObjectAllocator allocator(sizeof(MySmallObject));  // Create an allocator. The size of the memory chunks must equal the size of the desired class
-
-    void* chunk = allocator.alloc();                        // Allocate a memory chunk
-    MySmallObject* object = new (chunk) MySmallObject();    // Call the placement new operator
-
-    object->someFunction();                                 // Do something with the object
-
-    object->~MySmallObject();                               // Call the destructor
-    allocator.free(object);                                 // Free the allocated memory
-    @endcode
-
-    @b Important: You have to call the destructor of the object manually, because this
-    is not automatically done by the allocator nor free().
-
-    @note The destructor can be ignored if it is empty or not implemented. This saves
-    another amount of time.
-
-    @remarks For a distributed usage of SmallObjectAllocator it may be a good idea to
-    create a static function that returns an instance to it. The allocator then works
-    like a singleton and can be accesses from everywhere.
-*/
-
-#ifndef _SmallObjectAllocator_H__
-#define _SmallObjectAllocator_H__
-
-#include "UtilPrereqs.h"
-#include <vector>
-
-namespace orxonox
-{
-    /**
-        @brief This class is used to allocate and free small objects (usually not polymorphic).
-
-        SmallObjectAllocator provides a fast alternative to new and delete for small objects.
-
-        @see See @ref SmallObjectAllocatorExample "this description" for more information and an example.
-    */
-    class _UtilExport SmallObjectAllocator
-    {
-        /// The memory chunk is at the same time an element of a single linked list.
-        struct Chunk
-        {
-            Chunk* next_;   ///< A pointer to the next chunk in the list
-        };
-
-        public:
-            SmallObjectAllocator(size_t objectSize, size_t numObjects = 64);
-            ~SmallObjectAllocator();
-
-            void* alloc();
-            void free(void* chunk);
-
-        private:
-            static void setNext(void* chunk, void* next);
-            static void* getNext(void* chunk);
-
-            void* first_;                   ///< A pointer to the first free memory chunk
-            size_t chunkSize_;              ///< The size of each chunk (and usually also the size of the created objects)
-            size_t numChunksPerBlock_;      ///< The number of chunks per memory block
-
-            std::vector<char*> blocks_;     ///< A list of all allocated memory blocks (used to destroy them again)
-    };
-}
-
-#endif /* _SmallObjectAllocator_H__ */
Index: sandbox_qt/src/libraries/util/TriBool.h
===================================================================
--- sandbox_qt/src/libraries/util/TriBool.h	(revision 7418)
+++ 	(revision )
@@ -1,59 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Reto Grieder
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @ingroup Util
-*/
-
-#ifndef _TriBool_H__
-#define _TriBool_H__
-
-#include "UtilPrereqs.h"
-
-// tolua_begin
-namespace orxonox
-{
-    /** Sort of a boolean value that also has state \c Dontcare
-    @remarks
-        Even though \c False has the value 0, both \c True and \c Dontcare have
-        a value other than 0. Keep that in mind when using TriBools in if statements.
-    */
-    namespace TriBool
-    {
-        enum Value
-        {
-            False    =  0,
-            True     =  1,
-            Dontcare =  2
-        };
-    }
-}
-// tolua_end
-
-#endif /* _TriBool_H__ */
Index: sandbox_qt/src/libraries/util/VA_NARGS.h
===================================================================
--- sandbox_qt/src/libraries/util/VA_NARGS.h	(revision 7418)
+++ 	(revision )
@@ -1,93 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @ingroup Util
-    @brief Declaration of the ORXONOX_VA_NARGS macro which returns the number of arguments passed to a variadic macro.
-
-    With this utility you can overload a macro for different numbers of arguments
-    (of course overloading is not possible for different types, as macros are not
-    type aware, but for different numbers of arguments is still very powerful).
-
-    Example: A macro to call functions
-    @code
-    myfunction();                                           // A static function
-    MyClass::myStaticFunction();                            // A static class function
-    MyClass::myFunction();                                  // A member function
-
-    #define CallFunction(...) \                             // Define a variadic macro that passes the arguments to the overloaded implementations
-        BOOST_PP_EXPAND(BOOST_PP_CAT(CallFunction, ORXONOX_VA_NARGS(__VA_ARGS__))(__VA_ARGS__))
-
-    #define CallFunction1(function) \                       // Overloaded macro for 1 argument
-        function()                                          // Calls the static function
-
-    #define CallFunction2(class, function) \                // Overloaded macro for 2 arguments
-        class::function()                                   // Calls the static class function
-
-    #define CallFunction3(class, function, object) \        // Overloaded macro for 3 arguments
-        object->class::function()                           // Calls the function on the object
-
-
-    CallFunction(myFunction);                               // Call the macro with 1 argument
-    CallFunction(MyClass, myStaticFunction);                // Call the macro with 2 arguments
-    CallFunction(MyClass, myFunction, new MyClass());       // Call the macro with 3 arguments
-    @endcode
-
-    Note that the first (variadic) macro concatenates the name "CallFunction" with
-    the number of arguments ("1" - "N"). Then all arguments are passed to the right macro.
-*/
-
-#include <boost/preprocessor/facilities/expand.hpp>
-
-/**
-    @brief Returns the number of arguments passed to a variadic macro. Important: The number of arguments must be greater than zero (ORXONOX_VA_NARGS() returns 1).
-*/
-#define ORXONOX_VA_NARGS(...) \
-    ORXONOX_VA_NARGS_CONCAT(__VA_ARGS__, ORXONOX_VA_NARGS_NUMBERS)
-
-
-// some helper macros //
-
-#define ORXONOX_VA_NARGS_CONCAT(...) \
-    BOOST_PP_EXPAND(ORXONOX_VA_NARGS_INTERN(__VA_ARGS__))
-
-#define ORXONOX_VA_NARGS_INTERN( \
-    arg1,  arg2,  arg3,  arg4,  arg5,  arg6,  arg7,  arg8,  arg9,  arg10, \
-    arg11, arg12, arg13, arg14, arg15, arg16, arg17, arg18, arg19, arg20, \
-    arg21, arg22, arg23, arg24, arg25, arg26, arg27, arg28, arg29, arg30, \
-    arg31, arg32, arg33, arg34, arg35, arg36, arg37, arg38, arg39, arg40, \
-    arg41, arg42, arg43, arg44, arg45, arg46, arg47, arg48, arg49, arg50, \
-    arg51, arg52, arg53, arg54, arg55, arg56, arg57, arg58, arg59, arg60, \
-    arg61, arg62, arg63, argn, ...) argn
-
-#define ORXONOX_VA_NARGS_NUMBERS \
-    63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, \
-    47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, \
-    31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, \
-    15, 14, 13, 12, 11, 10,  9,  8,  7,  6,  5,  4,  3,  2,  1,  0
Index: sandbox_qt/src/libraries/util/mbool.h
===================================================================
--- sandbox_qt/src/libraries/util/mbool.h	(revision 7418)
+++ 	(revision )
@@ -1,116 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *                    > www.orxonox.net <
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/**
-    @file
-    @ingroup Util
-    @brief Declaration and implementation of the @ref orxonox::mbool class.
-*/
-
-#ifndef _mbool_H__
-#define _mbool_H__
-
-#include "UtilPrereqs.h"
-
-namespace orxonox
-{
-    /**
-        @brief mbool is a small helper class that acts like a bool, but keeps track of the number of its state changes.
-
-        The mbool class acts like a bool, but it has an internal counter that counts
-        the number state changes (i.e. when the bool changes from true to false or
-        back). This is used in the network if a boolean value is synchronized, because
-        if a value changes quickly from false to true and back in the same tick, the
-        clients will never be notified of this action. By using mbool however this
-        behaviour is fixed, which is important for triggers and other objects.
-
-        @note This is efficiently solved by using a union that combines a counter and a
-        boolean bitfield of size 1. The boolean value corresponds always to the first
-        bit of the counter - this means, if the counter is incremented, the boolean state
-        changes. On the other hand, if you want to change the state, you can simply increase
-        the counter.
-    */
-    struct _UtilExport mbool
-    {
-        public:
-            /// Constructor: Creates the mbool and initializes the boolean value (default to false).
-            inline mbool(bool value = false)
-                { this->value_.memory_ = 0; this->value_.bool_ = value; }
-            /// Copy-constructor, copies state and memory.
-            inline mbool(const mbool& value)
-                { this->value_.memory_ = value.value_.memory_; }
-
-            /// Assigns a boolean value (and increases the memory value if the value is different to the old value).
-            inline mbool& operator=(bool value)
-                { if (value != this->value_.bool_) { ++this->value_.memory_; } return (*this); }
-            /// Assigns another mbool, copies state and memory.
-            inline mbool& operator=(const mbool& value)
-                { this->value_.memory_ = value.value_.memory_; return (*this); }
-
-            /// Increases the memory which also inverts it's state (++mbool).
-            inline mbool& operator++()
-                { ++this->value_.memory_; return (*this); }
-            /// Increases the memory which also inverts it's state (mbool++).
-            inline mbool operator++(int)
-                { mbool temp = (*this); ++this->value_.memory_; return temp; }
-
-            /// Implicitly converts the mbool to a bool.
-            inline operator bool() const
-                { return this->value_.bool_; }
-
-            /// Compares the mbool to a bool, returns true if the bool has the same value as the state of the mbool.
-            inline bool operator==(bool other) const
-                { return this->value_.bool_ == other; }
-            /// Compares the mbool to a bool, returns true if the bool has a different value than the state of the mbool.
-            inline bool operator!=(bool other) const
-                { return this->value_.bool_ != other; }
-
-            /// Compares two mbools, returns true if their memory matches.
-            inline bool operator==(const mbool& other) const
-                { return this->value_.memory_ == other.value_.memory_; }
-            /// Compares two mbools, returns true if they have a different memory value.
-            inline bool operator!=(const mbool& other) const
-                { return this->value_.memory_ != other.value_.memory_; }
-
-            /// Returns the inverted state of the bool (doesn't change the internal state).
-            inline bool operator!() const
-                { return (!this->value_.bool_); }
-
-            /// Returns the memory value.
-            inline unsigned char& getMemory(){ return value_.memory_; }
-
-        private:
-            union
-            {
-                bool bool_ : 1;         ///< The boolean state of the mbool, is located on the first bit of the memory variable
-                unsigned char memory_;  ///< The memory of the mbool, counts the state-changes (and the first bit represents also the boolean value)
-            } value_;                   ///< A union containing the state and the memory of the mbool
-    };
-}
-
-#endif /* _mbool_H__ */
