Index: /code/branches/presentation2/data/gui/scripts/AudioMenu.lua
===================================================================
--- /code/branches/presentation2/data/gui/scripts/AudioMenu.lua	(revision 6369)
+++ /code/branches/presentation2/data/gui/scripts/AudioMenu.lua	(revision 6370)
@@ -18,10 +18,10 @@
     musicscrollbar_active = false
     effectsscrollbar_active = false
-    mastervolume = soundMgr:getVolume(orxonox.SoundType.none)
-    musicvolume = soundMgr:getVolume(orxonox.SoundType.ambient)
-    effectsvolume = soundMgr:getVolume(orxonox.SoundType.effects)
-    mastermute = soundMgr:getMute(orxonox.SoundType.none)
-    musicmute = soundMgr:getMute(orxonox.SoundType.ambient)
-    effectsmute = soundMgr:getMute(orxonox.SoundType.effects)
+    mastervolume = soundMgr:getVolume(orxonox.SoundType.All)
+    musicvolume = soundMgr:getVolume(orxonox.SoundType.Music)
+    effectsvolume = soundMgr:getVolume(orxonox.SoundType.Effects)
+    mastermute = soundMgr:getMute(orxonox.SoundType.All)
+    musicmute = soundMgr:getMute(orxonox.SoundType.Music)
+    effectsmute = soundMgr:getMute(orxonox.SoundType.Effects)
     masterscrollbarwindow = tolua.cast(winMgr:getWindow("orxonox/MasterScrollbar"),"CEGUI::Scrollbar")
     musicscrollbarwindow = tolua.cast(winMgr:getWindow("orxonox/MusicScrollbar"),"CEGUI::Scrollbar")
@@ -131,5 +131,5 @@
         end
     end
-    soundMgr:toggleMute(orxonox.SoundType.none)
+    soundMgr:toggleMute(orxonox.SoundType.All)
 end
 
@@ -146,5 +146,5 @@
         end
     end
-    soundMgr:toggleMute(orxonox.SoundType.ambient)
+    soundMgr:toggleMute(orxonox.SoundType.Music)
 end
 
@@ -161,5 +161,5 @@
         end
     end
-    soundMgr:toggleMute(orxonox.SoundType.effects)
+    soundMgr:toggleMute(orxonox.SoundType.Effects)
 end
 
Index: /code/branches/presentation2/src/orxonox/MoodManager.cc
===================================================================
--- /code/branches/presentation2/src/orxonox/MoodManager.cc	(revision 6369)
+++ /code/branches/presentation2/src/orxonox/MoodManager.cc	(revision 6370)
@@ -41,5 +41,4 @@
     {
         RegisterRootObject(MoodManager);
-        moodOld_ = "default";
         this->setConfigValues();
         CommandExecutor::addConsoleCommandShortcut(createConsoleCommand(createFunctor(&MoodManager::setMood, this), "setMood"));
@@ -57,8 +56,8 @@
     }
 
-    /**
-     *  Sets the mood
-     *  @note TODO: Inform dependent classes of mood change
-     */
+    /** Sets the mood
+    @note
+        TODO: Inform dependent classes of mood change
+    */
     void MoodManager::setMood(const std::string& mood)
     {
@@ -66,5 +65,5 @@
     }
     
-    // gets the current mood
+    //! Gets the current mood
     const std::string& MoodManager::getMood()
     {
@@ -74,10 +73,7 @@
     void MoodManager::checkMoodValidity()
     {
-        if(mood_ != "default" && mood_ != "dnb")        // Insert new moods here
-        {
+        if (mood_ != "default" && mood_ != "dnb") // Insert new moods here; TODO: make this generic
             ResetConfigValue(mood_);
-        }
-        COUT(3) << "MoodManager: Mood now set to " << mood_ << std::endl;
-        return;
+        COUT(4) << "MoodManager: Mood set to " << mood_ << std::endl;
     }
 }
Index: /code/branches/presentation2/src/orxonox/MoodManager.h
===================================================================
--- /code/branches/presentation2/src/orxonox/MoodManager.h	(revision 6369)
+++ /code/branches/presentation2/src/orxonox/MoodManager.h	(revision 6370)
@@ -59,10 +59,9 @@
 
         private:
+            void checkMoodValidity();
 
             // config values
             std::string mood_;
             std::string moodOld_;
-
-            void checkMoodValidity();
 
             static MoodManager* singletonPtr_s;
Index: /code/branches/presentation2/src/orxonox/sound/AmbientSound.cc
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/AmbientSound.cc	(revision 6369)
+++ /code/branches/presentation2/src/orxonox/sound/AmbientSound.cc	(revision 6370)
@@ -67,7 +67,7 @@
     {
         registerVariable(ambientSource_, ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this, &AmbientSound::ambientSourceChanged));
-        registerVariable(bLooping_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::loopingChanged));
-        registerVariable(pitch_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::pitchChanged));
-        registerVariable((int&)(BaseSound::state_), ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::stateChanged));
+        registerVariable(bLooping_, ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this, &AmbientSound::loopingChanged));
+        registerVariable(pitch_, ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this, &AmbientSound::pitchChanged));
+        registerVariable((int&)(BaseSound::state_), ObjectDirection::ToClient, new NetworkCallback<AmbientSound>(this, &AmbientSound::stateChanged));
     }
 
@@ -125,8 +125,8 @@
     }
     
-    float AmbientSound::getVolumeGain()
+    float AmbientSound::getRealVolume()
     {
         assert(GameMode::playsSound());
-        return SoundManager::getInstance().getVolume(SoundType::ambient);
+        return SoundManager::getInstance().getRealVolume(SoundType::Music);
     }
 
Index: /code/branches/presentation2/src/orxonox/sound/AmbientSound.h
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/AmbientSound.h	(revision 6369)
+++ /code/branches/presentation2/src/orxonox/sound/AmbientSound.h	(revision 6370)
@@ -59,6 +59,4 @@
         void stop();
         void pause();
-        
-        float getVolumeGain();
 
         void setAmbientSource(const std::string& source);
@@ -71,6 +69,6 @@
         void doStop();
         void doPause();
-        
         void registerVariables();
+        float getRealVolume();
 
         std::string ambientSource_; //!< Analogous to source_, but mood independent
Index: /code/branches/presentation2/src/orxonox/sound/BaseSound.cc
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/BaseSound.cc	(revision 6369)
+++ /code/branches/presentation2/src/orxonox/sound/BaseSound.cc	(revision 6370)
@@ -145,26 +145,15 @@
     void BaseSound::setVolume(float vol)
     {
-        if (vol > 1 || vol < 0)
-        {
-            COUT(2) << "Sound warning: volume out of range, cropping value." << std::endl;
-            vol = vol > 1 ? 1 : vol;
-            vol = vol < 0 ? 0 : vol;
-        }
-        this->volume_ = vol;
-        
+        this->volume_ = clamp(vol, 0.0f, 1.0f);
+        if (this->volume_ != vol)
+            COUT(2) << "Sound warning: volume out of range, clamping value." << std::endl;
         this->updateVolume();
     }
     
-    float BaseSound::getVolumeGain()
-    {
-        assert(GameMode::playsSound());
-        return SoundManager::getInstance().getVolume(SoundType::none);
-    }
-    
-    void BaseSound::updateVolume(void)
-    {
-        if (alIsSource(this->audioSource_))
-        {
-            float volume = this->volume_ * this->getVolumeGain();
+    void BaseSound::updateVolume()
+    {
+        if (alIsSource(this->audioSource_))
+        {
+            float volume = this->volume_ * this->getRealVolume();
             alSourcef(this->audioSource_, AL_GAIN, volume);
             if (int error = alGetError())
Index: /code/branches/presentation2/src/orxonox/sound/BaseSound.h
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/BaseSound.h	(revision 6369)
+++ /code/branches/presentation2/src/orxonox/sound/BaseSound.h	(revision 6370)
@@ -67,25 +67,19 @@
 
         virtual void setSource(const std::string& source);
-        virtual const std::string& getSource() const { return this->source_; }
-        inline void sourceChanged(){ this->setSource(this->source_); }
+        virtual const std::string& getSource() const
+            { return this->source_; }
 
         void setVolume(float vol);
-        float getVolume() const { return this->volume_; }
-        inline void volumeChanged(){ this->setVolume(this->volume_); }
-        
-        virtual float getVolumeGain();
-        void updateVolume(void);
+        float getVolume() const
+            { return this->volume_; }
+        void updateVolume();
 
-        bool getLooping() const   { return this->bLooping_; }
+        bool getLooping() const
+            { return this->bLooping_; }
         void setLooping(bool val);
-        inline void loopingChanged(){ this->setLooping(this->bLooping_); }
 
-        float getPitch() const   { return this->pitch_; }
+        float getPitch() const
+            { return this->pitch_; }
         void setPitch(float pitch);
-        inline void pitchChanged(){ this->setPitch(this->pitch_); }
-        
-        void stateChanged();
-
-        //ALuint getALAudioSource(void);
 
     protected:
@@ -96,6 +90,20 @@
             Paused
         };
+
+        // network callbacks
+        inline void pitchChanged()
+            { this->setPitch(this->pitch_); }
+        inline void loopingChanged()
+            { this->setLooping(this->bLooping_); }
+        inline void volumeChanged()
+            { this->setVolume(this->volume_); }
+        inline void sourceChanged()
+            { this->setSource(this->source_); }
+        void stateChanged();
+
         virtual void initialiseSource();
         ALint getSourceState() const;
+
+        virtual float getRealVolume() = 0;
 
         ALuint          audioSource_;
Index: /code/branches/presentation2/src/orxonox/sound/SoundManager.cc
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/SoundManager.cc	(revision 6369)
+++ /code/branches/presentation2/src/orxonox/sound/SoundManager.cc	(revision 6370)
@@ -51,4 +51,18 @@
     ManageScopedSingleton(SoundManager, ScopeID::Graphics, true);
 
+    std::string SoundManager::getALErrorString(ALenum code)
+    {
+        switch (code)
+        {
+        case AL_NO_ERROR:          return "No error";
+        case AL_INVALID_NAME:      return "Invalid AL parameter name";
+        case AL_INVALID_ENUM:      return "Invalid AL enum";
+        case AL_INVALID_VALUE:     return "Invalid AL value";
+        case AL_INVALID_OPERATION: return "Invalid AL operation";
+        case AL_OUT_OF_MEMORY:     return "AL reports out of memory";
+        default:                   return "Unknown AL error";
+        }
+    }
+
     SoundManager::SoundManager()
         : effectsPoolSize_(0)
@@ -114,11 +128,7 @@
             COUT(2) << "Sound Warning: MIME Type retrieval failed: " << alutGetErrorString(alutGetError()) << std::endl;
         
-        this->setVolumeInternal(1.0, SoundType::none);
-        this->setVolumeInternal(1.0, SoundType::ambient);
-        this->setVolumeInternal(1.0, SoundType::effects);
-        
-        this->mute_[SoundType::none] = false;
-        this->mute_[SoundType::ambient] = false;
-        this->mute_[SoundType::effects] = false;
+        this->mute_[SoundType::All]     = 1.0f;
+        this->mute_[SoundType::Music]   = 1.0f;
+        this->mute_[SoundType::Effects] = 1.0f;
 
         this->setConfigValues();
@@ -186,13 +196,11 @@
             .callback(this, &SoundManager::checkFadeStepValidity);
 
-        SetConfigValue(soundVolume_, 1.0f)
+        SetConfigValueAlias(volume_[SoundType::All], "soundVolume_", 1.0f)
             .description("Defines the overall volume.")
             .callback(this, &SoundManager::checkSoundVolumeValidity);
-
-        SetConfigValue(ambientVolume_, 1.0f)
+        SetConfigValueAlias(volume_[SoundType::Music], "ambientVolume_", 1.0f)
             .description("Defines the ambient volume.")
             .callback(this, &SoundManager::checkAmbientVolumeValidity);
-
-        SetConfigValue(effectsVolume_, 1.0f)
+        SetConfigValueAlias(volume_[SoundType::Effects], "effectsVolume_", 1.0f)
             .description("Defines the effects volume.")
             .callback(this, &SoundManager::checkEffectsVolumeValidity);
@@ -202,66 +210,77 @@
     }
 
-    std::string SoundManager::getALErrorString(ALenum code)
-    {
-        switch (code)
-        {
-        case AL_NO_ERROR:          return "No error";
-        case AL_INVALID_NAME:      return "Invalid AL parameter name";
-        case AL_INVALID_ENUM:      return "Invalid AL enum";
-        case AL_INVALID_VALUE:     return "Invalid AL value";
-        case AL_INVALID_OPERATION: return "Invalid AL operation";
-        case AL_OUT_OF_MEMORY:     return "AL reports out of memory";
-        default:                   return "Unknown AL error";
-        }
-    }
-
     void SoundManager::checkFadeStepValidity()
     {
         if (crossFadeStep_ <= 0.0 || crossFadeStep_ >= 1.0 )
         {
-            COUT(2) << "Sound warning: Sound step out of range, ignoring change." << std::endl;
+            COUT(2) << "Sound warning: fade step out of range, ignoring change." << std::endl;
             ResetConfigValue(crossFadeStep_);
         }
-        COUT(3) << "SoundManager: fade step set to " << crossFadeStep_ << std::endl;
-        return;
-    }
-    
-    bool SoundManager::checkVolumeValidity(SoundType::Value type)
-    {
-        bool valid = true;
-        
-        if(this->getVolumeInternal(type) < 0.0 || this->getVolumeInternal(type) > 1.0)
-        {
-            COUT(2) << "Sound warning: Sound volume out of range, ignoring change." << std::endl;
-            valid = false;
-        }
-        
+    }
+
+    void SoundManager::checkVolumeValidity(SoundType::Value type)
+    {
+        float clampedVolume = clamp(this->volume_[type], 0.0f, 1.0f);
+        if (clampedVolume != this->volume_[type])
+            COUT(2) << "Sound warning: Volume setting (" << type << ") out of range, clamping." << std::endl;
         this->updateVolume(type);
-        COUT(4) << "SoundManager: volume set to " << this->getVolumeInternal(type) << std::endl;
-        return valid;
-    }
-    
-    void SoundManager::checkSoundVolumeValidity()
-    {
-        if(!checkVolumeValidity(SoundType::none))
-        {
-            ResetConfigValue(soundVolume_);
-        }
-    }
-    
-    void SoundManager::checkAmbientVolumeValidity()
-    {
-        if(!checkVolumeValidity(SoundType::ambient))
-        {
-            ResetConfigValue(ambientVolume_);
-        }
-    }
-    
-    void SoundManager::checkEffectsVolumeValidity()
-    {
-        if(!checkVolumeValidity(SoundType::effects))
-        {
-            ResetConfigValue(effectsVolume_);
-        }
+    }
+
+    void SoundManager::setVolume(float vol, SoundType::Value type)
+    {
+        if (type < 0 || type > SoundType::Effects)
+            return;
+        this->volume_[type] = vol;
+        this->checkVolumeValidity(type);
+    }
+
+    float SoundManager::getVolume(SoundType::Value type) 
+    {
+        if (type < 0 || type > SoundType::Effects)
+            return 0.0f;
+        return this->volume_[type];
+    }
+
+    float SoundManager::getRealVolume(SoundType::Value type) 
+    {
+        if (type != SoundType::Music && type != SoundType::Effects)
+            return 0.0f;
+        return this->volume_[SoundType::All] * this->mute_[SoundType::All] * this->volume_[type] * this->mute_[type];
+    }
+
+    void SoundManager::updateVolume(SoundType::Value type)
+    {
+        switch(type)
+        {
+        case SoundType::All:
+            for (ObjectList<BaseSound>::iterator it = ObjectList<BaseSound>::begin(); it != ObjectList<BaseSound>::end(); ++it)
+                (*it)->updateVolume();
+            break;
+        case SoundType::Music:
+            for (ObjectList<AmbientSound>::iterator it = ObjectList<AmbientSound>::begin(); it != ObjectList<AmbientSound>::end(); ++it)
+                (*it)->updateVolume();
+            break;
+        case SoundType::Effects:
+            for (ObjectList<WorldSound>::iterator it = ObjectList<WorldSound>::begin(); it != ObjectList<WorldSound>::end(); ++it)
+                (*it)->updateVolume();
+            break;
+        default:
+            assert(false);
+        }
+    }
+
+    void SoundManager::toggleMute(SoundType::Value type)
+    {
+        if (type < 0 || type > SoundType::Effects)
+            return;
+        this->mute_[type] = (this->mute_[type] == 0) ? 1.0f : 0.0f;
+        this->updateVolume(type);
+    }
+
+    bool SoundManager::getMute(SoundType::Value type)
+    {
+        if (type < 0 || type > SoundType::Effects)
+            return true;
+        return (this->mute_[type] == 0);
     }
 
@@ -358,112 +377,4 @@
         }
     }
-    
-    
-    void SoundManager::setVolume(float vol, SoundType::Value type)
-    {
-        vol = this->checkVolumeRange(vol);
-        
-        this->setVolumeInternal(vol, type);
-        
-        this->updateVolume(type);
-    }
-    
-    float SoundManager::checkVolumeRange(float vol)
-    {
-        if(vol < 0.0 || vol > 1.0)
-        {
-            COUT(2) << "Sound warning: volume out of range, cropping value." << std::endl;
-            vol = vol > 1 ? 1 : vol;
-            vol = vol < 0 ? 0 : vol;
-        }
-        
-        return vol;
-    }
-    
-    void SoundManager::updateVolume(SoundType::Value type)
-    {
-        switch(type)
-        {
-            case SoundType::none:
-                for (ObjectList<BaseSound>::iterator it = ObjectList<BaseSound>::begin(); it != ObjectList<BaseSound>::end(); ++it)
-                {
-                    (*it)->updateVolume();
-                }
-                break;
-            case SoundType::ambient:
-                for (ObjectList<AmbientSound>::iterator it = ObjectList<AmbientSound>::begin(); it != ObjectList<AmbientSound>::end(); ++it)
-                {
-                    (*it)->updateVolume();
-                }
-                break;
-            case SoundType::effects:
-                for (ObjectList<WorldSound>::iterator it = ObjectList<WorldSound>::begin(); it != ObjectList<WorldSound>::end(); ++it)
-                {
-                    (*it)->updateVolume();
-                }
-                break;
-            default:
-                COUT(2) << "Invalid SoundType in SoundManager::updateVolume() - Not updating!" << std::endl;
-        }
-    }
-    
-    void SoundManager::setVolumeInternal(float vol, SoundType::Value type)
-    {
-        switch(type)
-        {
-            case SoundType::none:
-                this->soundVolume_ = vol;
-                break;
-            case SoundType::ambient:
-                this->ambientVolume_ = vol;
-                break;
-            case SoundType::effects:
-                this->effectsVolume_ = vol;
-                break;
-            default:
-                COUT(2) << "Invalid SoundType in SoundManager::setVolumeInternal() - Not setting any volume!" << std::endl;
-        }
-    }
-    
-    float SoundManager::getVolumeInternal(SoundType::Value type)
-    {
-        switch(type)
-        {
-            case SoundType::none:
-                return this->soundVolume_;
-            case SoundType::ambient:
-                return this->ambientVolume_;
-            case SoundType::effects:
-                return this->effectsVolume_;
-            default:
-                COUT(2) << "Invalid SoundType in SoundManager::setVolumeInternal() - Returning 0.0!" << std::endl;
-                return 0.0;
-        }
-    }
-    
-    float SoundManager::getVolume(SoundType::Value type) 
-    {
-        if(this->mute_[SoundType::none] || this->mute_[type])
-            return 0.0;
-        
-        if(type == SoundType::none)
-            return this->getVolumeInternal(type);
-        
-        return this->getVolumeInternal(SoundType::none)*this->getVolumeInternal(type);
-    }
-    
-    void SoundManager::toggleMute(SoundType::Value type)
-    {
-        bool mute = !this->mute_[type];
-        this->mute_[type] = mute;
-        
-        this->updateVolume(type);
-    }
-    
-    bool SoundManager::getMute(SoundType::Value type)
-    {
-        return this->mute_[type];
-    }
-    
 
     void SoundManager::fadeIn(const SmartPtr<AmbientSound>& sound)
Index: /code/branches/presentation2/src/orxonox/sound/SoundManager.h
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/SoundManager.h	(revision 6369)
+++ /code/branches/presentation2/src/orxonox/sound/SoundManager.h	(revision 6370)
@@ -50,5 +50,5 @@
     // forward declaration
     class SoundBuffer;
-    
+
     //! Enum for the sound type.
     namespace SoundType
@@ -56,15 +56,11 @@
         enum Value
         {
-            none,
-            ambient,
-            effects
+            All     = 0,
+            Music   = 1,
+            Effects = 2
         };
     }
-    
-    /**
-     * The SoundManager class manages the OpenAL device, context and listener
-     * position. It is a singleton.
-     *
-     */
+
+    //! The SoundManager class manages the OpenAL device, context and listener position.
     class _OrxonoxExport SoundManager
     // tolua_end
@@ -94,9 +90,12 @@
         void pauseAmbientSound(AmbientSound* ambient);
 
+        // tolua_begin
         void setVolume(float vol, SoundType::Value type);
-        float getVolume(SoundType::Value type); // tolua_export
+        float getVolume(SoundType::Value type);
+        float getRealVolume(SoundType::Value type);
 
-        void toggleMute(SoundType::Value type); // tolua_export
-        bool getMute(SoundType::Value type); // tolua_export
+        void toggleMute(SoundType::Value type);
+        bool getMute(SoundType::Value type);
+        // tolua_end
 
         shared_ptr<SoundBuffer> getSoundBuffer(const std::string& filename);
@@ -114,32 +113,29 @@
 
         void checkFadeStepValidity();
-        bool checkVolumeValidity(SoundType::Value type);
-        void checkSoundVolumeValidity(void);
-        void checkAmbientVolumeValidity(void);
-        void checkEffectsVolumeValidity(void);
 
-        float checkVolumeRange(float vol);
-
+        void checkVolumeValidity(SoundType::Value type);
+        void checkSoundVolumeValidity()   { this->checkVolumeValidity(SoundType::All); }
+        void checkAmbientVolumeValidity() { this->checkVolumeValidity(SoundType::Music); }
+        void checkEffectsVolumeValidity() { this->checkVolumeValidity(SoundType::Effects); }
         void updateVolume(SoundType::Value type);
 
-        void setVolumeInternal(float vol, SoundType::Value type);
-        float getVolumeInternal(SoundType::Value type);
-
+        // OpenAL device/context related
         std::vector<std::string> deviceNames_;
         ALCdevice* device_;
         ALCcontext* context_;
 
+        // Ambient sound related
         typedef std::list<std::pair<AmbientSound*, bool> > AmbientList;
-        AmbientList ambientSounds_;
-
-        float crossFadeStep_;       //!< Absolute change per second (0.1 means 10% of the nominal volume) for cross fading
+        AmbientList                        ambientSounds_;
+        //! Absolute change per second (0.1 means 10% of the nominal volume) for cross fading
+        float                              crossFadeStep_;
         std::list<SmartPtr<AmbientSound> > fadeInList_;
         std::list<SmartPtr<AmbientSound> > fadeOutList_;
 
-        float soundVolume_;
-        float ambientVolume_;
-        float effectsVolume_;
-        std::map<SoundType::Value, bool> mute_;
+        // Volume related
+        float volume_[3];
+        float mute_[3];
 
+        // Sound buffer related
         static const unsigned int maxEffectsPoolSize_s = 40 * 1024 * 1024;
         unsigned int effectsPoolSize_;
@@ -149,4 +145,5 @@
         SoundBufferMap soundBuffers_;
 
+        // Sound source related
         unsigned int maxSources_;
         std::vector<ALuint> soundSources_;
Index: /code/branches/presentation2/src/orxonox/sound/WorldSound.cc
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/WorldSound.cc	(revision 6369)
+++ /code/branches/presentation2/src/orxonox/sound/WorldSound.cc	(revision 6370)
@@ -57,9 +57,9 @@
     void WorldSound::registerVariables()
     {
-        registerVariable(volume_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::volumeChanged));
-        registerVariable(source_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::sourceChanged));
-        registerVariable(bLooping_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::loopingChanged));
-        registerVariable((int&)(BaseSound::state_), ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::stateChanged));
-        registerVariable(pitch_, ObjectDirection::ToClient, new NetworkCallback<BaseSound>(static_cast<BaseSound*>(this), &BaseSound::pitchChanged));
+        registerVariable(volume_, ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::volumeChanged));
+        registerVariable(source_, ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::sourceChanged));
+        registerVariable(bLooping_, ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::loopingChanged));
+        registerVariable((int&)(BaseSound::state_), ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::stateChanged));
+        registerVariable(pitch_, ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::pitchChanged));
     }
 
@@ -115,7 +115,7 @@
     }
 
-    float WorldSound::getVolumeGain()
+    float WorldSound::getRealVolume()
     {
-        return SoundManager::getInstance().getVolume(SoundType::effects);
+        return SoundManager::getInstance().getRealVolume(SoundType::Effects);
     }
 }
Index: /code/branches/presentation2/src/orxonox/sound/WorldSound.h
===================================================================
--- /code/branches/presentation2/src/orxonox/sound/WorldSound.h	(revision 6369)
+++ /code/branches/presentation2/src/orxonox/sound/WorldSound.h	(revision 6370)
@@ -46,17 +46,16 @@
     public:
         WorldSound(BaseObject* creator);
-        virtual ~WorldSound();
+        ~WorldSound();
 
-        virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-        virtual void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
-        virtual void changedActivity();
-        
-        virtual float getVolumeGain();
+        void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+        void XMLEventPort(Element& xmlelement, XMLPort::Mode mode);
+        void changedActivity();
 
-        virtual void tick(float dt);
+        void tick(float dt);
 
     private:
         void registerVariables();
         void initialiseSource();
+        float getRealVolume();
     };
 }
