diff --git a/spine-as3/spine-as3-example/lib/spine-as3.swc b/spine-as3/spine-as3-example/lib/spine-as3.swc index b9f5a7485..ebe526c79 100644 Binary files a/spine-as3/spine-as3-example/lib/spine-as3.swc and b/spine-as3/spine-as3-example/lib/spine-as3.swc differ diff --git a/spine-as3/spine-as3/.settings/org.eclipse.core.resources.prefs b/spine-as3/spine-as3/.settings/org.eclipse.core.resources.prefs index 813b2b6ab..2ea3a03b4 100644 --- a/spine-as3/spine-as3/.settings/org.eclipse.core.resources.prefs +++ b/spine-as3/spine-as3/.settings/org.eclipse.core.resources.prefs @@ -1,12 +1,21 @@ eclipse.preferences.version=1 +encoding//src/spine/Bone.as=UTF-8 +encoding//src/spine/BoneData.as=UTF-8 encoding//src/spine/IkConstraint.as=UTF-8 encoding//src/spine/IkConstraintData.as=UTF-8 encoding//src/spine/Interpolation.as=UTF-8 encoding//src/spine/MathUtils.as=UTF-8 +encoding//src/spine/PathConstraint.as=UTF-8 +encoding//src/spine/PathConstraintData.as=UTF-8 encoding//src/spine/Skeleton.as=UTF-8 encoding//src/spine/SkeletonClipping.as=UTF-8 +encoding//src/spine/SkeletonData.as=UTF-8 encoding//src/spine/SkeletonJson.as=UTF-8 +encoding//src/spine/Skin.as=UTF-8 +encoding//src/spine/TransformConstraint.as=UTF-8 +encoding//src/spine/TransformConstraintData.as=UTF-8 encoding//src/spine/Triangulator.as=UTF-8 +encoding//src/spine/Updatable.as=UTF-8 encoding//src/spine/Vertex.as=UTF-8 encoding//src/spine/VertexEffect.as=UTF-8 encoding//src/spine/animation/Animation.as=UTF-8 diff --git a/spine-as3/spine-as3/src/spine/Bone.as b/spine-as3/spine-as3/src/spine/Bone.as index acb44a756..235f343a9 100644 --- a/spine-as3/spine-as3/src/spine/Bone.as +++ b/spine-as3/spine-as3/src/spine/Bone.as @@ -56,6 +56,8 @@ package spine { public var worldX : Number; public var worldY : Number; internal var _sorted : Boolean; + public var active : Boolean; + /** @param parent May be null. */ public function Bone(data : BoneData, skeleton : Skeleton, parent : Bone) { @@ -66,6 +68,10 @@ package spine { _parent = parent; setToSetupPose(); } + + public function isActive() : Boolean { + return active; + } /** Same as updateWorldTransform(). This method exists for Bone to implement Updatable. */ public function update() : void { diff --git a/spine-as3/spine-as3/src/spine/BoneData.as b/spine-as3/spine-as3/src/spine/BoneData.as index 5a3dcfbcb..d7daa3f58 100644 --- a/spine-as3/spine-as3/src/spine/BoneData.as +++ b/spine-as3/spine-as3/src/spine/BoneData.as @@ -41,6 +41,7 @@ package spine { public var shearX : Number; public var shearY : Number; public var transformMode : TransformMode = TransformMode.normal; + public var skinRequired : Boolean; /** @param parent May be null. */ public function BoneData(index : int, name : String, parent : BoneData) { diff --git a/spine-as3/spine-as3/src/spine/Constraint.as b/spine-as3/spine-as3/src/spine/ConstraintData.as similarity index 82% rename from spine-as3/spine-as3/src/spine/Constraint.as rename to spine-as3/spine-as3/src/spine/ConstraintData.as index d186be851..0b7352eb0 100644 --- a/spine-as3/spine-as3/src/spine/Constraint.as +++ b/spine-as3/spine-as3/src/spine/ConstraintData.as @@ -1,34 +1,46 @@ -/****************************************************************************** - * Spine Runtimes License Agreement - * Last updated May 1, 2019. Replaces all prior versions. - * - * Copyright (c) 2013-2019, Esoteric Software LLC - * - * Integration of the Spine Runtimes into software or otherwise creating - * derivative works of the Spine Runtimes is permitted under the terms and - * conditions of Section 2 of the Spine Editor License Agreement: - * http://esotericsoftware.com/spine-editor-license - * - * Otherwise, it is permitted to integrate the Spine Runtimes into software - * or otherwise create derivative works of the Spine Runtimes (collectively, - * "Products"), provided that each user of the Products must obtain their own - * Spine Editor license and redistribution of the Products in any form must - * include this license and copyright notice. - * - * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN - * NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS - * INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -package spine { - public interface Constraint extends Updatable { - function getOrder() : Number; - } -} +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated May 1, 2019. Replaces all prior versions. + * + * Copyright (c) 2013-2019, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS + * INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +package spine { + public class ConstraintData { + public var name: String; + public var order: Number; + public var skinRequired: Boolean; + + function ConstraintData(name: String, order: Number, skinRequired: Boolean) { + this.name = name; + this.order = order; + this.skinRequired = skinRequired; + } + + public function toString() : String { + return name; + } + } +} diff --git a/spine-as3/spine-as3/src/spine/IkConstraint.as b/spine-as3/spine-as3/src/spine/IkConstraint.as index 298c2531f..32b9b1c53 100644 --- a/spine-as3/spine-as3/src/spine/IkConstraint.as +++ b/spine-as3/spine-as3/src/spine/IkConstraint.as @@ -28,7 +28,7 @@ *****************************************************************************/ package spine { - public class IkConstraint implements Constraint { + public class IkConstraint implements Updatable { internal var _data : IkConstraintData; public var bones : Vector.; public var target : Bone; @@ -36,6 +36,7 @@ package spine { public var compress: Boolean; public var stretch: Boolean; public var mix : Number; + public var active : Boolean; public function IkConstraint(data : IkConstraintData, skeleton : Skeleton) { if (data == null) throw new ArgumentError("data cannot be null."); @@ -51,6 +52,10 @@ package spine { bones[bones.length] = skeleton.findBone(boneData.name); target = skeleton.findBone(data.target._name); } + + public function isActive() : Boolean { + return active; + } public function apply() : void { update(); @@ -67,16 +72,12 @@ package spine { } } - public function getOrder() : Number { - return _data.order; - } - public function get data() : IkConstraintData { return _data; } public function toString() : String { - return _data._name; + return _data.name; } /** Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified in the world diff --git a/spine-as3/spine-as3/src/spine/IkConstraintData.as b/spine-as3/spine-as3/src/spine/IkConstraintData.as index 7a7e9a5d2..bb7ef698a 100644 --- a/spine-as3/spine-as3/src/spine/IkConstraintData.as +++ b/spine-as3/spine-as3/src/spine/IkConstraintData.as @@ -28,9 +28,7 @@ *****************************************************************************/ package spine { - public class IkConstraintData { - internal var _name : String; - public var order : Number; + public class IkConstraintData extends ConstraintData { public var bones : Vector. = new Vector.(); public var target : BoneData; public var mix : Number = 1; @@ -40,16 +38,7 @@ package spine { public var uniform : Boolean = false; public function IkConstraintData(name : String) { - if (name == null) throw new ArgumentError("name cannot be null."); - _name = name; - } - - public function get name() : String { - return _name; - } - - public function toString() : String { - return _name; + super(name, 0, false); } } } diff --git a/spine-as3/spine-as3/src/spine/PathConstraint.as b/spine-as3/spine-as3/src/spine/PathConstraint.as index 7653b1e47..61d4fdbac 100644 --- a/spine-as3/spine-as3/src/spine/PathConstraint.as +++ b/spine-as3/spine-as3/src/spine/PathConstraint.as @@ -30,7 +30,7 @@ package spine { import spine.attachments.PathAttachment; - public class PathConstraint implements Constraint { + public class PathConstraint implements Updatable { private static const NONE : int = -1, BEFORE : int = -2, AFTER : int = -3; private static const epsilon : Number = 0.00001; internal var _data : PathConstraintData; @@ -43,6 +43,7 @@ package spine { internal const _curves : Vector. = new Vector.(); internal const _lengths : Vector. = new Vector.(); internal const _segments : Vector. = new Vector.(10); + public var active : Boolean; public function PathConstraint(data : PathConstraintData, skeleton : Skeleton) { if (data == null) throw new ArgumentError("data cannot be null."); @@ -57,6 +58,10 @@ package spine { rotateMix = data.rotateMix; translateMix = data.translateMix; } + + public function isActive() : Boolean { + return active; + } public function apply() : void { update(); @@ -442,10 +447,6 @@ package spine { return _data; } - public function getOrder() : Number { - return _data.order; - } - public function toString() : String { return _data.name; } diff --git a/spine-as3/spine-as3/src/spine/PathConstraintData.as b/spine-as3/spine-as3/src/spine/PathConstraintData.as index a6ce873c6..f7bc6f89a 100644 --- a/spine-as3/spine-as3/src/spine/PathConstraintData.as +++ b/spine-as3/spine-as3/src/spine/PathConstraintData.as @@ -28,9 +28,7 @@ *****************************************************************************/ package spine { - public dynamic class PathConstraintData { - internal var _name : String; - public var order : Number; + public dynamic class PathConstraintData extends ConstraintData { internal var _bones : Vector. = new Vector.(); public var target : SlotData; public var positionMode : PositionMode; @@ -40,20 +38,11 @@ package spine { public var position : Number, spacing : Number, rotateMix : Number, translateMix : Number; public function PathConstraintData(name : String) { - if (name == null) throw new ArgumentError("name cannot be null."); - _name = name; + super(name, 0, false); } public function get bones() : Vector. { return _bones; } - - public function get name() : String { - return _name; - } - - public function toString() : String { - return name; - } } } diff --git a/spine-as3/spine-as3/src/spine/Skeleton.as b/spine-as3/spine-as3/src/spine/Skeleton.as index a0d579223..6f5cd5d84 100644 --- a/spine-as3/spine-as3/src/spine/Skeleton.as +++ b/spine-as3/spine-as3/src/spine/Skeleton.as @@ -104,8 +104,24 @@ package spine { var bones : Vector. = this.bones; var i : Number = 0; var n : Number = 0; - for (i = 0, n = bones.length; i < n; i++) - bones[i]._sorted = false; + var bone : Bone; + for (i = 0, n = bones.length; i < n; i++) { + bone = bones[i]; + bone._sorted = bone.data.skinRequired; + bone.active = !bone._sorted; + } + + if (skin != null) { + var skinBones : Vector. = skin.bones; + for (i = 0, n = this.skin.bones.length; i < n; i++) { + bone = this.bones[skinBones[i].index]; + do { + bone._sorted = false; + bone.active = true; + bone = bone.parent; + } while (bone != null); + } + } // IK first, lowest hierarchy depth first. var ikConstraints : Vector. = this.ikConstraints; @@ -143,8 +159,17 @@ package spine { for (i = 0, n = bones.length; i < n; i++) sortBone(bones[i]); } + + static function contains(list : Vector., element : ConstraintData) : Boolean { + for (var i : Number = 0; i < list.length; i++) + if (list[i] == element) return true; + return false; + } private function sortIkConstraint(constraint : IkConstraint) : void { + constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin != null && contains(this.skin.constraints, constraint.data))); + if (!constraint.active) return; + var target : Bone = constraint.target; sortBone(target); @@ -164,6 +189,9 @@ package spine { } private function sortPathConstraint(constraint : PathConstraint) : void { + constraint.active = constraint.target.bone.isActive() && (!constraint.data.skinRequired || (this.skin != null && contains(this.skin.constraints, constraint.data))); + if (!constraint.active) return; + var slot : Slot = constraint.target; var slotIndex : Number = slot.data.index; var slotBone : Bone = slot.bone; @@ -192,6 +220,9 @@ package spine { } private function sortTransformConstraint(constraint : TransformConstraint) : void { + constraint.active = constraint.target.isActive() && (!constraint.data.skinRequired || (this.skin != null && contains(this.skin.constraints, constraint.data))); + if (!constraint.active) return; + sortBone(constraint.target); var constrained : Vector. = constraint.bones; @@ -255,6 +286,7 @@ package spine { private function sortReset(bones : Vector.) : void { for (var i : int = 0, n : int = bones.length; i < n; i++) { var bone : Bone = bones[i]; + if (!bone.active) continue; if (bone._sorted) sortReset(bone.children); bone._sorted = false; } @@ -393,6 +425,7 @@ package spine { * no old skin, each slot's setup mode attachment is attached from the new skin. * @param newSkin May be null. */ public function set skin(newSkin : Skin) : void { + if (newSkin == _skin) return; if (newSkin) { if (skin) newSkin.attachAll(this, skin); @@ -409,6 +442,7 @@ package spine { } } _skin = newSkin; + updateCache(); } /** @return May be null. */ @@ -451,7 +485,7 @@ package spine { public function findIkConstraint(constraintName : String) : IkConstraint { if (constraintName == null) throw new ArgumentError("constraintName cannot be null."); for each (var ikConstraint : IkConstraint in ikConstraints) - if (ikConstraint._data._name == constraintName) return ikConstraint; + if (ikConstraint._data.name == constraintName) return ikConstraint; return null; } @@ -459,7 +493,7 @@ package spine { public function findTransformConstraint(constraintName : String) : TransformConstraint { if (constraintName == null) throw new ArgumentError("constraintName cannot be null."); for each (var transformConstraint : TransformConstraint in transformConstraints) - if (transformConstraint._data._name == constraintName) return transformConstraint; + if (transformConstraint._data.name == constraintName) return transformConstraint; return null; } @@ -467,7 +501,7 @@ package spine { public function findPathConstraint(constraintName : String) : PathConstraint { if (constraintName == null) throw new ArgumentError("constraintName cannot be null."); for each (var pathConstraint : PathConstraint in pathConstraints) - if (pathConstraint._data._name == constraintName) return pathConstraint; + if (pathConstraint._data.name == constraintName) return pathConstraint; return null; } diff --git a/spine-as3/spine-as3/src/spine/SkeletonData.as b/spine-as3/spine-as3/src/spine/SkeletonData.as index 5e01d565a..3b677b412 100644 --- a/spine-as3/spine-as3/src/spine/SkeletonData.as +++ b/spine-as3/spine-as3/src/spine/SkeletonData.as @@ -120,7 +120,7 @@ package spine { public function findIkConstraint(constraintName : String) : IkConstraintData { if (constraintName == null) throw new ArgumentError("constraintName cannot be null."); for each (var ikConstraintData : IkConstraintData in ikConstraints) - if (ikConstraintData._name == constraintName) return ikConstraintData; + if (ikConstraintData.name == constraintName) return ikConstraintData; return null; } @@ -129,7 +129,7 @@ package spine { public function findTransformConstraint(constraintName : String) : TransformConstraintData { if (constraintName == null) throw new ArgumentError("constraintName cannot be null."); for each (var transformConstraintData : TransformConstraintData in transformConstraints) - if (transformConstraintData._name == constraintName) return transformConstraintData; + if (transformConstraintData.name == constraintName) return transformConstraintData; return null; } diff --git a/spine-as3/spine-as3/src/spine/SkeletonJson.as b/spine-as3/spine-as3/src/spine/SkeletonJson.as index cdc49079f..49128bd18 100644 --- a/spine-as3/spine-as3/src/spine/SkeletonJson.as +++ b/spine-as3/spine-as3/src/spine/SkeletonJson.as @@ -118,6 +118,7 @@ package spine { boneData.shearX = Number(boneMap["shearX"] || 0); boneData.shearY = Number(boneMap["shearY"] || 0); boneData.transformMode = TransformMode[boneMap["transform"] || "normal"]; + boneData.skinRequired = boneMap.hasOwnProperty("skin") ? boneMap["skin"] : false; skeletonData.bones.push(boneData); } @@ -148,6 +149,7 @@ package spine { for each (var constraintMap : Object in root["ik"]) { var ikConstraintData : IkConstraintData = new IkConstraintData(constraintMap["name"]); ikConstraintData.order = constraintMap["order"] || 0; + ikConstraintData.skinRequired = constraintMap.hasOwnProperty("skin") ? constraintMap["skin"] : false; for each (boneName in constraintMap["bones"]) { var bone : BoneData = skeletonData.findBone(boneName); @@ -171,6 +173,7 @@ package spine { for each (constraintMap in root["transform"]) { var transformConstraintData : TransformConstraintData = new TransformConstraintData(constraintMap["name"]); transformConstraintData.order = constraintMap["order"] || 0; + transformConstraintData.skinRequired = constraintMap.hasOwnProperty("skin") ? constraintMap["skin"] : false; for each (boneName in constraintMap["bones"]) { bone = skeletonData.findBone(boneName); @@ -203,6 +206,7 @@ package spine { for each (constraintMap in root["path"]) { var pathConstraintData : PathConstraintData = new PathConstraintData(constraintMap["name"]); pathConstraintData.order = constraintMap["order"] || 0; + pathConstraintData.skinRequired = constraintMap.hasOwnProperty("skin") ? constraintMap["skin"] : false; for each (boneName in constraintMap["bones"]) { bone = skeletonData.findBone(boneName); @@ -228,17 +232,51 @@ package spine { } // Skins. - var skins : Object = root["skins"]; - for (var skinName : String in skins) { - var skinMap : Object = skins[skinName]; - var skin : Skin = new Skin(skinName); - for (slotName in skinMap) { - var slotIndex : int = skeletonData.findSlotIndex(slotName); - var slotEntry : Object = skinMap[slotName]; + var skins : Object = root["skins"]; + for (var i : Number = 0; i < skins.length; i++) { + var ii : Number; + var skinMap : Object = skins[i]; + var skin : Skin = new Skin(skinMap["name"]); + + if (skinMap["bones"]) { + for (ii = 0; ii < skinMap["bones"].length; ii++) { + var boneData : BoneData = skeletonData.findBone(skinMap["bones"][ii]); + if (boneData == null) throw new Error("Skin bone not found: " + skinMap["bones"][ii]); + skin.bones.push(boneData); + } + } + + if (skinMap["ik"]) { + for (ii = 0; ii < skinMap["ik"].length; ii++) { + var constraint : ConstraintData = skeletonData.findIkConstraint(skinMap["ik"][ii]); + if (constraint == null) throw new Error("Skin IK constraint not found: " + skinMap["ik"][ii]); + skin.constraints.push(constraint); + } + } + + if (skinMap["transform"]) { + for (ii = 0; ii < skinMap["transform"].length; ii++) { + var constraint : ConstraintData = skeletonData.findIkConstraint(skinMap["transform"][ii]); + if (constraint == null) throw new Error("Skin transform constraint not found: " + skinMap["transform"][ii]); + skin.constraints.push(constraint); + } + } + + if (skinMap["path"]) { + for (ii = 0; ii < skinMap["path"].length; ii++) { + var constraint : ConstraintData = skeletonData.findIkConstraint(skinMap["path"][ii]); + if (constraint == null) throw new Error("Skin path constraint not found: " + skinMap["path"][ii]); + skin.constraints.push(constraint); + } + } + + for (slotName in skinMap.attachments) { + var slot : SlotData = skeletonData.findSlot(slotName); + var slotEntry : Object = skinMap.attachments[slotName]; for (var attachmentName : String in slotEntry) { - var attachment : Attachment = readAttachment(slotEntry[attachmentName], skin, slotIndex, attachmentName, skeletonData); + var attachment : Attachment = readAttachment(slotEntry[attachmentName], skin, slot.index, attachmentName, skeletonData); if (attachment != null) - skin.setAttachment(slotIndex, attachmentName, attachment); + skin.setAttachment(slot.index, attachmentName, attachment); } } skeletonData.skins[skeletonData.skins.length] = skin; @@ -440,7 +478,7 @@ package spine { frameIndex = 0; for each (valueMap in values) - attachmentTimeline.setFrame(frameIndex++, valueMap["time"], valueMap["name"]); + attachmentTimeline.setFrame(frameIndex++, Number(valueMap["time"] || 0), valueMap["name"]); timelines[timelines.length] = attachmentTimeline; duration = Math.max(duration, attachmentTimeline.frames[attachmentTimeline.frameCount - 1]); } else if (timelineName == "color") { @@ -454,7 +492,7 @@ package spine { var g : Number = toColor(color, 1); var b : Number = toColor(color, 2); var a : Number = toColor(color, 3); - colorTimeline.setFrame(frameIndex, valueMap["time"], r, g, b, a); + colorTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), r, g, b, a); readCurve(valueMap, colorTimeline, frameIndex); frameIndex++; } @@ -472,7 +510,7 @@ package spine { var dark : Color = new Color(0, 0, 0, 0); light.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3)); dark.setFrom(toColor(darkColor, 0), toColor(darkColor, 1), toColor(darkColor, 2), toColor(darkColor, 3)); - twoColorTimeline.setFrame(frameIndex, valueMap["time"], light.r, light.g, light.b, light.a, dark.r, dark.g, dark.b); + twoColorTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), light.r, light.g, light.b, light.a, dark.r, dark.g, dark.b); readCurve(valueMap, twoColorTimeline, frameIndex); frameIndex++; } @@ -497,7 +535,7 @@ package spine { frameIndex = 0; for each (valueMap in values) { - rotateTimeline.setFrame(frameIndex, valueMap["time"], valueMap["angle"]); + rotateTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), Number(valueMap["angle"] || 0)); readCurve(valueMap, rotateTimeline, frameIndex); frameIndex++; } @@ -506,9 +544,11 @@ package spine { } else if (timelineName == "translate" || timelineName == "scale" || timelineName == "shear") { var translateTimeline : TranslateTimeline; var timelineScale : Number = 1; - if (timelineName == "scale") + var defaultValue : Number = 0; + if (timelineName == "scale") { translateTimeline = new ScaleTimeline(values.length); - else if (timelineName == "shear") + defaultValue = 1; + } else if (timelineName == "shear") translateTimeline = new ShearTimeline(values.length); else { translateTimeline = new TranslateTimeline(values.length); @@ -518,9 +558,9 @@ package spine { frameIndex = 0; for each (valueMap in values) { - var x : Number = Number(valueMap["x"] || 0) * timelineScale; - var y : Number = Number(valueMap["y"] || 0) * timelineScale; - translateTimeline.setFrame(frameIndex, valueMap["time"], x, y); + var x : Number = Number(valueMap["x"] || defaultValue) * timelineScale; + var y : Number = Number(valueMap["y"] || defaultValue) * timelineScale; + translateTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), x, y); readCurve(valueMap, translateTimeline, frameIndex); frameIndex++; } @@ -543,7 +583,7 @@ package spine { var bendDirection : int = (!valueMap.hasOwnProperty("bendPositive") || valueMap["bendPositive"]) ? 1 : -1; var compress : Boolean = (valueMap.hasOwnProperty("compress") && valueMap["compress"]); var stretch : Boolean = (valueMap.hasOwnProperty("stretch") && valueMap["stretch"]); - ikTimeline.setFrame(frameIndex, valueMap["time"], mix, bendDirection, compress, stretch); + ikTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), mix, bendDirection, compress, stretch); readCurve(valueMap, ikTimeline, frameIndex); frameIndex++; } @@ -563,7 +603,7 @@ package spine { var translateMix : Number = valueMap.hasOwnProperty("translateMix") ? valueMap["translateMix"] : 1; var scaleMix : Number = valueMap.hasOwnProperty("scaleMix") ? valueMap["scaleMix"] : 1; var shearMix : Number = valueMap.hasOwnProperty("shearMix") ? valueMap["shearMix"] : 1; - transformTimeline.setFrame(frameIndex, valueMap["time"], rotateMix, translateMix, scaleMix, shearMix); + transformTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), rotateMix, translateMix, scaleMix, shearMix); readCurve(valueMap, transformTimeline, frameIndex); frameIndex++; } @@ -596,7 +636,7 @@ package spine { frameIndex = 0; for each (valueMap in values) { var value : Number = valueMap[timelineName] || 0; - pathTimeline.setFrame(frameIndex, valueMap["time"], value * timelineScale); + pathTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), value * timelineScale); readCurve(valueMap, pathTimeline, frameIndex); frameIndex++; } @@ -609,7 +649,7 @@ package spine { for each (valueMap in values) { rotateMix = valueMap.hasOwnProperty("rotateMix") ? valueMap["rotateMix"] : 1; translateMix = valueMap.hasOwnProperty("translateMix") ? valueMap["translateMix"] : 1; - pathMixTimeline.setFrame(frameIndex, valueMap["time"], rotateMix, translateMix); + pathMixTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), rotateMix, translateMix); readCurve(valueMap, pathMixTimeline, frameIndex); frameIndex++; } @@ -663,7 +703,7 @@ package spine { } } - deformTimeline.setFrame(frameIndex, valueMap["time"], deform); + deformTimeline.setFrame(frameIndex, Number(valueMap["time"] || 0), deform); readCurve(valueMap, deformTimeline, frameIndex); frameIndex++; } @@ -704,7 +744,7 @@ package spine { for (i = slotCount - 1; i >= 0; i--) if (drawOrder[i] == -1) drawOrder[i] = unchanged[--unchangedIndex]; } - drawOrderTimeline.setFrame(frameIndex++, drawOrderMap["time"], drawOrder); + drawOrderTimeline.setFrame(frameIndex++, Number(drawOrderMap["time"] || 0), drawOrder); } timelines[timelines.length] = drawOrderTimeline; duration = Math.max(duration, drawOrderTimeline.frames[drawOrderTimeline.frameCount - 1]); @@ -717,7 +757,7 @@ package spine { for each (var eventMap : Object in eventsMap) { var eventData : EventData = skeletonData.findEvent(eventMap["name"]); if (!eventData) throw new Error("Event not found: " + eventMap["name"]); - var event : Event = new Event(eventMap["time"], eventData); + var event : Event = new Event(Number(eventMap["time"] || 0), eventData); event.intValue = eventMap.hasOwnProperty("int") ? eventMap["int"] : eventData.intValue; event.floatValue = eventMap.hasOwnProperty("float") ? eventMap["float"] : eventData.floatValue; event.stringValue = eventMap.hasOwnProperty("string") ? eventMap["string"] : eventData.stringValue; @@ -739,8 +779,8 @@ package spine { if (!curve) return; if (curve == "stepped") timeline.setStepped(frameIndex); - else if (curve is Array) - timeline.setCurve(frameIndex, curve[0], curve[1], curve[2], curve[3]); + else + timeline.setCurve(frameIndex, parseFloat(curve.toString()), Number(map["c2"] || 0), Number(map["c3"] || 1), Number(map["c4"] || 1)); } static private function toColor(hexString : String, colorIndex : int) : Number { diff --git a/spine-as3/spine-as3/src/spine/Skin.as b/spine-as3/spine-as3/src/spine/Skin.as index 0a7f937ec..5ffe897c9 100644 --- a/spine-as3/spine-as3/src/spine/Skin.as +++ b/spine-as3/spine-as3/src/spine/Skin.as @@ -38,7 +38,7 @@ package spine { internal var _name : String; private var _attachments : Vector. = new Vector.(); private var _bones: Vector. = new Vector.(); - private var _constraints: Vector. = new Vector.(); + private var _constraints: Vector. = new Vector.(); public function Skin(name : String) { if (name == null) throw new ArgumentError("name cannot be null."); @@ -69,7 +69,7 @@ package spine { } for(i = 0; i < skin._constraints.length; i++) { - var constraint : Constraint = skin._constraints[i]; + var constraint : ConstraintData = skin._constraints[i]; contained = false; for (j = 0; j < this._constraints.length; j++) { if (_constraints[j] == constraint) { @@ -105,7 +105,7 @@ package spine { } for(i = 0; i < skin._constraints.length; i++) { - var constraint : Constraint = skin._constraints[i]; + var constraint : ConstraintData = skin._constraints[i]; contained = false; for (j = 0; j < this._constraints.length; j++) { if (_constraints[j] == constraint) { @@ -181,7 +181,7 @@ package spine { return _bones; } - public function get constraints() : Vector. { + public function get constraints() : Vector. { return _constraints; } diff --git a/spine-as3/spine-as3/src/spine/TransformConstraint.as b/spine-as3/spine-as3/src/spine/TransformConstraint.as index 9ac361f1f..fb71f550d 100644 --- a/spine-as3/spine-as3/src/spine/TransformConstraint.as +++ b/spine-as3/spine-as3/src/spine/TransformConstraint.as @@ -28,7 +28,7 @@ *****************************************************************************/ package spine { - public class TransformConstraint implements Constraint { + public class TransformConstraint implements Updatable { internal var _data : TransformConstraintData; internal var _bones : Vector.; public var target : Bone; @@ -37,6 +37,7 @@ package spine { public var scaleMix : Number; public var shearMix : Number; internal var _temp : Vector. = new Vector.(2); + public var active : Boolean; public function TransformConstraint(data : TransformConstraintData, skeleton : Skeleton) { if (data == null) throw new ArgumentError("data cannot be null."); @@ -51,6 +52,10 @@ package spine { _bones.push(skeleton.findBone(boneData.name)); target = skeleton.findBone(data.target._name); } + + public function isActive() : Boolean { + return active; + } public function apply() : void { update(); @@ -274,10 +279,6 @@ package spine { } } - public function getOrder() : Number { - return _data.order; - } - public function get data() : TransformConstraintData { return _data; } @@ -287,7 +288,7 @@ package spine { } public function toString() : String { - return _data._name; + return _data.name; } } } diff --git a/spine-as3/spine-as3/src/spine/TransformConstraintData.as b/spine-as3/spine-as3/src/spine/TransformConstraintData.as index 7a569ddf1..c5618192e 100644 --- a/spine-as3/spine-as3/src/spine/TransformConstraintData.as +++ b/spine-as3/spine-as3/src/spine/TransformConstraintData.as @@ -28,9 +28,7 @@ *****************************************************************************/ package spine { - public class TransformConstraintData { - internal var _name : String; - public var order : Number; + public class TransformConstraintData extends ConstraintData { internal var _bones : Vector. = new Vector.(); public var target : BoneData; public var rotateMix : Number; @@ -47,21 +45,11 @@ package spine { public var local : Boolean = false; public function TransformConstraintData(name : String) { - if (name == null) throw new ArgumentError("name cannot be null."); - _name = name; + super(name, 0, false); } - public function get bones() : Vector. { - ; + public function get bones() : Vector. { return _bones; - } - - public function get name() : String { - return _name; - } - - public function toString() : String { - return _name; - } + } } } diff --git a/spine-as3/spine-as3/src/spine/Updatable.as b/spine-as3/spine-as3/src/spine/Updatable.as index 96abe09e8..f18d415f5 100644 --- a/spine-as3/spine-as3/src/spine/Updatable.as +++ b/spine-as3/spine-as3/src/spine/Updatable.as @@ -30,5 +30,6 @@ package spine { public interface Updatable { function update() : void; + function isActive() : Boolean; } } diff --git a/spine-as3/spine-as3/src/spine/animation/AnimationState.as b/spine-as3/spine-as3/src/spine/animation/AnimationState.as index 4e7317a07..ffa2b358e 100644 --- a/spine-as3/spine-as3/src/spine/animation/AnimationState.as +++ b/spine-as3/spine-as3/src/spine/animation/AnimationState.as @@ -304,6 +304,7 @@ package spine.animation { var rotateTimeline : RotateTimeline = RotateTimeline(timeline); var frames : Vector. = rotateTimeline.frames; var bone : Bone = skeleton.bones[rotateTimeline.boneIndex]; + if (!bone.active) return; var r1 : Number, r2 : Number; if (time < frames[0]) { switch (blend) { diff --git a/spine-as3/spine-as3/src/spine/animation/AttachmentTimeline.as b/spine-as3/spine-as3/src/spine/animation/AttachmentTimeline.as index 9acf75d5c..2297ea892 100644 --- a/spine-as3/spine-as3/src/spine/animation/AttachmentTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/AttachmentTimeline.as @@ -59,6 +59,7 @@ package spine.animation { public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector., alpha : Number, blend : MixBlend, direction : MixDirection) : void { var attachmentName : String; var slot : Slot = skeleton.slots[slotIndex]; + if (!slot.bone.active) return; if (direction == MixDirection.Out && blend == MixBlend.setup) { attachmentName = slot.data.attachmentName; slot.attachment = attachmentName == null ? null : skeleton.getAttachmentForSlotIndex(slotIndex, attachmentName); diff --git a/spine-as3/spine-as3/src/spine/animation/ColorTimeline.as b/spine-as3/spine-as3/src/spine/animation/ColorTimeline.as index 66cb41868..4ecf8a9f6 100644 --- a/spine-as3/spine-as3/src/spine/animation/ColorTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/ColorTimeline.as @@ -62,6 +62,7 @@ package spine.animation { override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector., alpha : Number, blend : MixBlend, direction : MixDirection) : void { var frames : Vector. = this.frames; var slot : Slot = skeleton.slots[slotIndex]; + if (!slot.bone.active) return; if (time < frames[0]) { switch (blend) { diff --git a/spine-as3/spine-as3/src/spine/animation/DeformTimeline.as b/spine-as3/spine-as3/src/spine/animation/DeformTimeline.as index a1c0f4346..37f20b4be 100644 --- a/spine-as3/spine-as3/src/spine/animation/DeformTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/DeformTimeline.as @@ -60,6 +60,7 @@ package spine.animation { var vertexAttachment : VertexAttachment; var setupVertices : Vector.; var slot : Slot = skeleton.slots[slotIndex]; + if (!slot.bone.active) return; var slotAttachment : Attachment = slot.attachment; if (!(slotAttachment is VertexAttachment) || !(VertexAttachment(slotAttachment).deformAttachment == attachment)) return; diff --git a/spine-as3/spine-as3/src/spine/animation/IkConstraintTimeline.as b/spine-as3/spine-as3/src/spine/animation/IkConstraintTimeline.as index 6406800e0..e15b8214d 100644 --- a/spine-as3/spine-as3/src/spine/animation/IkConstraintTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/IkConstraintTimeline.as @@ -60,6 +60,7 @@ package spine.animation { override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector., alpha : Number, blend : MixBlend, direction : MixDirection) : void { var constraint : IkConstraint = skeleton.ikConstraints[ikConstraintIndex]; + if (!constraint.active) return; if (time < frames[0]) { switch (blend) { case MixBlend.setup: diff --git a/spine-as3/spine-as3/src/spine/animation/PathConstraintMixTimeline.as b/spine-as3/spine-as3/src/spine/animation/PathConstraintMixTimeline.as index 76478f7be..c71ef83da 100644 --- a/spine-as3/spine-as3/src/spine/animation/PathConstraintMixTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/PathConstraintMixTimeline.as @@ -58,6 +58,7 @@ package spine.animation { override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector., alpha : Number, blend : MixBlend, direction : MixDirection) : void { var constraint : PathConstraint = skeleton.pathConstraints[pathConstraintIndex]; + if (!constraint.active) return; if (time < frames[0]) { switch (blend) { case MixBlend.setup: diff --git a/spine-as3/spine-as3/src/spine/animation/PathConstraintPositionTimeline.as b/spine-as3/spine-as3/src/spine/animation/PathConstraintPositionTimeline.as index 37e2b6025..19d4765cb 100644 --- a/spine-as3/spine-as3/src/spine/animation/PathConstraintPositionTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/PathConstraintPositionTimeline.as @@ -57,6 +57,7 @@ package spine.animation { override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector., alpha : Number, blend : MixBlend, direction : MixDirection) : void { var constraint : PathConstraint = skeleton.pathConstraints[pathConstraintIndex]; + if (!constraint.active) return; if (time < frames[0]) { switch (blend) { case MixBlend.setup: diff --git a/spine-as3/spine-as3/src/spine/animation/PathConstraintSpacingTimeline.as b/spine-as3/spine-as3/src/spine/animation/PathConstraintSpacingTimeline.as index 4f9e66c4d..0910ed66e 100644 --- a/spine-as3/spine-as3/src/spine/animation/PathConstraintSpacingTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/PathConstraintSpacingTimeline.as @@ -43,6 +43,7 @@ package spine.animation { override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector., alpha : Number, blend : MixBlend, direction : MixDirection) : void { var constraint : PathConstraint = skeleton.pathConstraints[pathConstraintIndex]; + if (!constraint.active) return; if (time < frames[0]) { switch (blend) { case MixBlend.setup: diff --git a/spine-as3/spine-as3/src/spine/animation/RotateTimeline.as b/spine-as3/spine-as3/src/spine/animation/RotateTimeline.as index 25b6b84bb..b0e23f006 100644 --- a/spine-as3/spine-as3/src/spine/animation/RotateTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/RotateTimeline.as @@ -59,6 +59,7 @@ package spine.animation { var frames : Vector. = this.frames; var bone : Bone = skeleton.bones[boneIndex]; + if (!bone.active) return; var r : Number; if (time < frames[0]) { switch (blend) { diff --git a/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as b/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as index 62aab1c57..c874b0514 100644 --- a/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/ScaleTimeline.as @@ -45,6 +45,7 @@ package spine.animation { override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector., alpha : Number, blend : MixBlend, direction : MixDirection) : void { var frames : Vector. = this.frames; var bone : Bone = skeleton.bones[boneIndex]; + if (!bone.active) return; if (time < frames[0]) { switch (blend) { diff --git a/spine-as3/spine-as3/src/spine/animation/ShearTimeline.as b/spine-as3/spine-as3/src/spine/animation/ShearTimeline.as index 7d7f38ebd..a9600112c 100644 --- a/spine-as3/spine-as3/src/spine/animation/ShearTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/ShearTimeline.as @@ -44,6 +44,7 @@ package spine.animation { override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector., alpha : Number, blend : MixBlend, direction : MixDirection) : void { var frames : Vector. = this.frames; var bone : Bone = skeleton.bones[boneIndex]; + if (!bone.active) return; if (time < frames[0]) { switch (blend) { diff --git a/spine-as3/spine-as3/src/spine/animation/TransformConstraintTimeline.as b/spine-as3/spine-as3/src/spine/animation/TransformConstraintTimeline.as index 0e4db2f6f..82291ff23 100644 --- a/spine-as3/spine-as3/src/spine/animation/TransformConstraintTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/TransformConstraintTimeline.as @@ -63,6 +63,7 @@ package spine.animation { var frames : Vector. = this.frames; var constraint : TransformConstraint = skeleton.transformConstraints[transformConstraintIndex]; + if (!constraint.active) return; var data : TransformConstraintData; if (time < frames[0]) { data = constraint.data; diff --git a/spine-as3/spine-as3/src/spine/animation/TranslateTimeline.as b/spine-as3/spine-as3/src/spine/animation/TranslateTimeline.as index d4844b019..8da316c85 100644 --- a/spine-as3/spine-as3/src/spine/animation/TranslateTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/TranslateTimeline.as @@ -60,6 +60,7 @@ package spine.animation { var frames : Vector. = this.frames; var bone : Bone = skeleton.bones[boneIndex]; + if (!bone.active) return; if (time < frames[0]) { switch (blend) { case MixBlend.setup: diff --git a/spine-as3/spine-as3/src/spine/animation/TwoColorTimeline.as b/spine-as3/spine-as3/src/spine/animation/TwoColorTimeline.as index 30c868656..90d120390 100644 --- a/spine-as3/spine-as3/src/spine/animation/TwoColorTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/TwoColorTimeline.as @@ -67,6 +67,7 @@ package spine.animation { var frames : Vector. = this.frames; var slot : Slot = skeleton.slots[slotIndex]; var light : Color, dark : Color; + if (!slot.bone.active) return; if (time < frames[0]) { switch (blend) { diff --git a/spine-as3/spine-as3/src/spine/attachments/VertexAttachment.as b/spine-as3/spine-as3/src/spine/attachments/VertexAttachment.as index 91b00c3aa..add8ee622 100644 --- a/spine-as3/spine-as3/src/spine/attachments/VertexAttachment.as +++ b/spine-as3/spine-as3/src/spine/attachments/VertexAttachment.as @@ -39,10 +39,11 @@ package spine.attachments { public var vertices : Vector.; public var worldVerticesLength : int; public var id : int = (nextID++ & 65535) << 11; - public var deformAttachment : VertexAttachment = this; + public var deformAttachment : VertexAttachment; public function VertexAttachment(name : String) { super(name); + deformAttachment = this; } /** Transforms local vertices to world coordinates. diff --git a/spine-starling/spine-starling-example/lib/spine-as3.swc b/spine-starling/spine-starling-example/lib/spine-as3.swc index b9f5a7485..ebe526c79 100644 Binary files a/spine-starling/spine-starling-example/lib/spine-as3.swc and b/spine-starling/spine-starling-example/lib/spine-as3.swc differ diff --git a/spine-starling/spine-starling-example/lib/spine-starling.swc b/spine-starling/spine-starling-example/lib/spine-starling.swc index de0c5e067..4d3ccaac9 100644 Binary files a/spine-starling/spine-starling-example/lib/spine-starling.swc and b/spine-starling/spine-starling-example/lib/spine-starling.swc differ diff --git a/spine-starling/spine-starling-example/src/spine/examples/GoblinsExample.as b/spine-starling/spine-starling-example/src/spine/examples/GoblinsExample.as index 147d3b669..b59c569fe 100644 --- a/spine-starling/spine-starling-example/src/spine/examples/GoblinsExample.as +++ b/spine-starling/spine-starling-example/src/spine/examples/GoblinsExample.as @@ -88,7 +88,7 @@ package spine.examples { skeleton.skeleton.setSlotsToSetupPose(); skeleton.state.setAnimationByName(0, "walk", true); - var skin : Skin = new Skin("test"); + var skin : Skin = new Skin("test"); skin.copySkin(skeletonData.findSkin("goblingirl")); skeleton.skeleton.skin = skin; skeleton.skeleton.setToSetupPose(); diff --git a/spine-starling/spine-starling/lib/spine-as3.swc b/spine-starling/spine-starling/lib/spine-as3.swc index b9f5a7485..ebe526c79 100644 Binary files a/spine-starling/spine-starling/lib/spine-as3.swc and b/spine-starling/spine-starling/lib/spine-as3.swc differ diff --git a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as index 3362235ba..ac7041edf 100644 --- a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as +++ b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as @@ -98,6 +98,7 @@ package spine.starling { for (var i : int = 0, n : int = drawOrder.length; i < n; ++i) { var worldVertices : Vector. = _tempVertices; var slot : Slot = drawOrder[i]; + if (!slot.bone.active) continue; if (slot.attachment is RegionAttachment) { var region : RegionAttachment = slot.attachment as RegionAttachment; diff --git a/spine-ts/build/spine-all.js b/spine-ts/build/spine-all.js index d3cdf8696..77edf0b9d 100644 --- a/spine-ts/build/spine-all.js +++ b/spine-ts/build/spine-all.js @@ -3747,7 +3747,7 @@ var spine; Skeleton.prototype.sortReset = function (bones) { for (var i = 0, n = bones.length; i < n; i++) { var bone = bones[i]; - if (!bone.update) + if (!bone.active) continue; if (bone.sorted) this.sortReset(bone.children); diff --git a/spine-ts/build/spine-canvas.js b/spine-ts/build/spine-canvas.js index a386d6884..9f4d4be87 100644 --- a/spine-ts/build/spine-canvas.js +++ b/spine-ts/build/spine-canvas.js @@ -3747,7 +3747,7 @@ var spine; Skeleton.prototype.sortReset = function (bones) { for (var i = 0, n = bones.length; i < n; i++) { var bone = bones[i]; - if (!bone.update) + if (!bone.active) continue; if (bone.sorted) this.sortReset(bone.children); diff --git a/spine-ts/build/spine-core.js b/spine-ts/build/spine-core.js index a65b1fe94..383eb10ae 100644 --- a/spine-ts/build/spine-core.js +++ b/spine-ts/build/spine-core.js @@ -3747,7 +3747,7 @@ var spine; Skeleton.prototype.sortReset = function (bones) { for (var i = 0, n = bones.length; i < n; i++) { var bone = bones[i]; - if (!bone.update) + if (!bone.active) continue; if (bone.sorted) this.sortReset(bone.children); diff --git a/spine-ts/build/spine-player.js b/spine-ts/build/spine-player.js index d2bab2dec..7f783f7e7 100644 --- a/spine-ts/build/spine-player.js +++ b/spine-ts/build/spine-player.js @@ -3747,7 +3747,7 @@ var spine; Skeleton.prototype.sortReset = function (bones) { for (var i = 0, n = bones.length; i < n; i++) { var bone = bones[i]; - if (!bone.update) + if (!bone.active) continue; if (bone.sorted) this.sortReset(bone.children); diff --git a/spine-ts/build/spine-threejs.js b/spine-ts/build/spine-threejs.js index 31d16d5ba..4056d94d9 100644 --- a/spine-ts/build/spine-threejs.js +++ b/spine-ts/build/spine-threejs.js @@ -3747,7 +3747,7 @@ var spine; Skeleton.prototype.sortReset = function (bones) { for (var i = 0, n = bones.length; i < n; i++) { var bone = bones[i]; - if (!bone.update) + if (!bone.active) continue; if (bone.sorted) this.sortReset(bone.children); diff --git a/spine-ts/build/spine-webgl.js b/spine-ts/build/spine-webgl.js index b97b16ba4..79701e39c 100644 --- a/spine-ts/build/spine-webgl.js +++ b/spine-ts/build/spine-webgl.js @@ -3747,7 +3747,7 @@ var spine; Skeleton.prototype.sortReset = function (bones) { for (var i = 0, n = bones.length; i < n; i++) { var bone = bones[i]; - if (!bone.update) + if (!bone.active) continue; if (bone.sorted) this.sortReset(bone.children); diff --git a/spine-ts/core/src/Skeleton.ts b/spine-ts/core/src/Skeleton.ts index d945ee56b..ebb55269b 100644 --- a/spine-ts/core/src/Skeleton.ts +++ b/spine-ts/core/src/Skeleton.ts @@ -270,7 +270,7 @@ module spine { sortReset (bones: Array) { for (let i = 0, n = bones.length; i < n; i++) { let bone = bones[i]; - if (!bone.update) continue; + if (!bone.active) continue; if (bone.sorted) this.sortReset(bone.children); bone.sorted = false; }