gxsound.cpp 998 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "std.h"
  2. #include "gxsound.h"
  3. #include "gxaudio.h"
  4. gxSound::gxSound( gxAudio *a,FSOUND_SAMPLE *s ):
  5. audio(a),sample(s),defs_valid(true){
  6. FSOUND_Sample_GetDefaults( sample,&def_freq,&def_vol,&def_pan,&def_pri );
  7. }
  8. gxSound::~gxSound(){
  9. FSOUND_Sample_Free( sample );
  10. }
  11. void gxSound::setDefaults(){
  12. if( !defs_valid ){
  13. FSOUND_Sample_SetDefaults( sample,def_freq,def_vol,def_pan,def_pri );
  14. defs_valid=true;
  15. }
  16. }
  17. gxChannel *gxSound::play(){
  18. setDefaults();
  19. return audio->play( sample );
  20. }
  21. gxChannel *gxSound::play3d( const float pos[3],const float vel[3] ){
  22. setDefaults();
  23. return audio->play3d( sample,pos,vel );
  24. }
  25. void gxSound::setLoop( bool loop ){
  26. FSOUND_Sample_SetMode( sample,loop ? FSOUND_LOOP_NORMAL : FSOUND_LOOP_OFF );
  27. }
  28. void gxSound::setPitch( int hertz ){
  29. def_freq=hertz;
  30. defs_valid=false;
  31. }
  32. void gxSound::setVolume( float volume ){
  33. def_vol=volume*255.0f;
  34. defs_valid=false;
  35. }
  36. void gxSound::setPan( float pan ){
  37. def_pan=(pan+1.0f)*127.5f;
  38. defs_valid=false;
  39. }