Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/terrain/src/lib/sound/sound_source.h @ 8570

Last change on this file since 8570 was 8255, checked in by bensch, 19 years ago

merged the atmos back with command: https://svn.orxonox.net/orxonox/branches/atmospheric_engine

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 loop();
33                        void loop(const SoundBuffer* buffer);
34                        void loop(const SoundBuffer* buffer, float gain);
35                        void stop();
36                        void pause();
37                        void rewind();
38                        void fadein(const SoundBuffer* buffer, ALfloat duration);
39                       
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.