Browse Source

engine: client: fix sound not spatialized correctly, remove unused field from rawchan

pull/2/head
Alibek Omarov 4 years ago
parent
commit
60c10333aa
  1. 20
      engine/client/cl_frame.c
  2. 1
      engine/client/sound.h

20
engine/client/cl_frame.c

@ -1378,17 +1378,13 @@ qboolean CL_GetEntitySpatialization( channel_t *ch ) @@ -1378,17 +1378,13 @@ qboolean CL_GetEntitySpatialization( channel_t *ch )
ent = CL_GetEntityByIndex( ch->entnum );
// entity is not present on the client but has valid origin
if( !ent || !ent->index || ent->curstate.messagenum == 0 )
if( !ent || !ent->model || ent->curstate.messagenum != cl.parsecount )
return valid_origin;
#if 0
// uncomment this if you want enable additional check by PVS
if( ent->curstate.messagenum != cl.parsecount )
return valid_origin;
#endif
// setup origin
VectorCopy( ent->origin, ch->origin );
if( ent->model->type == mod_brush )
VectorAverage( ent->curstate.mins, ent->curstate.maxs, ch->origin );
VectorAdd( ch->origin, ent->curstate.origin, ch->origin );
return true;
}
@ -1406,12 +1402,10 @@ qboolean CL_GetMovieSpatialization( rawchan_t *ch ) @@ -1406,12 +1402,10 @@ qboolean CL_GetMovieSpatialization( rawchan_t *ch )
return valid_origin;
// setup origin
VectorAverage( ent->curstate.mins, ent->curstate.maxs, ch->origin );
VectorAdd( ch->origin, ent->curstate.origin, ch->origin );
VectorCopy( ent->origin, ch->origin );
// setup radius
if( ent->model != NULL && ent->model->radius ) ch->radius = ent->model->radius;
else ch->radius = RadiusFromBounds( ent->curstate.mins, ent->curstate.maxs );
if( ent->model->type == mod_brush )
VectorAverage( ent->curstate.mins, ent->curstate.maxs, ch->origin );
return true;
}

1
engine/client/sound.h

@ -138,7 +138,6 @@ typedef struct rawchan_s @@ -138,7 +138,6 @@ typedef struct rawchan_s
int rightvol; // 0-255 right volume
float dist_mult; // distance multiplier (attenuation/clipK)
vec3_t origin; // only use if fixed_origin is set
float radius; // radius of this sound effect
volatile uint s_rawend;
wavdata_t sound_info; // advance play position
float oldtime; // catch time jumps

Loading…
Cancel
Save