Change Encyclo button name and macros icon
[ryzomcore.git] / nel / src / sound / driver / xaudio2 / effect_xaudio2.h
blob92ae4cedf5d9febd7028774991bb2f3ef81b3df6
1 // NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
2 // Copyright (C) 2008 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU Affero General Public License as
6 // published by the Free Software Foundation, either version 3 of the
7 // License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU Affero General Public License for more details.
14 // You should have received a copy of the GNU Affero General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #ifndef NLSOUND_EFFECT_XAUDIO2_H
18 #define NLSOUND_EFFECT_XAUDIO2_H
20 namespace NLSOUND {
21 class CSoundDriverXAudio2;
23 /**
24 * \brief CEffectXAudio2
25 * \date 2008-09-25 07:46GMT
26 * \author Jan Boon (Kaetemi)
27 * CEffectXAudio2
29 class CEffectXAudio2
31 protected:
32 // outside pointers
33 CSoundDriverXAudio2 *_SoundDriver;
35 // pointers
36 IXAudio2SubmixVoice *_DryVoice;
37 IXAudio2SubmixVoice *_FilterVoice;
38 IUnknown *_Effect; // set by subclass
40 public:
41 CEffectXAudio2(CSoundDriverXAudio2 *soundDriver, uint channels);
42 virtual ~CEffectXAudio2();
43 virtual void release();
45 inline IUnknown *getEffect() { return _Effect; }
46 inline IXAudio2Voice *getDryVoice() { return _DryVoice; }
47 inline IXAudio2Voice *getFilterVoice() { return _FilterVoice; }
49 }; /* class CEffectXAudio2 */
51 /**
52 * \brief CReverbEffectXAudio2
53 * \date 2008-09-17 17:27GMT
54 * \author Jan Boon (Kaetemi)
55 * CReverbEffectXAudio2
57 class CReverbEffectXAudio2 : public IReverbEffect, public CEffectXAudio2
59 protected:
60 // user data
61 /// Parameters of the reverb (eax environment) effect.
62 XAUDIO2FX_REVERB_PARAMETERS _ReverbParams;
64 public:
65 CReverbEffectXAudio2(CSoundDriverXAudio2 *soundDriver);
66 virtual ~CReverbEffectXAudio2();
67 virtual void release();
69 /// Set the environment (you have full control now, have fun)
70 virtual void setEnvironment(const CEnvironment &environment = CEnvironment(), float roomSize = 100.0f);
72 }; /* class CReverbEffectXAudio2 */
74 } /* namespace NLSOUND */
76 #endif /* #ifndef NLSOUND_EFFECT_XAUDIO2_H */
78 /* end of file */