From 2f1329a1fe4ca7ea3772d8743597ea80540c6b3a Mon Sep 17 00:00:00 2001 From: Spoike Date: Tue, 23 Nov 2004 00:18:51 +0000 Subject: [PATCH] ambient sounds always loop now... hopefully. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@504 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/client/snd_dma.c | 4 +++- engine/client/snd_mix.c | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/engine/client/snd_dma.c b/engine/client/snd_dma.c index a142857f7..79045a76e 100644 --- a/engine/client/snd_dma.c +++ b/engine/client/snd_dma.c @@ -847,6 +847,7 @@ void S_StartSoundCard(soundcardinfo_t *sc, int entnum, int entchannel, sfx_t *sf target_chan->sfx = sfx; target_chan->pos = startpos; target_chan->end = sc->paintedtime + scache->length; + target_chan->looping = false; // if an identical sound has also been started this frame, offset the pos // a bit to keep it from just making the first one louder @@ -1046,7 +1047,8 @@ void S_StaticSound (sfx_t *sfx, vec3_t origin, float vol, float attenuation) VectorCopy (origin, ss->origin); ss->master_vol = vol; ss->dist_mult = (attenuation/64) / sound_nominal_clip_dist; - ss->end = scard->paintedtime + scache->length; + ss->end = scard->paintedtime + scache->length; + ss->looping = true; SND_Spatialize (scard, ss); } diff --git a/engine/client/snd_mix.c b/engine/client/snd_mix.c index b41bd52db..aa993774b 100644 --- a/engine/client/snd_mix.c +++ b/engine/client/snd_mix.c @@ -700,6 +700,11 @@ void S_PaintChannels(soundcardinfo_t *sc, int endtime) break; } } + else if (ch->looping && scache->length) + { + ch->pos = 0; + ch->end = ltime + scache->length - ch->pos; + } else { // channel just stopped s = ch->sfx;