1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-26 18:21:04 +00:00

Sound API: Add fading sounds

This commit is contained in:
Brandon 2016-07-10 00:08:26 -05:00 committed by paramat
parent f1d7a26b7c
commit bd921a7916
14 changed files with 248 additions and 19 deletions

View file

@ -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