1 // SuperTux 2 // Copyright (C) 2006 Matthias Braun <matze@braunis.de> 3 // 4 // This program is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17 #ifndef HEADER_SUPERTUX_AUDIO_SOUND_SOURCE_HPP 18 #define HEADER_SUPERTUX_AUDIO_SOUND_SOURCE_HPP 19 20 #include "math/fwd.hpp" 21 22 /** A sound source represents the source of audio output. You can 23 place sources at certain points in your world or set their 24 velocity to produce doppler effects */ 25 class SoundSource 26 { 27 public: SoundSource()28 SoundSource() {} ~SoundSource()29 virtual ~SoundSource() {} 30 31 virtual void play() = 0; 32 virtual void stop() = 0; 33 virtual bool playing() const = 0; 34 35 virtual void set_looping(bool looping) = 0; 36 virtual void set_relative(bool relative) = 0; 37 /// Set volume (0.0 is silent, 1.0 is normal) 38 virtual void set_gain(float gain) = 0; 39 virtual void set_pitch(float pitch) = 0; 40 virtual void set_position(const Vector& position) = 0; 41 virtual void set_velocity(const Vector& velocity) = 0; 42 virtual void set_reference_distance(float distance) = 0; 43 44 private: 45 SoundSource(const SoundSource&) = delete; 46 SoundSource& operator=(const SoundSource&) = delete; 47 }; 48 49 #endif 50 51 /* EOF */ 52