diff --git a/include/r_local.h b/include/r_local.h index 83cd00338..34e558c09 100644 --- a/include/r_local.h +++ b/include/r_local.h @@ -165,7 +165,7 @@ maliasframedesc_t *R_AliasGetFramedesc (int framenum, aliashdr_t *hdr); float R_AliasGetLerpedFrames (entity_t *ent, aliashdr_t *hdr); float R_IQMGetLerpedFrames (entity_t *ent, iqm_t *hdr); iqmframe_t *R_IQMBlendFrames (const iqm_t *iqm, int frame1, int frame2, - int blend); + float blend, int extra); float R_EntityBlend (entity_t *ent, int pose, float interval); void R_BeginEdgeFrame (void); void R_ScanEdges (void); diff --git a/libs/video/renderer/glsl/glsl_iqm.c b/libs/video/renderer/glsl/glsl_iqm.c index 482a3b40b..17302d7aa 100644 --- a/libs/video/renderer/glsl/glsl_iqm.c +++ b/libs/video/renderer/glsl/glsl_iqm.c @@ -217,7 +217,7 @@ glsl_R_DrawIQM (void) Mat4Mult (iqm_vp, ent->transform, mvp_mat); blend = R_IQMGetLerpedFrames (ent, iqm); - frame = R_IQMBlendFrames (iqm, ent->pose1, ent->pose2, blend); + frame = R_IQMBlendFrames (iqm, ent->pose1, ent->pose2, blend, 0); qfeglUniform3fv (iqm_shader.ambient.location, 1, ambientcolor); for (i = 0; i < MAX_IQM_LIGHTS; i++) { diff --git a/libs/video/renderer/r_iqm.c b/libs/video/renderer/r_iqm.c index 854a4581d..74edcd8ca 100644 --- a/libs/video/renderer/r_iqm.c +++ b/libs/video/renderer/r_iqm.c @@ -67,12 +67,13 @@ R_IQMGetLerpedFrames (entity_t *ent, iqm_t *iqm) } iqmframe_t * -R_IQMBlendFrames (const iqm_t *iqm, int frame1, int frame2, int blend) +R_IQMBlendFrames (const iqm_t *iqm, int frame1, int frame2, float blend, + int extra) { iqmframe_t *frame; int i; - frame = Hunk_TempAlloc (iqm->num_joints * sizeof (iqmframe_t)); + frame = Hunk_TempAlloc (iqm->num_joints * sizeof (iqmframe_t) + extra); #if 0 for (i = 0; i < iqm->num_joints; i++) { iqmframe_t *f1 = &iqm->frames[frame1][i];