turns out the sprite models are /not/ relocatable, so back out that change

in favor of cleaning up the accessors
This commit is contained in:
Bill Currie 2001-08-31 17:33:25 +00:00
parent 896d304ac9
commit ea614fc2c6
5 changed files with 17 additions and 21 deletions

View file

@ -49,7 +49,7 @@
#include "QF/vfs.h"
void Mod_LoadAliasModel (model_t *mod, void *buf, cache_allocator_t allocator);
void Mod_LoadSpriteModel (model_t *mod, void *buf, cache_allocator_t allocator);
void Mod_LoadSpriteModel (model_t *mod, void *buf);
void Mod_LoadBrushModel (model_t *mod, void *buf);
model_t *Mod_RealLoadModel (model_t *mod, qboolean crash, cache_allocator_t allocator);
void Mod_CallbackLoad (void *object, cache_allocator_t allocator);
@ -160,14 +160,12 @@ model_t *
Mod_LoadModel (model_t *mod, qboolean crash)
{
if (!mod->needload) {
if (mod->type == mod_alias || mod->type == mod_sprite) {
if (mod->type == mod_alias) {
if (Cache_Check (&mod->cache))
return mod;
} else
return mod; // not cached at all
}
if (Cache_Check (&mod->cache))
Cache_Free (&mod->cache);
return Mod_RealLoadModel (mod, crash, Cache_Alloc);
}
@ -203,7 +201,7 @@ Mod_RealLoadModel (model_t *mod, qboolean crash, cache_allocator_t allocator)
break;
case IDSPRITEHEADER:
Mod_LoadSpriteModel (mod, buf, allocator);
Mod_LoadSpriteModel (mod, buf);
break;
default:
@ -222,8 +220,8 @@ Mod_RealLoadModel (model_t *mod, qboolean crash, cache_allocator_t allocator)
void
Mod_CallbackLoad (void *object, cache_allocator_t allocator)
{
if (((model_t *)object)->type == mod_brush)
Sys_Error ("Mod_CallbackLoad for mod_brush not yet supported. FIXME!\n");
if (((model_t *)object)->type != mod_alias)
Sys_Error ("Mod_CallbackLoad for non-alias model? FIXME!\n");
// FIXME: do we want crash set to true?
Mod_RealLoadModel (object, true, allocator);
}
@ -265,6 +263,6 @@ Mod_Print (void)
Con_Printf ("Cached models:\n");
for (i = 0, mod = mod_known; i < mod_numknown; i++, mod++) {
Con_Printf ("%8p : %s\n", Cache_Check (&mod->cache), mod->name);
Con_Printf ("%8p : %s\n", mod->cache.data, mod->name);
}
}

View file

@ -90,7 +90,7 @@ Mod_LoadSpriteGroup (void *pin, mspriteframe_t **ppframe, int framenum)
}
void
Mod_LoadSpriteModel (model_t *mod, void *buffer, cache_allocator_t allocator)
Mod_LoadSpriteModel (model_t *mod, void *buffer)
{
int i;
int version;
@ -111,7 +111,9 @@ Mod_LoadSpriteModel (model_t *mod, void *buffer, cache_allocator_t allocator)
size = field_offset (msprite_t, frames[numframes]);
psprite = allocator (&mod->cache, size, loadname);
psprite = Hunk_AllocName (size, loadname);
mod->cache.data = psprite;
psprite->type = LittleLong (pin->type);
psprite->maxwidth = LittleLong (pin->width);

View file

@ -133,13 +133,15 @@ R_RotateForEntity (entity_t *e)
}
static mspriteframe_t *
R_GetSpriteFrame (entity_t *currententity, msprite_t *psprite)
R_GetSpriteFrame (entity_t *currententity)
{
msprite_t *psprite;
mspritegroup_t *pspritegroup;
mspriteframe_t *pspriteframe;
int i, numframes, frame;
float *pintervals, fullinterval, targettime, time;
psprite = currententity->model->cache.data;
frame = currententity->frame;
if ((frame >= psprite->numframes) || (frame < 0)) {
@ -184,8 +186,8 @@ R_DrawSpriteModel (entity_t *e)
// don't even bother culling, because it's just a single
// polygon without a surface cache
psprite = Cache_Get (&currententity->model->cache);
frame = R_GetSpriteFrame (e, psprite);
frame = R_GetSpriteFrame (e);
psprite = currententity->model->cache.data;
if (psprite->type == SPR_ORIENTED) { // bullet marks on walls
AngleVectors (currententity->angles, v_forward, v_right, v_up);
@ -224,8 +226,6 @@ R_DrawSpriteModel (entity_t *e)
qfglEnd ();
qfglDisable (GL_ALPHA_TEST);
Cache_Release (&currententity->model->cache);
}
/*

View file

@ -282,7 +282,7 @@ R_DrawSprite (void)
vec3_t tvec;
float dot, angle, sr, cr;
psprite = Cache_Get (&currententity->model->cache);
psprite = currententity->model->cache.data;
r_spritedesc.pspriteframe = R_GetSpriteframe (psprite);
@ -378,6 +378,4 @@ R_DrawSprite (void)
R_RotateSprite (psprite->beamlength);
R_SetupAndDrawSprite ();
Cache_Release (&currententity->model->cache);
}

View file

@ -282,7 +282,7 @@ R_DrawSprite (void)
vec3_t tvec;
float dot, angle, sr, cr;
psprite = Cache_Get (&currententity->model->cache);
psprite = currententity->model->cache.data;
r_spritedesc.pspriteframe = R_GetSpriteframe (psprite);
@ -378,6 +378,4 @@ R_DrawSprite (void)
R_RotateSprite (psprite->beamlength);
R_SetupAndDrawSprite ();
Cache_Release (&currententity->model->cache);
}