[as3] Fix PathConstraint length spacing for zero length bones. See #1023.

This commit is contained in:
badlogic 2017-10-20 11:12:58 +02:00
parent bcc7da56d2
commit cbb37a6096
4 changed files with 10 additions and 5 deletions

View File

@ -33,6 +33,7 @@ package spine {
public class PathConstraint implements Constraint { public class PathConstraint implements Constraint {
private static const NONE : int = -1, BEFORE : int = -2, AFTER : int = -3; private static const NONE : int = -1, BEFORE : int = -2, AFTER : int = -3;
private static const epsilon : Number = 0.00001;
internal var _data : PathConstraintData; internal var _data : PathConstraintData;
internal var _bones : Vector.<Bone>; internal var _bones : Vector.<Bone>;
public var target : Slot; public var target : Slot;
@ -88,11 +89,15 @@ package spine {
for (var i : int = 0, n : int = spacesCount - 1; i < n;) { for (var i : int = 0, n : int = spacesCount - 1; i < n;) {
var bone : Bone = bones[i]; var bone : Bone = bones[i];
var setupLength : Number = bone.data.length; var setupLength : Number = bone.data.length;
if (setupLength == 0) setupLength = 0.000000001; if (setupLength < epsilon) {
var x : Number = setupLength * bone.a, y : Number = setupLength * bone.c; if (scale) lengths[i] = 0;
var length : Number = Math.sqrt(x * x + y * y); spaces[++i] = 0;
if (scale) lengths[i] = length; } else {
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength; var x : Number = setupLength * bone.a, y : Number = setupLength * bone.c;
var length : Number = Math.sqrt(x * x + y * y);
if (scale) lengths[i] = length;
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength;
}
} }
} else { } else {
for (i = 1; i < spacesCount; i++) for (i = 1; i < spacesCount; i++)