slaying hardcoded mdl vertex and triangle limit

This commit is contained in:
Seth Galbraith 2002-01-04 07:40:00 +00:00
parent 36bb62c3c5
commit 6ec47e6be6
2 changed files with 21 additions and 8 deletions

View file

@ -341,12 +341,10 @@ typedef struct {
maliasframedesc_t frames[1];
} aliashdr_t;
#define MAXALIASVERTS 1024
#define MAXALIASFRAMES 256
#define MAXALIASTRIS 2048
extern aliashdr_t *pheader;
extern stvert_t stverts[MAXALIASVERTS];
extern mtriangle_t triangles[MAXALIASTRIS];
extern stvert_t *stverts;
extern mtriangle_t *triangles;
extern trivertx_t *poseverts[MAXALIASFRAMES];
//===================================================================

View file

@ -58,8 +58,10 @@ static const char rcsid[] =
aliashdr_t *pheader;
stvert_t stverts[MAXALIASVERTS];
mtriangle_t triangles[MAXALIASTRIS];
stvert_t *stverts;
mtriangle_t *triangles;
int stverts_size = 0;
int triangles_size = 0;
// a pose is a single set of vertexes. a frame may be an animating
// sequence of poses
@ -196,14 +198,27 @@ Mod_LoadAliasModel (model_t *mod, void *buffer, cache_allocator_t allocator)
if (pmodel->numverts <= 0)
Sys_Error ("model %s has no vertices", mod->name);
if (pmodel->numverts > MAXALIASVERTS)
Sys_Error ("model %s has too many vertices", mod->name);
if (pmodel->numverts > stverts_size)
{
stverts = realloc (stverts, pmodel->numverts * sizeof (stvert_t));
if (!stverts)
Sys_Error ("model_alias: out of memory");
stverts_size = pmodel->numverts;
}
pmodel->numtris = LittleLong (pinmodel->numtris);
if (pmodel->numtris <= 0)
Sys_Error ("model %s has no triangles", mod->name);
if (pmodel->numtris > triangles_size)
{
triangles = realloc (triangles, pmodel->numtris * sizeof (mtriangle_t));
if (!triangles)
Sys_Error ("model_alias: out of memory");
triangles_size = pmodel->numtris;
}
pmodel->numframes = LittleLong (pinmodel->numframes);
numframes = pmodel->numframes;
if (numframes < 1)