]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_main.c
fix sound spatialization and S_StartSound to deal with the 32768+entnum
[xonotic/darkplaces.git] / snd_main.c
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)