From 4762954446145f67642b6b1b2fac3caa12c309e9 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Tue, 5 Nov 2019 19:02:19 +0100 Subject: [PATCH] Fixed bug with interpolation of first Bezier segment. --- .../src/com/esotericsoftware/spine/Animation.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java index 4e1d94640..21a68a811 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Animation.java @@ -375,8 +375,8 @@ public class Animation { } i -= BEZIER; if (curves[i] > time) { - float time1 = frames[timeIndex]; - return curves[i + 1] * (time - time1) / (curves[i] - time1); + float x = frames[timeIndex]; + return curves[i + 1] * (time - x) / (curves[i] - x); } int n = i + BEZIER_SIZE; for (i += 2; i < n; i += 2) { @@ -479,8 +479,9 @@ public class Animation { } i -= BEZIER; if (curves[i] > time) { - float value1 = frames[(frameIndex << 1) + VALUE]; - return value1 + (curves[i + 1] - value1) * (time - value1) / (curves[i] - value1); + int frame = frameIndex << 1; + float x = frames[frame], y = frames[frame + VALUE]; + return y + (curves[i + 1] - y) * (time - x) / (curves[i] - x); } int n = i + BEZIER_SIZE; for (i += 2; i < n; i += 2) {