Game Development Reference
In-Depth Information
if(m_isPaused)
{
VResume();
}
else
{
VPause();
}
return true;
}
bool DirectSoundAudioBuffer::VIsPlaying()
{
if(!g_Audio->VActive())
return false;
DWORD dwStatus = 0;
LPDIRECTSOUNDBUFFER pDSB = (LPDIRECTSOUNDBUFFER)VGet();
pDSB->GetStatus( &dwStatus );
bool bIsPlaying = ( ( dwStatus & DSBSTATUS_PLAYING ) != 0 );
return bIsPlaying;
}
void DirectSoundAudioBuffer::VSetVolume(int volume)
{
const int gccDSBVolumeMin = DSBVOLUME_MIN;
if(!g_Audio->VActive())
return;
LPDIRECTSOUNDBUFFER pDSB = (LPDIRECTSOUNDBUFFER)VGet();
assert(volume>=0 && volume<=100 &&
Volume must be between 0 and 100
);
// convert volume from 0-100 into range for DirectX
// Don
'
t forget to use a logarithmic scale!
float coeff = (float)volume / 100.0f;
float logarithmicProportion = coeff >0.1f ? 1+log10(coeff) : 0;
float range = (DSBVOLUME_MAX - gccDSBVolumeMin );
float fvolume = ( range * logarithmicProportion ) + gccDSBVolumeMin ;
GCC_ASSERT(fvolume>=gccDSBVolumeMin && fvolume<=DSBVOLUME_MAX);
HRESULT hr = pDSB->SetVolume( LONG(fvolume) );
GCC_ASSERT(hr==S_OK);
}
Search WWH ::




Custom Search