X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=r_sprites.c;h=bf5a8f9ff6e4bd1c95412b1016a9362a6730a776;hb=2cd6ce23bdc219b0dc059e27f8e803ffeda698f3;hp=444d1668d0190715ef83cd3a461e8b4eb71ef78e;hpb=7d115bb0e31921e2e0519a39637985efef1391f4;p=xonotic%2Fdarkplaces.git diff --git a/r_sprites.c b/r_sprites.c index 444d1668..bf5a8f9f 100644 --- a/r_sprites.c +++ b/r_sprites.c @@ -208,6 +208,9 @@ void R_Model_Sprite_Draw_TransparentCallback(const entity_render_t *ent, const r int edge = 0; float dir_angle = 0.0f; + // R_GetCurrentTexture needs this + rsurface.entity = (entity_render_t *)ent; + // nudge it toward the view to make sure it isn't in a wall Matrix4x4_ToVectors(&ent->matrix, mforward, mleft, mup, org); VectorSubtract(org, r_refdef.view.forward, org); @@ -355,16 +358,15 @@ void R_Model_Sprite_Draw_TransparentCallback(const entity_render_t *ent, const r R_Mesh_Matrix(&identitymatrix); // LordHavoc: interpolated sprite rendering - for (i = 0;i < 4;i++) + for (i = 0;i < MAX_FRAMEBLENDS;i++) { if (ent->frameblend[i].lerp >= 0.01f) { - mspriteframe_t *frame = model->sprite.sprdata_frames + ent->frameblend[i].frame; - texture_t *texture = model->data_textures + ent->frameblend[i].frame; + mspriteframe_t *frame = model->sprite.sprdata_frames + ent->frameblend[i].subframe; + texture_t *texture = R_GetCurrentTexture(model->data_textures + ent->frameblend[i].subframe); #if 0 vec3_t o, l, u; #endif - R_UpdateTextureInfo(ent, texture); // SPR_LABEL should not use depth test AT ALL if(model->sprite.sprnum_type == SPR_LABEL || model->sprite.sprnum_type == SPR_LABEL_SCALE) @@ -396,12 +398,14 @@ void R_Model_Sprite_Draw_TransparentCallback(const entity_render_t *ent, const r } } } + + rsurface.entity = NULL; } void R_Model_Sprite_Draw(entity_render_t *ent) { vec3_t org; - if (ent->frameblend[0].frame < 0) + if (ent->frameblend[0].subframe < 0) return; Matrix4x4_OriginFromMatrix(&ent->matrix, org);