X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fsound.h;h=0ad34e5cdfb68e9f477c7305ce1f0baf0f92272f;hb=644d0ab2bb44df8a3aefb387736930150b7d0aed;hp=7bdb6a26bb4afd57cc6250594311907e6566e284;hpb=bd921a7916f0fafc493b1c4d0eeb5e2bb1d6a7c2;p=oweals%2Fminetest.git diff --git a/src/sound.h b/src/sound.h index 7bdb6a26b..0ad34e5cd 100644 --- a/src/sound.h +++ b/src/sound.h @@ -17,8 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef SOUND_HEADER -#define SOUND_HEADER +#pragma once #include #include @@ -34,22 +33,26 @@ public: struct SimpleSoundSpec { - SimpleSoundSpec(const std::string &name = "", float gain = 1.0, float fade = 0.0) - : name(name), gain(gain), fade(fade) + SimpleSoundSpec(const std::string &name = "", float gain = 1.0f, + float fade = 0.0f, float pitch = 1.0f) : + name(name), + gain(gain), fade(fade), pitch(pitch) { } - bool exists() const { return name != ""; } + bool exists() const { return !name.empty(); } - std::string name; - float gain; - float fade; + std::string name = ""; + float gain = 1.0f; + float fade = 0.0f; + float pitch = 1.0f; }; class ISoundManager { public: - virtual ~ISoundManager() {} + virtual ~ISoundManager() = default; + // Multiple sounds can be loaded per name; when played, the sound // should be chosen randomly from alternatives // Return value determines success/failure @@ -64,9 +67,9 @@ 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, - float fade = 0) = 0; - virtual int playSoundAt(const std::string &name, bool loop, float volume, - v3f pos) = 0; + float fade = 0.0f, float pitch = 1.0f) = 0; + virtual int playSoundAt(const std::string &name, bool loop, float volume, v3f pos, + float pitch = 1.0f) = 0; virtual void stopSound(int sound) = 0; virtual bool soundExists(int sound) = 0; virtual void updateSoundPosition(int sound, v3f pos) = 0; @@ -77,11 +80,11 @@ public: int playSound(const SimpleSoundSpec &spec, bool loop) { - return playSound(spec.name, loop, spec.gain, spec.fade); + return playSound(spec.name, loop, spec.gain, spec.fade, spec.pitch); } - int playSoundAt(const SimpleSoundSpec &spec, bool loop, v3f pos) + int playSoundAt(const SimpleSoundSpec &spec, bool loop, const v3f &pos) { - return playSoundAt(spec.name, loop, spec.gain, pos); + return playSoundAt(spec.name, loop, spec.gain, pos, spec.pitch); } }; @@ -98,11 +101,13 @@ 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, float fade) + int playSound(const std::string &name, bool loop, float volume, float fade, + float pitch) { return 0; } - int playSoundAt(const std::string &name, bool loop, float volume, v3f pos) + int playSoundAt(const std::string &name, bool loop, float volume, v3f pos, + float pitch) { return 0; } @@ -111,11 +116,9 @@ public: 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) { } + void step(float dtime) {} + void fadeSound(int sound, float step, float gain) {} }; // Global DummySoundManager singleton extern DummySoundManager dummySoundManager; - -#endif