From 725aecafd23065a6d4ac720dc9ee807ce85d5a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaakko=20Ker=C3=A4nen?= Date: Fri, 4 Apr 2014 14:16:14 +0300 Subject: [PATCH] libgui|Sound: Added more 3D audio properties --- doomsday/libgui/include/de/audio/sound.h | 4 ++++ doomsday/libgui/src/audio/sound.cpp | 28 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/doomsday/libgui/include/de/audio/sound.h b/doomsday/libgui/include/de/audio/sound.h index 5569bf037f..e3b9ee1ce0 100644 --- a/doomsday/libgui/include/de/audio/sound.h +++ b/doomsday/libgui/include/de/audio/sound.h @@ -85,6 +85,8 @@ class Sound virtual Sound &setFrequency(dfloat factor); virtual Sound &setPosition(de::Vector3f const &position, Positioning positioning = Absolute); virtual Sound &setVelocity(de::Vector3f const &velocity); + virtual Sound &setMinDistance(dfloat minDistance); + virtual Sound &setSpatialSpread(dfloat degrees); // Methods for querying the sound status: @@ -98,6 +100,8 @@ class Sound virtual Positioning positioning() const; virtual de::Vector3f position() const; virtual de::Vector3f velocity() const; + virtual dfloat minDistance() const; + virtual dfloat spatialSpread() const; DENG2_AS_IS_METHODS() diff --git a/doomsday/libgui/src/audio/sound.cpp b/doomsday/libgui/src/audio/sound.cpp index 0c9e914d12..cad6807654 100644 --- a/doomsday/libgui/src/audio/sound.cpp +++ b/doomsday/libgui/src/audio/sound.cpp @@ -28,12 +28,16 @@ DENG2_PIMPL_NOREF(Sound) Vector3f position; Vector3f velocity; Positioning positioning; + dfloat minDistance; + dfloat spread; Instance() : volume(1.f) , pan(0.f) , frequency(1.f) , positioning(Stereo) + , minDistance(1.f) + , spread(0) {} DENG2_PIMPL_AUDIENCE(Stop) @@ -82,6 +86,20 @@ Sound &Sound::setVelocity(Vector3f const &velocity) return *this; } +Sound &Sound::setMinDistance(dfloat minDistance) +{ + d->minDistance = minDistance; + update(); + return *this; +} + +Sound &Sound::setSpatialSpread(dfloat degrees) +{ + d->spread = degrees; + update(); + return *this; +} + bool Sound::isPlaying() const { return mode() != NotPlaying; @@ -117,4 +135,14 @@ Vector3f Sound::velocity() const return d->velocity; } +dfloat Sound::minDistance() const +{ + return d->minDistance; +} + +dfloat Sound::spatialSpread() const +{ + return d->spread; +} + } // namespace de