if we're not going to check the pvs, why bother calculating it?

This commit is contained in:
Bill Currie 2004-03-07 00:25:09 +00:00
parent bd358618da
commit c4807a095d
2 changed files with 19 additions and 17 deletions

View file

@ -99,7 +99,7 @@ SV_AddToFatPVS (vec3_t org, mnode_t *node)
Calculates a PVS that is the inclusive or of all leafs within 8 pixels
of the given point.
*/
static byte *
static byte *
SV_FatPVS (vec3_t org)
{
fatbytes = (sv.worldmodel->numleafs + 31) >> 3;
@ -457,12 +457,15 @@ SV_WritePlayersToClient (client_t *client, edict_t *clent, byte *pvs,
if (cl->spectator)
continue;
// ignore if not touching a PV leaf
for (i = 0; i < ent->num_leafs; i++)
if (pvs[ent->leafnums[i] >> 3] & (1 << (ent->leafnums[i] & 7)))
break;
if (i == ent->num_leafs)
continue; // not visible
if (pvs) {
// ignore if not touching a PV leaf
for (i = 0; i < ent->num_leafs; i++)
if (pvs[ent->leafnums[i] >> 3]
& (1 << (ent->leafnums[i] & 7)))
break;
if (i == ent->num_leafs)
continue; // not visible
}
}
pflags = PF_MSEC | PF_COMMAND;
@ -606,7 +609,7 @@ SV_WritePlayersToClient (client_t *client, edict_t *clent, byte *pvs,
void
SV_WriteEntitiesToClient (client_t *client, sizebuf_t *msg, qboolean recorder)
{
byte *pvs;
byte *pvs = 0;
int e, i, num_edicts, mpe_moaned = 0;
int max_packet_entities = MAX_PACKET_ENTITIES;
vec3_t org;
@ -620,11 +623,10 @@ SV_WriteEntitiesToClient (client_t *client, sizebuf_t *msg, qboolean recorder)
// find the client's PVS
clent = client->edict;
pvs = 0;
if (!recorder) {
VectorAdd (SVvector (clent, origin), SVvector (clent, view_ofs), org);
pvs = SV_FatPVS (org);
} else {
} else if (!sv_demoNoVis->int_val) {
client_t *cl;
max_packet_entities = MAX_DEMO_PACKET_ENTITIES;
@ -668,7 +670,7 @@ SV_WriteEntitiesToClient (client_t *client, sizebuf_t *msg, qboolean recorder)
|| !*PR_GetString (&sv_pr_state, SVstring (ent, model)))
continue;
if (!sv_demoNoVis->int_val || !recorder) {
if (pvs) {
// ignore if not touching a PV leaf
for (i = 0; i < ent->num_leafs; i++)
if (pvs[ent->leafnums[i] >> 3] & (1 << (ent->leafnums[i] & 7)))

View file

@ -829,11 +829,9 @@ SV_SendDemoMessage (void)
if (!sv.demorecording)
return;
if (sv_demoPings->value) {
if (sv.time - demo.pingtime > sv_demoPings->value) {
SV_DemoPings ();
demo.pingtime = sv.time;
}
if (sv_demoPings->value && sv.time - demo.pingtime > sv_demoPings->value) {
SV_DemoPings ();
demo.pingtime = sv.time;
}
@ -866,7 +864,7 @@ SV_SendDemoMessage (void)
msg.overflowed = false;
for (i = 0, c = svs.clients; i < MAX_CLIENTS; i++, c++) {
if (c->state != cs_spawned)
if (c->state != cs_spawned && c->state != cs_server)
continue; // datagrams only go to spawned
if (c->spectator)
@ -914,6 +912,8 @@ SV_SendDemoMessage (void)
demo.frames[demo.parsecount & DEMO_FRAMES_MASK].time = demo.time = sv.time;
// that's a backup of 3sec in 20fps, should be enough
// FIXME make this framerate dependent.
// eg. sv_fps->int_val * sv_packetdelay->float_val
if (demo.parsecount - demo.lastwritten > 60) {
SV_DemoWritePackets (1);
}