diff --git a/engine/client/r_surf.c b/engine/client/r_surf.c index cd55e5984..37726c53e 100644 --- a/engine/client/r_surf.c +++ b/engine/client/r_surf.c @@ -1369,7 +1369,7 @@ static qbyte *R_MarkLeafSurfaces_Q1 (void) vis = R_CalcVis_Q1(); - for (i=0 ; inumleafs ; i++) + for (i=0 ; inumvisleafs ; i++) { if (vis[i>>3] & (1<<(i&7))) { diff --git a/engine/client/renderer.c b/engine/client/renderer.c index 4f9188a4f..7db96b821 100644 --- a/engine/client/renderer.c +++ b/engine/client/renderer.c @@ -2030,7 +2030,7 @@ qbyte *R_CalcVis_Q1 (void) int c; Q1BSP_LeafPVS (cl.worldmodel, r_viewleaf2, curframevis, sizeof(curframevis)); vis = Q1BSP_LeafPVS (cl.worldmodel, r_viewleaf, NULL, sizeof(curframevis)); - c = (cl.worldmodel->numleafs+31)/32; + c = (cl.worldmodel->numvisleafs+31)/32; for (i=0 ; inumleafs+7)>>3); + memset (fatvis[portal], 0xff, (cl.worldmodel->numvisleafs+7)>>3); r_oldviewleaf = NULL; r_oldviewleaf2 = NULL; @@ -2090,7 +2090,7 @@ qbyte *R_MarkLeaves_Q1 (void) int c; Q1BSP_LeafPVS (cl.worldmodel, r_viewleaf2, fatvis[portal], sizeof(fatvis[portal])); vis = cvis[portal] = Q1BSP_LeafPVS (cl.worldmodel, r_viewleaf, NULL, 0); - c = (cl.worldmodel->numleafs+31)/32; + c = (cl.worldmodel->numvisleafs+31)/32; for (i=0 ; inumleafs ; i++) + for (i=0 ; inumvisleafs ; i++) { if (vis[i>>3] & (1<<(i&7))) { diff --git a/engine/common/q1bsp.c b/engine/common/q1bsp.c index 63d4d36b7..b1f3dd1fc 100644 --- a/engine/common/q1bsp.c +++ b/engine/common/q1bsp.c @@ -1662,7 +1662,7 @@ qbyte *Q1BSP_DecompressVis (qbyte *in, model_t *model, qbyte *decompressed, unsi qbyte *out; int row; - row = (model->numleafs+7)>>3; + row = (model->numvisleafs+7)>>3; out = decompressed; if (buffersize < row) diff --git a/engine/gl/gl_model.c b/engine/gl/gl_model.c index 1fd9e8f6a..b87b304a9 100644 --- a/engine/gl/gl_model.c +++ b/engine/gl/gl_model.c @@ -3337,6 +3337,7 @@ qboolean Mod_LoadLeafs (lump_t *l, int lm) loadmodel->leafs = out; loadmodel->numleafs = count; + loadmodel->numvisleafs = count-1; for ( i=0 ; ileafs = out; loadmodel->numleafs = count; + loadmodel->numvisleafs = count-1; for ( i=0 ; ileafs = out; loadmodel->numleafs = count; + loadmodel->numvisleafs = count-1; for ( i=0 ; inumleafs+7)>>3; + int pvsbytes = (cl.worldmodel->numvisleafs+7)>>3; if (pvsbytes > sizeof(newvis)) pvsbytes = sizeof(newvis); r_refdef.forcevis = true; diff --git a/engine/server/net_preparse.c b/engine/server/net_preparse.c index daf8b6c30..67d606e24 100644 --- a/engine/server/net_preparse.c +++ b/engine/server/net_preparse.c @@ -90,7 +90,7 @@ static void pp_flush(multicast_t to, vec3_t origin, void (*flushfunc)(client_t * else { leafnum = sv.world.worldmodel->funcs.LeafnumForPoint(sv.world.worldmodel, origin); - mask = sv.phs + leafnum * 4*((sv.world.worldmodel->numleafs+31)>>5); + mask = sv.phs + leafnum * 4*((sv.world.worldmodel->numvisleafs+31)>>5); } break; @@ -98,7 +98,7 @@ static void pp_flush(multicast_t to, vec3_t origin, void (*flushfunc)(client_t * reliable = true; // intentional fallthrough case MULTICAST_PVS: leafnum = sv.world.worldmodel->funcs.LeafnumForPoint(sv.world.worldmodel, origin); - mask = sv.pvs + leafnum * 4*((sv.world.worldmodel->numleafs+31)>>5); + mask = sv.pvs + leafnum * 4*((sv.world.worldmodel->numvisleafs+31)>>5); break; default: diff --git a/engine/server/sv_ents.c b/engine/server/sv_ents.c index adfe962ff..ad79dc00e 100644 --- a/engine/server/sv_ents.c +++ b/engine/server/sv_ents.c @@ -3221,7 +3221,7 @@ void SV_Snapshot_BuildQ1(client_t *client, packet_entities_t *pack, pvscamera_t if (sv.phs) { leafnum = sv.world.worldmodel->funcs.LeafnumForPoint(sv.world.worldmodel, host_client->edict->v->origin); - mask = sv.phs + leafnum * 4*((sv.world.worldmodel->numleafs+31)>>5); + mask = sv.phs + leafnum * 4*((sv.world.worldmodel->numvisleafs+31)>>5); leafnum = sv.world.worldmodel->funcs.LeafnumForPoint (sv.world.worldmodel, ent->v->origin)-1; if ( !(mask[leafnum>>3] & (1<<(leafnum&7)) ) ) diff --git a/engine/server/svmodel.c b/engine/server/svmodel.c index 57e97cadb..d1a10b806 100644 --- a/engine/server/svmodel.c +++ b/engine/server/svmodel.c @@ -284,7 +284,7 @@ qbyte *Mod_DecompressVis (qbyte *in, model_t *model, qbyte *decompressed) qbyte *out; int row; - row = (model->numleafs+7)>>3; + row = (model->numvisleafs+7)>>3; out = decompressed; #if 0 @@ -1379,6 +1379,7 @@ qboolean Mod_LoadLeafs (lump_t *l, qboolean lm) loadmodel->leafs = out; loadmodel->numleafs = count; + loadmodel->numvisleafs = count-1; for ( i=0 ; i