summaryrefslogtreecommitdiff
path: root/doc/html/Sound_8cpp-source.htm
blob: c17fd364c10e1528b97dda721f742f5006c96dfe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>SFML - Simple and Fast Multimedia Library</title>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
        <link href="doxygen.css" rel="stylesheet" type="text/css" />
        <link href="tabs.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        <div id="logo">
            <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" />
        </div>
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.htm"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.htm"><span>Namespaces</span></a></li>
      <li><a href="annotated.htm"><span>Classes</span></a></li>
      <li class="current"><a href="files.htm"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.htm"><span>File&nbsp;List</span></a></li>
    </ul>
  </div>
<h1>Sound.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 
<a name="l00002"></a>00002 <span class="comment">//</span>
<a name="l00003"></a>00003 <span class="comment">// SFML - Simple and Fast Multimedia Library</span>
<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)</span>
<a name="l00005"></a>00005 <span class="comment">//</span>
<a name="l00006"></a>00006 <span class="comment">// This software is provided 'as-is', without any express or implied warranty.</span>
<a name="l00007"></a>00007 <span class="comment">// In no event will the authors be held liable for any damages arising from the use of this software.</span>
<a name="l00008"></a>00008 <span class="comment">//</span>
<a name="l00009"></a>00009 <span class="comment">// Permission is granted to anyone to use this software for any purpose,</span>
<a name="l00010"></a>00010 <span class="comment">// including commercial applications, and to alter it and redistribute it freely,</span>
<a name="l00011"></a>00011 <span class="comment">// subject to the following restrictions:</span>
<a name="l00012"></a>00012 <span class="comment">//</span>
<a name="l00013"></a>00013 <span class="comment">// 1. The origin of this software must not be misrepresented;</span>
<a name="l00014"></a>00014 <span class="comment">//    you must not claim that you wrote the original software.</span>
<a name="l00015"></a>00015 <span class="comment">//    If you use this software in a product, an acknowledgment</span>
<a name="l00016"></a>00016 <span class="comment">//    in the product documentation would be appreciated but is not required.</span>
<a name="l00017"></a>00017 <span class="comment">//</span>
<a name="l00018"></a>00018 <span class="comment">// 2. Altered source versions must be plainly marked as such,</span>
<a name="l00019"></a>00019 <span class="comment">//    and must not be misrepresented as being the original software.</span>
<a name="l00020"></a>00020 <span class="comment">//</span>
<a name="l00021"></a>00021 <span class="comment">// 3. This notice may not be removed or altered from any source distribution.</span>
<a name="l00022"></a>00022 <span class="comment">//</span>
<a name="l00024"></a>00024 <span class="comment"></span>
<a name="l00026"></a>00026 <span class="comment">// Headers</span>
<a name="l00028"></a>00028 <span class="comment"></span><span class="preprocessor">#include &lt;SFML/Audio/Sound.hpp&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;SFML/Audio/SoundBuffer.hpp&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;SFML/Audio/OpenAL.hpp&gt;</span>
<a name="l00031"></a>00031 
<a name="l00032"></a>00032 
<a name="l00033"></a>00033 <span class="keyword">namespace </span>sf
<a name="l00034"></a>00034 {
<a name="l00038"></a><a class="code" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282">00038</a> <a class="code" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282" title="Default constructor.">Sound::Sound</a>()
<a name="l00039"></a>00039 {
<a name="l00040"></a>00040     ALCheck(alGenSources(1, &amp;mySource));
<a name="l00041"></a>00041     ALCheck(alSourcei(mySource, AL_BUFFER, 0));
<a name="l00042"></a>00042 }
<a name="l00043"></a>00043 
<a name="l00044"></a>00044 
<a name="l00048"></a><a class="code" href="classsf_1_1Sound.htm#45aff03dc5bf87647eba6bed7c1ced29">00048</a> <a class="code" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282" title="Default constructor.">Sound::Sound</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; Buffer, <span class="keywordtype">bool</span> Loop, <span class="keywordtype">float</span> Pitch, <span class="keywordtype">float</span> Volume, <span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>&amp; Position) :
<a name="l00049"></a>00049 myBuffer(&amp;Buffer)
<a name="l00050"></a>00050 {
<a name="l00051"></a>00051     ALCheck(alGenSources(1, &amp;mySource));
<a name="l00052"></a>00052 
<a name="l00053"></a>00053     ALCheck(alSourcei (mySource, AL_BUFFER,   Buffer.<a class="code" href="classsf_1_1SoundBuffer.htm#b9d31c90ee4febbd075b9c64c3072a65" title="OpenAL buffer identifier.">myBuffer</a>));
<a name="l00054"></a>00054     ALCheck(alSourcei (mySource, AL_LOOPING,  Loop));
<a name="l00055"></a>00055     ALCheck(alSourcef (mySource, AL_PITCH,    Pitch));
<a name="l00056"></a>00056     ALCheck(alSourcef (mySource, AL_GAIN,     Volume * 0.01f));
<a name="l00057"></a>00057     ALCheck(alSource3f(mySource, AL_POSITION, Position.<a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16" title="X coordinate of the vector.">x</a>, Position.<a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794" title="Y coordinate of the vector.">y</a>, Position.<a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1" title="Z coordinate of the vector.">z</a>));
<a name="l00058"></a>00058 }
<a name="l00059"></a>00059 
<a name="l00060"></a>00060 
<a name="l00064"></a><a class="code" href="classsf_1_1Sound.htm#a930dcf53775f501ce43d44bf54c0ce4">00064</a> <a class="code" href="classsf_1_1Sound.htm#36ab74beaaa953d9879c933ddd246282" title="Default constructor.">Sound::Sound</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>&amp; Copy) :
<a name="l00065"></a>00065 <a class="code" href="classsf_1_1AudioResource.htm" title="Abstract base class for every class that owns a device-dependant resource -- allow...">AudioResource</a>(Copy),
<a name="l00066"></a>00066 myBuffer     (Copy.myBuffer)
<a name="l00067"></a>00067 {
<a name="l00068"></a>00068     ALCheck(alGenSources(1, &amp;mySource));
<a name="l00069"></a>00069 
<a name="l00070"></a>00070     ALCheck(alSourcei (mySource, AL_BUFFER,   myBuffer ? myBuffer-&gt;myBuffer : 0));
<a name="l00071"></a>00071     ALCheck(alSourcei (mySource, AL_LOOPING,  Copy.<a class="code" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e" title="Tell whether or not the sound is looping.">GetLoop</a>()));
<a name="l00072"></a>00072     ALCheck(alSourcef (mySource, AL_PITCH,    Copy.<a class="code" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef" title="Get the pitch.">GetPitch</a>()));
<a name="l00073"></a>00073     ALCheck(alSourcef (mySource, AL_GAIN,     Copy.<a class="code" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782" title="Get the volume.">GetVolume</a>() * 0.01f));
<a name="l00074"></a>00074     ALCheck(alSource3f(mySource, AL_POSITION, Copy.<a class="code" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643" title="Get the sound position.">GetPosition</a>().<a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16" title="X coordinate of the vector.">x</a>, Copy.<a class="code" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643" title="Get the sound position.">GetPosition</a>().<a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794" title="Y coordinate of the vector.">y</a>, Copy.<a class="code" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643" title="Get the sound position.">GetPosition</a>().<a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1" title="Z coordinate of the vector.">z</a>));
<a name="l00075"></a>00075 }
<a name="l00076"></a>00076 
<a name="l00077"></a>00077 
<a name="l00081"></a><a class="code" href="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076">00081</a> <a class="code" href="classsf_1_1Sound.htm#d0792c35310eba2dffd8489c80fad076" title="Destructor.">Sound::~Sound</a>()
<a name="l00082"></a>00082 {
<a name="l00083"></a>00083     <span class="keywordflow">if</span> (mySource)
<a name="l00084"></a>00084     {
<a name="l00085"></a>00085         <span class="keywordflow">if</span> (myBuffer)
<a name="l00086"></a>00086         {
<a name="l00087"></a>00087             <a class="code" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630" title="Stop the sound.">Stop</a>();
<a name="l00088"></a>00088             ALCheck(alSourcei(mySource, AL_BUFFER, 0));
<a name="l00089"></a>00089         }
<a name="l00090"></a>00090         ALCheck(alDeleteSources(1, &amp;mySource));
<a name="l00091"></a>00091     }
<a name="l00092"></a>00092 }
<a name="l00093"></a>00093 
<a name="l00094"></a>00094 
<a name="l00098"></a><a class="code" href="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db">00098</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#fdafa7970587f04d3833b4095c2de1db" title="Play the sound.">Sound::Play</a>()
<a name="l00099"></a>00099 {
<a name="l00100"></a>00100     ALCheck(alSourcePlay(mySource));
<a name="l00101"></a>00101 }
<a name="l00102"></a>00102 
<a name="l00103"></a>00103 
<a name="l00107"></a><a class="code" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3">00107</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#6a712910ac1340f32e3ec3a04295ebd3" title="Pause the sound.">Sound::Pause</a>()
<a name="l00108"></a>00108 {
<a name="l00109"></a>00109     ALCheck(alSourcePause(mySource));
<a name="l00110"></a>00110 }
<a name="l00111"></a>00111 
<a name="l00112"></a>00112 
<a name="l00116"></a><a class="code" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630">00116</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#b1f5f103f737c52ceb0b1a067b4d0630" title="Stop the sound.">Sound::Stop</a>()
<a name="l00117"></a>00117 {
<a name="l00118"></a>00118     ALCheck(alSourceStop(mySource));
<a name="l00119"></a>00119 }
<a name="l00120"></a>00120 
<a name="l00121"></a>00121 
<a name="l00125"></a><a class="code" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55">00125</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#9dbc27c54f0ee633c831a0b6e24ecc55" title="Set the source buffer.">Sound::SetBuffer</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>&amp; Buffer)
<a name="l00126"></a>00126 {
<a name="l00127"></a>00127     myBuffer = &amp;Buffer;
<a name="l00128"></a>00128     ALCheck(alSourcei(mySource, AL_BUFFER, myBuffer ? myBuffer-&gt;myBuffer : 0));
<a name="l00129"></a>00129 }
<a name="l00130"></a>00130 
<a name="l00131"></a>00131 
<a name="l00135"></a><a class="code" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4">00135</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#4eb9966b7289c69623a39cc0125012f4" title="Set the sound loop state.">Sound::SetLoop</a>(<span class="keywordtype">bool</span> Loop)
<a name="l00136"></a>00136 {
<a name="l00137"></a>00137     ALCheck(alSourcei(mySource, AL_LOOPING, Loop));
<a name="l00138"></a>00138 }
<a name="l00139"></a>00139 
<a name="l00140"></a>00140 
<a name="l00144"></a><a class="code" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0">00144</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#f93301feb88770789ba7cd993c9dd3a0" title="Set the sound pitch.">Sound::SetPitch</a>(<span class="keywordtype">float</span> Pitch)
<a name="l00145"></a>00145 {
<a name="l00146"></a>00146     ALCheck(alSourcef(mySource, AL_PITCH, Pitch));
<a name="l00147"></a>00147 }
<a name="l00148"></a>00148 
<a name="l00149"></a>00149 
<a name="l00153"></a><a class="code" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a">00153</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#1536095045923a2332dd9eed6bf8e96a" title="Set the sound volume.">Sound::SetVolume</a>(<span class="keywordtype">float</span> Volume)
<a name="l00154"></a>00154 {
<a name="l00155"></a>00155     ALCheck(alSourcef(mySource, AL_GAIN, Volume * 0.01f));
<a name="l00156"></a>00156 }
<a name="l00157"></a>00157 
<a name="l00162"></a><a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78">00162</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78" title="Set the sound position (take 3 values).">Sound::SetPosition</a>(<span class="keywordtype">float</span> X, <span class="keywordtype">float</span> Y, <span class="keywordtype">float</span> Z)
<a name="l00163"></a>00163 {
<a name="l00164"></a>00164     ALCheck(alSource3f(mySource, AL_POSITION, X, Y, Z));
<a name="l00165"></a>00165 }
<a name="l00166"></a>00166 
<a name="l00167"></a>00167 
<a name="l00172"></a><a class="code" href="classsf_1_1Sound.htm#0d8c6f11281a574b781c53d62a4af776">00172</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78" title="Set the sound position (take 3 values).">Sound::SetPosition</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a>&amp; Position)
<a name="l00173"></a>00173 {
<a name="l00174"></a>00174     <a class="code" href="classsf_1_1Sound.htm#b445e8738218525d8dd067628bc70c78" title="Set the sound position (take 3 values).">SetPosition</a>(Position.<a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16" title="X coordinate of the vector.">x</a>, Position.<a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794" title="Y coordinate of the vector.">y</a>, Position.<a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1" title="Z coordinate of the vector.">z</a>);
<a name="l00175"></a>00175 }
<a name="l00176"></a>00176 
<a name="l00177"></a>00177 
<a name="l00183"></a><a class="code" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3">00183</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#7604f576d184ba8031789beee96d04d3" title="Make the sound&amp;#39;s position relative to the listener&amp;#39;s position, or absolute...">Sound::SetRelativeToListener</a>(<span class="keywordtype">bool</span> Relative)
<a name="l00184"></a>00184 {
<a name="l00185"></a>00185     ALCheck(alSourcei(mySource, AL_SOURCE_RELATIVE, Relative));
<a name="l00186"></a>00186 }
<a name="l00187"></a>00187 
<a name="l00188"></a>00188 
<a name="l00194"></a><a class="code" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9">00194</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#0a545d8dca68d85a03390f6da7c446a9" title="Set the minimum distance - closer than this distance, the listener will hear the...">Sound::SetMinDistance</a>(<span class="keywordtype">float</span> MinDistance)
<a name="l00195"></a>00195 {
<a name="l00196"></a>00196     ALCheck(alSourcef(mySource, AL_REFERENCE_DISTANCE, MinDistance));
<a name="l00197"></a>00197 }
<a name="l00198"></a>00198 
<a name="l00199"></a>00199 
<a name="l00205"></a><a class="code" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9">00205</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#c3743f1fb53bf9818fbab6e9220bd7b9" title="Set the attenuation factor - the higher the attenuation, the more the sound will...">Sound::SetAttenuation</a>(<span class="keywordtype">float</span> Attenuation)
<a name="l00206"></a>00206 {
<a name="l00207"></a>00207     ALCheck(alSourcef(mySource, AL_ROLLOFF_FACTOR, Attenuation));
<a name="l00208"></a>00208 }
<a name="l00209"></a>00209 
<a name="l00210"></a>00210 
<a name="l00214"></a><a class="code" href="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62">00214</a> <span class="keywordtype">void</span> <a class="code" href="classsf_1_1Sound.htm#e779b4fa3d8d98a1490334dbd32e8d62" title="Set the current playing position of the sound.">Sound::SetPlayingOffset</a>(<span class="keywordtype">float</span> TimeOffset)
<a name="l00215"></a>00215 {
<a name="l00216"></a>00216     ALCheck(alSourcef(mySource, AL_SEC_OFFSET, TimeOffset));
<a name="l00217"></a>00217 }
<a name="l00218"></a>00218 
<a name="l00219"></a>00219 
<a name="l00223"></a><a class="code" href="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e">00223</a> <span class="keyword">const</span> <a class="code" href="classsf_1_1SoundBuffer.htm" title="SoundBuffer is the low-level for loading and manipulating sound buffers.">SoundBuffer</a>* <a class="code" href="classsf_1_1Sound.htm#bb46557ecfb32c4538fedad28cc59d9e" title="Get the source buffer.">Sound::GetBuffer</a>()<span class="keyword"> const</span>
<a name="l00224"></a>00224 <span class="keyword"></span>{
<a name="l00225"></a>00225     <span class="keywordflow">return</span> myBuffer;
<a name="l00226"></a>00226 }
<a name="l00227"></a>00227 
<a name="l00228"></a>00228 
<a name="l00232"></a><a class="code" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e">00232</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Sound.htm#5cdc44ade7bda8db2d0431701d72495e" title="Tell whether or not the sound is looping.">Sound::GetLoop</a>()<span class="keyword"> const</span>
<a name="l00233"></a>00233 <span class="keyword"></span>{
<a name="l00234"></a>00234     ALint Loop;
<a name="l00235"></a>00235     ALCheck(alGetSourcei(mySource, AL_LOOPING, &amp;Loop));
<a name="l00236"></a>00236 
<a name="l00237"></a>00237     <span class="keywordflow">return</span> Loop != 0;
<a name="l00238"></a>00238 }
<a name="l00239"></a>00239 
<a name="l00240"></a>00240 
<a name="l00244"></a><a class="code" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef">00244</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Sound.htm#42333202ed0586f434d852cc35b9d4ef" title="Get the pitch.">Sound::GetPitch</a>()<span class="keyword"> const</span>
<a name="l00245"></a>00245 <span class="keyword"></span>{
<a name="l00246"></a>00246     ALfloat Pitch;
<a name="l00247"></a>00247     ALCheck(alGetSourcef(mySource, AL_PITCH, &amp;Pitch));
<a name="l00248"></a>00248 
<a name="l00249"></a>00249     <span class="keywordflow">return</span> Pitch;
<a name="l00250"></a>00250 }
<a name="l00251"></a>00251 
<a name="l00252"></a>00252 
<a name="l00256"></a><a class="code" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782">00256</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Sound.htm#018e78cd6c50d653fffff1005a350782" title="Get the volume.">Sound::GetVolume</a>()<span class="keyword"> const</span>
<a name="l00257"></a>00257 <span class="keyword"></span>{
<a name="l00258"></a>00258     ALfloat Gain;
<a name="l00259"></a>00259     ALCheck(alGetSourcef(mySource, AL_GAIN, &amp;Gain));
<a name="l00260"></a>00260 
<a name="l00261"></a>00261     <span class="keywordflow">return</span> Gain * 100.f;
<a name="l00262"></a>00262 }
<a name="l00263"></a>00263 
<a name="l00264"></a>00264 
<a name="l00268"></a><a class="code" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643">00268</a> <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a> <a class="code" href="classsf_1_1Sound.htm#b1adb173ee12a86f261fb765be050643" title="Get the sound position.">Sound::GetPosition</a>()<span class="keyword"> const</span>
<a name="l00269"></a>00269 <span class="keyword"></span>{
<a name="l00270"></a>00270     <a class="code" href="classsf_1_1Vector3.htm" title="Vector3 is an utility class for manipulating 3 dimensional vectors.">Vector3f</a> Position;
<a name="l00271"></a>00271     ALCheck(alGetSource3f(mySource, AL_POSITION, &amp;Position.<a class="code" href="classsf_1_1Vector3.htm#3cb0c769390bc37c346bb1a69e510d16" title="X coordinate of the vector.">x</a>, &amp;Position.<a class="code" href="classsf_1_1Vector3.htm#6590d50ccb862c5efc5512e974e9b794" title="Y coordinate of the vector.">y</a>, &amp;Position.<a class="code" href="classsf_1_1Vector3.htm#2f36ab4b552c028e3a9734c1ad4df7d1" title="Z coordinate of the vector.">z</a>));
<a name="l00272"></a>00272 
<a name="l00273"></a>00273     <span class="keywordflow">return</span> Position;
<a name="l00274"></a>00274 }
<a name="l00275"></a>00275 
<a name="l00276"></a>00276 
<a name="l00281"></a><a class="code" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e">00281</a> <span class="keywordtype">bool</span> <a class="code" href="classsf_1_1Sound.htm#f0278152abf6e3f195353ce3c270f34e" title="Tell if the sound&amp;#39;s position is relative to the listener&amp;#39;s position, or if...">Sound::IsRelativeToListener</a>()<span class="keyword"> const</span>
<a name="l00282"></a>00282 <span class="keyword"></span>{
<a name="l00283"></a>00283     ALint Relative;
<a name="l00284"></a>00284     ALCheck(alGetSourcei(mySource, AL_SOURCE_RELATIVE, &amp;Relative));
<a name="l00285"></a>00285 
<a name="l00286"></a>00286     <span class="keywordflow">return</span> Relative != 0;
<a name="l00287"></a>00287 }
<a name="l00288"></a>00288 
<a name="l00289"></a>00289 
<a name="l00293"></a><a class="code" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b">00293</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Sound.htm#07f37119f7b3b00f274ac0263a4bc58b" title="Get the minimum distance.">Sound::GetMinDistance</a>()<span class="keyword"> const</span>
<a name="l00294"></a>00294 <span class="keyword"></span>{
<a name="l00295"></a>00295     ALfloat MinDistance;
<a name="l00296"></a>00296     ALCheck(alGetSourcef(mySource, AL_REFERENCE_DISTANCE, &amp;MinDistance));
<a name="l00297"></a>00297 
<a name="l00298"></a>00298     <span class="keywordflow">return</span> MinDistance;
<a name="l00299"></a>00299 }
<a name="l00300"></a>00300 
<a name="l00301"></a>00301 
<a name="l00305"></a><a class="code" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42">00305</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Sound.htm#f594211c35d6ac7a9df083c226749c42" title="Get the attenuation factor.">Sound::GetAttenuation</a>()<span class="keyword"> const</span>
<a name="l00306"></a>00306 <span class="keyword"></span>{
<a name="l00307"></a>00307     ALfloat Attenuation;
<a name="l00308"></a>00308     ALCheck(alGetSourcef(mySource, AL_ROLLOFF_FACTOR, &amp;Attenuation));
<a name="l00309"></a>00309 
<a name="l00310"></a>00310     <span class="keywordflow">return</span> Attenuation;
<a name="l00311"></a>00311 }
<a name="l00312"></a>00312 
<a name="l00313"></a>00313 
<a name="l00317"></a><a class="code" href="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f">00317</a> <span class="keywordtype">float</span> <a class="code" href="classsf_1_1Sound.htm#0e80c736a6865123be0c19e99f36467f" title="Get the current playing position of the sound.">Sound::GetPlayingOffset</a>()<span class="keyword"> const</span>
<a name="l00318"></a>00318 <span class="keyword"></span>{
<a name="l00319"></a>00319     ALfloat Seconds = 0.f;
<a name="l00320"></a>00320     ALCheck(alGetSourcef(mySource, AL_SEC_OFFSET, &amp;Seconds));
<a name="l00321"></a>00321 
<a name="l00322"></a>00322     <span class="keywordflow">return</span> Seconds;
<a name="l00323"></a>00323 }
<a name="l00324"></a>00324 
<a name="l00325"></a>00325 
<a name="l00329"></a><a class="code" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af">00329</a> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195" title="Enumeration of the sound states.">Sound::Status</a> <a class="code" href="classsf_1_1Sound.htm#76c97fca3a5092db606eb66461f063af" title="Get the status of the sound (stopped, paused, playing).">Sound::GetStatus</a>()<span class="keyword"> const</span>
<a name="l00330"></a>00330 <span class="keyword"></span>{
<a name="l00331"></a>00331     ALint State;
<a name="l00332"></a>00332     ALCheck(alGetSourcei(mySource, AL_SOURCE_STATE, &amp;State));
<a name="l00333"></a>00333 
<a name="l00334"></a>00334     <span class="keywordflow">switch</span> (State)
<a name="l00335"></a>00335     {
<a name="l00336"></a>00336         <span class="keywordflow">case</span> AL_INITIAL :
<a name="l00337"></a>00337         <span class="keywordflow">case</span> AL_STOPPED : <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9" title="Sound is not playing.">Stopped</a>;
<a name="l00338"></a>00338         <span class="keywordflow">case</span> AL_PAUSED :  <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b9622195c9fedbd48103548431e7851d16be5f4f" title="Sound is paused.">Paused</a>;
<a name="l00339"></a>00339         <span class="keywordflow">case</span> AL_PLAYING : <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219516657b221888cf11e2a076f5b2783288" title="Sound is playing.">Playing</a>;
<a name="l00340"></a>00340     }
<a name="l00341"></a>00341 
<a name="l00342"></a>00342     <span class="keywordflow">return</span> <a class="code" href="classsf_1_1Sound.htm#28ad2186cde78fed2c79c867b962219539fd53aa83db9189ca2fff82e0553cf9" title="Sound is not playing.">Stopped</a>;
<a name="l00343"></a>00343 }
<a name="l00344"></a>00344 
<a name="l00345"></a>00345 
<a name="l00349"></a><a class="code" href="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7">00349</a> <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>&amp; <a class="code" href="classsf_1_1Sound.htm#b794404f8facdad9578c31eff25110a7" title="Assignment operator.">Sound::operator =</a>(<span class="keyword">const</span> <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a>&amp; Other)
<a name="l00350"></a>00350 {
<a name="l00351"></a>00351     <a class="code" href="classsf_1_1Sound.htm" title="Sound defines the properties of a sound such as position, volume, pitch, etc.">Sound</a> Temp(Other);
<a name="l00352"></a>00352 
<a name="l00353"></a>00353     std::swap(mySource, Temp.<a class="code" href="classsf_1_1Sound.htm#80f6e656438d81f62dbd1e08e44ce60b" title="OpenAL source identifier.">mySource</a>);
<a name="l00354"></a>00354     std::swap(myBuffer, Temp.<a class="code" href="classsf_1_1Sound.htm#853812e73ff1cfdd04fe562431bd5a16" title="Sound buffer bound to the source.">myBuffer</a>);
<a name="l00355"></a>00355 
<a name="l00356"></a>00356     <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00357"></a>00357 }
<a name="l00358"></a>00358 
<a name="l00359"></a>00359 } <span class="comment">// namespace sf</span>
</pre></div></div>

        <p id="footer">
            &nbsp;::&nbsp; Copyright &copy; 2007-2008 Laurent Gomila, all rights reserved &nbsp;::&nbsp;
            Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> &nbsp;::&nbsp;
        </p>

    </body>
</html>