Animation evaluation improvements

This commit is contained in:
dexy 2019-11-08 19:53:29 +11:00
parent 629ee125a5
commit d60234469a
2 changed files with 10 additions and 12 deletions

View File

@ -496,8 +496,7 @@ namespace CodeWalker.GameFiles
public override float EvaluateFloat(int frame)
{
if(frame<Frames?.Length) return Values[Frames[frame]];
if (Values?.Length > 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;
}

View File

@ -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);
}
}