SoundSource.hpp
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2018 Laurent Gomila (laurent@sfml-dev.org)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef SFML_SOUNDSOURCE_HPP
26 #define SFML_SOUNDSOURCE_HPP
27 
29 // Headers
31 #include <SFML/Audio/Export.hpp>
32 #include <SFML/Audio/AlResource.hpp>
33 #include <SFML/System/Vector3.hpp>
34 
35 
36 namespace sf
37 {
42 class SFML_AUDIO_API SoundSource : AlResource
43 {
44 public:
45 
50  enum Status
51  {
54  Playing
55  };
56 
63  SoundSource(const SoundSource& copy);
64 
69  virtual ~SoundSource();
70 
85  void setPitch(float pitch);
86 
98  void setVolume(float volume);
99 
114  void setPosition(float x, float y, float z);
115 
128  void setPosition(const Vector3f& position);
129 
144  void setRelativeToListener(bool relative);
145 
161  void setMinDistance(float distance);
162 
180  void setAttenuation(float attenuation);
181 
190  float getPitch() const;
191 
200  float getVolume() const;
201 
211 
221  bool isRelativeToListener() const;
222 
231  float getMinDistance() const;
232 
241  float getAttenuation() const;
242 
251  SoundSource& operator =(const SoundSource& right);
252 
263  virtual void play() = 0;
264 
274  virtual void pause() = 0;
275 
286  virtual void stop() = 0;
287 
294  virtual Status getStatus() const;
295 
296 protected:
297 
305 
307  // Member data
309  unsigned int m_source;
310 };
311 
312 } // namespace sf
313 
314 
315 #endif // SFML_SOUNDSOURCE_HPP
316 
317 
Base class for classes that require an OpenAL context.
Definition: AlResource.hpp:41
Base class defining a sound's properties.
Definition: SoundSource.hpp:43
unsigned int m_source
OpenAL source identifier.
float getVolume() const
Get the volume of the sound.
void setPosition(float x, float y, float z)
Set the 3D position of the sound in the audio scene.
virtual void stop()=0
Stop playing the sound source.
void setPosition(const Vector3f &position)
Set the 3D position of the sound in the audio scene.
virtual void pause()=0
Pause the sound source.
void setVolume(float volume)
Set the volume of the sound.
float getPitch() const
Get the pitch of the sound.
float getMinDistance() const
Get the minimum distance of the sound.
virtual void play()=0
Start or resume playing the sound source.
void setPitch(float pitch)
Set the pitch of the sound.
void setMinDistance(float distance)
Set the minimum distance of the sound.
virtual ~SoundSource()
Destructor.
float getAttenuation() const
Get the attenuation factor of the sound.
Vector3f getPosition() const
Get the 3D position of the sound in the audio scene.
void setAttenuation(float attenuation)
Set the attenuation factor of the sound.
virtual Status getStatus() const
Get the current status of the sound (stopped, paused, playing)
Status
Enumeration of the sound source states.
Definition: SoundSource.hpp:51
@ Paused
Sound is paused.
Definition: SoundSource.hpp:53
@ Stopped
Sound is not playing.
Definition: SoundSource.hpp:52
void setRelativeToListener(bool relative)
Make the sound's position relative to the listener or absolute.
bool isRelativeToListener() const
Tell whether the sound's position is relative to the listener or is absolute.
SoundSource(const SoundSource &copy)
Copy constructor.
SoundSource()
Default constructor.
Utility template class for manipulating 3-dimensional vectors.
Definition: Vector3.hpp:38