diff options
author | Andrey Nazarov <skuller@skuller.net> | 2008-08-16 10:19:42 +0000 |
---|---|---|
committer | Andrey Nazarov <skuller@skuller.net> | 2008-08-16 10:19:42 +0000 |
commit | 1526e22e4ff29153e9c127081e8ea8d9e2f33b8c (patch) | |
tree | b361766433d4a7b4a111865afd52803e2bbf7754 /source/sw_sprite.c | |
parent | e826e5f176f21cd18b3bbc22887a266835ada57c (diff) |
Split some monolithic include files into smaller ones.
Use single BSP models cache for refresh and collision subsystems.
Refresh libraries may not longer be dynamically loaded.
Made gi.TagMalloc use separate tag namespace to avoid
conflicts with engine reserverd tags.
Fixed listing order of MVD channels in chooser menu.
A lot of misc changes... MSVC build is definitely broken now.
Diffstat (limited to 'source/sw_sprite.c')
-rw-r--r-- | source/sw_sprite.c | 47 |
1 files changed, 17 insertions, 30 deletions
diff --git a/source/sw_sprite.c b/source/sw_sprite.c index cac2e37..978381e 100644 --- a/source/sw_sprite.c +++ b/source/sw_sprite.c @@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. extern polydesc_t r_polydesc; -void R_BuildPolygonFromSurface(msurface_t *fa); +void R_BuildPolygonFromSurface(mface_t *fa); void R_PolygonCalculateGradients (void); extern void R_PolyChooseSpanletRoutine( float alpha, qboolean isturbulent ); @@ -41,27 +41,14 @@ void R_DrawSprite (void) { vec5_t *pverts; vec3_t left, up, right, down; - dsprite_t *s_psprite; - dsprframe_t *s_psprframe; - - - s_psprite = (dsprite_t *)currentmodel->pool.base; -#if 0 - if (currententity->frame >= s_psprite->numframes - || currententity->frame < 0) - { - Com_Printf( "No such sprite frame %i\n", - currententity->frame); - currententity->frame = 0; - } -#endif - currententity->frame %= s_psprite->numframes; - - s_psprframe = &s_psprite->frames[currententity->frame]; - - r_polydesc.pixels = currentmodel->skins[currententity->frame]->pixels[0]; - r_polydesc.pixel_width = s_psprframe->width; - r_polydesc.pixel_height = s_psprframe->height; + mspriteframe_t *frame; + + frame = ¤tmodel->spriteframes[ + currententity->frame % currentmodel->numframes]; + + r_polydesc.pixels = frame->image->pixels[0]; + r_polydesc.pixel_width = frame->width; + r_polydesc.pixel_height = frame->height; r_polydesc.dist = 0; // generate the sprite's axes, completely parallel to the viewplane. @@ -71,13 +58,13 @@ void R_DrawSprite (void) // build the sprite poster in worldspace VectorScale (r_polydesc.vright, - s_psprframe->width - s_psprframe->origin_x, right); + frame->width - frame->origin_x, right); VectorScale (r_polydesc.vup, - s_psprframe->height - s_psprframe->origin_y, up); + frame->height - frame->origin_y, up); VectorScale (r_polydesc.vright, - -s_psprframe->origin_x, left); + -frame->origin_x, left); VectorScale (r_polydesc.vup, - -s_psprframe->origin_y, down); + -frame->origin_y, down); // invert UP vector for sprites VectorNegate( r_polydesc.vup, r_polydesc.vup ); @@ -93,20 +80,20 @@ void R_DrawSprite (void) pverts[1][0] = r_entorigin[0] + up[0] + right[0]; pverts[1][1] = r_entorigin[1] + up[1] + right[1]; pverts[1][2] = r_entorigin[2] + up[2] + right[2]; - pverts[1][3] = s_psprframe->width; + pverts[1][3] = frame->width; pverts[1][4] = 0; pverts[2][0] = r_entorigin[0] + down[0] + right[0]; pverts[2][1] = r_entorigin[1] + down[1] + right[1]; pverts[2][2] = r_entorigin[2] + down[2] + right[2]; - pverts[2][3] = s_psprframe->width; - pverts[2][4] = s_psprframe->height; + pverts[2][3] = frame->width; + pverts[2][4] = frame->height; pverts[3][0] = r_entorigin[0] + down[0] + left[0]; pverts[3][1] = r_entorigin[1] + down[1] + left[1]; pverts[3][2] = r_entorigin[2] + down[2] + left[2]; pverts[3][3] = 0; - pverts[3][4] = s_psprframe->height; + pverts[3][4] = frame->height; r_polydesc.nump = 4; r_polydesc.s_offset = ( r_polydesc.pixel_width >> 1); |