From 26ef3e274c4217aac15bce422f0bbbaca9915588 Mon Sep 17 00:00:00 2001 From: Andrey Akhmichin <15944199+nekonomicon@users.noreply.github.com> Date: Fri, 13 Oct 2023 02:48:39 +0500 Subject: [PATCH] utils: mdldec: smd.c: linear movement loss fix. --- utils/mdldec/smd.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/utils/mdldec/smd.c b/utils/mdldec/smd.c index beaff9d6..c9ae41fe 100644 --- a/utils/mdldec/smd.c +++ b/utils/mdldec/smd.c @@ -383,6 +383,7 @@ WriteFrameInfo static void WriteFrameInfo( FILE *fp, mstudioanim_t *anim, mstudioseqdesc_t *seqdesc, int frame ) { int i, j; + float scale; vec_t motion[6]; // x, y, z, xr, yr, zr mstudiobone_t *bone; @@ -396,8 +397,10 @@ static void WriteFrameInfo( FILE *fp, mstudioanim_t *anim, mstudioseqdesc_t *seq if( bone->parent == -1 ) { + scale = frame / (float)( seqdesc->numframes - 1 ); + for( j = 0; j < 3; j++ ) - motion[j] += frame * 1.0f / seqdesc->numframes * seqdesc->linearmovement[j]; + motion[j] += scale * seqdesc->linearmovement[j]; ProperBoneRotationZ( motion, 270.0f ); }