From ff118810d79f6bf006736a7c163f5740f2a66202 Mon Sep 17 00:00:00 2001 From: Luke Ingram Date: Wed, 26 Jan 2022 14:15:26 -0400 Subject: [PATCH 1/9] [ts] Fixed additive scaling mixing --- spine-ts/spine-core/src/Animation.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spine-ts/spine-core/src/Animation.ts b/spine-ts/spine-core/src/Animation.ts index 0f5964a7c..8ac8c8111 100644 --- a/spine-ts/spine-core/src/Animation.ts +++ b/spine-ts/spine-core/src/Animation.ts @@ -622,8 +622,8 @@ export class ScaleTimeline extends CurveTimeline2 implements BoneTimeline { bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; break; case MixBlend.add: - bone.scaleX = (x - bone.data.scaleX) * alpha; - bone.scaleY = (y - bone.data.scaleY) * alpha; + bone.scaleX += (x - bone.data.scaleX) * alpha; + bone.scaleY += (y - bone.data.scaleY) * alpha; } } else { switch (blend) { @@ -695,7 +695,7 @@ export class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline { bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha; break; case MixBlend.add: - bone.scaleX = (x - bone.data.scaleX) * alpha; + bone.scaleX += (x - bone.data.scaleX) * alpha; } } else { switch (blend) { @@ -762,7 +762,7 @@ export class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline { bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; break; case MixBlend.add: - bone.scaleY = (y - bone.data.scaleY) * alpha; + bone.scaleY += (y - bone.data.scaleY) * alpha; } } else { switch (blend) { From 25bea5e7b8c6b349fbac63e55c340d51e30fcd0c Mon Sep 17 00:00:00 2001 From: Luke Ingram Date: Wed, 26 Jan 2022 14:15:26 -0400 Subject: [PATCH 2/9] [ts] Port of additive scale mixing fix, see #2028 --- spine-ts/spine-core/src/Animation.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spine-ts/spine-core/src/Animation.ts b/spine-ts/spine-core/src/Animation.ts index 0f5964a7c..8ac8c8111 100644 --- a/spine-ts/spine-core/src/Animation.ts +++ b/spine-ts/spine-core/src/Animation.ts @@ -622,8 +622,8 @@ export class ScaleTimeline extends CurveTimeline2 implements BoneTimeline { bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; break; case MixBlend.add: - bone.scaleX = (x - bone.data.scaleX) * alpha; - bone.scaleY = (y - bone.data.scaleY) * alpha; + bone.scaleX += (x - bone.data.scaleX) * alpha; + bone.scaleY += (y - bone.data.scaleY) * alpha; } } else { switch (blend) { @@ -695,7 +695,7 @@ export class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline { bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha; break; case MixBlend.add: - bone.scaleX = (x - bone.data.scaleX) * alpha; + bone.scaleX += (x - bone.data.scaleX) * alpha; } } else { switch (blend) { @@ -762,7 +762,7 @@ export class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline { bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; break; case MixBlend.add: - bone.scaleY = (y - bone.data.scaleY) * alpha; + bone.scaleY += (y - bone.data.scaleY) * alpha; } } else { switch (blend) { From ac4bb9dea3b70ce4a05a8799be055aec2c6cbc73 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 26 Jan 2022 20:27:10 +0100 Subject: [PATCH 3/9] [ts] Updated tsc to 4.5.5. --- spine-ts/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-ts/package.json b/spine-ts/package.json index cca783ace..75ef92556 100644 --- a/spine-ts/package.json +++ b/spine-ts/package.json @@ -57,7 +57,7 @@ "live-server": "^1.2.1", "npx": "^10.2.2", "rimraf": "^3.0.2", - "typescript": "^4.3.5", + "typescript": "^4.5.5", "@types/offscreencanvas": "^2019.6.4" } } \ No newline at end of file From 0db427be0094aefd62bd0d377049c754a65fdb14 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 26 Jan 2022 20:28:50 +0100 Subject: [PATCH 4/9] [ts] Update package-lock.json. --- spine-ts/package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spine-ts/package-lock.json b/spine-ts/package-lock.json index 710209383..4db4cc589 100644 --- a/spine-ts/package-lock.json +++ b/spine-ts/package-lock.json @@ -23,7 +23,7 @@ "live-server": "^1.2.1", "npx": "^10.2.2", "rimraf": "^3.0.2", - "typescript": "^4.3.5" + "typescript": "^4.5.5" } }, "node_modules/@esotericsoftware/spine-canvas": { From 0744b4c12dc06781ec004279134dbdebde92e408 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 26 Jan 2022 20:31:12 +0100 Subject: [PATCH 5/9] [ts] Released 4.0.19 --- spine-ts/package-lock.json | 30 ++++++++++++++--------------- spine-ts/package.json | 2 +- spine-ts/spine-canvas/package.json | 4 ++-- spine-ts/spine-core/package.json | 2 +- spine-ts/spine-player/package.json | 4 ++-- spine-ts/spine-threejs/package.json | 4 ++-- spine-ts/spine-webgl/package.json | 4 ++-- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/spine-ts/package-lock.json b/spine-ts/package-lock.json index 4db4cc589..c3c8d084b 100644 --- a/spine-ts/package-lock.json +++ b/spine-ts/package-lock.json @@ -1,12 +1,12 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.0.18", + "version": "4.0.19", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@esotericsoftware/spine-ts", - "version": "4.0.18", + "version": "4.0.19", "license": "LicenseRef-LICENSE", "workspaces": [ "spine-core", @@ -7951,41 +7951,41 @@ }, "spine-canvas": { "name": "@esotericsoftware/spine-canvas", - "version": "4.0.18", + "version": "4.0.19", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "^4.0.18" + "@esotericsoftware/spine-core": "^4.0.19" } }, "spine-core": { "name": "@esotericsoftware/spine-core", - "version": "4.0.18", + "version": "4.0.19", "license": "LicenseRef-LICENSE" }, "spine-player": { "name": "@esotericsoftware/spine-player", - "version": "4.0.18", + "version": "4.0.19", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-webgl": "^4.0.18" + "@esotericsoftware/spine-webgl": "^4.0.19" } }, "spine-threejs": { "name": "@esotericsoftware/spine-threejs", - "version": "4.0.18", + "version": "4.0.19", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "^4.0.18", + "@esotericsoftware/spine-core": "^4.0.19", "@types/three": "^0.133.1", "three": "^0.133.1" } }, "spine-webgl": { "name": "@esotericsoftware/spine-webgl", - "version": "4.0.18", + "version": "4.0.19", "license": "LicenseRef-LICENSE", "dependencies": { - "@esotericsoftware/spine-core": "^4.0.18" + "@esotericsoftware/spine-core": "^4.0.19" } } }, @@ -7993,7 +7993,7 @@ "@esotericsoftware/spine-canvas": { "version": "file:spine-canvas", "requires": { - "@esotericsoftware/spine-core": "^4.0.18" + "@esotericsoftware/spine-core": "^4.0.19" } }, "@esotericsoftware/spine-core": { @@ -8002,13 +8002,13 @@ "@esotericsoftware/spine-player": { "version": "file:spine-player", "requires": { - "@esotericsoftware/spine-webgl": "^4.0.18" + "@esotericsoftware/spine-webgl": "^4.0.19" } }, "@esotericsoftware/spine-threejs": { "version": "file:spine-threejs", "requires": { - "@esotericsoftware/spine-core": "^4.0.18", + "@esotericsoftware/spine-core": "^4.0.19", "@types/three": "^0.133.1", "three": "^0.133.1" } @@ -8016,7 +8016,7 @@ "@esotericsoftware/spine-webgl": { "version": "file:spine-webgl", "requires": { - "@esotericsoftware/spine-core": "^4.0.18" + "@esotericsoftware/spine-core": "^4.0.19" } }, "@types/offscreencanvas": { diff --git a/spine-ts/package.json b/spine-ts/package.json index 75ef92556..3ef794581 100644 --- a/spine-ts/package.json +++ b/spine-ts/package.json @@ -1,6 +1,6 @@ { "name": "@esotericsoftware/spine-ts", - "version": "4.0.18", + "version": "4.0.19", "description": "The official Spine Runtimes for the web.", "files": [ "README.md" diff --git a/spine-ts/spine-canvas/package.json b/spine-ts/spine-canvas/package.json index 5c4d82edf..55481fced 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.0.18", + "version": "4.0.19", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -30,6 +30,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "^4.0.18" + "@esotericsoftware/spine-core": "^4.0.19" } } \ No newline at end of file diff --git a/spine-ts/spine-core/package.json b/spine-ts/spine-core/package.json index 763ba35bc..e0be64865 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.0.18", + "version": "4.0.19", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/spine-ts/spine-player/package.json b/spine-ts/spine-player/package.json index db2515776..63130d253 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.0.18", + "version": "4.0.19", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -30,6 +30,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-webgl": "^4.0.18" + "@esotericsoftware/spine-webgl": "^4.0.19" } } \ No newline at end of file diff --git a/spine-ts/spine-threejs/package.json b/spine-ts/spine-threejs/package.json index 8272ad754..186fbb68e 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.0.18", + "version": "4.0.19", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -32,6 +32,6 @@ "dependencies": { "@types/three": "^0.133.1", "three": "^0.133.1", - "@esotericsoftware/spine-core": "^4.0.18" + "@esotericsoftware/spine-core": "^4.0.19" } } \ No newline at end of file diff --git a/spine-ts/spine-webgl/package.json b/spine-ts/spine-webgl/package.json index a5cb0a699..23d8c9c4e 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.0.18", + "version": "4.0.19", "description": "The official Spine Runtimes for the web.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -30,6 +30,6 @@ }, "homepage": "https://github.com/esotericsoftware/spine-runtimes#readme", "dependencies": { - "@esotericsoftware/spine-core": "^4.0.18" + "@esotericsoftware/spine-core": "^4.0.19" } } \ No newline at end of file From c8fe2c884b646bf43056191a1c308a6f64306f71 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 26 Jan 2022 20:36:10 +0100 Subject: [PATCH 6/9] [c] Ported scale mixing fix, see #2028. --- spine-c/spine-c/src/spine/Animation.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/spine-c/spine-c/src/spine/Animation.c b/spine-c/spine-c/src/spine/Animation.c index 4288205ca..ad1aa575a 100644 --- a/spine-c/spine-c/src/spine/Animation.c +++ b/spine-c/spine-c/src/spine/Animation.c @@ -655,8 +655,8 @@ void _spScaleTimeline_apply(spTimeline *timeline, spSkeleton *skeleton, float la bone->scaleY = by + (ABS(y) * SIGNUM(by) - by) * alpha; break; case SP_MIX_BLEND_ADD: - bone->scaleX = (x - bone->data->scaleX) * alpha; - bone->scaleY = (y - bone->data->scaleY) * alpha; + bone->scaleX += (x - bone->data->scaleX) * alpha; + bone->scaleY += (y - bone->data->scaleY) * alpha; } } else { switch (blend) { @@ -748,7 +748,7 @@ void _spScaleXTimeline_apply(spTimeline *timeline, spSkeleton *skeleton, float l bone->scaleX = bx + (ABS(x) * SIGNUM(bx) - bx) * alpha; break; case SP_MIX_BLEND_ADD: - bone->scaleX = (x - bone->data->scaleX) * alpha; + bone->scaleX += (x - bone->data->scaleX) * alpha; } } else { switch (blend) { @@ -834,7 +834,7 @@ void _spScaleYTimeline_apply(spTimeline *timeline, spSkeleton *skeleton, float l bone->scaleY = by + (ABS(y) * SIGNUM(by) - by) * alpha; break; case SP_MIX_BLEND_ADD: - bone->scaleY = (y - bone->data->scaleY) * alpha; + bone->scaleY += (y - bone->data->scaleY) * alpha; } } else { switch (blend) { @@ -1756,7 +1756,7 @@ void _spDeformTimeline_apply( spTimeline *timeline, spSkeleton *skeleton, float lastTime, float time, spEvent **firedEvents, int *eventsCount, float alpha, spMixBlend blend, spMixDirection direction) { int frame, i, vertexCount; - float percent, frameTime; + float percent; const float *prevVertices; const float *nextVertices; float *frames; @@ -1892,7 +1892,6 @@ void _spDeformTimeline_apply( percent = _spDeformTimeline_getCurvePercent(self, time, frame); prevVertices = frameVertices[frame]; nextVertices = frameVertices[frame + 1]; - frameTime = frames[frame]; if (alpha == 1) { if (blend == SP_MIX_BLEND_ADD) { From 65c62bff060eef1cc9cb4ca6432ec28d60cf0e65 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Wed, 26 Jan 2022 20:37:29 +0100 Subject: [PATCH 7/9] [cpp] Ported scale mixing fix, see #2028. --- spine-cpp/spine-cpp/src/spine/ScaleTimeline.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spine-cpp/spine-cpp/src/spine/ScaleTimeline.cpp b/spine-cpp/spine-cpp/src/spine/ScaleTimeline.cpp index 4b10157a4..6707311d5 100644 --- a/spine-cpp/spine-cpp/src/spine/ScaleTimeline.cpp +++ b/spine-cpp/spine-cpp/src/spine/ScaleTimeline.cpp @@ -131,8 +131,8 @@ void ScaleTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vector bone->_scaleY = by + (MathUtil::abs(y) * MathUtil::sign(by) - by) * alpha; break; case MixBlend_Add: - bone->_scaleX = (x - bone->_data._scaleX) * alpha; - bone->_scaleY = (y - bone->_data._scaleY) * alpha; + bone->_scaleX += (x - bone->_data._scaleX) * alpha; + bone->_scaleY += (y - bone->_data._scaleY) * alpha; } } else { switch (blend) { @@ -210,7 +210,7 @@ void ScaleXTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto bone->_scaleX = bx + (MathUtil::abs(x) * MathUtil::sign(bx) - bx) * alpha; break; case MixBlend_Add: - bone->_scaleX = (x - bone->_data._scaleX) * alpha; + bone->_scaleX += (x - bone->_data._scaleX) * alpha; } } else { switch (blend) { @@ -283,7 +283,7 @@ void ScaleYTimeline::apply(Skeleton &skeleton, float lastTime, float time, Vecto bone->_scaleY = by + (MathUtil::abs(y) * MathUtil::sign(by) - by) * alpha; break; case MixBlend_Add: - bone->_scaleY = (y - bone->_data._scaleY) * alpha; + bone->_scaleY += (y - bone->_data._scaleY) * alpha; } } else { switch (blend) { From eff8b372f728cec13b7f1cf9496ad42cfc2a1a19 Mon Sep 17 00:00:00 2001 From: Luke Ingram Date: Wed, 26 Jan 2022 15:56:11 -0400 Subject: [PATCH 8/9] [lua] Port of additive scale mixing fix, see #2028 --- spine-lua/spine-lua/Animation.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spine-lua/spine-lua/Animation.lua b/spine-lua/spine-lua/Animation.lua index 62d5caec5..bbdb16dd4 100644 --- a/spine-lua/spine-lua/Animation.lua +++ b/spine-lua/spine-lua/Animation.lua @@ -566,8 +566,8 @@ function Animation.ScaleTimeline.new (frameCount, bezierCount, boneIndex) bone.scaleX = bx + (math_abs(x) * math_signum(bx) - bx) * alpha bone.scaleY = by + (math_abs(y) * math_signum(by) - by) * alpha elseif blend == MixBlend.add then - bone.scaleX = (x - bone.data.scaleX) * alpha - bone.scaleY = (y - bone.data.scaleY) * alpha + bone.scaleX = bone.scaleX + (x - bone.data.scaleX) * alpha + bone.scaleY = bone.scaleY + (y - bone.data.scaleY) * alpha end else if blend == MixBlend.setup then @@ -627,7 +627,7 @@ function Animation.ScaleXTimeline.new (frameCount, bezierCount, boneIndex) bx = bone.scaleX bone.scaleX = bx + (math_abs(x) * math_signum(bx) - bx) * alpha elseif blend == MixBlend.add then - bone.scaleX = (x - bone.data.scaleX) * alpha + bone.scaleX = bone.scaleX + (x - bone.data.scaleX) * alpha end else if blend == MixBlend.setup then @@ -682,7 +682,7 @@ function Animation.ScaleYTimeline.new (frameCount, bezierCount, boneIndex) by = bone.scaleY bone.scaleY = by + (math_abs(y) * math_signum(by) - by) * alpha elseif blend == MixBlend.add then - bone.scaleY = (y - bone.data.scaleY) * alpha + bone.scaleY = bone.scaleY + (y - bone.data.scaleY) * alpha end else if blend == MixBlend.setup then From b0de9cbfb67ea41b7a94aa88cbb30821ddbf3401 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 27 Jan 2022 18:40:45 +0100 Subject: [PATCH 9/9] [as3] Ported scale mixing fix, closes #2028. --- spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as | 4 ++-- spine-as3/spine-as3/src/spine/animation/ScaleXTimeline.as | 2 +- spine-as3/spine-as3/src/spine/animation/ScaleYTimeline.as | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as b/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as index 2bd237ba1..835498cb5 100644 --- a/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as @@ -115,8 +115,8 @@ package spine.animation { bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; break; case MixBlend.add: - bone.scaleX = (x - bone.data.scaleX) * alpha; - bone.scaleY = (y - bone.data.scaleY) * alpha; + bone.scaleX += (x - bone.data.scaleX) * alpha; + bone.scaleY += (y - bone.data.scaleY) * alpha; } } else { switch (blend) { diff --git a/spine-as3/spine-as3/src/spine/animation/ScaleXTimeline.as b/spine-as3/spine-as3/src/spine/animation/ScaleXTimeline.as index b3e8c2da4..ed77b6152 100644 --- a/spine-as3/spine-as3/src/spine/animation/ScaleXTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/ScaleXTimeline.as @@ -82,7 +82,7 @@ package spine.animation { bone.scaleX = bx + (Math.abs(x) * MathUtils.signum(bx) - bx) * alpha; break; case MixBlend.add: - bone.scaleX = (x - bone.data.scaleX) * alpha; + bone.scaleX += (x - bone.data.scaleX) * alpha; } } else { switch (blend) { diff --git a/spine-as3/spine-as3/src/spine/animation/ScaleYTimeline.as b/spine-as3/spine-as3/src/spine/animation/ScaleYTimeline.as index a750510fe..b228847f2 100644 --- a/spine-as3/spine-as3/src/spine/animation/ScaleYTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/ScaleYTimeline.as @@ -82,7 +82,7 @@ package spine.animation { bone.scaleY = by + (Math.abs(y) * MathUtils.signum(by) - by) * alpha; break; case MixBlend.add: - bone.scaleY = (y - bone.data.scaleY) * alpha; + bone.scaleY += (y - bone.data.scaleY) * alpha; } } else { switch (blend) {