diff --git a/CodeWalker.Core/GameFiles/Resources/Clip.cs b/CodeWalker.Core/GameFiles/Resources/Clip.cs index 7bd72c3..110a764 100644 --- a/CodeWalker.Core/GameFiles/Resources/Clip.cs +++ b/CodeWalker.Core/GameFiles/Resources/Clip.cs @@ -496,8 +496,7 @@ namespace CodeWalker.GameFiles public override float EvaluateFloat(int frame) { - if(frame 0) return Values[0]; + if (Frames?.Length > 0) return Values[Frames[frame % Frames.Length]]; return Offset; } } @@ -526,8 +525,7 @@ namespace CodeWalker.GameFiles public override float EvaluateFloat(int frame) { - if (frame < Values?.Length) return Values[frame]; - if (Values?.Length > 0) return Values[0]; + if (Values?.Length > 0) return Values[frame%Values.Length]; return Offset; } } @@ -637,8 +635,7 @@ namespace CodeWalker.GameFiles public override float EvaluateFloat(int frame) { - if (frame < Values?.Length) return Values[frame]; - if (Values?.Length > 0) return Values[0]; + if (Values?.Length > 0) return Values[frame % Values.Length]; return Offset; } } @@ -690,8 +687,7 @@ namespace CodeWalker.GameFiles public override float EvaluateFloat(int frame) { - if (frame < Values?.Length) return Values[frame]; - if (Values?.Length > 0) return Values[0]; + if (Values?.Length > 0) return Values[frame % Values.Length]; return 0.0f; } diff --git a/Rendering/Renderable.cs b/Rendering/Renderable.cs index e76d679..6d62d90 100644 --- a/Rendering/Renderable.cs +++ b/Rendering/Renderable.cs @@ -430,11 +430,12 @@ namespace CodeWalker.Rendering var clipanimlist = cme.Clip as ClipAnimationList; if (clipanimlist?.Animations != null) { - float t = clipanimlist.GetPlaybackTime(CurrentAnimTime); + //float t = clipanimlist.GetPlaybackTime(CurrentAnimTime); foreach (var canim in clipanimlist.Animations) { if (canim?.Animation == null) continue; - UpdateAnim(canim.Animation, t*canim.Rate + canim.StartTime); + //UpdateAnim(canim.Animation, t*canim.Rate + canim.StartTime); + UpdateAnim(canim.Animation, canim.GetPlaybackTime(CurrentAnimTime)); } } @@ -561,11 +562,12 @@ namespace CodeWalker.Rendering var clipanimlist = cme.Clip as ClipAnimationList; if (clipanimlist?.Animations != null) { - float t = clipanimlist.GetPlaybackTime(CurrentAnimTime); + //float t = clipanimlist.GetPlaybackTime(CurrentAnimTime); foreach (var canim in clipanimlist.Animations) { if (canim?.Animation == null) continue; - UpdateAnimUV(canim.Animation, t*canim.Rate + canim.StartTime, rgeom); + //UpdateAnimUV(canim.Animation, t * canim.Rate + canim.StartTime, rgeom); + UpdateAnimUV(canim.Animation, canim.GetPlaybackTime(CurrentAnimTime), rgeom); } }