summaryrefslogtreecommitdiff
path: root/src/sound.h
diff options
context:
space:
mode:
authorBrandon <brandon@bremaweb.com>2016-07-10 00:08:26 -0500
committerparamat <mat.gregory@virginmedia.com>2017-05-03 03:12:45 +0100
commitbd921a7916f0fafc493b1c4d0eeb5e2bb1d6a7c2 (patch)
tree55f92cc02fce2acc9bb041a34de3c474b894bd00 /src/sound.h
parentf1d7a26b7c341b468f34325cec5c3d495f175a8f (diff)
downloadminetest-bd921a7916f0fafc493b1c4d0eeb5e2bb1d6a7c2.tar.gz
minetest-bd921a7916f0fafc493b1c4d0eeb5e2bb1d6a7c2.tar.bz2
minetest-bd921a7916f0fafc493b1c4d0eeb5e2bb1d6a7c2.zip
Sound API: Add fading sounds
Diffstat (limited to 'src/sound.h')
-rw-r--r--src/sound.h28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/sound.h b/src/sound.h
index 98f7692d5..7bdb6a26b 100644
--- a/src/sound.h
+++ b/src/sound.h
@@ -34,8 +34,8 @@ public:
struct SimpleSoundSpec
{
- SimpleSoundSpec(const std::string &name = "", float gain = 1.0)
- : name(name), gain(gain)
+ SimpleSoundSpec(const std::string &name = "", float gain = 1.0, float fade = 0.0)
+ : name(name), gain(gain), fade(fade)
{
}
@@ -43,13 +43,13 @@ struct SimpleSoundSpec
std::string name;
float gain;
+ float fade;
};
class ISoundManager
{
public:
virtual ~ISoundManager() {}
-
// Multiple sounds can be loaded per name; when played, the sound
// should be chosen randomly from alternatives
// Return value determines success/failure
@@ -63,16 +63,21 @@ public:
// playSound functions return -1 on failure, otherwise a handle to the
// sound. If name=="", call should be ignored without error.
- virtual int playSound(const std::string &name, bool loop, float volume) = 0;
- virtual int playSoundAt(
- const std::string &name, bool loop, float volume, v3f pos) = 0;
+ virtual int playSound(const std::string &name, bool loop, float volume,
+ float fade = 0) = 0;
+ virtual int playSoundAt(const std::string &name, bool loop, float volume,
+ v3f pos) = 0;
virtual void stopSound(int sound) = 0;
virtual bool soundExists(int sound) = 0;
virtual void updateSoundPosition(int sound, v3f pos) = 0;
+ virtual bool updateSoundGain(int id, float gain) = 0;
+ virtual float getSoundGain(int id) = 0;
+ virtual void step(float dtime) = 0;
+ virtual void fadeSound(int sound, float step, float gain) = 0;
int playSound(const SimpleSoundSpec &spec, bool loop)
{
- return playSound(spec.name, loop, spec.gain);
+ return playSound(spec.name, loop, spec.gain, spec.fade);
}
int playSoundAt(const SimpleSoundSpec &spec, bool loop, v3f pos)
{
@@ -93,7 +98,10 @@ public:
}
void updateListener(v3f pos, v3f vel, v3f at, v3f up) {}
void setListenerGain(float gain) {}
- int playSound(const std::string &name, bool loop, float volume) { return 0; }
+ int playSound(const std::string &name, bool loop, float volume, float fade)
+ {
+ return 0;
+ }
int playSoundAt(const std::string &name, bool loop, float volume, v3f pos)
{
return 0;
@@ -101,6 +109,10 @@ public:
void stopSound(int sound) {}
bool soundExists(int sound) { return false; }
void updateSoundPosition(int sound, v3f pos) {}
+ bool updateSoundGain(int id, float gain) { return false; }
+ float getSoundGain(int id) { return 0; }
+ void step(float dtime) { }
+ void fadeSound(int sound, float step, float gain) { }
};
// Global DummySoundManager singleton