51 lines
998 B
C++
51 lines
998 B
C++
|
|
#include "std.h"
|
|
#include "gxsound.h"
|
|
#include "gxaudio.h"
|
|
|
|
gxSound::gxSound( gxAudio *a,FSOUND_SAMPLE *s ):
|
|
audio(a),sample(s),defs_valid(true){
|
|
FSOUND_Sample_GetDefaults( sample,&def_freq,&def_vol,&def_pan,&def_pri );
|
|
}
|
|
|
|
gxSound::~gxSound(){
|
|
FSOUND_Sample_Free( sample );
|
|
}
|
|
|
|
void gxSound::setDefaults(){
|
|
if( !defs_valid ){
|
|
FSOUND_Sample_SetDefaults( sample,def_freq,def_vol,def_pan,def_pri );
|
|
defs_valid=true;
|
|
}
|
|
}
|
|
|
|
gxChannel *gxSound::play(){
|
|
setDefaults();
|
|
return audio->play( sample );
|
|
}
|
|
|
|
gxChannel *gxSound::play3d( const float pos[3],const float vel[3] ){
|
|
setDefaults();
|
|
return audio->play3d( sample,pos,vel );
|
|
}
|
|
|
|
void gxSound::setLoop( bool loop ){
|
|
FSOUND_Sample_SetMode( sample,loop ? FSOUND_LOOP_NORMAL : FSOUND_LOOP_OFF );
|
|
}
|
|
|
|
void gxSound::setPitch( int hertz ){
|
|
def_freq=hertz;
|
|
defs_valid=false;
|
|
}
|
|
|
|
void gxSound::setVolume( float volume ){
|
|
def_vol=volume*255.0f;
|
|
defs_valid=false;
|
|
}
|
|
|
|
void gxSound::setPan( float pan ){
|
|
def_pan=(pan+1.0f)*127.5f;
|
|
defs_valid=false;
|
|
}
|
|
|