1 #include "nSoundListener.h"
2 #include "nSoundSystem.h"
4 #include "../scene/nSceneCamera.h"
5 #include "OgreCamera.h"
10 nSoundListener::nSoundListener(nSoundSystem * parent) :
20 void nSoundListener::setSourceCamera(nSceneCamera * cam)
24 disconnect(this, SLOT(cameraDestroyed()));
27 if(m_camera) //camera can be set to null
29 m_camLastPos = m_camera->ogreCamera()->getPosition();
30 connect(m_camera, SIGNAL(destroyed()), SLOT(cameraDestroyed()));
33 void nSoundListener::cameraDestroyed()
35 disconnect(this, SLOT(cameraDestroyed()));
40 void nSoundListener::update(qreal frameTime)
43 if(m_updating && m_camera)
45 nVec3 pos(m_camera->ogreCamera()->getRealPosition()),
46 dir(m_camera->ogreCamera()->getRealDirection()),
47 up(m_camera->ogreCamera()->getRealUp());
48 nVec3 vel = pos - m_camLastPos;
53 updateManual(QVector3D());
59 void nSoundListener::updateManual(QVector3D pos, QVector3D dir, QVector3D up, QVector3D vel)
70 alListener3f(AL_POSITION, pos[0], pos[1], pos[2]);
71 alListenerfv(AL_ORIENTATION, orient);
72 alListener3f(AL_VELOCITY, vel[0], vel[1], vel[2]);
74 if(alGetError()!=AL_NO_ERROR)
75 throw QString("nSoundListener: Failed to update listener transformations.");