- Fixed: S_RestartSound() cleared the evicted flag even if the sound

was not restarted because it was too close to too many other identical
  sounds that were already playing.


SVN r1962 (trunk)
This commit is contained in:
Randy Heit 2009-11-04 02:37:05 +00:00
parent fb74d9b1ec
commit 704895f9b9
2 changed files with 6 additions and 2 deletions

View file

@ -1,4 +1,7 @@
November 3, 2009 November 3, 2009
- Fixed: S_RestartSound() cleared the evicted flag even if the sound
was not restarted because it was too close to too many other identical
sounds that were already playing.
- Added virtual status and audibility to the noise debug display. - Added virtual status and audibility to the noise debug display.
- Added a command line option -warpwipe to perform the screen wipe if you - Added a command line option -warpwipe to perform the screen wipe if you
start with -warp or +map. start with -warp or +map.

View file

@ -250,7 +250,7 @@ void S_NoiseDebug (void)
screen->DrawText(SmallFont, color, 380, y, temp, TAG_DONE); screen->DrawText(SmallFont, color, 380, y, temp, TAG_DONE);
// Audibility // Audibility
mysnprintf(temp, countof(temp), "%.2g", GSnd->GetAudibility(chan)); mysnprintf(temp, countof(temp), "%.4f", GSnd->GetAudibility(chan));
screen->DrawText(SmallFont, color, 460, y, temp, TAG_DONE); screen->DrawText(SmallFont, color, 460, y, temp, TAG_DONE);
y += 8; y += 8;
@ -1125,7 +1125,6 @@ void S_RestartSound(FSoundChan *chan)
if (chan->ChanFlags & (CHAN_UI|CHAN_NOPAUSE)) startflags |= SNDF_NOPAUSE; if (chan->ChanFlags & (CHAN_UI|CHAN_NOPAUSE)) startflags |= SNDF_NOPAUSE;
if (chan->ChanFlags & CHAN_ABSTIME) startflags |= SNDF_ABSTIME; if (chan->ChanFlags & CHAN_ABSTIME) startflags |= SNDF_ABSTIME;
chan->ChanFlags &= ~(CHAN_EVICTED|CHAN_ABSTIME);
if (chan->ChanFlags & CHAN_IS3D) if (chan->ChanFlags & CHAN_IS3D)
{ {
FVector3 pos, vel; FVector3 pos, vel;
@ -1142,11 +1141,13 @@ void S_RestartSound(FSoundChan *chan)
SoundListener listener; SoundListener listener;
S_SetListener(listener, players[consoleplayer].camera); S_SetListener(listener, players[consoleplayer].camera);
chan->ChanFlags &= ~(CHAN_EVICTED|CHAN_ABSTIME);
ochan = (FSoundChan*)GSnd->StartSound3D(sfx->data, &listener, chan->Volume, &chan->Rolloff, chan->DistanceScale, chan->Pitch, ochan = (FSoundChan*)GSnd->StartSound3D(sfx->data, &listener, chan->Volume, &chan->Rolloff, chan->DistanceScale, chan->Pitch,
chan->Priority, pos, vel, chan->EntChannel, startflags, chan); chan->Priority, pos, vel, chan->EntChannel, startflags, chan);
} }
else else
{ {
chan->ChanFlags &= ~(CHAN_EVICTED|CHAN_ABSTIME);
ochan = (FSoundChan*)GSnd->StartSound(sfx->data, chan->Volume, chan->Pitch, startflags, chan); ochan = (FSoundChan*)GSnd->StartSound(sfx->data, chan->Volume, chan->Pitch, startflags, chan);
} }
assert(ochan == NULL || ochan == chan); assert(ochan == NULL || ochan == chan);