1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-04-01 18:06:43 +00:00

Keep track of the sound pitch

This commit is contained in:
Chris Robinson 2012-03-31 10:41:12 -07:00
parent cbf6c0404a
commit 4944a29b21
3 changed files with 7 additions and 3 deletions

View file

@ -261,7 +261,7 @@ bool OpenAL_SoundStream::isPlaying()
void OpenAL_SoundStream::update() void OpenAL_SoundStream::update()
{ {
ALfloat gain = mVolume*mBaseVolume; ALfloat gain = mVolume*mBaseVolume;
ALfloat pitch = 1.0f; ALfloat pitch = mPitch;
if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater) if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater)
{ {
gain *= 0.9f; gain *= 0.9f;
@ -398,7 +398,7 @@ bool OpenAL_Sound::isPlaying()
void OpenAL_Sound::update() void OpenAL_Sound::update()
{ {
ALfloat gain = mVolume*mBaseVolume; ALfloat gain = mVolume*mBaseVolume;
ALfloat pitch = 1.0f; ALfloat pitch = mPitch;
if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater) if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater)
{ {
gain *= 0.9f; gain *= 0.9f;
@ -416,7 +416,7 @@ void OpenAL_Sound::update()
void OpenAL_Sound3D::update() void OpenAL_Sound3D::update()
{ {
ALfloat gain = mVolume*mBaseVolume; ALfloat gain = mVolume*mBaseVolume;
ALfloat pitch = 1.0f; ALfloat pitch = mPitch;
if(mPos.squaredDistance(mOutput.mPos) > mMaxDistance*mMaxDistance) if(mPos.squaredDistance(mOutput.mPos) > mMaxDistance*mMaxDistance)
gain = 0.0f; gain = 0.0f;
else if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater) else if(!(mFlags&Play_NoEnv) && mOutput.mLastEnvironment == Env_Underwater)

View file

@ -16,6 +16,7 @@ namespace MWSound
Ogre::Vector3 mPos; Ogre::Vector3 mPos;
float mVolume; /* NOTE: Real volume = mVolume*mBaseVolume */ float mVolume; /* NOTE: Real volume = mVolume*mBaseVolume */
float mBaseVolume; float mBaseVolume;
float mPitch;
float mMinDistance; float mMinDistance;
float mMaxDistance; float mMaxDistance;
int mFlags; int mFlags;
@ -29,6 +30,7 @@ namespace MWSound
Sound() : mPos(0.0f, 0.0f, 0.0f) Sound() : mPos(0.0f, 0.0f, 0.0f)
, mVolume(1.0f) , mVolume(1.0f)
, mBaseVolume(1.0f) , mBaseVolume(1.0f)
, mPitch(1.0f)
, mMinDistance(20.0f) /* 1 * min_range_scale */ , mMinDistance(20.0f) /* 1 * min_range_scale */
, mMaxDistance(12750.0f) /* 255 * max_range_scale */ , mMaxDistance(12750.0f) /* 255 * max_range_scale */
, mFlags(Play_Normal) , mFlags(Play_Normal)

View file

@ -216,6 +216,7 @@ namespace MWSound
sound = mOutput->playSound(file, volume*basevol, pitch, mode); sound = mOutput->playSound(file, volume*basevol, pitch, mode);
sound->mVolume = volume; sound->mVolume = volume;
sound->mBaseVolume = basevol; sound->mBaseVolume = basevol;
sound->mPitch = pitch;
sound->mMinDistance = min; sound->mMinDistance = min;
sound->mMaxDistance = max; sound->mMaxDistance = max;
sound->mFlags = mode; sound->mFlags = mode;
@ -246,6 +247,7 @@ namespace MWSound
sound->mPos = objpos; sound->mPos = objpos;
sound->mVolume = volume; sound->mVolume = volume;
sound->mBaseVolume = basevol; sound->mBaseVolume = basevol;
sound->mPitch = pitch;
sound->mMinDistance = min; sound->mMinDistance = min;
sound->mMaxDistance = max; sound->mMaxDistance = max;
sound->mFlags = mode; sound->mFlags = mode;