From a3e918a0b3e3ffed0104af14a504f6c207faf56f Mon Sep 17 00:00:00 2001 From: havoc Date: Mon, 11 Jun 2007 03:32:08 +0000 Subject: [PATCH] fix sound spatialization and S_StartSound to deal with the 32768+entnum sound call in csqc git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7397 d7cf8633-e32d-0410-b094-e92efae38249 --- cl_parse.c | 3 +++ snd_main.c | 20 ++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/cl_parse.c b/cl_parse.c index 4a1dca33..e7790bbc 100644 --- a/cl_parse.c +++ b/cl_parse.c @@ -262,6 +262,9 @@ void CL_ParseStartSoundPacket(int largesoundindex) return; } + if (ent >= cl.max_entities) + CL_ExpandEntities(ent); + S_StartSound (ent, channel, cl.sound_precache[sound_num], pos, volume/255.0f, attenuation); } diff --git a/snd_main.c b/snd_main.c index d71974a1..4078e737 100644 --- a/snd_main.c +++ b/snd_main.c @@ -1107,12 +1107,19 @@ void SND_Spatialize(channel_t *ch, qboolean isstatic) vec3_t source_vec; // update sound origin if we know about the entity - if (ch->entnum > 0 && cls.state == ca_connected && cl.entities[ch->entnum].state_current.active) + if (ch->entnum > 0 && cls.state == ca_connected) { - //Con_Printf("-- entnum %i origin %f %f %f neworigin %f %f %f\n", ch->entnum, ch->origin[0], ch->origin[1], ch->origin[2], cl.entities[ch->entnum].state_current.origin[0], cl.entities[ch->entnum].state_current.origin[1], cl.entities[ch->entnum].state_current.origin[2]); - VectorCopy(cl.entities[ch->entnum].state_current.origin, ch->origin); - if (cl.entities[ch->entnum].state_current.modelindex && cl.model_precache[cl.entities[ch->entnum].state_current.modelindex] && cl.model_precache[cl.entities[ch->entnum].state_current.modelindex]->soundfromcenter) - VectorMAMAM(1.0f, ch->origin, 0.5f, cl.model_precache[cl.entities[ch->entnum].state_current.modelindex]->normalmins, 0.5f, cl.model_precache[cl.entities[ch->entnum].state_current.modelindex]->normalmaxs, ch->origin); + if (ch->entnum >= 32768) + { + // TODO: sounds that follow CSQC entities? + } + else if (cl.entities[ch->entnum].state_current.active) + { + //Con_Printf("-- entnum %i origin %f %f %f neworigin %f %f %f\n", ch->entnum, ch->origin[0], ch->origin[1], ch->origin[2], cl.entities[ch->entnum].state_current.origin[0], cl.entities[ch->entnum].state_current.origin[1], cl.entities[ch->entnum].state_current.origin[2]); + VectorCopy(cl.entities[ch->entnum].state_current.origin, ch->origin); + if (cl.entities[ch->entnum].state_current.modelindex && cl.model_precache[cl.entities[ch->entnum].state_current.modelindex] && cl.model_precache[cl.entities[ch->entnum].state_current.modelindex]->soundfromcenter) + VectorMAMAM(1.0f, ch->origin, 0.5f, cl.model_precache[cl.entities[ch->entnum].state_current.modelindex]->normalmins, 0.5f, cl.model_precache[cl.entities[ch->entnum].state_current.modelindex]->normalmaxs, ch->origin); + } } mastervol = ch->master_vol; @@ -1193,9 +1200,6 @@ int S_StartSound (int entnum, int entchannel, sfx_t *sfx, vec3_t origin, float f if (sfx->fetcher == NULL) return -1; - if (entnum && entnum >= cl.max_entities) - CL_ExpandEntities(entnum); - // Pick a channel to play on target_chan = SND_PickChannel(entnum, entchannel); if (!target_chan) -- 2.39.2