瀏覽代碼

[ts] port of PathConstraint changes, see #1109.

badlogic 7 年之前
父節點
當前提交
2e4d3a1808

+ 19 - 9
spine-ts/build/spine-all.js

@@ -2863,17 +2863,17 @@ var spine;
 			if (!translate && !rotate)
 			if (!translate && !rotate)
 				return;
 				return;
 			var data = this.data;
 			var data = this.data;
-			var spacingMode = data.spacingMode;
-			var lengthSpacing = spacingMode == spine.SpacingMode.Length;
+			var percentSpacing = data.spacingMode == spine.SpacingMode.Percent;
 			var rotateMode = data.rotateMode;
 			var rotateMode = data.rotateMode;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var bones = this.bones;
 			var bones = this.bones;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spacing = this.spacing;
 			var spacing = this.spacing;
-			if (scale || lengthSpacing) {
+			if (scale || !percentSpacing) {
 				if (scale)
 				if (scale)
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
+				var lengthSpacing = data.spacingMode == spine.SpacingMode.Length;
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 					var bone = bones[i];
 					var bone = bones[i];
 					var setupLength = bone.data.length;
 					var setupLength = bone.data.length;
@@ -2882,9 +2882,17 @@ var spine;
 							lengths[i] = 0;
 							lengths[i] = 0;
 						spaces[++i] = 0;
 						spaces[++i] = 0;
 					}
 					}
+					else if (percentSpacing) {
+						if (scale) {
+							var x = setupLength * bone.a, y = setupLength * bone.c;
+							var length = Math.sqrt(x * x + y * y);
+							lengths[i] = length;
+						}
+						spaces[++i] = spacing;
+					}
 					else {
 					else {
-						var x = setupLength * bone.a, y = setupLength * bone.c;
-						var length_1 = Math.sqrt(x * x + y * y);
+						var x_1 = setupLength * bone.a, y_1 = setupLength * bone.c;
+						var length_1 = Math.sqrt(x_1 * x_1 + y_1 * y_1);
 						if (scale)
 						if (scale)
 							lengths[i] = length_1;
 							lengths[i] = length_1;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
@@ -2895,7 +2903,7 @@ var spine;
 				for (var i = 1; i < spacesCount; i++)
 				for (var i = 1; i < spacesCount; i++)
 					spaces[i] = spacing;
 					spaces[i] = spacing;
 			}
 			}
-			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent);
+			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, percentSpacing);
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var tip = false;
 			var tip = false;
 			if (offsetRotation == 0)
 			if (offsetRotation == 0)
@@ -2909,7 +2917,7 @@ var spine;
 				var bone = bones[i];
 				var bone = bones[i];
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
-				var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;
+				var x_2 = positions[p], y_2 = positions[p + 1], dx = x_2 - boneX, dy = y_2 - boneY;
 				if (scale) {
 				if (scale) {
 					var length_2 = lengths[i];
 					var length_2 = lengths[i];
 					if (length_2 != 0) {
 					if (length_2 != 0) {
@@ -2918,8 +2926,8 @@ var spine;
 						bone.c *= s;
 						bone.c *= s;
 					}
 					}
 				}
 				}
-				boneX = x;
-				boneY = y;
+				boneX = x_2;
+				boneY = y_2;
 				if (rotate) {
 				if (rotate) {
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					if (tangents)
 					if (tangents)
@@ -3073,6 +3081,8 @@ var spine;
 			}
 			}
 			if (percentPosition)
 			if (percentPosition)
 				position *= pathLength;
 				position *= pathLength;
+			else
+				position *= pathLength / path.lengths[curveCount - 1];
 			if (percentSpacing) {
 			if (percentSpacing) {
 				for (var i = 0; i < spacesCount; i++)
 				for (var i = 0; i < spacesCount; i++)
 					spaces[i] *= pathLength;
 					spaces[i] *= pathLength;

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-all.js.map


+ 19 - 9
spine-ts/build/spine-canvas.js

@@ -2863,17 +2863,17 @@ var spine;
 			if (!translate && !rotate)
 			if (!translate && !rotate)
 				return;
 				return;
 			var data = this.data;
 			var data = this.data;
-			var spacingMode = data.spacingMode;
-			var lengthSpacing = spacingMode == spine.SpacingMode.Length;
+			var percentSpacing = data.spacingMode == spine.SpacingMode.Percent;
 			var rotateMode = data.rotateMode;
 			var rotateMode = data.rotateMode;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var bones = this.bones;
 			var bones = this.bones;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spacing = this.spacing;
 			var spacing = this.spacing;
-			if (scale || lengthSpacing) {
+			if (scale || !percentSpacing) {
 				if (scale)
 				if (scale)
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
+				var lengthSpacing = data.spacingMode == spine.SpacingMode.Length;
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 					var bone = bones[i];
 					var bone = bones[i];
 					var setupLength = bone.data.length;
 					var setupLength = bone.data.length;
@@ -2882,9 +2882,17 @@ var spine;
 							lengths[i] = 0;
 							lengths[i] = 0;
 						spaces[++i] = 0;
 						spaces[++i] = 0;
 					}
 					}
+					else if (percentSpacing) {
+						if (scale) {
+							var x = setupLength * bone.a, y = setupLength * bone.c;
+							var length = Math.sqrt(x * x + y * y);
+							lengths[i] = length;
+						}
+						spaces[++i] = spacing;
+					}
 					else {
 					else {
-						var x = setupLength * bone.a, y = setupLength * bone.c;
-						var length_1 = Math.sqrt(x * x + y * y);
+						var x_1 = setupLength * bone.a, y_1 = setupLength * bone.c;
+						var length_1 = Math.sqrt(x_1 * x_1 + y_1 * y_1);
 						if (scale)
 						if (scale)
 							lengths[i] = length_1;
 							lengths[i] = length_1;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
@@ -2895,7 +2903,7 @@ var spine;
 				for (var i = 1; i < spacesCount; i++)
 				for (var i = 1; i < spacesCount; i++)
 					spaces[i] = spacing;
 					spaces[i] = spacing;
 			}
 			}
-			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent);
+			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, percentSpacing);
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var tip = false;
 			var tip = false;
 			if (offsetRotation == 0)
 			if (offsetRotation == 0)
@@ -2909,7 +2917,7 @@ var spine;
 				var bone = bones[i];
 				var bone = bones[i];
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
-				var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;
+				var x_2 = positions[p], y_2 = positions[p + 1], dx = x_2 - boneX, dy = y_2 - boneY;
 				if (scale) {
 				if (scale) {
 					var length_2 = lengths[i];
 					var length_2 = lengths[i];
 					if (length_2 != 0) {
 					if (length_2 != 0) {
@@ -2918,8 +2926,8 @@ var spine;
 						bone.c *= s;
 						bone.c *= s;
 					}
 					}
 				}
 				}
-				boneX = x;
-				boneY = y;
+				boneX = x_2;
+				boneY = y_2;
 				if (rotate) {
 				if (rotate) {
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					if (tangents)
 					if (tangents)
@@ -3073,6 +3081,8 @@ var spine;
 			}
 			}
 			if (percentPosition)
 			if (percentPosition)
 				position *= pathLength;
 				position *= pathLength;
+			else
+				position *= pathLength / path.lengths[curveCount - 1];
 			if (percentSpacing) {
 			if (percentSpacing) {
 				for (var i = 0; i < spacesCount; i++)
 				for (var i = 0; i < spacesCount; i++)
 					spaces[i] *= pathLength;
 					spaces[i] *= pathLength;

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-canvas.js.map


+ 19 - 9
spine-ts/build/spine-core.js

@@ -2863,17 +2863,17 @@ var spine;
 			if (!translate && !rotate)
 			if (!translate && !rotate)
 				return;
 				return;
 			var data = this.data;
 			var data = this.data;
-			var spacingMode = data.spacingMode;
-			var lengthSpacing = spacingMode == spine.SpacingMode.Length;
+			var percentSpacing = data.spacingMode == spine.SpacingMode.Percent;
 			var rotateMode = data.rotateMode;
 			var rotateMode = data.rotateMode;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var bones = this.bones;
 			var bones = this.bones;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spacing = this.spacing;
 			var spacing = this.spacing;
-			if (scale || lengthSpacing) {
+			if (scale || !percentSpacing) {
 				if (scale)
 				if (scale)
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
+				var lengthSpacing = data.spacingMode == spine.SpacingMode.Length;
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 					var bone = bones[i];
 					var bone = bones[i];
 					var setupLength = bone.data.length;
 					var setupLength = bone.data.length;
@@ -2882,9 +2882,17 @@ var spine;
 							lengths[i] = 0;
 							lengths[i] = 0;
 						spaces[++i] = 0;
 						spaces[++i] = 0;
 					}
 					}
+					else if (percentSpacing) {
+						if (scale) {
+							var x = setupLength * bone.a, y = setupLength * bone.c;
+							var length = Math.sqrt(x * x + y * y);
+							lengths[i] = length;
+						}
+						spaces[++i] = spacing;
+					}
 					else {
 					else {
-						var x = setupLength * bone.a, y = setupLength * bone.c;
-						var length_1 = Math.sqrt(x * x + y * y);
+						var x_1 = setupLength * bone.a, y_1 = setupLength * bone.c;
+						var length_1 = Math.sqrt(x_1 * x_1 + y_1 * y_1);
 						if (scale)
 						if (scale)
 							lengths[i] = length_1;
 							lengths[i] = length_1;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
@@ -2895,7 +2903,7 @@ var spine;
 				for (var i = 1; i < spacesCount; i++)
 				for (var i = 1; i < spacesCount; i++)
 					spaces[i] = spacing;
 					spaces[i] = spacing;
 			}
 			}
-			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent);
+			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, percentSpacing);
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var tip = false;
 			var tip = false;
 			if (offsetRotation == 0)
 			if (offsetRotation == 0)
@@ -2909,7 +2917,7 @@ var spine;
 				var bone = bones[i];
 				var bone = bones[i];
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
-				var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;
+				var x_2 = positions[p], y_2 = positions[p + 1], dx = x_2 - boneX, dy = y_2 - boneY;
 				if (scale) {
 				if (scale) {
 					var length_2 = lengths[i];
 					var length_2 = lengths[i];
 					if (length_2 != 0) {
 					if (length_2 != 0) {
@@ -2918,8 +2926,8 @@ var spine;
 						bone.c *= s;
 						bone.c *= s;
 					}
 					}
 				}
 				}
-				boneX = x;
-				boneY = y;
+				boneX = x_2;
+				boneY = y_2;
 				if (rotate) {
 				if (rotate) {
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					if (tangents)
 					if (tangents)
@@ -3073,6 +3081,8 @@ var spine;
 			}
 			}
 			if (percentPosition)
 			if (percentPosition)
 				position *= pathLength;
 				position *= pathLength;
+			else
+				position *= pathLength / path.lengths[curveCount - 1];
 			if (percentSpacing) {
 			if (percentSpacing) {
 				for (var i = 0; i < spacesCount; i++)
 				for (var i = 0; i < spacesCount; i++)
 					spaces[i] *= pathLength;
 					spaces[i] *= pathLength;

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-core.js.map


+ 19 - 9
spine-ts/build/spine-threejs.js

@@ -2863,17 +2863,17 @@ var spine;
 			if (!translate && !rotate)
 			if (!translate && !rotate)
 				return;
 				return;
 			var data = this.data;
 			var data = this.data;
-			var spacingMode = data.spacingMode;
-			var lengthSpacing = spacingMode == spine.SpacingMode.Length;
+			var percentSpacing = data.spacingMode == spine.SpacingMode.Percent;
 			var rotateMode = data.rotateMode;
 			var rotateMode = data.rotateMode;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var bones = this.bones;
 			var bones = this.bones;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spacing = this.spacing;
 			var spacing = this.spacing;
-			if (scale || lengthSpacing) {
+			if (scale || !percentSpacing) {
 				if (scale)
 				if (scale)
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
+				var lengthSpacing = data.spacingMode == spine.SpacingMode.Length;
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 					var bone = bones[i];
 					var bone = bones[i];
 					var setupLength = bone.data.length;
 					var setupLength = bone.data.length;
@@ -2882,9 +2882,17 @@ var spine;
 							lengths[i] = 0;
 							lengths[i] = 0;
 						spaces[++i] = 0;
 						spaces[++i] = 0;
 					}
 					}
+					else if (percentSpacing) {
+						if (scale) {
+							var x = setupLength * bone.a, y = setupLength * bone.c;
+							var length = Math.sqrt(x * x + y * y);
+							lengths[i] = length;
+						}
+						spaces[++i] = spacing;
+					}
 					else {
 					else {
-						var x = setupLength * bone.a, y = setupLength * bone.c;
-						var length_1 = Math.sqrt(x * x + y * y);
+						var x_1 = setupLength * bone.a, y_1 = setupLength * bone.c;
+						var length_1 = Math.sqrt(x_1 * x_1 + y_1 * y_1);
 						if (scale)
 						if (scale)
 							lengths[i] = length_1;
 							lengths[i] = length_1;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
@@ -2895,7 +2903,7 @@ var spine;
 				for (var i = 1; i < spacesCount; i++)
 				for (var i = 1; i < spacesCount; i++)
 					spaces[i] = spacing;
 					spaces[i] = spacing;
 			}
 			}
-			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent);
+			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, percentSpacing);
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var tip = false;
 			var tip = false;
 			if (offsetRotation == 0)
 			if (offsetRotation == 0)
@@ -2909,7 +2917,7 @@ var spine;
 				var bone = bones[i];
 				var bone = bones[i];
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
-				var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;
+				var x_2 = positions[p], y_2 = positions[p + 1], dx = x_2 - boneX, dy = y_2 - boneY;
 				if (scale) {
 				if (scale) {
 					var length_2 = lengths[i];
 					var length_2 = lengths[i];
 					if (length_2 != 0) {
 					if (length_2 != 0) {
@@ -2918,8 +2926,8 @@ var spine;
 						bone.c *= s;
 						bone.c *= s;
 					}
 					}
 				}
 				}
-				boneX = x;
-				boneY = y;
+				boneX = x_2;
+				boneY = y_2;
 				if (rotate) {
 				if (rotate) {
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					if (tangents)
 					if (tangents)
@@ -3073,6 +3081,8 @@ var spine;
 			}
 			}
 			if (percentPosition)
 			if (percentPosition)
 				position *= pathLength;
 				position *= pathLength;
+			else
+				position *= pathLength / path.lengths[curveCount - 1];
 			if (percentSpacing) {
 			if (percentSpacing) {
 				for (var i = 0; i < spacesCount; i++)
 				for (var i = 0; i < spacesCount; i++)
 					spaces[i] *= pathLength;
 					spaces[i] *= pathLength;

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-threejs.js.map


+ 19 - 9
spine-ts/build/spine-webgl.js

@@ -2863,17 +2863,17 @@ var spine;
 			if (!translate && !rotate)
 			if (!translate && !rotate)
 				return;
 				return;
 			var data = this.data;
 			var data = this.data;
-			var spacingMode = data.spacingMode;
-			var lengthSpacing = spacingMode == spine.SpacingMode.Length;
+			var percentSpacing = data.spacingMode == spine.SpacingMode.Percent;
 			var rotateMode = data.rotateMode;
 			var rotateMode = data.rotateMode;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var bones = this.bones;
 			var bones = this.bones;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spacing = this.spacing;
 			var spacing = this.spacing;
-			if (scale || lengthSpacing) {
+			if (scale || !percentSpacing) {
 				if (scale)
 				if (scale)
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
+				var lengthSpacing = data.spacingMode == spine.SpacingMode.Length;
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 					var bone = bones[i];
 					var bone = bones[i];
 					var setupLength = bone.data.length;
 					var setupLength = bone.data.length;
@@ -2882,9 +2882,17 @@ var spine;
 							lengths[i] = 0;
 							lengths[i] = 0;
 						spaces[++i] = 0;
 						spaces[++i] = 0;
 					}
 					}
+					else if (percentSpacing) {
+						if (scale) {
+							var x = setupLength * bone.a, y = setupLength * bone.c;
+							var length = Math.sqrt(x * x + y * y);
+							lengths[i] = length;
+						}
+						spaces[++i] = spacing;
+					}
 					else {
 					else {
-						var x = setupLength * bone.a, y = setupLength * bone.c;
-						var length_1 = Math.sqrt(x * x + y * y);
+						var x_1 = setupLength * bone.a, y_1 = setupLength * bone.c;
+						var length_1 = Math.sqrt(x_1 * x_1 + y_1 * y_1);
 						if (scale)
 						if (scale)
 							lengths[i] = length_1;
 							lengths[i] = length_1;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
@@ -2895,7 +2903,7 @@ var spine;
 				for (var i = 1; i < spacesCount; i++)
 				for (var i = 1; i < spacesCount; i++)
 					spaces[i] = spacing;
 					spaces[i] = spacing;
 			}
 			}
-			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent);
+			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, percentSpacing);
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var tip = false;
 			var tip = false;
 			if (offsetRotation == 0)
 			if (offsetRotation == 0)
@@ -2909,7 +2917,7 @@ var spine;
 				var bone = bones[i];
 				var bone = bones[i];
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
-				var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;
+				var x_2 = positions[p], y_2 = positions[p + 1], dx = x_2 - boneX, dy = y_2 - boneY;
 				if (scale) {
 				if (scale) {
 					var length_2 = lengths[i];
 					var length_2 = lengths[i];
 					if (length_2 != 0) {
 					if (length_2 != 0) {
@@ -2918,8 +2926,8 @@ var spine;
 						bone.c *= s;
 						bone.c *= s;
 					}
 					}
 				}
 				}
-				boneX = x;
-				boneY = y;
+				boneX = x_2;
+				boneY = y_2;
 				if (rotate) {
 				if (rotate) {
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					if (tangents)
 					if (tangents)
@@ -3073,6 +3081,8 @@ var spine;
 			}
 			}
 			if (percentPosition)
 			if (percentPosition)
 				position *= pathLength;
 				position *= pathLength;
+			else
+				position *= pathLength / path.lengths[curveCount - 1];
 			if (percentSpacing) {
 			if (percentSpacing) {
 				for (var i = 0; i < spacesCount; i++)
 				for (var i = 0; i < spacesCount; i++)
 					spaces[i] *= pathLength;
 					spaces[i] *= pathLength;

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-webgl.js.map


+ 19 - 9
spine-ts/build/spine-widget.js

@@ -2863,17 +2863,17 @@ var spine;
 			if (!translate && !rotate)
 			if (!translate && !rotate)
 				return;
 				return;
 			var data = this.data;
 			var data = this.data;
-			var spacingMode = data.spacingMode;
-			var lengthSpacing = spacingMode == spine.SpacingMode.Length;
+			var percentSpacing = data.spacingMode == spine.SpacingMode.Percent;
 			var rotateMode = data.rotateMode;
 			var rotateMode = data.rotateMode;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var tangents = rotateMode == spine.RotateMode.Tangent, scale = rotateMode == spine.RotateMode.ChainScale;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			var bones = this.bones;
 			var bones = this.bones;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spaces = spine.Utils.setArraySize(this.spaces, spacesCount), lengths = null;
 			var spacing = this.spacing;
 			var spacing = this.spacing;
-			if (scale || lengthSpacing) {
+			if (scale || !percentSpacing) {
 				if (scale)
 				if (scale)
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
 					lengths = spine.Utils.setArraySize(this.lengths, boneCount);
+				var lengthSpacing = data.spacingMode == spine.SpacingMode.Length;
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 				for (var i = 0, n = spacesCount - 1; i < n;) {
 					var bone = bones[i];
 					var bone = bones[i];
 					var setupLength = bone.data.length;
 					var setupLength = bone.data.length;
@@ -2882,9 +2882,17 @@ var spine;
 							lengths[i] = 0;
 							lengths[i] = 0;
 						spaces[++i] = 0;
 						spaces[++i] = 0;
 					}
 					}
+					else if (percentSpacing) {
+						if (scale) {
+							var x = setupLength * bone.a, y = setupLength * bone.c;
+							var length = Math.sqrt(x * x + y * y);
+							lengths[i] = length;
+						}
+						spaces[++i] = spacing;
+					}
 					else {
 					else {
-						var x = setupLength * bone.a, y = setupLength * bone.c;
-						var length_1 = Math.sqrt(x * x + y * y);
+						var x_1 = setupLength * bone.a, y_1 = setupLength * bone.c;
+						var length_1 = Math.sqrt(x_1 * x_1 + y_1 * y_1);
 						if (scale)
 						if (scale)
 							lengths[i] = length_1;
 							lengths[i] = length_1;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
@@ -2895,7 +2903,7 @@ var spine;
 				for (var i = 1; i < spacesCount; i++)
 				for (var i = 1; i < spacesCount; i++)
 					spaces[i] = spacing;
 					spaces[i] = spacing;
 			}
 			}
-			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, spacingMode == spine.SpacingMode.Percent);
+			var positions = this.computeWorldPositions(attachment, spacesCount, tangents, data.positionMode == spine.PositionMode.Percent, percentSpacing);
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			var tip = false;
 			var tip = false;
 			if (offsetRotation == 0)
 			if (offsetRotation == 0)
@@ -2909,7 +2917,7 @@ var spine;
 				var bone = bones[i];
 				var bone = bones[i];
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldX += (boneX - bone.worldX) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
 				bone.worldY += (boneY - bone.worldY) * translateMix;
-				var x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;
+				var x_2 = positions[p], y_2 = positions[p + 1], dx = x_2 - boneX, dy = y_2 - boneY;
 				if (scale) {
 				if (scale) {
 					var length_2 = lengths[i];
 					var length_2 = lengths[i];
 					if (length_2 != 0) {
 					if (length_2 != 0) {
@@ -2918,8 +2926,8 @@ var spine;
 						bone.c *= s;
 						bone.c *= s;
 					}
 					}
 				}
 				}
-				boneX = x;
-				boneY = y;
+				boneX = x_2;
+				boneY = y_2;
 				if (rotate) {
 				if (rotate) {
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					var a = bone.a, b = bone.b, c = bone.c, d = bone.d, r = 0, cos = 0, sin = 0;
 					if (tangents)
 					if (tangents)
@@ -3073,6 +3081,8 @@ var spine;
 			}
 			}
 			if (percentPosition)
 			if (percentPosition)
 				position *= pathLength;
 				position *= pathLength;
+			else
+				position *= pathLength / path.lengths[curveCount - 1];
 			if (percentSpacing) {
 			if (percentSpacing) {
 				for (var i = 0; i < spacesCount; i++)
 				for (var i = 0; i < spacesCount; i++)
 					spaces[i] *= pathLength;
 					spaces[i] *= pathLength;

File diff suppressed because it is too large
+ 0 - 0
spine-ts/build/spine-widget.js.map


+ 16 - 6
spine-ts/core/src/PathConstraint.ts

@@ -69,28 +69,35 @@ module spine {
 			if (!translate && !rotate) return;
 			if (!translate && !rotate) return;
 
 
 			let data = this.data;
 			let data = this.data;
-			let spacingMode = data.spacingMode;
-			let lengthSpacing = spacingMode == SpacingMode.Length;
+			let percentSpacing = data.spacingMode == SpacingMode.Percent;
 			let rotateMode = data.rotateMode;
 			let rotateMode = data.rotateMode;
 			let tangents = rotateMode == RotateMode.Tangent, scale = rotateMode == RotateMode.ChainScale;
 			let tangents = rotateMode == RotateMode.Tangent, scale = rotateMode == RotateMode.ChainScale;
 			let boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			let boneCount = this.bones.length, spacesCount = tangents ? boneCount : boneCount + 1;
 			let bones = this.bones;
 			let bones = this.bones;
 			let spaces = Utils.setArraySize(this.spaces, spacesCount), lengths: Array<number> = null;
 			let spaces = Utils.setArraySize(this.spaces, spacesCount), lengths: Array<number> = null;
 			let spacing = this.spacing;
 			let spacing = this.spacing;
-			if (scale || lengthSpacing) {
+			if (scale || !percentSpacing) {
 				if (scale) lengths = Utils.setArraySize(this.lengths, boneCount);
 				if (scale) lengths = Utils.setArraySize(this.lengths, boneCount);
+				var lengthSpacing = data.spacingMode == SpacingMode.Length;
 				for (let i = 0, n = spacesCount - 1; i < n;) {
 				for (let i = 0, n = spacesCount - 1; i < n;) {
 					let bone = bones[i];
 					let bone = bones[i];
 					let setupLength = bone.data.length;
 					let setupLength = bone.data.length;
 					if (setupLength < PathConstraint.epsilon) {
 					if (setupLength < PathConstraint.epsilon) {
 						if (scale) lengths[i] = 0;
 						if (scale) lengths[i] = 0;
 						spaces[++i] = 0;
 						spaces[++i] = 0;
+					} else if (percentSpacing) {
+						if (scale) {
+							var x = setupLength * bone.a, y = setupLength * bone.c;
+							var length = Math.sqrt(x * x + y * y);
+							lengths[i] = length;
+						}
+						spaces[++i] = spacing;
 					} else {
 					} else {
 						let x = setupLength * bone.a, y = setupLength * bone.c;
 						let x = setupLength * bone.a, y = setupLength * bone.c;
 						let length = Math.sqrt(x * x + y * y);
 						let length = Math.sqrt(x * x + y * y);
 						if (scale) lengths[i] = length;
 						if (scale) lengths[i] = length;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength;
 						spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength;
-					}										
+					}
 				}
 				}
 			} else {
 			} else {
 				for (let i = 1; i < spacesCount; i++)
 				for (let i = 1; i < spacesCount; i++)
@@ -98,7 +105,7 @@ module spine {
 			}
 			}
 
 
 			let positions = this.computeWorldPositions(<PathAttachment>attachment, spacesCount, tangents,
 			let positions = this.computeWorldPositions(<PathAttachment>attachment, spacesCount, tangents,
-				data.positionMode == PositionMode.Percent, spacingMode == SpacingMode.Percent);
+				data.positionMode == PositionMode.Percent, percentSpacing);
 			let boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			let boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation;
 			let tip = false;
 			let tip = false;
 			if (offsetRotation == 0)
 			if (offsetRotation == 0)
@@ -277,7 +284,10 @@ module spine {
 				x1 = x2;
 				x1 = x2;
 				y1 = y2;
 				y1 = y2;
 			}
 			}
-			if (percentPosition) position *= pathLength;
+			if (percentPosition)
+				position *= pathLength;
+			else
+				position *= pathLength / path.lengths[curveCount - 1];
 			if (percentSpacing) {
 			if (percentSpacing) {
 				for (let i = 0; i < spacesCount; i++)
 				for (let i = 0; i < spacesCount; i++)
 					spaces[i] *= pathLength;
 					spaces[i] *= pathLength;

Some files were not shown because too many files changed in this diff