audio_object.h
1 /*
2 ** ClanLib SDK
3 ** Copyright (c) 1997-2015 The ClanLib Team
4 **
5 ** This software is provided 'as-is', without any express or implied
6 ** warranty. In no event will the authors be held liable for any damages
7 ** 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
11 ** freely, subject to the following restrictions:
12 **
13 ** 1. The origin of this software must not be misrepresented; you must not
14 ** claim that you wrote the original software. If you use this software
15 ** in a product, an acknowledgment in the product documentation would be
16 ** appreciated but is not required.
17 ** 2. Altered source versions must be plainly marked as such, and must not be
18 ** misrepresented as being the original software.
19 ** 3. This notice may not be removed or altered from any source distribution.
20 **
21 ** Note: Some of the libraries ClanLib may link to may have additional
22 ** requirements or restrictions.
23 **
24 ** File Author(s):
25 **
26 ** Magnus Norddahl
27 */
28
29 #pragma once
30
31 #include <string>
32 #include "audio_definition.h"
33 #include "../../Core/Math/vec3.h"
34
35 namespace clan
36 {
37
38 class SoundBuffer;
39 class AudioWorld;
40 class AudioObject_Impl;
41
42 class AudioObject
43 {
44 public:
45 AudioObject();
46 AudioObject(AudioWorld &world);
47 AudioObject(AudioWorld &world, AudioDefinition definition);
48
49 bool is_null() const { return !impl; }
50
51 Vec3f get_position() const;
52
53 float get_attenuation_begin() const;
54 float get_attenuation_end() const;
55 float get_volume() const;
56 bool is_looping() const;
57 bool is_ambience() const;
58 bool is_playing() const;
59
60 void set_position(const Vec3f &position);
61
62 void set_attenuation_begin(float distance);
63 void set_attenuation_end(float distance);
64 void set_volume(float volume);
65
66 void set_sound(const std::string &id);
67 void set_sound(const SoundBuffer &buffer);
68
69 void set_looping(bool loop);
70 void set_ambience(bool ambience);
71
72 void play();
73 void stop();
74
75 private:
76 std::shared_ptr<AudioObject_Impl> impl;
77
78 friend class AudioWorld;
79 friend class AudioWorld_Impl;
80 };
81
82 }
clan::AudioObject::is_playing
bool is_playing() const
clan
Definition: clanapp.h:35
clan::AudioObject::stop
void stop()
clan::AudioWorld
Definition: audio_world.h:42
clan::AudioObject
Definition: audio_object.h:42
clan::AudioObject::set_looping
void set_looping(bool loop)
clan::AudioObject::play
void play()
clan::AudioObject::AudioObject
AudioObject()
clan::AudioObject::set_sound
void set_sound(const std::string &id)
clan::AudioDefinition
Definition: audio_definition.h:38
clan::AudioObject::set_ambience
void set_ambience(bool ambience)
clan::AudioObject::is_ambience
bool is_ambience() const
clan::AudioObject::get_position
Vec3f get_position() const
clan::AudioObject::get_attenuation_begin
float get_attenuation_begin() const
clan::SoundBuffer
Sample interface in ClanLib.
Definition: soundbuffer.h:56
clan::StyleTokenType::string
@ keyword
clan::AudioObject::set_position
void set_position(const Vec3f &position)
clan::AudioObject::set_attenuation_begin
void set_attenuation_begin(float distance)
clan::AudioObject::AudioWorld_Impl
friend class AudioWorld_Impl
Definition: audio_object.h:79
clan::AudioObject::set_attenuation_end
void set_attenuation_end(float distance)
clan::AudioObject::get_volume
float get_volume() const
clan::Vec3< float >
clan::AudioObject::is_null
bool is_null() const
Definition: audio_object.h:49
clan::AudioObject::get_attenuation_end
float get_attenuation_end() const
clan::AudioObject::is_looping
bool is_looping() const
clan::AudioObject::set_volume
void set_volume(float volume)