dynamically allocate visedicts
parent
dce72d376b
commit
276eae53c6
|
@ -51,6 +51,7 @@ cvar_t cl_minpitch = {"cl_minpitch", "-90", CVAR_ARCHIVE}; //johnfitz -- variab
|
|||
cvar_t cl_maxdlights = {"cl_maxdlights", "128", CVAR_ARCHIVE};
|
||||
cvar_t cl_maxtempents = {"cl_maxtempents", "256", CVAR_ARCHIVE};
|
||||
cvar_t cl_maxbeams = {"cl_maxbeams", "32", CVAR_ARCHIVE};
|
||||
cvar_t cl_maxvisedicts = {"cl_maxvisedicts", "4096", CVAR_ARCHIVE};
|
||||
|
||||
client_static_t cls;
|
||||
client_state_t cl;
|
||||
|
@ -64,8 +65,9 @@ int32_t cl_max_edicts; //johnfitz -- only changes when new map loads
|
|||
dlight_t *cl_dlights;
|
||||
int32_t cl_max_dlights; //johnfitz -- only changes when new map loads
|
||||
|
||||
entity_t **cl_visedicts;
|
||||
int32_t cl_numvisedicts;
|
||||
entity_t *cl_visedicts[MAX_VISEDICTS];
|
||||
int32_t max_visedicts;
|
||||
|
||||
extern cvar_t r_lerpmodels, r_lerpmove; //johnfitz
|
||||
|
||||
|
@ -90,7 +92,7 @@ void CL_ClearState(void)
|
|||
|
||||
//johnfitz -- cl_entities is now dynamically allocated
|
||||
cl_max_edicts = CLAMP(MIN_EDICTS, (int32_t)max_edicts.value, MAX_EDICTS);
|
||||
cl_entities = Hunk_AllocName(cl_max_edicts * sizeof(entity_t), "cl_entities");
|
||||
cl_entities = Hunk_AllocName(cl_max_edicts * sizeof(*cl_entities), "cl_entities");
|
||||
//johnfitz
|
||||
|
||||
cl_max_dlights = CLAMP(MIN_DLIGHTS, (int32_t)cl_maxdlights.value, MAX_DLIGHTS);
|
||||
|
@ -101,6 +103,9 @@ void CL_ClearState(void)
|
|||
|
||||
max_beams = CLAMP(0, (int32_t)cl_maxbeams.value, 32000);
|
||||
cl_beams = Hunk_AllocName(max_beams * sizeof(*cl_beams), "cl_beams");
|
||||
|
||||
max_visedicts = CLAMP(0, (int32_t)cl_maxvisedicts.value, 32000);
|
||||
cl_visedicts = Hunk_AllocName(max_visedicts * sizeof(*cl_visedicts), "cl_visedicts");
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -589,7 +594,7 @@ void CL_RelinkEntities(void)
|
|||
if(i == cl.viewentity && !chase_active.value)
|
||||
continue;
|
||||
|
||||
if(cl_numvisedicts < MAX_VISEDICTS)
|
||||
if(cl_numvisedicts < max_visedicts)
|
||||
{
|
||||
cl_visedicts[cl_numvisedicts] = ent;
|
||||
cl_numvisedicts++;
|
||||
|
@ -641,7 +646,7 @@ int32_t CL_ReadFromServer(void)
|
|||
|
||||
//visedicts
|
||||
if(cl_numvisedicts > 256 && dev_peakstats.visedicts <= 256)
|
||||
Con_DWarning("%" PRIi32 " visedicts exceeds standard limit of 256 (max = %" PRIi32 ").\n", cl_numvisedicts, MAX_VISEDICTS);
|
||||
Con_DWarning("%" PRIi32 " visedicts exceeds standard limit of 256 (max = %" PRIi32 ").\n", cl_numvisedicts, max_visedicts);
|
||||
dev_stats.visedicts = cl_numvisedicts;
|
||||
dev_peakstats.visedicts = q_max(cl_numvisedicts, dev_peakstats.visedicts);
|
||||
|
||||
|
@ -821,6 +826,7 @@ void CL_Init(void)
|
|||
Cvar_RegisterVariable(&cl_maxdlights);
|
||||
Cvar_RegisterVariable(&cl_maxtempents);
|
||||
Cvar_RegisterVariable(&cl_maxbeams);
|
||||
Cvar_RegisterVariable(&cl_maxvisedicts);
|
||||
|
||||
Cmd_AddCommand("entities", CL_PrintEntities_f);
|
||||
Cmd_AddCommand("disconnect", CL_Disconnect_f);
|
||||
|
|
|
@ -272,7 +272,7 @@ entity_t *CL_NewTempEntity(void)
|
|||
{
|
||||
entity_t *ent;
|
||||
|
||||
if(cl_numvisedicts == MAX_VISEDICTS)
|
||||
if(cl_numvisedicts == max_visedicts)
|
||||
return NULL;
|
||||
if(num_temp_entities == max_temp_entities)
|
||||
return NULL;
|
||||
|
|
|
@ -267,15 +267,16 @@ extern cvar_t m_side;
|
|||
|
||||
|
||||
#define MAX_STATIC_ENTITIES 4096 //ericw -- was 512 //johnfitz -- was 128
|
||||
#define MAX_VISEDICTS 4096 // larger, now we support BSP2
|
||||
|
||||
extern client_state_t cl;
|
||||
|
||||
// FIXME, allocate dynamically
|
||||
extern entity_t cl_static_entities[MAX_STATIC_ENTITIES];
|
||||
extern lightstyle_t cl_lightstyle[MAX_LIGHTSTYLES];
|
||||
extern entity_t *cl_visedicts[MAX_VISEDICTS];
|
||||
|
||||
extern entity_t **cl_visedicts;
|
||||
extern int32_t cl_numvisedicts;
|
||||
extern int32_t max_visedicts;
|
||||
|
||||
extern beam_t *cl_beams;
|
||||
extern int32_t max_beams;
|
||||
|
|
|
@ -208,7 +208,7 @@ void R_StoreEfrags(efrag_t **ppefrag)
|
|||
{
|
||||
pent = pefrag->entity;
|
||||
|
||||
if((pent->visframe != r_framecount) && (cl_numvisedicts < MAX_VISEDICTS))
|
||||
if((pent->visframe != r_framecount) && (cl_numvisedicts < max_visedicts))
|
||||
{
|
||||
cl_visedicts[cl_numvisedicts++] = pent;
|
||||
pent->visframe = r_framecount;
|
||||
|
|
Loading…
Reference in New Issue