struct model_s * GL3_RegisterModel(char *name) { gl3model_t *mod; int i; dsprite_t *sprout; dmdl_t *pheader; mod = Mod_ForName(name, false); if (mod) { mod->registration_sequence = registration_sequence; /* register any images used by the models */ if (mod->type == mod_sprite) { sprout = (dsprite_t *)mod->extradata; for (i = 0; i < sprout->numframes; i++) { mod->skins[i] = GL3_FindImage(sprout->frames[i].name, it_sprite); } } else if (mod->type == mod_alias) { pheader = (dmdl_t *)mod->extradata; for (i = 0; i < pheader->num_skins; i++) { mod->skins[i] = GL3_FindImage((char *)pheader + pheader->ofs_skins + i * MAX_SKINNAME, it_skin); } mod->numframes = pheader->num_frames; } else if (mod->type == mod_brush) { for (i = 0; i < mod->numtexinfo; i++) { mod->texinfo[i].image->registration_sequence = registration_sequence; } } } return mod; }
gl3image_t * GL3_RegisterSkin(char *name) { return GL3_FindImage(name, it_skin); }
static void Mod_LoadTexinfo(lump_t *l) { texinfo_t *in; mtexinfo_t *out, *step; int i, j, count; char name[MAX_QPATH]; int next; in = (void *)(mod_base + l->fileofs); if (l->filelen % sizeof(*in)) { ri.Sys_Error(ERR_DROP, "%s: funny lump size in %s", __func__, loadmodel->name); } count = l->filelen / sizeof(*in); out = Hunk_Alloc(count * sizeof(*out)); loadmodel->texinfo = out; loadmodel->numtexinfo = count; for (i = 0; i < count; i++, in++, out++) { for (j = 0; j < 4; j++) { out->vecs[0][j] = LittleFloat(in->vecs[0][j]); out->vecs[1][j] = LittleFloat(in->vecs[1][j]); } out->flags = LittleLong(in->flags); next = LittleLong(in->nexttexinfo); if (next > 0) { out->next = loadmodel->texinfo + next; } else { out->next = NULL; } Com_sprintf(name, sizeof(name), "textures/%s.wal", in->texture); out->image = GL3_FindImage(name, it_wall); if (!out->image) { R_Printf(PRINT_ALL, "Couldn't load %s\n", name); out->image = gl3_notexture; } } /* count animation frames */ for (i = 0; i < count; i++) { out = &loadmodel->texinfo[i]; out->numframes = 1; for (step = out->next; step && step != out; step = step->next) { out->numframes++; } } }