]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
fix sound spatialization and S_StartSound to deal with the 32768+entnum
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 11 Jun 2007 03:32:08 +0000 (03:32 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Mon, 11 Jun 2007 03:32:08 +0000 (03:32 +0000)
sound call in csqc

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7397 d7cf8633-e32d-0410-b094-e92efae38249

cl_parse.c
snd_main.c

index 4a1dca33433d00b92fa9c9a331eea9907f23a6ed..e7790bbc62ed6c7d76eb330fd54d3eb7578783f5 100644 (file)
@@ -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);
 }
 
index d71974a1d47d0de70eb8cea2c1e9ba02e30acd7f..4078e7371014434583e43d9fd78a8c64a0c8dbe9 100644 (file)
@@ -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)