mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2025-03-10 20:11:42 +00:00
Factor out scale support, add bmodels and sprites
This commit is contained in:
parent
239ec66233
commit
dd8439b767
5 changed files with 18 additions and 26 deletions
|
@ -332,12 +332,15 @@ qboolean R_CullModelForEntity (entity_t *e)
|
||||||
R_RotateForEntity -- johnfitz -- modified to take origin and angles instead of pointer to entity
|
R_RotateForEntity -- johnfitz -- modified to take origin and angles instead of pointer to entity
|
||||||
===============
|
===============
|
||||||
*/
|
*/
|
||||||
void R_RotateForEntity (vec3_t origin, vec3_t angles)
|
void R_RotateForEntity (vec3_t origin, vec3_t angles, unsigned char scale)
|
||||||
{
|
{
|
||||||
|
float scalefactor = ENTSCALE_DECODE(scale);
|
||||||
glTranslatef (origin[0], origin[1], origin[2]);
|
glTranslatef (origin[0], origin[1], origin[2]);
|
||||||
glRotatef (angles[1], 0, 0, 1);
|
glRotatef (angles[1], 0, 0, 1);
|
||||||
glRotatef (-angles[0], 0, 1, 0);
|
glRotatef (-angles[0], 0, 1, 0);
|
||||||
glRotatef (angles[2], 1, 0, 0);
|
glRotatef (angles[2], 1, 0, 0);
|
||||||
|
if (scalefactor != 1.0f)
|
||||||
|
glScalef(scalefactor, scalefactor, scalefactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -345,7 +345,7 @@ void R_MarkSurfaces (void);
|
||||||
qboolean R_CullBox (vec3_t emins, vec3_t emaxs);
|
qboolean R_CullBox (vec3_t emins, vec3_t emaxs);
|
||||||
void R_StoreEfrags (efrag_t **ppefrag);
|
void R_StoreEfrags (efrag_t **ppefrag);
|
||||||
qboolean R_CullModelForEntity (entity_t *e);
|
qboolean R_CullModelForEntity (entity_t *e);
|
||||||
void R_RotateForEntity (vec3_t origin, vec3_t angles);
|
void R_RotateForEntity (vec3_t origin, vec3_t angles, unsigned char scale);
|
||||||
void R_MarkLights (dlight_t *light, int num, mnode_t *node);
|
void R_MarkLights (dlight_t *light, int num, mnode_t *node);
|
||||||
|
|
||||||
void R_InitParticles (void);
|
void R_InitParticles (void);
|
||||||
|
|
|
@ -640,7 +640,6 @@ void R_DrawAliasModel (entity_t *e)
|
||||||
lerpdata_t lerpdata;
|
lerpdata_t lerpdata;
|
||||||
qboolean alphatest = !!(e->model->flags & MF_HOLEY);
|
qboolean alphatest = !!(e->model->flags & MF_HOLEY);
|
||||||
float fovscale = 1.0f;
|
float fovscale = 1.0f;
|
||||||
float scalefactor = 1.0f;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// setup pose/lerp data -- do it first so we don't miss updates due to culling
|
// setup pose/lerp data -- do it first so we don't miss updates due to culling
|
||||||
|
@ -662,12 +661,7 @@ void R_DrawAliasModel (entity_t *e)
|
||||||
fovscale = tan(scr_fov.value * (0.5f * M_PI / 180.f));
|
fovscale = tan(scr_fov.value * (0.5f * M_PI / 180.f));
|
||||||
|
|
||||||
glPushMatrix ();
|
glPushMatrix ();
|
||||||
R_RotateForEntity (lerpdata.origin, lerpdata.angles);
|
R_RotateForEntity (lerpdata.origin, lerpdata.angles, e->scale);
|
||||||
scalefactor = ENTSCALE_DECODE(e->scale);
|
|
||||||
if (scalefactor != 1.0f)
|
|
||||||
{
|
|
||||||
glScalef (scalefactor, scalefactor, scalefactor);
|
|
||||||
}
|
|
||||||
glTranslatef (paliashdr->scale_origin[0], paliashdr->scale_origin[1] * fovscale, paliashdr->scale_origin[2] * fovscale);
|
glTranslatef (paliashdr->scale_origin[0], paliashdr->scale_origin[1] * fovscale, paliashdr->scale_origin[2] * fovscale);
|
||||||
glScalef (paliashdr->scale[0], paliashdr->scale[1] * fovscale, paliashdr->scale[2] * fovscale);
|
glScalef (paliashdr->scale[0], paliashdr->scale[1] * fovscale, paliashdr->scale[2] * fovscale);
|
||||||
|
|
||||||
|
@ -989,7 +983,6 @@ void R_DrawAliasModel_ShowTris (entity_t *e)
|
||||||
{
|
{
|
||||||
aliashdr_t *paliashdr;
|
aliashdr_t *paliashdr;
|
||||||
lerpdata_t lerpdata;
|
lerpdata_t lerpdata;
|
||||||
float scalefactor;
|
|
||||||
|
|
||||||
if (R_CullModelForEntity(e))
|
if (R_CullModelForEntity(e))
|
||||||
return;
|
return;
|
||||||
|
@ -999,12 +992,7 @@ void R_DrawAliasModel_ShowTris (entity_t *e)
|
||||||
R_SetupEntityTransform (e, &lerpdata);
|
R_SetupEntityTransform (e, &lerpdata);
|
||||||
|
|
||||||
glPushMatrix ();
|
glPushMatrix ();
|
||||||
R_RotateForEntity (lerpdata.origin,lerpdata.angles);
|
R_RotateForEntity (lerpdata.origin,lerpdata.angles, e->scale);
|
||||||
scalefactor = ENTSCALE_DECODE(e->scale);
|
|
||||||
if (scalefactor != 1.0f)
|
|
||||||
{
|
|
||||||
glScalef (scalefactor, scalefactor, scalefactor);
|
|
||||||
}
|
|
||||||
glTranslatef (paliashdr->scale_origin[0], paliashdr->scale_origin[1], paliashdr->scale_origin[2]);
|
glTranslatef (paliashdr->scale_origin[0], paliashdr->scale_origin[1], paliashdr->scale_origin[2]);
|
||||||
glScalef (paliashdr->scale[0], paliashdr->scale[1], paliashdr->scale[2]);
|
glScalef (paliashdr->scale[0], paliashdr->scale[1], paliashdr->scale[2]);
|
||||||
|
|
||||||
|
|
|
@ -552,7 +552,7 @@ void R_DrawBrushModel (entity_t *e)
|
||||||
e->origin[1] -= DIST_EPSILON;
|
e->origin[1] -= DIST_EPSILON;
|
||||||
e->origin[2] -= DIST_EPSILON;
|
e->origin[2] -= DIST_EPSILON;
|
||||||
}
|
}
|
||||||
R_RotateForEntity (e->origin, e->angles);
|
R_RotateForEntity (e->origin, e->angles, e->scale);
|
||||||
if (gl_zfix.value)
|
if (gl_zfix.value)
|
||||||
{
|
{
|
||||||
e->origin[0] += DIST_EPSILON;
|
e->origin[0] += DIST_EPSILON;
|
||||||
|
@ -618,7 +618,7 @@ void R_DrawBrushModel_ShowTris (entity_t *e)
|
||||||
|
|
||||||
glPushMatrix ();
|
glPushMatrix ();
|
||||||
e->angles[0] = -e->angles[0]; // stupid quake bug
|
e->angles[0] = -e->angles[0]; // stupid quake bug
|
||||||
R_RotateForEntity (e->origin, e->angles);
|
R_RotateForEntity (e->origin, e->angles, e->scale);
|
||||||
e->angles[0] = -e->angles[0]; // stupid quake bug
|
e->angles[0] = -e->angles[0]; // stupid quake bug
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -86,6 +86,7 @@ void R_DrawSpriteModel (entity_t *e)
|
||||||
mspriteframe_t *frame;
|
mspriteframe_t *frame;
|
||||||
float *s_up, *s_right;
|
float *s_up, *s_right;
|
||||||
float angle, sr, cr;
|
float angle, sr, cr;
|
||||||
|
float scale = ENTSCALE_DECODE(e->scale);
|
||||||
|
|
||||||
frame = R_GetSpriteFrame (e);
|
frame = R_GetSpriteFrame (e);
|
||||||
psprite = (msprite_t *) currententity->model->cache.data;
|
psprite = (msprite_t *) currententity->model->cache.data;
|
||||||
|
@ -152,23 +153,23 @@ void R_DrawSpriteModel (entity_t *e)
|
||||||
glBegin (GL_TRIANGLE_FAN); //was GL_QUADS, but changed to support r_showtris
|
glBegin (GL_TRIANGLE_FAN); //was GL_QUADS, but changed to support r_showtris
|
||||||
|
|
||||||
glTexCoord2f (0, frame->tmax);
|
glTexCoord2f (0, frame->tmax);
|
||||||
VectorMA (e->origin, frame->down, s_up, point);
|
VectorMA (e->origin, frame->down * scale, s_up, point);
|
||||||
VectorMA (point, frame->left, s_right, point);
|
VectorMA (point, frame->left * scale, s_right, point);
|
||||||
glVertex3fv (point);
|
glVertex3fv (point);
|
||||||
|
|
||||||
glTexCoord2f (0, 0);
|
glTexCoord2f (0, 0);
|
||||||
VectorMA (e->origin, frame->up, s_up, point);
|
VectorMA (e->origin, frame->up * scale, s_up, point);
|
||||||
VectorMA (point, frame->left, s_right, point);
|
VectorMA (point, frame->left * scale, s_right, point);
|
||||||
glVertex3fv (point);
|
glVertex3fv (point);
|
||||||
|
|
||||||
glTexCoord2f (frame->smax, 0);
|
glTexCoord2f (frame->smax, 0);
|
||||||
VectorMA (e->origin, frame->up, s_up, point);
|
VectorMA (e->origin, frame->up * scale, s_up, point);
|
||||||
VectorMA (point, frame->right, s_right, point);
|
VectorMA (point, frame->right * scale, s_right, point);
|
||||||
glVertex3fv (point);
|
glVertex3fv (point);
|
||||||
|
|
||||||
glTexCoord2f (frame->smax, frame->tmax);
|
glTexCoord2f (frame->smax, frame->tmax);
|
||||||
VectorMA (e->origin, frame->down, s_up, point);
|
VectorMA (e->origin, frame->down * scale, s_up, point);
|
||||||
VectorMA (point, frame->right, s_right, point);
|
VectorMA (point, frame->right * scale, s_right, point);
|
||||||
glVertex3fv (point);
|
glVertex3fv (point);
|
||||||
|
|
||||||
glEnd ();
|
glEnd ();
|
||||||
|
|
Loading…
Reference in a new issue