blitz3d/blitz3d/listener.cpp

35 lines
727 B
C++

#include "std.h"
#include "listener.h"
extern gxAudio *gx_audio;
Listener::Listener( float roll,float dopp,float dist ){
if( !gx_audio ) return;
gx_audio->set3dOptions( roll,dopp,dist );
renderListener();
}
Listener::Listener( const Listener &t ):
Object(t){
}
Listener::~Listener(){
if( !gx_audio ) return;
Vector pos,vel,up(0,1,1),forward(0,0,1);
gx_audio->set3dListener( &pos.x,&vel.x,&forward.x,&up.x );
}
void Listener::renderListener(){
if( !gx_audio ) return;
const Vector &pos=getWorldTform().v;
const Vector &vel=getVelocity();
const Vector &forward=getWorldTform().m.k.normalized();
const Vector &up=getWorldTform().m.j.normalized();
gx_audio->set3dListener( &pos.x,&vel.x,&forward.x,&up.x );
}