Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/sound/sound_source.h @ 9019

Last change on this file since 9019 was 8793, checked in by patrick, 18 years ago

trunk: merged the weather engine branche to the trunk

File size: 2.4 KB
Line 
1/*!
2* @file sound_source.h
3* @brief Definition of the SoundSource.
4*/
5
6#ifndef _SOUND_SOURCE_H
7#define _SOUND_SOURCE_H
8
9#include "base_object.h"
10#include "alincl.h"
11
12// FORWARD DECLARATION
13class PNode;
14namespace OrxSound
15{
16  class SoundBuffer;
17  //! A class that represents a SoundSource
18  class SoundSource : public BaseObject
19  {
20  public:
21    SoundSource(const PNode* sourceNode = NULL, const SoundBuffer* buffer = NULL);
22    SoundSource(const SoundSource& source);
23    SoundSource& operator=(const SoundSource& source);
24    bool operator==(const SoundSource& source);
25
26    virtual ~SoundSource();
27
28    // user interaction
29    void play();
30    void play(const SoundBuffer* buffer);
31    void play(const SoundBuffer* buffer, float gain);
32    void play(const SoundBuffer* buffer, float gain, bool loop);
33
34    void gain(const SoundBuffer* buffer, float gain);
35
36    void stop();
37    void pause();
38    void rewind();
39    void fadein(const SoundBuffer* buffer, ALfloat duration);
40
41    // development functions
42    /** @returns The ID of this Source */
43    inline ALuint getID() const { return this->sourceID; };
44    /** @returns true, if the Source is Playing */
45    inline bool isPlaying() const { return this->bPlay; };
46    void setSourceNode(const PNode* sourceNode);
47    /** @returns the SoundBuffer of this Source */
48    inline const SoundBuffer* getBuffer() const { return this->buffer; };
49    /** @returns the SourceNode of this Source */
50    inline const PNode* getNode() const { return this->sourceNode; };
51    /** @param resident if the Source is Resident */
52    inline void setResident(bool resident) { this->resident = resident; };
53    /** @returns true if the alSource is Resident */
54    inline bool isResident() const { return this->resident; };
55
56    void setRolloffFactor(ALfloat rolloffFactor);
57
58    static void resetSource(ALuint sourceID);
59
60  private:
61    bool                   retrieveSource();
62
63  private:
64    bool                   bPlay;       //!< If the Source is Playing.
65    bool                   resident;    //!< If the alSource should be resident (if true, the alSource will be returned on deletion).
66    ALuint                 sourceID;    //!< The ID of the Source
67    const SoundBuffer*     buffer;      //!< The buffer to play in this source.
68    const PNode*           sourceNode;  //!< The SourceNode representing the position/velocity... of this source.
69  };
70}
71#endif /* _SOUND_SOURCE_H */
Note: See TracBrowser for help on using the repository browser.