- dspriteframe_t *pinframe;
- mspriteframe_t *pspriteframe;
- float dist;
- int i, width, height, size, origin[2];
- char name[256], tempname[256];
- byte *pixbuf, *pixel, *inpixel;
-
- pinframe = (dspriteframe_t *)pin;
-
- origin[0] = LittleLong (pinframe->origin[0]);
- origin[1] = LittleLong (pinframe->origin[1]);
- width = LittleLong (pinframe->width);
- height = LittleLong (pinframe->height);
- size = width * height * bytesperpixel;
-
- pspriteframe = frame;
-
- memset (pspriteframe, 0, sizeof (mspriteframe_t));
-
- pspriteframe->left = origin[0];
- pspriteframe->right = origin[0] + width;
- pspriteframe->up = origin[1];
- pspriteframe->down = origin[1] - height;
-
- dist = pspriteframe->left*pspriteframe->left+pspriteframe->up*pspriteframe->up;
- if (*modelradius < dist)
- *modelradius = dist;
- dist = pspriteframe->right*pspriteframe->right+pspriteframe->down*pspriteframe->down;
- if (*modelradius < dist)
- *modelradius = dist;
-
- Mod_Sprite_StripExtension(loadmodel->name, tempname);
- sprintf (name, "%s_%i", tempname, framenum);
- pspriteframe->texture = loadtextureimagewithmask(name, 0, 0, false, r_mipsprites.value, true);
- pspriteframe->fogtexture = image_masktex;
-
- pixbuf = qmalloc(width*height*4);
-
- inpixel = (byte *)(pinframe + 1);
- pixel = pixbuf;
- if (bytesperpixel == 1)
- {
- for (i = 0;i < width * height;i++)
- {
- *pixel++ = palette[inpixel[i]*4+0];
- *pixel++ = palette[inpixel[i]*4+1];
- *pixel++ = palette[inpixel[i]*4+2];
- *pixel++ = palette[inpixel[i]*4+3];
- }
- }
- else
- memcpy(pixel, inpixel, width*height*4);
-
- if (!pspriteframe->texture)
- {
- pspriteframe->texture = R_LoadTexture (name, width, height, pixbuf, TEXF_ALPHA | TEXF_RGBA | (r_mipsprites.value ? TEXF_MIPMAP : 0) | TEXF_PRECACHE);
- // make fog version (just alpha)
- pixel = pixbuf;
- for (i = 0;i < width*height;i++)
- {
- *pixel++ = 255;
- *pixel++ = 255;
- *pixel++ = 255;
- pixel++;
- }
- sprintf (name, "%s_%ifog", loadmodel->name, framenum);
- pspriteframe->fogtexture = R_LoadTexture (name, width, height, pixbuf, TEXF_ALPHA | TEXF_RGBA | (r_mipsprites.value ? TEXF_MIPMAP : 0) | TEXF_PRECACHE);
- }
-
- qfree(pixbuf);
-
- return (void *)((byte *)pinframe + sizeof (dspriteframe_t) + size);
+ if (!skinframe)
+ skinframe = R_SkinFrame_LoadMissing();
+ texture->offsetmapping = OFFSETMAPPING_OFF;
+ texture->offsetscale = 1;
+ texture->offsetbias = 0;
+ texture->specularscalemod = 1;
+ texture->specularpowermod = 1;
+ texture->basematerialflags = MATERIALFLAG_WALL;
+ texture->basealpha = 1.0f;
+ if (fullbright)
+ texture->basematerialflags |= MATERIALFLAG_FULLBRIGHT;
+ if (additive)
+ texture->basematerialflags |= MATERIALFLAG_ADD | MATERIALFLAG_BLENDED | MATERIALFLAG_NOSHADOW;
+ else if (skinframe->hasalpha)
+ texture->basematerialflags |= MATERIALFLAG_ALPHA | MATERIALFLAG_BLENDED | MATERIALFLAG_NOSHADOW;
+ texture->currentmaterialflags = texture->basematerialflags;
+ texture->numskinframes = 1;
+ texture->currentskinframe = texture->skinframes[0] = skinframe;
+ texture->surfaceflags = 0;
+ texture->supercontents = SUPERCONTENTS_SOLID;
+ if (!(texture->basematerialflags & MATERIALFLAG_BLENDED))
+ texture->supercontents |= SUPERCONTENTS_OPAQUE;
+ texture->transparentsort = TRANSPARENTSORT_DISTANCE;
+ // WHEN ADDING DEFAULTS HERE, REMEMBER TO PUT DEFAULTS IN ALL LOADERS
+ // JUST GREP FOR "specularscalemod = 1".