[ts] Remove LAST calculation. Additional fix for #1653.

This commit is contained in:
badlogic 2020-04-15 14:49:52 +02:00
parent 6c6c25d5d5
commit ccbcf77cdc
19 changed files with 28 additions and 223 deletions

View File

@ -251,7 +251,6 @@ declare module spine {
static FIRST: number;
static HOLD: number;
static HOLD_MIX: number;
static LAST: number;
static SETUP: number;
static CURRENT: number;
data: AnimationStateData;
@ -288,7 +287,6 @@ declare module spine {
disposeNext(entry: TrackEntry): void;
_animationsChanged(): void;
computeHold(entry: TrackEntry): void;
computeNotLast(entry: TrackEntry): void;
getCurrent(trackIndex: number): TrackEntry;
addListener(listener: AnimationStateListener): void;
removeListener(listener: AnimationStateListener): void;

View File

@ -1472,7 +1472,7 @@ var spine;
var timelinesRotation = current.timelinesRotation;
for (var ii = 0; ii < timelineCount; ii++) {
var timeline_1 = timelines[ii];
var timelineBlend = (timelineMode[ii] & (AnimationState.LAST - 1)) == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
var timelineBlend = timelineMode[ii] == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
if (timeline_1 instanceof spine.RotateTimeline) {
this.applyRotateTimeline(timeline_1, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame);
}
@ -1543,7 +1543,7 @@ var spine;
var direction = spine.MixDirection.mixOut;
var timelineBlend = void 0;
var alpha = 0;
switch (timelineMode[i] & (AnimationState.LAST - 1)) {
switch (timelineMode[i]) {
case AnimationState.SUBSEQUENT:
if (!drawOrder && timeline instanceof spine.DrawOrderTimeline)
continue;
@ -1567,11 +1567,8 @@ var spine;
from.totalAlpha += alpha;
if (timeline instanceof spine.RotateTimeline)
this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame);
else if (timeline instanceof spine.AttachmentTimeline) {
if (!attachments && (timelineMode[i] & AnimationState.LAST) != 0)
continue;
else if (timeline instanceof spine.AttachmentTimeline)
this.applyAttachmentTimeline(timeline, skeleton, animationTime, timelineBlend, attachments);
}
else {
spine.Utils.webkit602BugfixHelper(alpha, blend);
if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup)
@ -1900,14 +1897,6 @@ var spine;
entry = entry.mixingTo;
} while (entry != null);
}
this.propertyIDs.clear();
for (var i = this.tracks.length - 1; i >= 0; i--) {
var entry = this.tracks[i];
while (entry != null) {
this.computeNotLast(entry);
entry = entry.mixingFrom;
}
}
};
AnimationState.prototype.computeHold = function (entry) {
var to = entry.mixingTo;
@ -1948,19 +1937,6 @@ var spine;
}
}
};
AnimationState.prototype.computeNotLast = function (entry) {
var timelines = entry.animation.timelines;
var timelinesCount = entry.animation.timelines.length;
var timelineMode = entry.timelineMode;
var propertyIDs = this.propertyIDs;
for (var i = 0; i < timelinesCount; i++) {
if (timelines[i] instanceof spine.AttachmentTimeline) {
var timeline = timelines[i];
if (!propertyIDs.add(timeline.slotIndex))
timelineMode[i] |= AnimationState.LAST;
}
}
};
AnimationState.prototype.getCurrent = function (trackIndex) {
if (trackIndex >= this.tracks.length)
return null;
@ -1987,7 +1963,6 @@ var spine;
AnimationState.FIRST = 1;
AnimationState.HOLD = 2;
AnimationState.HOLD_MIX = 3;
AnimationState.LAST = 4;
AnimationState.SETUP = 1;
AnimationState.CURRENT = 2;
return AnimationState;

File diff suppressed because one or more lines are too long

View File

@ -251,7 +251,6 @@ declare module spine {
static FIRST: number;
static HOLD: number;
static HOLD_MIX: number;
static LAST: number;
static SETUP: number;
static CURRENT: number;
data: AnimationStateData;
@ -288,7 +287,6 @@ declare module spine {
disposeNext(entry: TrackEntry): void;
_animationsChanged(): void;
computeHold(entry: TrackEntry): void;
computeNotLast(entry: TrackEntry): void;
getCurrent(trackIndex: number): TrackEntry;
addListener(listener: AnimationStateListener): void;
removeListener(listener: AnimationStateListener): void;

View File

@ -1472,7 +1472,7 @@ var spine;
var timelinesRotation = current.timelinesRotation;
for (var ii = 0; ii < timelineCount; ii++) {
var timeline_1 = timelines[ii];
var timelineBlend = (timelineMode[ii] & (AnimationState.LAST - 1)) == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
var timelineBlend = timelineMode[ii] == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
if (timeline_1 instanceof spine.RotateTimeline) {
this.applyRotateTimeline(timeline_1, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame);
}
@ -1543,7 +1543,7 @@ var spine;
var direction = spine.MixDirection.mixOut;
var timelineBlend = void 0;
var alpha = 0;
switch (timelineMode[i] & (AnimationState.LAST - 1)) {
switch (timelineMode[i]) {
case AnimationState.SUBSEQUENT:
if (!drawOrder && timeline instanceof spine.DrawOrderTimeline)
continue;
@ -1567,11 +1567,8 @@ var spine;
from.totalAlpha += alpha;
if (timeline instanceof spine.RotateTimeline)
this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame);
else if (timeline instanceof spine.AttachmentTimeline) {
if (!attachments && (timelineMode[i] & AnimationState.LAST) != 0)
continue;
else if (timeline instanceof spine.AttachmentTimeline)
this.applyAttachmentTimeline(timeline, skeleton, animationTime, timelineBlend, attachments);
}
else {
spine.Utils.webkit602BugfixHelper(alpha, blend);
if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup)
@ -1900,14 +1897,6 @@ var spine;
entry = entry.mixingTo;
} while (entry != null);
}
this.propertyIDs.clear();
for (var i = this.tracks.length - 1; i >= 0; i--) {
var entry = this.tracks[i];
while (entry != null) {
this.computeNotLast(entry);
entry = entry.mixingFrom;
}
}
};
AnimationState.prototype.computeHold = function (entry) {
var to = entry.mixingTo;
@ -1948,19 +1937,6 @@ var spine;
}
}
};
AnimationState.prototype.computeNotLast = function (entry) {
var timelines = entry.animation.timelines;
var timelinesCount = entry.animation.timelines.length;
var timelineMode = entry.timelineMode;
var propertyIDs = this.propertyIDs;
for (var i = 0; i < timelinesCount; i++) {
if (timelines[i] instanceof spine.AttachmentTimeline) {
var timeline = timelines[i];
if (!propertyIDs.add(timeline.slotIndex))
timelineMode[i] |= AnimationState.LAST;
}
}
};
AnimationState.prototype.getCurrent = function (trackIndex) {
if (trackIndex >= this.tracks.length)
return null;
@ -1987,7 +1963,6 @@ var spine;
AnimationState.FIRST = 1;
AnimationState.HOLD = 2;
AnimationState.HOLD_MIX = 3;
AnimationState.LAST = 4;
AnimationState.SETUP = 1;
AnimationState.CURRENT = 2;
return AnimationState;

File diff suppressed because one or more lines are too long

View File

@ -251,7 +251,6 @@ declare module spine {
static FIRST: number;
static HOLD: number;
static HOLD_MIX: number;
static LAST: number;
static SETUP: number;
static CURRENT: number;
data: AnimationStateData;
@ -288,7 +287,6 @@ declare module spine {
disposeNext(entry: TrackEntry): void;
_animationsChanged(): void;
computeHold(entry: TrackEntry): void;
computeNotLast(entry: TrackEntry): void;
getCurrent(trackIndex: number): TrackEntry;
addListener(listener: AnimationStateListener): void;
removeListener(listener: AnimationStateListener): void;

View File

@ -1472,7 +1472,7 @@ var spine;
var timelinesRotation = current.timelinesRotation;
for (var ii = 0; ii < timelineCount; ii++) {
var timeline_1 = timelines[ii];
var timelineBlend = (timelineMode[ii] & (AnimationState.LAST - 1)) == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
var timelineBlend = timelineMode[ii] == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
if (timeline_1 instanceof spine.RotateTimeline) {
this.applyRotateTimeline(timeline_1, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame);
}
@ -1543,7 +1543,7 @@ var spine;
var direction = spine.MixDirection.mixOut;
var timelineBlend = void 0;
var alpha = 0;
switch (timelineMode[i] & (AnimationState.LAST - 1)) {
switch (timelineMode[i]) {
case AnimationState.SUBSEQUENT:
if (!drawOrder && timeline instanceof spine.DrawOrderTimeline)
continue;
@ -1567,11 +1567,8 @@ var spine;
from.totalAlpha += alpha;
if (timeline instanceof spine.RotateTimeline)
this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame);
else if (timeline instanceof spine.AttachmentTimeline) {
if (!attachments && (timelineMode[i] & AnimationState.LAST) != 0)
continue;
else if (timeline instanceof spine.AttachmentTimeline)
this.applyAttachmentTimeline(timeline, skeleton, animationTime, timelineBlend, attachments);
}
else {
spine.Utils.webkit602BugfixHelper(alpha, blend);
if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup)
@ -1900,14 +1897,6 @@ var spine;
entry = entry.mixingTo;
} while (entry != null);
}
this.propertyIDs.clear();
for (var i = this.tracks.length - 1; i >= 0; i--) {
var entry = this.tracks[i];
while (entry != null) {
this.computeNotLast(entry);
entry = entry.mixingFrom;
}
}
};
AnimationState.prototype.computeHold = function (entry) {
var to = entry.mixingTo;
@ -1948,19 +1937,6 @@ var spine;
}
}
};
AnimationState.prototype.computeNotLast = function (entry) {
var timelines = entry.animation.timelines;
var timelinesCount = entry.animation.timelines.length;
var timelineMode = entry.timelineMode;
var propertyIDs = this.propertyIDs;
for (var i = 0; i < timelinesCount; i++) {
if (timelines[i] instanceof spine.AttachmentTimeline) {
var timeline = timelines[i];
if (!propertyIDs.add(timeline.slotIndex))
timelineMode[i] |= AnimationState.LAST;
}
}
};
AnimationState.prototype.getCurrent = function (trackIndex) {
if (trackIndex >= this.tracks.length)
return null;
@ -1987,7 +1963,6 @@ var spine;
AnimationState.FIRST = 1;
AnimationState.HOLD = 2;
AnimationState.HOLD_MIX = 3;
AnimationState.LAST = 4;
AnimationState.SETUP = 1;
AnimationState.CURRENT = 2;
return AnimationState;

File diff suppressed because one or more lines are too long

View File

@ -251,7 +251,6 @@ declare module spine {
static FIRST: number;
static HOLD: number;
static HOLD_MIX: number;
static LAST: number;
static SETUP: number;
static CURRENT: number;
data: AnimationStateData;
@ -288,7 +287,6 @@ declare module spine {
disposeNext(entry: TrackEntry): void;
_animationsChanged(): void;
computeHold(entry: TrackEntry): void;
computeNotLast(entry: TrackEntry): void;
getCurrent(trackIndex: number): TrackEntry;
addListener(listener: AnimationStateListener): void;
removeListener(listener: AnimationStateListener): void;

View File

@ -1472,7 +1472,7 @@ var spine;
var timelinesRotation = current.timelinesRotation;
for (var ii = 0; ii < timelineCount; ii++) {
var timeline_1 = timelines[ii];
var timelineBlend = (timelineMode[ii] & (AnimationState.LAST - 1)) == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
var timelineBlend = timelineMode[ii] == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
if (timeline_1 instanceof spine.RotateTimeline) {
this.applyRotateTimeline(timeline_1, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame);
}
@ -1543,7 +1543,7 @@ var spine;
var direction = spine.MixDirection.mixOut;
var timelineBlend = void 0;
var alpha = 0;
switch (timelineMode[i] & (AnimationState.LAST - 1)) {
switch (timelineMode[i]) {
case AnimationState.SUBSEQUENT:
if (!drawOrder && timeline instanceof spine.DrawOrderTimeline)
continue;
@ -1567,11 +1567,8 @@ var spine;
from.totalAlpha += alpha;
if (timeline instanceof spine.RotateTimeline)
this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame);
else if (timeline instanceof spine.AttachmentTimeline) {
if (!attachments && (timelineMode[i] & AnimationState.LAST) != 0)
continue;
else if (timeline instanceof spine.AttachmentTimeline)
this.applyAttachmentTimeline(timeline, skeleton, animationTime, timelineBlend, attachments);
}
else {
spine.Utils.webkit602BugfixHelper(alpha, blend);
if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup)
@ -1900,14 +1897,6 @@ var spine;
entry = entry.mixingTo;
} while (entry != null);
}
this.propertyIDs.clear();
for (var i = this.tracks.length - 1; i >= 0; i--) {
var entry = this.tracks[i];
while (entry != null) {
this.computeNotLast(entry);
entry = entry.mixingFrom;
}
}
};
AnimationState.prototype.computeHold = function (entry) {
var to = entry.mixingTo;
@ -1948,19 +1937,6 @@ var spine;
}
}
};
AnimationState.prototype.computeNotLast = function (entry) {
var timelines = entry.animation.timelines;
var timelinesCount = entry.animation.timelines.length;
var timelineMode = entry.timelineMode;
var propertyIDs = this.propertyIDs;
for (var i = 0; i < timelinesCount; i++) {
if (timelines[i] instanceof spine.AttachmentTimeline) {
var timeline = timelines[i];
if (!propertyIDs.add(timeline.slotIndex))
timelineMode[i] |= AnimationState.LAST;
}
}
};
AnimationState.prototype.getCurrent = function (trackIndex) {
if (trackIndex >= this.tracks.length)
return null;
@ -1987,7 +1963,6 @@ var spine;
AnimationState.FIRST = 1;
AnimationState.HOLD = 2;
AnimationState.HOLD_MIX = 3;
AnimationState.LAST = 4;
AnimationState.SETUP = 1;
AnimationState.CURRENT = 2;
return AnimationState;

File diff suppressed because one or more lines are too long

View File

@ -251,7 +251,6 @@ declare module spine {
static FIRST: number;
static HOLD: number;
static HOLD_MIX: number;
static LAST: number;
static SETUP: number;
static CURRENT: number;
data: AnimationStateData;
@ -288,7 +287,6 @@ declare module spine {
disposeNext(entry: TrackEntry): void;
_animationsChanged(): void;
computeHold(entry: TrackEntry): void;
computeNotLast(entry: TrackEntry): void;
getCurrent(trackIndex: number): TrackEntry;
addListener(listener: AnimationStateListener): void;
removeListener(listener: AnimationStateListener): void;

View File

@ -1472,7 +1472,7 @@ var spine;
var timelinesRotation = current.timelinesRotation;
for (var ii = 0; ii < timelineCount; ii++) {
var timeline_1 = timelines[ii];
var timelineBlend = (timelineMode[ii] & (AnimationState.LAST - 1)) == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
var timelineBlend = timelineMode[ii] == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
if (timeline_1 instanceof spine.RotateTimeline) {
this.applyRotateTimeline(timeline_1, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame);
}
@ -1543,7 +1543,7 @@ var spine;
var direction = spine.MixDirection.mixOut;
var timelineBlend = void 0;
var alpha = 0;
switch (timelineMode[i] & (AnimationState.LAST - 1)) {
switch (timelineMode[i]) {
case AnimationState.SUBSEQUENT:
if (!drawOrder && timeline instanceof spine.DrawOrderTimeline)
continue;
@ -1567,11 +1567,8 @@ var spine;
from.totalAlpha += alpha;
if (timeline instanceof spine.RotateTimeline)
this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame);
else if (timeline instanceof spine.AttachmentTimeline) {
if (!attachments && (timelineMode[i] & AnimationState.LAST) != 0)
continue;
else if (timeline instanceof spine.AttachmentTimeline)
this.applyAttachmentTimeline(timeline, skeleton, animationTime, timelineBlend, attachments);
}
else {
spine.Utils.webkit602BugfixHelper(alpha, blend);
if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup)
@ -1900,14 +1897,6 @@ var spine;
entry = entry.mixingTo;
} while (entry != null);
}
this.propertyIDs.clear();
for (var i = this.tracks.length - 1; i >= 0; i--) {
var entry = this.tracks[i];
while (entry != null) {
this.computeNotLast(entry);
entry = entry.mixingFrom;
}
}
};
AnimationState.prototype.computeHold = function (entry) {
var to = entry.mixingTo;
@ -1948,19 +1937,6 @@ var spine;
}
}
};
AnimationState.prototype.computeNotLast = function (entry) {
var timelines = entry.animation.timelines;
var timelinesCount = entry.animation.timelines.length;
var timelineMode = entry.timelineMode;
var propertyIDs = this.propertyIDs;
for (var i = 0; i < timelinesCount; i++) {
if (timelines[i] instanceof spine.AttachmentTimeline) {
var timeline = timelines[i];
if (!propertyIDs.add(timeline.slotIndex))
timelineMode[i] |= AnimationState.LAST;
}
}
};
AnimationState.prototype.getCurrent = function (trackIndex) {
if (trackIndex >= this.tracks.length)
return null;
@ -1987,7 +1963,6 @@ var spine;
AnimationState.FIRST = 1;
AnimationState.HOLD = 2;
AnimationState.HOLD_MIX = 3;
AnimationState.LAST = 4;
AnimationState.SETUP = 1;
AnimationState.CURRENT = 2;
return AnimationState;

File diff suppressed because one or more lines are too long

View File

@ -251,7 +251,6 @@ declare module spine {
static FIRST: number;
static HOLD: number;
static HOLD_MIX: number;
static LAST: number;
static SETUP: number;
static CURRENT: number;
data: AnimationStateData;
@ -288,7 +287,6 @@ declare module spine {
disposeNext(entry: TrackEntry): void;
_animationsChanged(): void;
computeHold(entry: TrackEntry): void;
computeNotLast(entry: TrackEntry): void;
getCurrent(trackIndex: number): TrackEntry;
addListener(listener: AnimationStateListener): void;
removeListener(listener: AnimationStateListener): void;

View File

@ -1472,7 +1472,7 @@ var spine;
var timelinesRotation = current.timelinesRotation;
for (var ii = 0; ii < timelineCount; ii++) {
var timeline_1 = timelines[ii];
var timelineBlend = (timelineMode[ii] & (AnimationState.LAST - 1)) == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
var timelineBlend = timelineMode[ii] == AnimationState.SUBSEQUENT ? blend : spine.MixBlend.setup;
if (timeline_1 instanceof spine.RotateTimeline) {
this.applyRotateTimeline(timeline_1, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame);
}
@ -1543,7 +1543,7 @@ var spine;
var direction = spine.MixDirection.mixOut;
var timelineBlend = void 0;
var alpha = 0;
switch (timelineMode[i] & (AnimationState.LAST - 1)) {
switch (timelineMode[i]) {
case AnimationState.SUBSEQUENT:
if (!drawOrder && timeline instanceof spine.DrawOrderTimeline)
continue;
@ -1567,11 +1567,8 @@ var spine;
from.totalAlpha += alpha;
if (timeline instanceof spine.RotateTimeline)
this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame);
else if (timeline instanceof spine.AttachmentTimeline) {
if (!attachments && (timelineMode[i] & AnimationState.LAST) != 0)
continue;
else if (timeline instanceof spine.AttachmentTimeline)
this.applyAttachmentTimeline(timeline, skeleton, animationTime, timelineBlend, attachments);
}
else {
spine.Utils.webkit602BugfixHelper(alpha, blend);
if (drawOrder && timeline instanceof spine.DrawOrderTimeline && timelineBlend == spine.MixBlend.setup)
@ -1900,14 +1897,6 @@ var spine;
entry = entry.mixingTo;
} while (entry != null);
}
this.propertyIDs.clear();
for (var i = this.tracks.length - 1; i >= 0; i--) {
var entry = this.tracks[i];
while (entry != null) {
this.computeNotLast(entry);
entry = entry.mixingFrom;
}
}
};
AnimationState.prototype.computeHold = function (entry) {
var to = entry.mixingTo;
@ -1948,19 +1937,6 @@ var spine;
}
}
};
AnimationState.prototype.computeNotLast = function (entry) {
var timelines = entry.animation.timelines;
var timelinesCount = entry.animation.timelines.length;
var timelineMode = entry.timelineMode;
var propertyIDs = this.propertyIDs;
for (var i = 0; i < timelinesCount; i++) {
if (timelines[i] instanceof spine.AttachmentTimeline) {
var timeline = timelines[i];
if (!propertyIDs.add(timeline.slotIndex))
timelineMode[i] |= AnimationState.LAST;
}
}
};
AnimationState.prototype.getCurrent = function (trackIndex) {
if (trackIndex >= this.tracks.length)
return null;
@ -1987,7 +1963,6 @@ var spine;
AnimationState.FIRST = 1;
AnimationState.HOLD = 2;
AnimationState.HOLD_MIX = 3;
AnimationState.LAST = 4;
AnimationState.SETUP = 1;
AnimationState.CURRENT = 2;
return AnimationState;

File diff suppressed because one or more lines are too long

View File

@ -65,13 +65,6 @@ module spine {
* (which affects B and C). Without using D to mix out, A would be applied fully until mixing completes, then snap into
* place. */
static HOLD_MIX = 3;
/** 1. An attachment timeline in a subsequent track entry sets the attachment for the same slot as this attachment
* timeline.
*
* Result: This attachment timeline will not use MixDirection.out, which would otherwise show the setup mode attachment (or
* none if not visible in setup mode). This allows deform timelines to be applied for the subsequent entry to mix from, rather
* than mixing from the setup pose. */
static LAST = 4;
static SETUP = 1;
static CURRENT = 2;
@ -235,7 +228,7 @@ module spine {
for (let ii = 0; ii < timelineCount; ii++) {
let timeline = timelines[ii];
let timelineBlend = (timelineMode[ii] & (AnimationState.LAST - 1)) == AnimationState.SUBSEQUENT ? blend : MixBlend.setup;
let timelineBlend = timelineMode[ii] == AnimationState.SUBSEQUENT ? blend : MixBlend.setup;
if (timeline instanceof RotateTimeline) {
this.applyRotateTimeline(timeline, skeleton, animationTime, mix, timelineBlend, timelinesRotation, ii << 1, firstFrame);
} else if (timeline instanceof AttachmentTimeline) {
@ -308,7 +301,7 @@ module spine {
let direction = MixDirection.mixOut;
let timelineBlend: MixBlend;
let alpha = 0;
switch (timelineMode[i] & (AnimationState.LAST - 1)) {
switch (timelineMode[i]) {
case AnimationState.SUBSEQUENT:
if (!drawOrder && timeline instanceof DrawOrderTimeline) continue;
timelineBlend = blend;
@ -332,12 +325,9 @@ module spine {
if (timeline instanceof RotateTimeline)
this.applyRotateTimeline(timeline, skeleton, animationTime, alpha, timelineBlend, timelinesRotation, i << 1, firstFrame);
else if (timeline instanceof 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] & AnimationState.LAST) != 0) continue;
else if (timeline instanceof AttachmentTimeline)
this.applyAttachmentTimeline(timeline, skeleton, animationTime, timelineBlend, attachments);
} else {
else {
// This fixes the WebKit 602 specific issue described at http://esotericsoftware.com/forum/iOS-10-disappearing-graphics-10109
Utils.webkit602BugfixHelper(alpha, blend);
if (drawOrder && timeline instanceof DrawOrderTimeline && timelineBlend == MixBlend.setup)
@ -755,15 +745,6 @@ module spine {
entry = entry.mixingTo;
} while (entry != null)
}
this.propertyIDs.clear();
for (let i = this.tracks.length - 1; i >= 0; i--) {
let entry = this.tracks[i];
while (entry != null) {
this.computeNotLast(entry);
entry = entry.mixingFrom;
}
}
}
computeHold (entry: TrackEntry) {
@ -807,20 +788,6 @@ module spine {
}
}
computeNotLast (entry: TrackEntry) {
let timelines = entry.animation.timelines;
let timelinesCount = entry.animation.timelines.length;
let timelineMode = entry.timelineMode;
let propertyIDs = this.propertyIDs;
for (let i = 0; i < timelinesCount; i++) {
if (timelines[i] instanceof AttachmentTimeline) {
let timeline = timelines[i] as AttachmentTimeline;
if (!propertyIDs.add(timeline.slotIndex)) timelineMode[i] |= AnimationState.LAST;
}
}
}
/** Returns the track entry for the animation currently playing on the track, or null if no animation is currently playing. */
getCurrent (trackIndex: number) {
if (trackIndex >= this.tracks.length) return null;