X-Git-Url: http://git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=sv_send.c;h=3e125f3a58560589759d398858a43608d280f3e7;hp=a9aec2b93282d3cf78f90c4fbc2dbc272d52c757;hb=f847004b9818defbfd4bf15fe7b891fee2706079;hpb=feb22f39c2c1a481b8c7a2364767b6402d5d94a1 diff --git a/sv_send.c b/sv_send.c index a9aec2b9..3e125f3a 100644 --- a/sv_send.c +++ b/sv_send.c @@ -34,6 +34,7 @@ extern cvar_t sv_cullentities_trace_samples_players; extern cvar_t sv_cullentities_trace_eyejitter; extern cvar_t sv_cullentities_trace_expand; extern cvar_t sv_cullentities_trace_delay_players; +extern cvar_t sv_cullentities_trace_spectators; /* ============================================================================= @@ -291,7 +292,7 @@ void SV_StartSound (prvm_edict_t *entity, int channel, const char *sample, int n } else MSG_WriteShort (dest, (ent<<3) | channel); - if ((field_mask & SND_LARGESOUND) || sv.protocol == PROTOCOL_NEHAHRABJP2) + if ((field_mask & SND_LARGESOUND) || sv.protocol == PROTOCOL_NEHAHRABJP2 || sv.protocol == PROTOCOL_NEHAHRABJP3) MSG_WriteShort (dest, sound_num); else MSG_WriteByte (dest, sound_num); @@ -709,7 +710,7 @@ static void SV_PrepareEntitiesForSending(void) memset(sv.sendentitiesindex, 0, prog->num_edicts * sizeof(*sv.sendentitiesindex)); for (e = 1, ent = PRVM_NEXT_EDICT(prog->edicts);e < prog->num_edicts;e++, ent = PRVM_NEXT_EDICT(ent)) { - if (!ent->priv.server->free && SV_PrepareEntityForSending(ent, sv.sendentities + sv.numsendentities, e)) + if (!ent->free && SV_PrepareEntityForSending(ent, sv.sendentities + sv.numsendentities, e)) { sv.sendentitiesindex[e] = sv.sendentities + sv.numsendentities; sv.numsendentities++; @@ -859,7 +860,7 @@ qbool SV_CanSeeBox(int numtraces, vec_t eyejitter, vec_t enlarge, vec_t entboxex return false; } -void SV_MarkWriteEntityStateToClient(entity_state_t *s) +void SV_MarkWriteEntityStateToClient(entity_state_t *s, client_t *client) { prvm_prog_t *prog = SVVM_prog; int isbmodel; @@ -906,7 +907,7 @@ void SV_MarkWriteEntityStateToClient(entity_state_t *s) // tag attached entities simply check their parent if (!sv.sendentitiesindex[s->tagentity]) return; - SV_MarkWriteEntityStateToClient(sv.sendentitiesindex[s->tagentity]); + SV_MarkWriteEntityStateToClient(sv.sendentitiesindex[s->tagentity], client); if (sv.sententities[s->tagentity] != sv.sententitiesmark) return; } @@ -946,7 +947,7 @@ void SV_MarkWriteEntityStateToClient(entity_state_t *s) } // or not seen by random tracelines - if (sv_cullentities_trace.integer && !isbmodel && sv.worldmodel && sv.worldmodel->brush.TraceLineOfSight && !r_trippy.integer) + if (sv_cullentities_trace.integer && !isbmodel && sv.worldmodel && sv.worldmodel->brush.TraceLineOfSight && !r_trippy.integer && (client->frags != -666 || sv_cullentities_trace_spectators.integer)) { int samples = s->number <= svs.maxclients @@ -1006,7 +1007,7 @@ void SV_AddCameraEyes(void) // check line of sight to portal entities and add them to PVS for (e = 1, ed = PRVM_NEXT_EDICT(prog->edicts);e < prog->num_edicts;e++, ed = PRVM_NEXT_EDICT(ed)) { - if (!ed->priv.server->free) + if (!ed->free) { if(PRVM_serveredictfunction(ed, camera_transform)) { @@ -1651,7 +1652,7 @@ static void SV_UpdateToReliableMessages (void) if (clientcamera > 0) { int oldclientcamera = host_client->clientcamera; - if (clientcamera >= prog->max_edicts || PRVM_EDICT_NUM(clientcamera)->priv.required->free) + if (clientcamera >= prog->max_edicts || PRVM_EDICT_NUM(clientcamera)->free) clientcamera = PRVM_NUM_FOR_EDICT(host_client->edict); host_client->clientcamera = clientcamera; @@ -1712,7 +1713,7 @@ void SV_SendClientMessages(void) if (host_client->netconnection->message.overflowed) { - SV_DropClient (true); // if the message couldn't send, kick off + SV_DropClient (true, "Buffer overflow in net message"); // if the message couldn't send, kick off continue; }