Explorar o código

Merge branch '4.2' of https://github.com/esotericsoftware/spine-runtimes into 4.2

badlogic hai 9 meses
pai
achega
db34a71cfa

+ 11 - 10
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;

+ 21 - 21
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"
       }
     }
   }

+ 1 - 1
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": [

+ 2 - 2
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"
   }
 }

+ 2 - 2
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": {

+ 1 - 1
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",

+ 11 - 9
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;

+ 4 - 4
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"

+ 2 - 2
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",

+ 2 - 2
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"

+ 2 - 2
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"
   }
 }

+ 2 - 2
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"

+ 2 - 2
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"
   }
 }