6 #include "nSoundSourceRole.h"
12 class nSoundSource : public QObject
15 Q_ENUMS(nSoundSourceState)
16 Q_ENUMS(nSoundSourceRole)
18 Q_PROPERTY(unsigned int openalHandle READ openalHandle)
19 Q_PROPERTY(nSoundSourceRole role READ role)
20 Q_PROPERTY(nSoundSourceState state READ state)
21 Q_PROPERTY(qreal gain READ gain WRITE setGain)
22 Q_PROPERTY(qreal pitch READ pitch WRITE setPitch)
23 Q_PROPERTY(qreal rolloffFactor READ rolloffFactor WRITE setRolloffFactor)
24 Q_PROPERTY(bool loop READ loop WRITE setLoop)
25 Q_PROPERTY(QVector3D position READ position WRITE setPosition)
26 Q_PROPERTY(bool destroyAfterStopped READ destroyAfterStopped WRITE setDestroyAfterStopped NOTIFY onDestroyAfterStoppedChanged )
28 Q_PROPERTY(qreal fading READ isFading)
29 Q_PROPERTY(qreal fadeTarget READ fadeTarget)
30 Q_PROPERTY(qreal fadeDeltaPerSecond READ fadeDeltaPerSecond)
34 enum nSoundSourceState
43 explicit nSoundSource(QString name, nSoundSourceRole role, nSoundSystem * parent);
44 virtual ~nSoundSource();
46 unsigned int openalHandle(){return m_handle;}
47 nSoundSourceState state();
48 nSoundSourceRole role(){return m_role;}
51 qreal rolloffFactor();
55 bool isFading() const {return m_fading;}
56 qreal fadeTarget() const {return m_fadeTarget;}
57 qreal fadeDeltaPerSecond() const {return m_fadeDeltaPerSecond;}
60 static qreal _roleGainVolume(nSoundSourceRole role);
61 static void _resetRoleGains();
63 bool destroyAfterStopped() const
65 return m_destroyAfterStopped;
70 void onDestroyAfterStoppedChanged(bool arg);
73 bool update(qreal frameTime);
75 void attachBuffer(nSoundBuffer * buffer);
79 void setRolloffFactor(qreal);
81 void setPosition(QVector3D pos);
83 void fade(qreal to, qreal duration, qreal from = -1.0f);
90 void setDestroyAfterStopped(bool arg)
92 if (m_destroyAfterStopped == arg)
95 m_destroyAfterStopped = arg;
96 emit onDestroyAfterStoppedChanged(arg);
100 unsigned int m_handle;
101 nSoundSourceRole m_role;
107 qreal m_fadeDeltaPerSecond;
110 static bool _m_gainsInitialized;
111 static qreal _m_musicGain;
112 static qreal _m_sfxGain;
113 static qreal _m_voiceGain;
114 static qreal _m_ambienceGain;
116 bool m_destroyAfterStopped;
119 #endif // NSOUNDSOURCE_H