Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/gui/src/lib/sound/sound_source.h @ 8689

Last change on this file since 8689 was 8495, checked in by bensch, 18 years ago

merged the branche atmos back. no conflicts

File size: 2.3 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 stop();
35                        void pause();
36                        void rewind();
37                        void fadein(const SoundBuffer* buffer, ALfloat duration);
38                       
39                       
40                        // development functions
41                        /** @returns The ID of this Source */
42                        inline ALuint getID() const { return this->sourceID; };
43                        /** @returns true, if the Source is Playing */
44                        inline bool   isPlaying() const { return this->bPlay; };
45                        void setSourceNode(const PNode* sourceNode);
46                        /** @returns the SoundBuffer of this Source */
47                        inline const SoundBuffer* getBuffer() const { return this->buffer; };
48                        /** @returns the SourceNode of this Source */
49                        inline const PNode* getNode() const { return this->sourceNode; };
50                        /** @param resident if the Source is Resident */
51                        inline void setResident(bool resident) { this->resident = resident; };
52                        /** @returns true if the alSource is Resident */
53                        inline bool isResident() const { return this->resident; };
54                       
55                        void setRolloffFactor(ALfloat rolloffFactor);
56                       
57                        static void resetSource(ALuint sourceID);
58               
59                private:
60                        bool retrieveSource();
61                       
62                private:
63                        bool                   bPlay;           //!< If the Source is Playing.
64                        bool                   resident;        //!< If the alSource should be resident (if true, the alSource will be returned on deletion).
65                        ALuint                 sourceID;        //!< The ID of the Source
66                        const SoundBuffer*     buffer;          //!< The buffer to play in this source.
67                        const PNode*           sourceNode;      //!< The SourceNode representing the position/velocity... of this source.
68        };
69}
70#endif /* _SOUND_SOURCE_H */
Note: See TracBrowser for help on using the repository browser.