diff --git a/spine-csharp/src/AnimationState.cs b/spine-csharp/src/AnimationState.cs index 7c7149a32..67c66a8d1 100644 --- a/spine-csharp/src/AnimationState.cs +++ b/spine-csharp/src/AnimationState.cs @@ -66,10 +66,6 @@ namespace Spine { /// (which affects B and C). Without using D to mix out, A would be applied fully until mixing completes, then snap into /// place. internal const int HoldMix = 3; - /// 1) This is the last attachment timeline to set the attachment for a slot. - /// Result: Don't apply this timeline when mixing out. Attachment timelines that are not last are applied when mixing out so - /// any deform timelines are applied and subsequent entries can mix from that deform. - internal const int Last = 4; internal const int Setup = 1, Current = 2; @@ -244,7 +240,7 @@ namespace Spine { for (int ii = 0; ii < timelineCount; ii++) { Timeline timeline = timelinesItems[ii]; - MixBlend timelineBlend = (timelineMode[ii] & AnimationState.Last - 1) == AnimationState.Subsequent ? blend : MixBlend.Setup; + MixBlend timelineBlend = timelineMode[ii] == AnimationState.Subsequent ? blend : MixBlend.Setup; var rotateTimeline = timeline as RotateTimeline; if (rotateTimeline != null) ApplyRotateTimeline(rotateTimeline, skeleton, animationTime, mix, timelineBlend, timelinesRotation, @@ -318,7 +314,7 @@ namespace Spine { MixDirection direction = MixDirection.Out; MixBlend timelineBlend; float alpha; - switch (timelineMode[i] & AnimationState.Last - 1) { + switch (timelineMode[i]) { case AnimationState.Subsequent: if (!drawOrder && timeline is DrawOrderTimeline) continue; timelineBlend = blend; @@ -332,7 +328,7 @@ namespace Spine { timelineBlend = MixBlend.Setup; alpha = alphaHold; break; - default: + default: // HoldMix timelineBlend = MixBlend.Setup; TrackEntry holdMix = timelineHoldMix[i]; alpha = alphaHold * Math.Max(0, 1 - holdMix.mixTime / holdMix.mixDuration); @@ -344,9 +340,6 @@ namespace Spine { ApplyRotateTimeline(rotateTimeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame); } else if (timeline is AttachmentTimeline) { - // If not showing attachments: do nothing if this is the last timeline, else apply the timeline so - // subsequent timelines see any deform, but don't set attachmentState to Current. - if (!attachments && (timelineMode[i] & Last) != 0) continue; ApplyAttachmentTimeline((AttachmentTimeline)timeline, skeleton, animationTime, timelineBlend, attachments); } else { if (drawOrder && timeline is DrawOrderTimeline && timelineBlend == MixBlend.Setup) @@ -790,16 +783,6 @@ namespace Spine { entry = entry.mixingTo; } while (entry != null); } - - // Process in the reverse order that animations are applied. - propertyIDs.Clear(); - for (int i = tracks.Count - 1; i >= 0; i--) { - TrackEntry entry = tracksItems[i]; - while (entry != null) { - ComputeNotLast(entry); - entry = entry.mixingFrom; - } - } } private void ComputeHold (TrackEntry entry) { @@ -844,20 +827,6 @@ namespace Spine { } } - private void ComputeNotLast (TrackEntry entry) { - var timelines = entry.animation.timelines.Items; - int timelinesCount = entry.animation.timelines.Count; - int[] timelineMode = entry.timelineMode.Items; - var propertyIDs = this.propertyIDs; - - for (int i = 0; i < timelinesCount; i++) { - if (timelines[i] is AttachmentTimeline) { - AttachmentTimeline timeline = (AttachmentTimeline)timelines[i]; - if (propertyIDs.Add(timeline.slotIndex)) timelineMode[i] |= AnimationState.Last; - } - } - } - /// The track entry for the animation currently playing on the track, or null if no animation is currently playing. public TrackEntry GetCurrent (int trackIndex) { if (trackIndex >= tracks.Count) return null;