From 7e921412155189e713b5eb42a8b8d94e1d7f9eb5 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Tue, 10 Dec 2024 14:14:21 +0100 Subject: [PATCH 1/3] [ts] Port of commit 8d058fb: Improved AnimationState behavior when paused. See #2705. --- spine-ts/spine-core/src/AnimationState.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/spine-ts/spine-core/src/AnimationState.ts b/spine-ts/spine-core/src/AnimationState.ts index bcfd6628c..60fadbe86 100644 --- a/spine-ts/spine-core/src/AnimationState.ts +++ b/spine-ts/spine-core/src/AnimationState.ts @@ -138,16 +138,18 @@ export class AnimationState { from.animationLast = from.nextAnimationLast; from.trackLast = from.nextTrackLast; - // Require mixTime > 0 to ensure the mixing from entry was applied at least once. - if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { - // Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame). - if (from.totalAlpha == 0 || to.mixDuration == 0) { - to.mixingFrom = from.mixingFrom; - if (from.mixingFrom) from.mixingFrom.mixingTo = to; - to.interruptAlpha = from.interruptAlpha; - this.queue.end(from); + if (to.nextTrackLast != -1) { // The from entry was applied at least once. + const discard = to.mixTime == 0 && from.mixTime == 0; // Discard the from entry when neither have advanced yet. + if (to.mixTime >= to.mixDuration || discard) { + // Require totalAlpha == 0 to ensure mixing is complete or the transition is a single frame or discarded. + if (from.totalAlpha == 0 || to.mixDuration == 0 || discard) { + to.mixingFrom = from.mixingFrom; + if (from.mixingFrom != null) from.mixingFrom.mixingTo = to; + to.interruptAlpha = from.interruptAlpha; + this.queue.end(from); + } + return finished; } - return finished; } from.trackTime += delta * from.timeScale; From ae5ae4ddf2e5787601309c0f25e0494449458e5a Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Tue, 10 Dec 2024 14:15:49 +0100 Subject: [PATCH 2/3] [haxe] Port of commit 8d058fb: Improved AnimationState behavior when paused. See #2705. --- .../spine/animation/AnimationState.hx | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/spine-haxe/spine-haxe/spine/animation/AnimationState.hx b/spine-haxe/spine-haxe/spine/animation/AnimationState.hx index 489f5df07..a39d94047 100644 --- a/spine-haxe/spine-haxe/spine/animation/AnimationState.hx +++ b/spine-haxe/spine-haxe/spine/animation/AnimationState.hx @@ -148,17 +148,18 @@ class AnimationState { from.animationLast = from.nextAnimationLast; from.trackLast = from.nextTrackLast; - // Require mixTime > 0 to ensure the mixing from entry was applied at least once. - if (to.mixTime > 0 && to.mixTime >= to.mixDuration) { - // Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame). - if (from.totalAlpha == 0 || to.mixDuration == 0) { - to.mixingFrom = from.mixingFrom; - if (from.mixingFrom != null) - from.mixingFrom.mixingTo = to; - to.interruptAlpha = from.interruptAlpha; - queue.end(from); + if (to.nextTrackLast != -1) { // The from entry was applied at least once. + var discard:Bool = to.mixTime == 0 && from.mixTime == 0; // Discard the from entry when neither have advanced yet. + if (to.mixTime >= to.mixDuration || discard) { + // Require totalAlpha == 0 to ensure mixing is complete or the transition is a single frame or discarded. + if (from.totalAlpha == 0 || to.mixDuration == 0 || discard) { + to.mixingFrom = from.mixingFrom; + if (from.mixingFrom != null) from.mixingFrom.mixingTo = to; + to.interruptAlpha = from.interruptAlpha; + queue.end(from); + } + return finished; } - return finished; } from.trackTime += delta * from.timeScale; From 007f39f5191351fbcc99b8fa622a31c3e398a7c4 Mon Sep 17 00:00:00 2001 From: Davide Tantillo Date: Tue, 10 Dec 2024 14:23:46 +0100 Subject: [PATCH 3/3] [ts] Release 4.2.68 --- spine-ts/package-lock.json | 42 +++++++++++++-------------- spine-ts/package.json | 2 +- spine-ts/spine-canvas/package.json | 4 +-- spine-ts/spine-canvaskit/package.json | 4 +-- spine-ts/spine-core/package.json | 2 +- spine-ts/spine-phaser/package.json | 8 ++--- spine-ts/spine-pixi-v7/package.json | 4 +-- spine-ts/spine-pixi-v8/package.json | 4 +-- spine-ts/spine-player/package.json | 4 +-- spine-ts/spine-threejs/package.json | 4 +-- spine-ts/spine-webgl/package.json | 4 +-- 11 files changed, 41 insertions(+), 41 deletions(-) diff --git a/spine-ts/package-lock.json b/spine-ts/package-lock.json index 12d8553e1..4039339ae 100644 --- a/spine-ts/package-lock.json +++ b/spine-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.67", + "version": "4.2.68", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@esotericsoftware/spine-ts", - "version": "4.2.67", + "version": "4.2.68", "license": "LicenseRef-LICENSE", "workspaces": [ "spine-core", @@ -3133,18 +3133,18 @@ }, "spine-canvas": { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.67", + "version": "4.2.68", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68" } }, "spine-canvaskit": { "name": "@esotericsoftware/spine-canvaskit", - "version": "4.2.67", + "version": "4.2.68", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67", + "@esotericsoftware/spine-core": "4.2.68", "canvaskit-wasm": "0.39.1" }, "devDependencies": { @@ -3154,17 +3154,17 @@ }, "spine-core": { "name": "@esotericsoftware/spine-core", - "version": "4.2.67", + "version": "4.2.68", "license": "LicenseRef-LICENSE" }, "spine-phaser": { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.67", + "version": "4.2.68", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-canvas": "4.2.67", - "@esotericsoftware/spine-core": "4.2.67", - "@esotericsoftware/spine-webgl": "4.2.67" + "@esotericsoftware/spine-canvas": "4.2.68", + "@esotericsoftware/spine-core": "4.2.68", + "@esotericsoftware/spine-webgl": "4.2.68" }, "peerDependencies": { "phaser": "^3.60.0" @@ -3172,10 +3172,10 @@ }, "spine-pixi-v7": { "name": "@esotericsoftware/spine-pixi-v7", - "version": "4.2.67", + "version": "4.2.68", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68" }, "peerDependencies": { "@pixi/assets": "^7.2.4", @@ -3188,10 +3188,10 @@ }, "spine-pixi-v8": { "name": "@esotericsoftware/spine-pixi-v8", - "version": "4.2.67", + "version": "4.2.68", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68" }, "peerDependencies": { "pixi.js": "^8.4.0" @@ -3199,18 +3199,18 @@ }, "spine-player": { "name": "@esotericsoftware/spine-player", - "version": "4.2.67", + "version": "4.2.68", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.67" + "@esotericsoftware/spine-webgl": "4.2.68" } }, "spine-threejs": { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.67", + "version": "4.2.68", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68" }, "devDependencies": { "@types/three": "0.162.0" @@ -3221,10 +3221,10 @@ }, "spine-webgl": { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.67", + "version": "4.2.68", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68" } } } diff --git a/spine-ts/package.json b/spine-ts/package.json index dd913e4e7..e7e4c7b31 100644 --- a/spine-ts/package.json +++ b/spine-ts/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.2.67", + "version": "4.2.68", "description": "The official Spine Runtimes for the web.", "type": "module", "files": [ diff --git a/spine-ts/spine-canvas/package.json b/spine-ts/spine-canvas/package.json index 4a2d6450d..9e8027d1b 100644 --- a/spine-ts/spine-canvas/package.json +++ b/spine-ts/spine-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvas", - "version": "4.2.67", + "version": "4.2.68", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68" } } \ No newline at end of file diff --git a/spine-ts/spine-canvaskit/package.json b/spine-ts/spine-canvaskit/package.json index 18a74a589..8e986cbd5 100644 --- a/spine-ts/spine-canvaskit/package.json +++ b/spine-ts/spine-canvaskit/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-canvaskit", - "version": "4.2.67", + "version": "4.2.68", "description": "The official Spine Runtimes for CanvasKit for NodeJS", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67", + "@esotericsoftware/spine-core": "4.2.68", "canvaskit-wasm": "0.39.1" }, "devDependencies": { diff --git a/spine-ts/spine-core/package.json b/spine-ts/spine-core/package.json index 8d19f84a0..a116490c3 100644 --- a/spine-ts/spine-core/package.json +++ b/spine-ts/spine-core/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-core", - "version": "4.2.67", + "version": "4.2.68", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/spine-ts/spine-phaser/package.json b/spine-ts/spine-phaser/package.json index 2159e05b9..2d9a96441 100644 --- a/spine-ts/spine-phaser/package.json +++ b/spine-ts/spine-phaser/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-phaser", - "version": "4.2.67", + "version": "4.2.68", "description": "The official Spine Runtimes for the Phaser.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,9 +31,9 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67", - "@esotericsoftware/spine-webgl": "4.2.67", - "@esotericsoftware/spine-canvas": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68", + "@esotericsoftware/spine-webgl": "4.2.68", + "@esotericsoftware/spine-canvas": "4.2.68" }, "peerDependencies": { "phaser": "^3.60.0" diff --git a/spine-ts/spine-pixi-v7/package.json b/spine-ts/spine-pixi-v7/package.json index b04a4ccb4..08539f9a9 100644 --- a/spine-ts/spine-pixi-v7/package.json +++ b/spine-ts/spine-pixi-v7/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-pixi-v7", - "version": "4.2.67", + "version": "4.2.68", "description": "The official Spine Runtimes for the web PixiJS v7.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68" }, "peerDependencies": { "@pixi/core": "^7.2.4", diff --git a/spine-ts/spine-pixi-v8/package.json b/spine-ts/spine-pixi-v8/package.json index bb79e6cfa..ae7a3cd4e 100644 --- a/spine-ts/spine-pixi-v8/package.json +++ b/spine-ts/spine-pixi-v8/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-pixi-v8", - "version": "4.2.67", + "version": "4.2.68", "description": "The official Spine Runtimes for PixiJS v8.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68" }, "peerDependencies": { "pixi.js": "^8.4.0" diff --git a/spine-ts/spine-player/package.json b/spine-ts/spine-player/package.json index b10cd4103..9498891b0 100644 --- a/spine-ts/spine-player/package.json +++ b/spine-ts/spine-player/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-player", - "version": "4.2.67", + "version": "4.2.68", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-webgl": "4.2.67" + "@esotericsoftware/spine-webgl": "4.2.68" } } \ No newline at end of file diff --git a/spine-ts/spine-threejs/package.json b/spine-ts/spine-threejs/package.json index 48522dbec..9cf90629c 100644 --- a/spine-ts/spine-threejs/package.json +++ b/spine-ts/spine-threejs/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-threejs", - "version": "4.2.67", + "version": "4.2.68", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,7 +31,7 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68" }, "devDependencies": { "@types/three": "0.162.0" diff --git a/spine-ts/spine-webgl/package.json b/spine-ts/spine-webgl/package.json index ba0e44504..5103a7dfe 100644 --- a/spine-ts/spine-webgl/package.json +++ b/spine-ts/spine-webgl/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-webgl", - "version": "4.2.67", + "version": "4.2.68", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -31,6 +31,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "4.2.67" + "@esotericsoftware/spine-core": "4.2.68" } } \ No newline at end of file