From 5887b1267a845ec210359c9ba7ed057afd622542 Mon Sep 17 00:00:00 2001 From: PopSlime Date: Fri, 14 Apr 2023 14:47:07 +0800 Subject: [PATCH] Fix relative node interpolation. --- Assets/Cryville/Crtr/Event/ContainerState.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Assets/Cryville/Crtr/Event/ContainerState.cs b/Assets/Cryville/Crtr/Event/ContainerState.cs index bb5cf6e..cb0a896 100644 --- a/Assets/Cryville/Crtr/Event/ContainerState.cs +++ b/Assets/Cryville/Crtr/Event/ContainerState.cs @@ -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);