Fix relative node interpolation.

This commit is contained in:
2023-04-14 14:47:07 +08:00
parent 400723d83b
commit 5887b1267a

View File

@@ -405,9 +405,15 @@ namespace Cryville.Crtr.Event {
var scaledTime = (float)((Time - m.Key.Time - ChartPlayer.actualRenderStep * tev.sumfix) / m.Key.Duration);
var lerpedTime = MotionLerper.GetEaseTime(scaledTime, tev.transition, tev.rate);
if (tev.Node.Id >= 0) {
var target = value.GetRelativeNode(tev.Node.Id);
if (target == null) value.SetRelativeNode(tev.Node);
else tev.Node.LerpWith(target, lerpedTime, ref target);
var start = m.Value.GetRelativeNode(tev.Node.Id);
if (start == null) {
value.SetRelativeNode(tev.Node);
}
else {
var target = value.GetRelativeNode(tev.Node.Id);
if (target == null) value.SetRelativeNode(tev.Node);
else tev.Node.LerpWith(m.Value.GetRelativeNode(tev.Node.Id), lerpedTime, ref target);
}
}
else {
tev.Node.Value.LerpWith(m.Value.AbsoluteValue, lerpedTime, ref value.AbsoluteValue);