mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 07:14:55 +08:00
[as3] Ported skin bones/constraints changes. See #1346.
This commit is contained in:
parent
4ca84774a3
commit
900085d26f
Binary file not shown.
@ -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
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -28,7 +28,7 @@
|
||||
*****************************************************************************/
|
||||
|
||||
package spine {
|
||||
public class IkConstraint implements Constraint {
|
||||
public class IkConstraint implements Updatable {
|
||||
internal var _data : IkConstraintData;
|
||||
public var bones : Vector.<Bone>;
|
||||
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
|
||||
|
||||
@ -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.<BoneData> = new Vector.<BoneData>();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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.<Number> = new Vector.<Number>();
|
||||
internal const _lengths : Vector.<Number> = new Vector.<Number>();
|
||||
internal const _segments : Vector.<Number> = new Vector.<Number>(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;
|
||||
}
|
||||
|
||||
@ -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.<BoneData> = new Vector.<BoneData>();
|
||||
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.<BoneData> {
|
||||
return _bones;
|
||||
}
|
||||
|
||||
public function get name() : String {
|
||||
return _name;
|
||||
}
|
||||
|
||||
public function toString() : String {
|
||||
return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -104,8 +104,24 @@ package spine {
|
||||
var bones : Vector.<Bone> = 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.<BoneData> = 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.<IkConstraint> = 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.<ConstraintData>, 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.<Bone> = constraint.bones;
|
||||
@ -255,6 +286,7 @@ package spine {
|
||||
private function sortReset(bones : Vector.<Bone>) : 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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -38,7 +38,7 @@ package spine {
|
||||
internal var _name : String;
|
||||
private var _attachments : Vector.<Dictionary> = new Vector.<Dictionary>();
|
||||
private var _bones: Vector.<BoneData> = new Vector.<BoneData>();
|
||||
private var _constraints: Vector.<Constraint> = new Vector.<Constraint>();
|
||||
private var _constraints: Vector.<ConstraintData> = new Vector.<ConstraintData>();
|
||||
|
||||
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.<Constraint> {
|
||||
public function get constraints() : Vector.<ConstraintData> {
|
||||
return _constraints;
|
||||
}
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
*****************************************************************************/
|
||||
|
||||
package spine {
|
||||
public class TransformConstraint implements Constraint {
|
||||
public class TransformConstraint implements Updatable {
|
||||
internal var _data : TransformConstraintData;
|
||||
internal var _bones : Vector.<Bone>;
|
||||
public var target : Bone;
|
||||
@ -37,6 +37,7 @@ package spine {
|
||||
public var scaleMix : Number;
|
||||
public var shearMix : Number;
|
||||
internal var _temp : Vector.<Number> = new Vector.<Number>(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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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.<BoneData> = new Vector.<BoneData>();
|
||||
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.<BoneData> {
|
||||
;
|
||||
public function get bones() : Vector.<BoneData> {
|
||||
return _bones;
|
||||
}
|
||||
|
||||
public function get name() : String {
|
||||
return _name;
|
||||
}
|
||||
|
||||
public function toString() : String {
|
||||
return _name;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -30,5 +30,6 @@
|
||||
package spine {
|
||||
public interface Updatable {
|
||||
function update() : void;
|
||||
function isActive() : Boolean;
|
||||
}
|
||||
}
|
||||
|
||||
@ -304,6 +304,7 @@ package spine.animation {
|
||||
var rotateTimeline : RotateTimeline = RotateTimeline(timeline);
|
||||
var frames : Vector.<Number> = rotateTimeline.frames;
|
||||
var bone : Bone = skeleton.bones[rotateTimeline.boneIndex];
|
||||
if (!bone.active) return;
|
||||
var r1 : Number, r2 : Number;
|
||||
if (time < frames[0]) {
|
||||
switch (blend) {
|
||||
|
||||
@ -59,6 +59,7 @@ package spine.animation {
|
||||
public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector.<Event>, 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);
|
||||
|
||||
@ -62,6 +62,7 @@ package spine.animation {
|
||||
override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector.<Event>, alpha : Number, blend : MixBlend, direction : MixDirection) : void {
|
||||
var frames : Vector.<Number> = this.frames;
|
||||
var slot : Slot = skeleton.slots[slotIndex];
|
||||
if (!slot.bone.active) return;
|
||||
|
||||
if (time < frames[0]) {
|
||||
switch (blend) {
|
||||
|
||||
@ -60,6 +60,7 @@ package spine.animation {
|
||||
var vertexAttachment : VertexAttachment;
|
||||
var setupVertices : Vector.<Number>;
|
||||
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;
|
||||
|
||||
|
||||
@ -60,6 +60,7 @@ package spine.animation {
|
||||
|
||||
override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector.<Event>, 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:
|
||||
|
||||
@ -58,6 +58,7 @@ package spine.animation {
|
||||
|
||||
override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector.<Event>, 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:
|
||||
|
||||
@ -57,6 +57,7 @@ package spine.animation {
|
||||
|
||||
override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector.<Event>, 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:
|
||||
|
||||
@ -43,6 +43,7 @@ package spine.animation {
|
||||
|
||||
override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector.<Event>, 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:
|
||||
|
||||
@ -59,6 +59,7 @@ package spine.animation {
|
||||
var frames : Vector.<Number> = this.frames;
|
||||
|
||||
var bone : Bone = skeleton.bones[boneIndex];
|
||||
if (!bone.active) return;
|
||||
var r : Number;
|
||||
if (time < frames[0]) {
|
||||
switch (blend) {
|
||||
|
||||
@ -45,6 +45,7 @@ package spine.animation {
|
||||
override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector.<Event>, alpha : Number, blend : MixBlend, direction : MixDirection) : void {
|
||||
var frames : Vector.<Number> = this.frames;
|
||||
var bone : Bone = skeleton.bones[boneIndex];
|
||||
if (!bone.active) return;
|
||||
|
||||
if (time < frames[0]) {
|
||||
switch (blend) {
|
||||
|
||||
@ -44,6 +44,7 @@ package spine.animation {
|
||||
override public function apply(skeleton : Skeleton, lastTime : Number, time : Number, firedEvents : Vector.<Event>, alpha : Number, blend : MixBlend, direction : MixDirection) : void {
|
||||
var frames : Vector.<Number> = this.frames;
|
||||
var bone : Bone = skeleton.bones[boneIndex];
|
||||
if (!bone.active) return;
|
||||
|
||||
if (time < frames[0]) {
|
||||
switch (blend) {
|
||||
|
||||
@ -63,6 +63,7 @@ package spine.animation {
|
||||
var frames : Vector.<Number> = this.frames;
|
||||
|
||||
var constraint : TransformConstraint = skeleton.transformConstraints[transformConstraintIndex];
|
||||
if (!constraint.active) return;
|
||||
var data : TransformConstraintData;
|
||||
if (time < frames[0]) {
|
||||
data = constraint.data;
|
||||
|
||||
@ -60,6 +60,7 @@ package spine.animation {
|
||||
var frames : Vector.<Number> = this.frames;
|
||||
|
||||
var bone : Bone = skeleton.bones[boneIndex];
|
||||
if (!bone.active) return;
|
||||
if (time < frames[0]) {
|
||||
switch (blend) {
|
||||
case MixBlend.setup:
|
||||
|
||||
@ -67,6 +67,7 @@ package spine.animation {
|
||||
var frames : Vector.<Number> = this.frames;
|
||||
var slot : Slot = skeleton.slots[slotIndex];
|
||||
var light : Color, dark : Color;
|
||||
if (!slot.bone.active) return;
|
||||
|
||||
if (time < frames[0]) {
|
||||
switch (blend) {
|
||||
|
||||
@ -39,10 +39,11 @@ package spine.attachments {
|
||||
public var vertices : Vector.<Number>;
|
||||
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.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@ -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();
|
||||
|
||||
Binary file not shown.
@ -98,6 +98,7 @@ package spine.starling {
|
||||
for (var i : int = 0, n : int = drawOrder.length; i < n; ++i) {
|
||||
var worldVertices : Vector.<Number> = _tempVertices;
|
||||
var slot : Slot = drawOrder[i];
|
||||
if (!slot.bone.active) continue;
|
||||
|
||||
if (slot.attachment is RegionAttachment) {
|
||||
var region : RegionAttachment = slot.attachment as RegionAttachment;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -270,7 +270,7 @@ module spine {
|
||||
sortReset (bones: Array<Bone>) {
|
||||
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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user