VectorSet(mod->rotatedmaxs, mod->radius, mod->radius, mod->radius);
// all models use memory, so allocate a memory pool
- mod->mempool = Mem_AllocPool(mod->name);
+ mod->mempool = Mem_AllocPool(mod->name, 0, NULL);
// all models load textures, so allocate a texture pool
if (cls.state != ca_dedicated)
mod->texturepool = R_AllocTexturePool();
Con_Print("usage: modelprecache <filename>\n");
}
+int Mod_BuildVertexRemapTableFromElements(int numelements, const int *elements, int numvertices, int *remapvertices)
+{
+ int i, count;
+ qbyte *used;
+ used = Mem_Alloc(tempmempool, numvertices);
+ memset(used, 0, numvertices);
+ for (i = 0;i < numelements;i++)
+ used[elements[i]] = 1;
+ for (i = 0, count = 0;i < numvertices;i++)
+ remapvertices[i] = used[i] ? count++ : -1;
+ Mem_Free(used);
+ return count;
+}
+
#if 1
// fast way, using an edge hash
#define TRIANGLEEDGEHASH 1024
int i, words, numtags, line, tagsetsused = false, wordsoverflow;
char *text;
const char *data;
- skinfile_t *skinfile, *first = NULL;
+ skinfile_t *skinfile = NULL, *first = NULL;
skinfileitem_t *skinfileitem;
char word[10][MAX_QPATH];
overridetagnameset_t tagsets[MAX_SKINS];
for (i = 0;i < MAX_SKINS && (data = text = FS_LoadFile(va("%s_%i.skin", loadmodel->name, i), tempmempool, true));i++)
{
numtags = 0;
- skinfile = Mem_Alloc(tempmempool, sizeof(skinfile_t));
- skinfile->next = first;
- first = skinfile;
+
+ // If it's the first file we parse
+ if (skinfile == NULL)
+ {
+ skinfile = Mem_Alloc(tempmempool, sizeof(skinfile_t));
+ first = skinfile;
+ }
+ else
+ {
+ skinfile->next = Mem_Alloc(tempmempool, sizeof(skinfile_t));
+ skinfile = skinfile->next;
+ }
+ skinfile->next = NULL;
+
for(line = 0;;line++)
{
// parse line