~ubuntu-branches/debian/sid/ember/sid

« back to all changes in this revision

Viewing changes to src/services/sound/SoundBinding.h

  • Committer: Bazaar Package Importer
  • Author(s): Michael Koch
  • Date: 2009-07-23 07:46:40 UTC
  • Revision ID: james.westby@ubuntu.com-20090723074640-wh0ukzis0kda36qv
Tags: upstream-0.5.6
ImportĀ upstreamĀ versionĀ 0.5.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//
 
2
// C++ Interface: SoundBinding
 
3
//
 
4
// Description: 
 
5
//
 
6
//
 
7
// Author: Erik Hjortsberg <erik.hjortsberg@gmail.com>, (C) 2008
 
8
//
 
9
// This program is free software; you can redistribute it and/or modify
 
10
// it under the terms of the GNU General Public License as published by
 
11
// the Free Software Foundation; either version 2 of the License, or
 
12
// (at your option) any later version.
 
13
// 
 
14
// This program is distributed in the hope that it will be useful,
 
15
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
17
// GNU General Public License for more details.
 
18
// 
 
19
// You should have received a copy of the GNU General Public License
 
20
// along with this program; if not, write to the Free Software
 
21
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.//
 
22
//
 
23
#ifndef EMBERSOUNDBINDING_H
 
24
#define EMBERSOUNDBINDING_H
 
25
 
 
26
namespace Ember {
 
27
class SoundSource;
 
28
/**
 
29
@brief Acts as a binding between a sound source and one or many sound data buffers.
 
30
 
 
31
An instance of this is responsible for binding a sound source and one or many sound data buffers together. The buffers will contain the actual sound data to be played, and without this binding no sound can be played.
 
32
Normally the binding occurs in the constructor, but some sounds needs to be streamed, and thus further binding alterations needs to occur in the update() method. The update() method will be called once each frame when the binding is in use.
 
33
 
 
34
@author Erik Hjortsberg <erik.hjortsberg@gmail.com>
 
35
*/
 
36
class SoundBinding
 
37
{
 
38
public:
 
39
 
 
40
/**
 
41
 * @brief Ctor.
 
42
 * In most subclasses you want to perform the initial, if not all, bind operations in the constructor.
 
43
 * @param source The sound source to which this binding should bind any sound data buffers.
 
44
 */
 
45
SoundBinding(SoundSource& source);
 
46
/**
 
47
 * @brief Dtor.
 
48
 * Normally nothing should happen here, unless there's a need to unqueue any buffers.
 
49
 */
 
50
virtual ~SoundBinding();
 
51
 
 
52
/**
 
53
 * @brief Called each frame to allow the binding to do any dynamic updates if so required.
 
54
 * This is especially true for streaming sounds, where the buffers needs to be updated as OpenAL plays through them.
 
55
 */
 
56
virtual void update() = 0;
 
57
 
 
58
protected:
 
59
/**
 
60
 * @brief The SoundSource to which this binding is attached.
 
61
 */
 
62
SoundSource& mSource;
 
63
};
 
64
 
 
65
}
 
66
 
 
67
#endif