model_t *loadmodel;
char loadname[32]; // for hunk tags
-void Mod_LoadSpriteModel (model_t *mod, void *buffer);
-void Mod_LoadBrushModel (model_t *mod, void *buffer);
-void Mod_LoadAliasModel (model_t *mod, void *buffer);
-void Mod_LoadQ2AliasModel (model_t *mod, void *buffer);
-model_t *Mod_LoadModel (model_t *mod, qboolean crash);
-
-#define MAX_MOD_KNOWN 512
+// LordHavoc: increased from 512 to 2048
+#define MAX_MOD_KNOWN 2048
model_t mod_known[MAX_MOD_KNOWN];
int mod_numknown;
-extern void Mod_BrushInit();
-extern void Mod_AliasInit();
-extern void Mod_SpriteInit();
-
/*
===============
Mod_Init
model_t *mod;
for (i=0 , mod=mod_known ; i<mod_numknown ; i++, mod++)
- if (mod->type != mod_alias)
+ if (!mod->cachesize)
mod->needload = true;
}
mod = Mod_FindName (name);
if (!mod->needload)
- {
- if (mod->type == mod_alias)
+ if (mod->cachesize)
Cache_Check (&mod->cache);
- }
}
/*
{
void *d;
unsigned *buf;
-// byte stackbuf[1024]; // avoid dirtying the cache heap
if (!mod->needload)
{
- if (mod->type == mod_alias)
+ if (mod->cachesize)
{
d = Cache_Check (&mod->cache);
if (d)
return mod; // not cached at all
}
+ Con_DPrintf("loading model %s\n", mod->name);
+
// load the file
buf = (unsigned *)COM_LoadMallocFile (mod->name, false);
-// buf = (unsigned *)COM_LoadStackFile (mod->name, stackbuf, sizeof(stackbuf), false);
if (!buf)
{
if (crash)
}
// allocate a new model
- COM_FileBase (mod->name, loadname);
+// COM_FileBase (mod->name, loadname);
+ strcpy(loadname, mod->name);
loadmodel = mod;
case MD2IDALIASHEADER: // LordHavoc: added Quake2 model support
Mod_LoadQ2AliasModel (mod, buf);
break;
+
+ case (('O'<<24)+('M'<<16)+('Y'<<8)+'Z'):
+ Mod_LoadZymoticModel(mod, buf);
+ break;
case IDSPRITEHEADER:
Mod_LoadSpriteModel (mod, buf);
Mod_LoadBrushModel (mod, buf);
break;
}
- free(buf);
+ qfree(buf);
return mod;
}
Con_Printf ("Cached models:\n");
for (i=0, mod=mod_known ; i < mod_numknown ; i++, mod++)
{
- Con_Printf ("%8p : %s\n",mod->cache.data, mod->name);
+ Con_Printf ("%4iK : %8p : %s\n", (mod->cachesize + 1023) / 1024, mod->cache.data, mod->name);
}
}