mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2025-02-12 07:04:15 +00:00
maps: make visibility entity optional
Based on q2pro. Checked with n64jam_chnuckierdbeer map from https://www.moddb.com/games/quake-2/addons/quake-2-re-release-n64-sp-map-jam
This commit is contained in:
parent
4025b1aa46
commit
9079f610d0
6 changed files with 77 additions and 9 deletions
|
@ -65,11 +65,23 @@ Mod_HasFreeSpace(void)
|
|||
const byte *
|
||||
Mod_ClusterPVS(int cluster, const model_t *model)
|
||||
{
|
||||
if ((cluster == -1) || !model->vis)
|
||||
if (!model->vis)
|
||||
{
|
||||
memset(mod_novis, 0xFF, sizeof(mod_novis));
|
||||
return mod_novis;
|
||||
}
|
||||
|
||||
if (cluster == -1)
|
||||
{
|
||||
memset(mod_novis, 0, sizeof(mod_novis));
|
||||
return mod_novis;
|
||||
}
|
||||
|
||||
if (cluster < 0 || cluster >= model->numvisibility)
|
||||
{
|
||||
Com_Error(ERR_DROP, "%s: bad cluster", __func__);
|
||||
}
|
||||
|
||||
return Mod_DecompressVis((byte *)model->vis +
|
||||
model->vis->bitofs[cluster][DVIS_PVS],
|
||||
(byte *)model->vis + model->numvisibility,
|
||||
|
|
|
@ -66,11 +66,23 @@ Mod_HasFreeSpace(void)
|
|||
const byte *
|
||||
GL3_Mod_ClusterPVS(int cluster, const gl3model_t *model)
|
||||
{
|
||||
if ((cluster == -1) || !model->vis)
|
||||
if (!model->vis)
|
||||
{
|
||||
memset(mod_novis, 0xFF, sizeof(mod_novis));
|
||||
return mod_novis;
|
||||
}
|
||||
|
||||
if (cluster == -1)
|
||||
{
|
||||
memset(mod_novis, 0, sizeof(mod_novis));
|
||||
return mod_novis;
|
||||
}
|
||||
|
||||
if (cluster < 0 || cluster >= model->numvisibility)
|
||||
{
|
||||
Com_Error(ERR_DROP, "%s: bad cluster", __func__);
|
||||
}
|
||||
|
||||
return Mod_DecompressVis((byte *)model->vis +
|
||||
model->vis->bitofs[cluster][DVIS_PVS],
|
||||
(byte *)model->vis + model->numvisibility,
|
||||
|
|
|
@ -66,11 +66,23 @@ Mod_HasFreeSpace(void)
|
|||
const byte *
|
||||
GL4_Mod_ClusterPVS(int cluster, const gl4model_t *model)
|
||||
{
|
||||
if ((cluster == -1) || !model->vis)
|
||||
if (!model->vis)
|
||||
{
|
||||
memset(mod_novis, 0xFF, sizeof(mod_novis));
|
||||
return mod_novis;
|
||||
}
|
||||
|
||||
if (cluster == -1)
|
||||
{
|
||||
memset(mod_novis, 0, sizeof(mod_novis));
|
||||
return mod_novis;
|
||||
}
|
||||
|
||||
if (cluster < 0 || cluster >= model->numvisibility)
|
||||
{
|
||||
Com_Error(ERR_DROP, "%s: bad cluster", __func__);
|
||||
}
|
||||
|
||||
return Mod_DecompressVis((byte *)model->vis +
|
||||
model->vis->bitofs[cluster][DVIS_PVS],
|
||||
(byte *)model->vis + model->numvisibility,
|
||||
|
|
|
@ -69,11 +69,23 @@ Mod_HasFreeSpace(void)
|
|||
const byte *
|
||||
Mod_ClusterPVS(int cluster, const model_t *model)
|
||||
{
|
||||
if ((cluster == -1) || !model->vis)
|
||||
if (!model->vis)
|
||||
{
|
||||
memset(mod_novis, 0xFF, sizeof(mod_novis));
|
||||
return mod_novis;
|
||||
}
|
||||
|
||||
if (cluster == -1)
|
||||
{
|
||||
memset(mod_novis, 0, sizeof(mod_novis));
|
||||
return mod_novis;
|
||||
}
|
||||
|
||||
if (cluster < 0 || cluster >= model->numvisibility)
|
||||
{
|
||||
Com_Error(ERR_DROP, "%s: bad cluster", __func__);
|
||||
}
|
||||
|
||||
return Mod_DecompressVis((byte *)model->vis +
|
||||
model->vis->bitofs[cluster][DVIS_PVS],
|
||||
(byte *)model->vis + model->numvisibility,
|
||||
|
|
|
@ -39,18 +39,29 @@ int registration_sequence;
|
|||
const byte *
|
||||
Mod_ClusterPVS(int cluster, const model_t *model)
|
||||
{
|
||||
if ((cluster == -1) || !model->vis)
|
||||
if (!model->vis)
|
||||
{
|
||||
memset(mod_novis, 0xFF, sizeof(mod_novis));
|
||||
return mod_novis;
|
||||
}
|
||||
|
||||
if (cluster == -1)
|
||||
{
|
||||
memset(mod_novis, 0, sizeof(mod_novis));
|
||||
return mod_novis;
|
||||
}
|
||||
|
||||
if (cluster < 0 || cluster >= model->numvisibility)
|
||||
{
|
||||
Com_Error(ERR_DROP, "%s: bad cluster", __func__);
|
||||
}
|
||||
|
||||
return Mod_DecompressVis((byte *)model->vis +
|
||||
model->vis->bitofs[cluster][DVIS_PVS],
|
||||
(byte *)model->vis + model->numvisibility,
|
||||
(model->vis->numclusters + 7) >> 3);
|
||||
}
|
||||
|
||||
|
||||
//===============================================================================
|
||||
|
||||
static void
|
||||
|
|
|
@ -1851,11 +1851,11 @@ CM_LoadCachedMap(const char *name, model_t *mod)
|
|||
|
||||
if (!mod->map_vis)
|
||||
{
|
||||
Com_Error(ERR_DROP, "%s: Map %s has no visual clusters.",
|
||||
Com_Printf("%s: Map %s has no visual clusters.",
|
||||
__func__, name);
|
||||
}
|
||||
|
||||
if (mod->numclusters != mod->map_vis->numclusters)
|
||||
if (mod->map_vis && mod->numclusters != mod->map_vis->numclusters)
|
||||
{
|
||||
Com_Error(ERR_DROP, "%s: Map %s has incorrect number of clusters %d != %d",
|
||||
__func__, name, mod->numclusters, mod->map_vis->numclusters);
|
||||
|
@ -2112,12 +2112,21 @@ CM_DecompressVis(byte *in, byte *out)
|
|||
byte *
|
||||
CM_ClusterPVS(int cluster)
|
||||
{
|
||||
if (cluster == -1 || !cmod->map_vis)
|
||||
if (!cmod->map_vis)
|
||||
{
|
||||
memset(pvsrow, 0xFF, (cmod->numclusters + 7) >> 3);
|
||||
}
|
||||
else if (cluster == -1)
|
||||
{
|
||||
memset(pvsrow, 0, (cmod->numclusters + 7) >> 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cluster < 0 || cluster >= cmod->numclusters)
|
||||
{
|
||||
Com_Error(ERR_DROP, "%s: bad cluster", __func__);
|
||||
}
|
||||
|
||||
CM_DecompressVis((byte *)cmod->map_vis +
|
||||
cmod->map_vis->bitofs[cluster][DVIS_PVS], pvsrow);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue