mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-04-25 02:52:06 +00:00
Cache the max_edicts value in the progs struct.
Makes checks a little easier.
This commit is contained in:
parent
0aac004c98
commit
ce16750b04
3 changed files with 3 additions and 2 deletions
|
@ -1592,6 +1592,7 @@ struct progs_s {
|
||||||
/// \name edicts
|
/// \name edicts
|
||||||
//@{
|
//@{
|
||||||
edict_t **edicts;
|
edict_t **edicts;
|
||||||
|
int max_edicts;
|
||||||
int *num_edicts;
|
int *num_edicts;
|
||||||
int *reserved_edicts; ///< alloc will start at reserved_edicts+1
|
int *reserved_edicts; ///< alloc will start at reserved_edicts+1
|
||||||
void (*unlink) (edict_t *ent);
|
void (*unlink) (edict_t *ent);
|
||||||
|
|
|
@ -85,7 +85,6 @@ ED_Alloc (progs_t *pr)
|
||||||
pr_int_t i;
|
pr_int_t i;
|
||||||
edict_t *e;
|
edict_t *e;
|
||||||
int start = pr->reserved_edicts ? *pr->reserved_edicts : 0;
|
int start = pr->reserved_edicts ? *pr->reserved_edicts : 0;
|
||||||
pr_int_t max_edicts = pr->pr_edictareasize / pr->pr_edict_size;
|
|
||||||
|
|
||||||
for (i = start + 1; i < *pr->num_edicts; i++) {
|
for (i = start + 1; i < *pr->num_edicts; i++) {
|
||||||
e = EDICT_NUM (pr, i);
|
e = EDICT_NUM (pr, i);
|
||||||
|
@ -99,7 +98,7 @@ ED_Alloc (progs_t *pr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i == max_edicts) {
|
if (i == pr->max_edicts) {
|
||||||
Sys_Printf ("WARNING: ED_Alloc: no free edicts\n");
|
Sys_Printf ("WARNING: ED_Alloc: no free edicts\n");
|
||||||
i--; // step on whatever is the last edict
|
i--; // step on whatever is the last edict
|
||||||
e = EDICT_NUM (pr, i);
|
e = EDICT_NUM (pr, i);
|
||||||
|
|
|
@ -184,6 +184,7 @@ PR_LoadProgsFile (progs_t *pr, QFile *file, int size, int max_edicts, int zone)
|
||||||
pr->pr_edict_size += sizeof (void*) - 1;
|
pr->pr_edict_size += sizeof (void*) - 1;
|
||||||
pr->pr_edict_size &= ~(sizeof (void*) - 1);
|
pr->pr_edict_size &= ~(sizeof (void*) - 1);
|
||||||
pr->pr_edictareasize = max_edicts * pr->pr_edict_size;
|
pr->pr_edictareasize = max_edicts * pr->pr_edict_size;
|
||||||
|
pr->max_edicts = max_edicts;
|
||||||
|
|
||||||
mem_size = pr->progs_size + pr->zone_size + pr->pr_edictareasize;
|
mem_size = pr->progs_size + pr->zone_size + pr->pr_edictareasize;
|
||||||
pr->progs = pr->allocate_progs_mem (pr, mem_size + 1);
|
pr->progs = pr->allocate_progs_mem (pr, mem_size + 1);
|
||||||
|
|
Loading…
Reference in a new issue