Skip to content

Commit e9c01a8

Browse files
committed
.
1 parent fbca1dc commit e9c01a8

File tree

3 files changed

+42
-4
lines changed

3 files changed

+42
-4
lines changed

src/engine/renderer/tr_animation.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1468,6 +1468,7 @@ int RE_BuildSkeleton( refSkeleton_t *skel, qhandle_t hAnim, int startFrame, int
14681468
}
14691469

14701470
// FIXME: clear existing bones and bounds?
1471+
skel->numBones = 0;
14711472
return false;
14721473
}
14731474

src/engine/renderer/tr_main.cpp

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2102,12 +2102,48 @@ void R_AddEntitySurfaces()
21022102
break;
21032103

21042104
case modtype_t::MOD_MD5:
2105-
Log::Warn( "%i %s: %i", ent->e.animationHandle, R_GetAnimationByHandle( ent->e.animationHandle )->name, ent->e.startFrame );
2105+
/* Log::Warn("%i %s: old: %i-%i %f new: %i-%i %f | %f %f", ent->e.animationHandle,
2106+
R_GetAnimationByHandle( ent->e.animationHandle )->name, ent->e.startFrame,
2107+
ent->e.endFrame, ent->e.lerp, ent->e.startFrame2, ent->e.endFrame2, ent->e.lerp2,
2108+
ent->e.blendLerp, ent->e.scale ); */
2109+
if ( ent->e.scale == 0 ) {
2110+
ent->e.scale = 1;
2111+
}
2112+
RE_BuildSkeleton( &ent->e.skeleton, ent->e.animationHandle, ent->e.startFrame, ent->e.endFrame,
2113+
ent->e.lerp, ent->e.clearOrigin );
2114+
ent->e.skeleton.scale = ent->e.scale;
2115+
if ( ent->e.blendLerp > 0.0 || true ) {
2116+
refSkeleton_t skel;
2117+
RE_BuildSkeleton( &skel, ent->e.animationHandle2, ent->e.startFrame2, ent->e.endFrame2,
2118+
ent->e.lerp2, ent->e.clearOrigin2 );
2119+
RE_BlendSkeleton( &ent->e.skeleton, &skel, ent->e.blendLerp );
2120+
}
2121+
// ent->e.skeleton.type = refSkeletonType_t::SK_ABSOLUTE;
21062122
R_AddMD5Surfaces( ent );
21072123
break;
21082124

21092125
case modtype_t::MOD_IQM:
2110-
Log::Warn( "%i %s: %i", ent->e.animationHandle, R_GetAnimationByHandle( ent->e.animationHandle )->name, ent->e.startFrame );
2126+
/* Log::Warn("%i %s: old: %i-%i %f new: %i-%i %f | %f %f", ent->e.animationHandle,
2127+
R_GetAnimationByHandle( ent->e.animationHandle )->name, ent->e.startFrame,
2128+
ent->e.endFrame, ent->e.lerp, ent->e.startFrame2, ent->e.endFrame2, ent->e.lerp2,
2129+
ent->e.blendLerp, ent->e.scale ); */
2130+
if ( ent->e.scale == 0 ) {
2131+
ent->e.scale = 1;
2132+
}
2133+
if ( ent->e.animationHandle == 0 ) {
2134+
ent->e.animationHandle = ent->e.animationHandle2;
2135+
}
2136+
ent->e.skeleton.scale = ent->e.scale;
2137+
RE_BuildSkeleton( &ent->e.skeleton, ent->e.animationHandle, ent->e.startFrame, ent->e.endFrame,
2138+
ent->e.lerp, ent->e.clearOrigin );
2139+
// ent->e.blendLerp = 1 - ent->e.blendLerp;
2140+
if ( ent->e.blendLerp > 0.0 || true ) {
2141+
refSkeleton_t skel;
2142+
RE_BuildSkeleton( &skel, ent->e.animationHandle2, ent->e.startFrame2, ent->e.endFrame2,
2143+
ent->e.lerp2, ent->e.clearOrigin2 );
2144+
RE_BlendSkeleton( &ent->e.skeleton, &skel, ent->e.blendLerp );
2145+
}
2146+
// ent->e.skeleton.type = refSkeletonType_t::SK_ABSOLUTE;
21112147
R_AddIQMSurfaces( ent );
21122148
break;
21132149

src/engine/renderer/tr_types.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,11 +214,12 @@ struct refEntity_t
214214
qhandle_t animationHandle;
215215
int startFrame;
216216
int endFrame;
217-
int lerp;
217+
float lerp;
218218
int clearOrigin;
219+
qhandle_t animationHandle2;
219220
int startFrame2;
220221
int endFrame2;
221-
int lerp2;
222+
float lerp2;
222223
int clearOrigin2;
223224
float blendLerp;
224225
float scale;

0 commit comments

Comments
 (0)