From 61e54a5771481f037ee8bdcc9956489d66d15560 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Sat, 24 Jun 2017 03:06:50 +0200 Subject: [PATCH] [libgdx] Don't use `DIP_MIX` across tracks. `DIP_MIX` finds the next entry which does NOT key the timeline property and mixes out the "dip fix" (which is where a timeline is fully applied because a subsequent timeline keys the same property). This handles the case of A->B->C->D where A, B, and C key the same property but D doesn't. A uses the dip fix, then when D mixes in, `DIP_MIX` causes A to mix out, affecting B and C. If D is in another track, it is applied concurrently with A, B, and C so should not cause A to mix out. --- .../src/com/esotericsoftware/spine/AnimationState.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java index 29efee526..044bda43d 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java @@ -610,13 +610,9 @@ public class AnimationState { propertyIDs.clear(); Array mixingTo = this.mixingTo; - TrackEntry lastEntry = null; for (int i = 0, n = tracks.size; i < n; i++) { TrackEntry entry = tracks.get(i); - if (entry != null) { - entry.setTimelineData(lastEntry, mixingTo, propertyIDs); - lastEntry = entry; - } + if (entry != null) entry.setTimelineData(null, mixingTo, propertyIDs); } }