[ts] Finished 4.0 port. See #1796

This commit is contained in:
badlogic 2020-11-27 17:53:27 +01:00
parent 94813204df
commit 88f0d98dd2
58 changed files with 52982 additions and 26505 deletions

View File

@ -11,7 +11,7 @@ if [ ! -f "$SPINE_EXE" ]; then
SPINE_EXE="/mnt/c/Program Files/Spine/Spine.com" SPINE_EXE="/mnt/c/Program Files/Spine/Spine.com"
fi fi
if [ ! -f "$SPINE_EXE" ]; then if [ ! -f "$SPINE_EXE" ]; then
SPINE_EXE="/Applications/Spine/Spine.app/Contents/MacOS/Spine" SPINE_EXE="/Applications/Spine.app/Contents/MacOS/Spine"
fi fi
echo "Spine exe: $SPINE_EXE" echo "Spine exe: $SPINE_EXE"

View File

@ -23,7 +23,7 @@ For the official legal terms governing the Spine Runtimes, please read the [Spin
## Spine version ## Spine version
spine-ts works with data exported from Spine 3.8.xx. spine-ts works with data exported from Spine 4.0.xx.
The spine-ts WebGL and Player backends support all Spine features. The spine-ts WebGL and Player backends support all Spine features.

View File

@ -2,17 +2,13 @@ declare module spine {
class Animation { class Animation {
name: string; name: string;
timelines: Array<Timeline>; timelines: Array<Timeline>;
timelineIds: Array<boolean>; timelineIds: StringSet;
duration: number; duration: number;
constructor(name: string, timelines: Array<Timeline>, duration: number); constructor(name: string, timelines: Array<Timeline>, duration: number);
hasTimeline(id: number): boolean; hasTimeline(ids: string[]): boolean;
apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
static binarySearch(values: ArrayLike<number>, target: number, step?: number): number; static search(frames: ArrayLike<number>, time: number): number;
static linearSearch(values: ArrayLike<number>, target: number, step: number): number; static search2(values: ArrayLike<number>, time: number, step: number): number;
}
interface Timeline {
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
getPropertyId(): number;
} }
enum MixBlend { enum MixBlend {
setup = 0, setup = 0,
@ -24,103 +20,152 @@ declare module spine {
mixIn = 0, mixIn = 0,
mixOut = 1 mixOut = 1
} }
enum TimelineType { enum Property {
rotate = 0, rotate = 0,
translate = 1, x = 1,
scale = 2, y = 2,
shear = 3, scaleX = 3,
attachment = 4, scaleY = 4,
color = 5, shearX = 5,
deform = 6, shearY = 6,
event = 7, rgb = 7,
drawOrder = 8, alpha = 8,
ikConstraint = 9, rgb2 = 9,
transformConstraint = 10, attachment = 10,
pathConstraintPosition = 11, deform = 11,
pathConstraintSpacing = 12, event = 12,
pathConstraintMix = 13, drawOrder = 13,
twoColor = 14 ikConstraint = 14,
transformConstraint = 15,
pathConstraintPosition = 16,
pathConstraintSpacing = 17,
pathConstraintMix = 18
} }
abstract class CurveTimeline implements Timeline { abstract class Timeline {
propertyIds: string[];
frames: ArrayLike<number>;
constructor(frameCount: number, propertyIds: string[]);
getPropertyIds(): string[];
abstract getFrameEntries(): number;
getFrameCount(): number;
getDuration(): number;
abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
interface BoneTimeline {
boneIndex: number;
}
interface SlotTimeline {
slotIndex: number;
}
abstract class CurveTimeline extends Timeline {
static LINEAR: number; static LINEAR: number;
static STEPPED: number; static STEPPED: number;
static BEZIER: number; static BEZIER: number;
static BEZIER_SIZE: number; static BEZIER_SIZE: number;
private curves; protected curves: ArrayLike<number>;
abstract getPropertyId(): number; constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
constructor(frameCount: number); setLinear(frame: number): void;
getFrameCount(): number; setStepped(frame: number): void;
setLinear(frameIndex: number): void; shrink(bezierCount: number): void;
setStepped(frameIndex: number): void; setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getCurveType(frameIndex: number): number; getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number;
setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
getCurvePercent(frameIndex: number, percent: number): number;
abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class RotateTimeline extends CurveTimeline { abstract class CurveTimeline1 extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number; static VALUE: number;
static PREV_ROTATION: number; constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
static ROTATION: number; getFrameEntries(): number;
setFrame(frame: number, time: number, value: number): void;
getCurveValue(time: number): number;
}
abstract class CurveTimeline2 extends CurveTimeline {
static ENTRIES: number;
static VALUE1: number;
static VALUE2: number;
constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
getFrameEntries(): number;
setFrame(frame: number, time: number, value1: number, value2: number): void;
}
class RotateTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number; boneIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, boneIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, degrees: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TranslateTimeline extends CurveTimeline { class TranslateTimeline extends CurveTimeline2 implements BoneTimeline {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_X: number;
static PREV_Y: number;
static X: number;
static Y: number;
boneIndex: number; boneIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, boneIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, x: number, y: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ScaleTimeline extends TranslateTimeline { class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline {
constructor(frameCount: number); boneIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ShearTimeline extends TranslateTimeline { class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline {
constructor(frameCount: number); boneIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ColorTimeline extends CurveTimeline { class ScaleTimeline extends CurveTimeline2 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearTimeline extends CurveTimeline2 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearXTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearYTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class RGBATimeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_R: number;
static PREV_G: number;
static PREV_B: number;
static PREV_A: number;
static R: number; static R: number;
static G: number; static G: number;
static B: number; static B: number;
static A: number; static A: number;
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, slotIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void;
setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TwoColorTimeline extends CurveTimeline { class RGBTimeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number;
static R: number;
static G: number;
static B: number;
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, r: number, g: number, b: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class AlphaTimeline extends CurveTimeline1 implements SlotTimeline {
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_R: number;
static PREV_G: number;
static PREV_B: number;
static PREV_A: number;
static PREV_R2: number;
static PREV_G2: number;
static PREV_B2: number;
static R: number; static R: number;
static G: number; static G: number;
static B: number; static B: number;
@ -129,124 +174,115 @@ declare module spine {
static G2: number; static G2: number;
static B2: number; static B2: number;
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, slotIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class AttachmentTimeline implements Timeline { class RGB2Timeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number;
static R: number;
static G: number;
static B: number;
static R2: number;
static G2: number;
static B2: number;
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class AttachmentTimeline extends Timeline implements SlotTimeline {
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>;
attachmentNames: Array<string>; attachmentNames: Array<string>;
constructor(frameCount: number); constructor(frameCount: number, slotIndex: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; getFrameCount(): number;
setFrame(frameIndex: number, time: number, attachmentName: string): void; setFrame(frame: number, time: number, attachmentName: string): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void;
} }
class DeformTimeline extends CurveTimeline { class DeformTimeline extends CurveTimeline implements SlotTimeline {
slotIndex: number; slotIndex: number;
attachment: VertexAttachment; attachment: VertexAttachment;
frames: ArrayLike<number>; vertices: Array<ArrayLike<number>>;
frameVertices: Array<ArrayLike<number>>; constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, vertices: ArrayLike<number>): void;
setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void; setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getCurvePercent(time: number, frame: number): number;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class EventTimeline implements Timeline { class EventTimeline extends Timeline {
frames: ArrayLike<number>; static propertyIds: string[];
events: Array<Event>; events: Array<Event>;
constructor(frameCount: number); constructor(frameCount: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; setFrame(frame: number, event: Event): void;
setFrame(frameIndex: number, event: Event): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class DrawOrderTimeline implements Timeline { class DrawOrderTimeline extends Timeline {
frames: ArrayLike<number>; static propertyIds: string[];
drawOrders: Array<Array<number>>; drawOrders: Array<Array<number>>;
constructor(frameCount: number); constructor(frameCount: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; setFrame(frame: number, time: number, drawOrder: Array<number>): void;
setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class IkConstraintTimeline extends CurveTimeline { class IkConstraintTimeline extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_MIX: number;
static PREV_SOFTNESS: number;
static PREV_BEND_DIRECTION: number;
static PREV_COMPRESS: number;
static PREV_STRETCH: number;
static MIX: number; static MIX: number;
static SOFTNESS: number; static SOFTNESS: number;
static BEND_DIRECTION: number; static BEND_DIRECTION: number;
static COMPRESS: number; static COMPRESS: number;
static STRETCH: number; static STRETCH: number;
ikConstraintIndex: number; ikConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TransformConstraintTimeline extends CurveTimeline { class TransformConstraintTimeline extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_ROTATE: number;
static PREV_TRANSLATE: number;
static PREV_SCALE: number;
static PREV_SHEAR: number;
static ROTATE: number; static ROTATE: number;
static TRANSLATE: number; static X: number;
static SCALE: number; static Y: number;
static SHEAR: number; static SCALEX: number;
static SCALEY: number;
static SHEARY: number;
transformConstraintIndex: number; transformConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void;
setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintPositionTimeline extends CurveTimeline { class PathConstraintPositionTimeline extends CurveTimeline1 {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_VALUE: number;
static VALUE: number;
pathConstraintIndex: number; pathConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, value: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { class PathConstraintSpacingTimeline extends CurveTimeline1 {
constructor(frameCount: number); pathConstraintIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintMixTimeline extends CurveTimeline { class PathConstraintMixTimeline extends CurveTimeline {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_ROTATE: number;
static PREV_TRANSLATE: number;
static ROTATE: number;
static TRANSLATE: number;
pathConstraintIndex: number; pathConstraintIndex: number;
frames: ArrayLike<number>; static ENTRIES: number;
constructor(frameCount: number); static ROTATE: number;
getPropertyId(): number; static X: number;
setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; static Y: number;
constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
} }
declare module spine { declare module spine {
class AnimationState { class AnimationState {
static emptyAnimation: Animation; private static _emptyAnimation;
private static emptyAnimation;
static SUBSEQUENT: number; static SUBSEQUENT: number;
static FIRST: number; static FIRST: number;
static HOLD_SUBSEQUENT: number; static HOLD_SUBSEQUENT: number;
@ -261,7 +297,7 @@ declare module spine {
events: Event[]; events: Event[];
listeners: AnimationStateListener[]; listeners: AnimationStateListener[];
queue: EventQueue; queue: EventQueue;
propertyIDs: IntSet; propertyIDs: StringSet;
animationsChanged: boolean; animationsChanged: boolean;
trackEntryPool: Pool<TrackEntry>; trackEntryPool: Pool<TrackEntry>;
constructor(data: AnimationStateData); constructor(data: AnimationStateData);
@ -275,6 +311,7 @@ declare module spine {
queueEvents(entry: TrackEntry, animationTime: number): void; queueEvents(entry: TrackEntry, animationTime: number): void;
clearTracks(): void; clearTracks(): void;
clearTrack(trackIndex: number): void; clearTrack(trackIndex: number): void;
clearNext(entry: TrackEntry): void;
setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; setCurrent(index: number, current: TrackEntry, interrupt: boolean): void;
setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry;
setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry;
@ -296,6 +333,7 @@ declare module spine {
} }
class TrackEntry { class TrackEntry {
animation: Animation; animation: Animation;
previous: TrackEntry;
next: TrackEntry; next: TrackEntry;
mixingFrom: TrackEntry; mixingFrom: TrackEntry;
mixingTo: TrackEntry; mixingTo: TrackEntry;
@ -303,6 +341,7 @@ declare module spine {
trackIndex: number; trackIndex: number;
loop: boolean; loop: boolean;
holdPrevious: boolean; holdPrevious: boolean;
reverse: boolean;
eventThreshold: number; eventThreshold: number;
attachmentThreshold: number; attachmentThreshold: number;
drawOrderThreshold: number; drawOrderThreshold: number;
@ -330,6 +369,7 @@ declare module spine {
setAnimationLast(animationLast: number): void; setAnimationLast(animationLast: number): void;
isComplete(): boolean; isComplete(): boolean;
resetRotationDirections(): void; resetRotationDirections(): void;
getTrackComplete(): number;
} }
class EventQueue { class EventQueue {
objects: Array<any>; objects: Array<any>;
@ -547,7 +587,6 @@ declare module spine {
active: boolean; active: boolean;
constructor(data: IkConstraintData, skeleton: Skeleton); constructor(data: IkConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void;
apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void; apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void;
@ -577,8 +616,9 @@ declare module spine {
target: Slot; target: Slot;
position: number; position: number;
spacing: number; spacing: number;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
mixY: number;
spaces: number[]; spaces: number[];
positions: number[]; positions: number[];
world: number[]; world: number[];
@ -588,9 +628,8 @@ declare module spine {
active: boolean; active: boolean;
constructor(data: PathConstraintData, skeleton: Skeleton); constructor(data: PathConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void; addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
@ -606,8 +645,9 @@ declare module spine {
offsetRotation: number; offsetRotation: number;
position: number; position: number;
spacing: number; spacing: number;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
mixY: number;
constructor(name: string); constructor(name: string);
} }
enum PositionMode { enum PositionMode {
@ -617,7 +657,8 @@ declare module spine {
enum SpacingMode { enum SpacingMode {
Length = 0, Length = 0,
Fixed = 1, Fixed = 1,
Percent = 2 Percent = 2,
Proportional = 3
} }
enum RotateMode { enum RotateMode {
Tangent = 0, Tangent = 0,
@ -655,7 +696,6 @@ declare module spine {
transformConstraints: Array<TransformConstraint>; transformConstraints: Array<TransformConstraint>;
pathConstraints: Array<PathConstraint>; pathConstraints: Array<PathConstraint>;
_updateCache: Updatable[]; _updateCache: Updatable[];
updateCacheReset: Updatable[];
skin: Skin; skin: Skin;
color: Color; color: Color;
time: number; time: number;
@ -673,6 +713,7 @@ declare module spine {
sortBone(bone: Bone): void; sortBone(bone: Bone): void;
sortReset(bones: Array<Bone>): void; sortReset(bones: Array<Bone>): void;
updateWorldTransform(): void; updateWorldTransform(): void;
updateWorldTransformWith(parent: Bone): void;
setToSetupPose(): void; setToSetupPose(): void;
setBonesToSetupPose(): void; setBonesToSetupPose(): void;
setSlotsToSetupPose(): void; setSlotsToSetupPose(): void;
@ -694,7 +735,7 @@ declare module spine {
} }
} }
declare module spine { declare module spine {
class SkeletonBinary { export class SkeletonBinary {
static AttachmentTypeValues: number[]; static AttachmentTypeValues: number[];
static TransformModeValues: TransformMode[]; static TransformModeValues: TransformMode[];
static PositionModeValues: PositionMode[]; static PositionModeValues: PositionMode[];
@ -703,11 +744,20 @@ declare module spine {
static BlendModeValues: BlendMode[]; static BlendModeValues: BlendMode[];
static BONE_ROTATE: number; static BONE_ROTATE: number;
static BONE_TRANSLATE: number; static BONE_TRANSLATE: number;
static BONE_TRANSLATEX: number;
static BONE_TRANSLATEY: number;
static BONE_SCALE: number; static BONE_SCALE: number;
static BONE_SCALEX: number;
static BONE_SCALEY: number;
static BONE_SHEAR: number; static BONE_SHEAR: number;
static BONE_SHEARX: number;
static BONE_SHEARY: number;
static SLOT_ATTACHMENT: number; static SLOT_ATTACHMENT: number;
static SLOT_COLOR: number; static SLOT_RGBA: number;
static SLOT_TWO_COLOR: number; static SLOT_RGB: number;
static SLOT_RGBA2: number;
static SLOT_RGB2: number;
static SLOT_ALPHA: number;
static PATH_POSITION: number; static PATH_POSITION: number;
static PATH_SPACING: number; static PATH_SPACING: number;
static PATH_MIX: number; static PATH_MIX: number;
@ -725,9 +775,26 @@ declare module spine {
private readFloatArray; private readFloatArray;
private readShortArray; private readShortArray;
private readAnimation; private readAnimation;
private readCurve; static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
} }
class BinaryInput {
strings: string[];
private index;
private buffer;
constructor(data: Uint8Array, strings?: string[], index?: number, buffer?: DataView);
readByte(): number;
readUnsignedByte(): number;
readShort(): number;
readInt32(): number;
readInt(optimizePositive: boolean): number;
readStringRef(): string;
readString(): string;
readFloat(): number;
readBoolean(): boolean;
}
export {};
} }
declare module spine { declare module spine {
class SkeletonBounds { class SkeletonBounds {
@ -815,11 +882,14 @@ declare module spine {
readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment;
readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void;
readAnimation(map: any, name: string, skeletonData: SkeletonData): void; readAnimation(map: any, name: string, skeletonData: SkeletonData): void;
readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; private readTimeline;
private readTimeline2;
private readCurve;
setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getValue(map: any, prop: string, defaultValue: any): any; getValue(map: any, prop: string, defaultValue: any): any;
static blendModeFromString(str: string): BlendMode; static blendModeFromString(str: string): BlendMode;
static positionModeFromString(str: string): PositionMode; static positionModeFromString(str: string): PositionMode;
static spacingModeFromString(str: string): SpacingMode; static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
static rotateModeFromString(str: string): RotateMode; static rotateModeFromString(str: string): RotateMode;
static transformModeFromString(str: string): TransformMode; static transformModeFromString(str: string): TransformMode;
} }
@ -959,15 +1029,16 @@ declare module spine {
data: TransformConstraintData; data: TransformConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Bone; target: Bone;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
scaleMix: number; mixY: number;
shearMix: number; mixScaleX: number;
mixScaleY: number;
mixShearY: number;
temp: Vector2; temp: Vector2;
active: boolean; active: boolean;
constructor(data: TransformConstraintData, skeleton: Skeleton); constructor(data: TransformConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
applyAbsoluteWorld(): void; applyAbsoluteWorld(): void;
applyRelativeWorld(): void; applyRelativeWorld(): void;
@ -979,10 +1050,12 @@ declare module spine {
class TransformConstraintData extends ConstraintData { class TransformConstraintData extends ConstraintData {
bones: BoneData[]; bones: BoneData[];
target: BoneData; target: BoneData;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
scaleMix: number; mixY: number;
shearMix: number; mixScaleX: number;
mixScaleY: number;
mixShearY: number;
offsetRotation: number; offsetRotation: number;
offsetX: number; offsetX: number;
offsetY: number; offsetY: number;
@ -1027,6 +1100,14 @@ declare module spine {
remove(value: number): void; remove(value: number): void;
clear(): void; clear(): void;
} }
class StringSet {
entries: Map<boolean>;
size: number;
add(value: string): boolean;
addAll(values: string[]): boolean;
contains(value: string): boolean;
clear(): void;
}
interface Disposable { interface Disposable {
dispose(): void; dispose(): void;
} }
@ -1084,6 +1165,7 @@ declare module spine {
class Utils { class Utils {
static SUPPORTS_TYPED_ARRAYS: boolean; static SUPPORTS_TYPED_ARRAYS: boolean;
static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void; static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>; static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>; static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
static newArray<T>(size: number, defaultValue: T): Array<T>; static newArray<T>(size: number, defaultValue: T): Array<T>;

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -2,17 +2,13 @@ declare module spine {
class Animation { class Animation {
name: string; name: string;
timelines: Array<Timeline>; timelines: Array<Timeline>;
timelineIds: Array<boolean>; timelineIds: StringSet;
duration: number; duration: number;
constructor(name: string, timelines: Array<Timeline>, duration: number); constructor(name: string, timelines: Array<Timeline>, duration: number);
hasTimeline(id: number): boolean; hasTimeline(ids: string[]): boolean;
apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
static binarySearch(values: ArrayLike<number>, target: number, step?: number): number; static search(frames: ArrayLike<number>, time: number): number;
static linearSearch(values: ArrayLike<number>, target: number, step: number): number; static search2(values: ArrayLike<number>, time: number, step: number): number;
}
interface Timeline {
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
getPropertyId(): number;
} }
enum MixBlend { enum MixBlend {
setup = 0, setup = 0,
@ -24,103 +20,152 @@ declare module spine {
mixIn = 0, mixIn = 0,
mixOut = 1 mixOut = 1
} }
enum TimelineType { enum Property {
rotate = 0, rotate = 0,
translate = 1, x = 1,
scale = 2, y = 2,
shear = 3, scaleX = 3,
attachment = 4, scaleY = 4,
color = 5, shearX = 5,
deform = 6, shearY = 6,
event = 7, rgb = 7,
drawOrder = 8, alpha = 8,
ikConstraint = 9, rgb2 = 9,
transformConstraint = 10, attachment = 10,
pathConstraintPosition = 11, deform = 11,
pathConstraintSpacing = 12, event = 12,
pathConstraintMix = 13, drawOrder = 13,
twoColor = 14 ikConstraint = 14,
transformConstraint = 15,
pathConstraintPosition = 16,
pathConstraintSpacing = 17,
pathConstraintMix = 18
} }
abstract class CurveTimeline implements Timeline { abstract class Timeline {
propertyIds: string[];
frames: ArrayLike<number>;
constructor(frameCount: number, propertyIds: string[]);
getPropertyIds(): string[];
abstract getFrameEntries(): number;
getFrameCount(): number;
getDuration(): number;
abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
interface BoneTimeline {
boneIndex: number;
}
interface SlotTimeline {
slotIndex: number;
}
abstract class CurveTimeline extends Timeline {
static LINEAR: number; static LINEAR: number;
static STEPPED: number; static STEPPED: number;
static BEZIER: number; static BEZIER: number;
static BEZIER_SIZE: number; static BEZIER_SIZE: number;
private curves; protected curves: ArrayLike<number>;
abstract getPropertyId(): number; constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
constructor(frameCount: number); setLinear(frame: number): void;
getFrameCount(): number; setStepped(frame: number): void;
setLinear(frameIndex: number): void; shrink(bezierCount: number): void;
setStepped(frameIndex: number): void; setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getCurveType(frameIndex: number): number; getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number;
setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
getCurvePercent(frameIndex: number, percent: number): number;
abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class RotateTimeline extends CurveTimeline { abstract class CurveTimeline1 extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number; static VALUE: number;
static PREV_ROTATION: number; constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
static ROTATION: number; getFrameEntries(): number;
setFrame(frame: number, time: number, value: number): void;
getCurveValue(time: number): number;
}
abstract class CurveTimeline2 extends CurveTimeline {
static ENTRIES: number;
static VALUE1: number;
static VALUE2: number;
constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
getFrameEntries(): number;
setFrame(frame: number, time: number, value1: number, value2: number): void;
}
class RotateTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number; boneIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, boneIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, degrees: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TranslateTimeline extends CurveTimeline { class TranslateTimeline extends CurveTimeline2 implements BoneTimeline {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_X: number;
static PREV_Y: number;
static X: number;
static Y: number;
boneIndex: number; boneIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, boneIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, x: number, y: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ScaleTimeline extends TranslateTimeline { class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline {
constructor(frameCount: number); boneIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ShearTimeline extends TranslateTimeline { class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline {
constructor(frameCount: number); boneIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ColorTimeline extends CurveTimeline { class ScaleTimeline extends CurveTimeline2 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearTimeline extends CurveTimeline2 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearXTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearYTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class RGBATimeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_R: number;
static PREV_G: number;
static PREV_B: number;
static PREV_A: number;
static R: number; static R: number;
static G: number; static G: number;
static B: number; static B: number;
static A: number; static A: number;
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, slotIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void;
setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TwoColorTimeline extends CurveTimeline { class RGBTimeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number;
static R: number;
static G: number;
static B: number;
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, r: number, g: number, b: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class AlphaTimeline extends CurveTimeline1 implements SlotTimeline {
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_R: number;
static PREV_G: number;
static PREV_B: number;
static PREV_A: number;
static PREV_R2: number;
static PREV_G2: number;
static PREV_B2: number;
static R: number; static R: number;
static G: number; static G: number;
static B: number; static B: number;
@ -129,124 +174,115 @@ declare module spine {
static G2: number; static G2: number;
static B2: number; static B2: number;
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, slotIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class AttachmentTimeline implements Timeline { class RGB2Timeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number;
static R: number;
static G: number;
static B: number;
static R2: number;
static G2: number;
static B2: number;
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class AttachmentTimeline extends Timeline implements SlotTimeline {
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>;
attachmentNames: Array<string>; attachmentNames: Array<string>;
constructor(frameCount: number); constructor(frameCount: number, slotIndex: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; getFrameCount(): number;
setFrame(frameIndex: number, time: number, attachmentName: string): void; setFrame(frame: number, time: number, attachmentName: string): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void;
} }
class DeformTimeline extends CurveTimeline { class DeformTimeline extends CurveTimeline implements SlotTimeline {
slotIndex: number; slotIndex: number;
attachment: VertexAttachment; attachment: VertexAttachment;
frames: ArrayLike<number>; vertices: Array<ArrayLike<number>>;
frameVertices: Array<ArrayLike<number>>; constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, vertices: ArrayLike<number>): void;
setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void; setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getCurvePercent(time: number, frame: number): number;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class EventTimeline implements Timeline { class EventTimeline extends Timeline {
frames: ArrayLike<number>; static propertyIds: string[];
events: Array<Event>; events: Array<Event>;
constructor(frameCount: number); constructor(frameCount: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; setFrame(frame: number, event: Event): void;
setFrame(frameIndex: number, event: Event): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class DrawOrderTimeline implements Timeline { class DrawOrderTimeline extends Timeline {
frames: ArrayLike<number>; static propertyIds: string[];
drawOrders: Array<Array<number>>; drawOrders: Array<Array<number>>;
constructor(frameCount: number); constructor(frameCount: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; setFrame(frame: number, time: number, drawOrder: Array<number>): void;
setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class IkConstraintTimeline extends CurveTimeline { class IkConstraintTimeline extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_MIX: number;
static PREV_SOFTNESS: number;
static PREV_BEND_DIRECTION: number;
static PREV_COMPRESS: number;
static PREV_STRETCH: number;
static MIX: number; static MIX: number;
static SOFTNESS: number; static SOFTNESS: number;
static BEND_DIRECTION: number; static BEND_DIRECTION: number;
static COMPRESS: number; static COMPRESS: number;
static STRETCH: number; static STRETCH: number;
ikConstraintIndex: number; ikConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TransformConstraintTimeline extends CurveTimeline { class TransformConstraintTimeline extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_ROTATE: number;
static PREV_TRANSLATE: number;
static PREV_SCALE: number;
static PREV_SHEAR: number;
static ROTATE: number; static ROTATE: number;
static TRANSLATE: number; static X: number;
static SCALE: number; static Y: number;
static SHEAR: number; static SCALEX: number;
static SCALEY: number;
static SHEARY: number;
transformConstraintIndex: number; transformConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void;
setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintPositionTimeline extends CurveTimeline { class PathConstraintPositionTimeline extends CurveTimeline1 {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_VALUE: number;
static VALUE: number;
pathConstraintIndex: number; pathConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, value: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { class PathConstraintSpacingTimeline extends CurveTimeline1 {
constructor(frameCount: number); pathConstraintIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintMixTimeline extends CurveTimeline { class PathConstraintMixTimeline extends CurveTimeline {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_ROTATE: number;
static PREV_TRANSLATE: number;
static ROTATE: number;
static TRANSLATE: number;
pathConstraintIndex: number; pathConstraintIndex: number;
frames: ArrayLike<number>; static ENTRIES: number;
constructor(frameCount: number); static ROTATE: number;
getPropertyId(): number; static X: number;
setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; static Y: number;
constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
} }
declare module spine { declare module spine {
class AnimationState { class AnimationState {
static emptyAnimation: Animation; private static _emptyAnimation;
private static emptyAnimation;
static SUBSEQUENT: number; static SUBSEQUENT: number;
static FIRST: number; static FIRST: number;
static HOLD_SUBSEQUENT: number; static HOLD_SUBSEQUENT: number;
@ -261,7 +297,7 @@ declare module spine {
events: Event[]; events: Event[];
listeners: AnimationStateListener[]; listeners: AnimationStateListener[];
queue: EventQueue; queue: EventQueue;
propertyIDs: IntSet; propertyIDs: StringSet;
animationsChanged: boolean; animationsChanged: boolean;
trackEntryPool: Pool<TrackEntry>; trackEntryPool: Pool<TrackEntry>;
constructor(data: AnimationStateData); constructor(data: AnimationStateData);
@ -275,6 +311,7 @@ declare module spine {
queueEvents(entry: TrackEntry, animationTime: number): void; queueEvents(entry: TrackEntry, animationTime: number): void;
clearTracks(): void; clearTracks(): void;
clearTrack(trackIndex: number): void; clearTrack(trackIndex: number): void;
clearNext(entry: TrackEntry): void;
setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; setCurrent(index: number, current: TrackEntry, interrupt: boolean): void;
setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry;
setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry;
@ -296,6 +333,7 @@ declare module spine {
} }
class TrackEntry { class TrackEntry {
animation: Animation; animation: Animation;
previous: TrackEntry;
next: TrackEntry; next: TrackEntry;
mixingFrom: TrackEntry; mixingFrom: TrackEntry;
mixingTo: TrackEntry; mixingTo: TrackEntry;
@ -303,6 +341,7 @@ declare module spine {
trackIndex: number; trackIndex: number;
loop: boolean; loop: boolean;
holdPrevious: boolean; holdPrevious: boolean;
reverse: boolean;
eventThreshold: number; eventThreshold: number;
attachmentThreshold: number; attachmentThreshold: number;
drawOrderThreshold: number; drawOrderThreshold: number;
@ -330,6 +369,7 @@ declare module spine {
setAnimationLast(animationLast: number): void; setAnimationLast(animationLast: number): void;
isComplete(): boolean; isComplete(): boolean;
resetRotationDirections(): void; resetRotationDirections(): void;
getTrackComplete(): number;
} }
class EventQueue { class EventQueue {
objects: Array<any>; objects: Array<any>;
@ -547,7 +587,6 @@ declare module spine {
active: boolean; active: boolean;
constructor(data: IkConstraintData, skeleton: Skeleton); constructor(data: IkConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void;
apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void; apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void;
@ -577,8 +616,9 @@ declare module spine {
target: Slot; target: Slot;
position: number; position: number;
spacing: number; spacing: number;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
mixY: number;
spaces: number[]; spaces: number[];
positions: number[]; positions: number[];
world: number[]; world: number[];
@ -588,9 +628,8 @@ declare module spine {
active: boolean; active: boolean;
constructor(data: PathConstraintData, skeleton: Skeleton); constructor(data: PathConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void; addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
@ -606,8 +645,9 @@ declare module spine {
offsetRotation: number; offsetRotation: number;
position: number; position: number;
spacing: number; spacing: number;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
mixY: number;
constructor(name: string); constructor(name: string);
} }
enum PositionMode { enum PositionMode {
@ -617,7 +657,8 @@ declare module spine {
enum SpacingMode { enum SpacingMode {
Length = 0, Length = 0,
Fixed = 1, Fixed = 1,
Percent = 2 Percent = 2,
Proportional = 3
} }
enum RotateMode { enum RotateMode {
Tangent = 0, Tangent = 0,
@ -655,7 +696,6 @@ declare module spine {
transformConstraints: Array<TransformConstraint>; transformConstraints: Array<TransformConstraint>;
pathConstraints: Array<PathConstraint>; pathConstraints: Array<PathConstraint>;
_updateCache: Updatable[]; _updateCache: Updatable[];
updateCacheReset: Updatable[];
skin: Skin; skin: Skin;
color: Color; color: Color;
time: number; time: number;
@ -673,6 +713,7 @@ declare module spine {
sortBone(bone: Bone): void; sortBone(bone: Bone): void;
sortReset(bones: Array<Bone>): void; sortReset(bones: Array<Bone>): void;
updateWorldTransform(): void; updateWorldTransform(): void;
updateWorldTransformWith(parent: Bone): void;
setToSetupPose(): void; setToSetupPose(): void;
setBonesToSetupPose(): void; setBonesToSetupPose(): void;
setSlotsToSetupPose(): void; setSlotsToSetupPose(): void;
@ -694,7 +735,7 @@ declare module spine {
} }
} }
declare module spine { declare module spine {
class SkeletonBinary { export class SkeletonBinary {
static AttachmentTypeValues: number[]; static AttachmentTypeValues: number[];
static TransformModeValues: TransformMode[]; static TransformModeValues: TransformMode[];
static PositionModeValues: PositionMode[]; static PositionModeValues: PositionMode[];
@ -703,11 +744,20 @@ declare module spine {
static BlendModeValues: BlendMode[]; static BlendModeValues: BlendMode[];
static BONE_ROTATE: number; static BONE_ROTATE: number;
static BONE_TRANSLATE: number; static BONE_TRANSLATE: number;
static BONE_TRANSLATEX: number;
static BONE_TRANSLATEY: number;
static BONE_SCALE: number; static BONE_SCALE: number;
static BONE_SCALEX: number;
static BONE_SCALEY: number;
static BONE_SHEAR: number; static BONE_SHEAR: number;
static BONE_SHEARX: number;
static BONE_SHEARY: number;
static SLOT_ATTACHMENT: number; static SLOT_ATTACHMENT: number;
static SLOT_COLOR: number; static SLOT_RGBA: number;
static SLOT_TWO_COLOR: number; static SLOT_RGB: number;
static SLOT_RGBA2: number;
static SLOT_RGB2: number;
static SLOT_ALPHA: number;
static PATH_POSITION: number; static PATH_POSITION: number;
static PATH_SPACING: number; static PATH_SPACING: number;
static PATH_MIX: number; static PATH_MIX: number;
@ -725,9 +775,26 @@ declare module spine {
private readFloatArray; private readFloatArray;
private readShortArray; private readShortArray;
private readAnimation; private readAnimation;
private readCurve; static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
} }
class BinaryInput {
strings: string[];
private index;
private buffer;
constructor(data: Uint8Array, strings?: string[], index?: number, buffer?: DataView);
readByte(): number;
readUnsignedByte(): number;
readShort(): number;
readInt32(): number;
readInt(optimizePositive: boolean): number;
readStringRef(): string;
readString(): string;
readFloat(): number;
readBoolean(): boolean;
}
export {};
} }
declare module spine { declare module spine {
class SkeletonBounds { class SkeletonBounds {
@ -815,11 +882,14 @@ declare module spine {
readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment;
readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void;
readAnimation(map: any, name: string, skeletonData: SkeletonData): void; readAnimation(map: any, name: string, skeletonData: SkeletonData): void;
readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; private readTimeline;
private readTimeline2;
private readCurve;
setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getValue(map: any, prop: string, defaultValue: any): any; getValue(map: any, prop: string, defaultValue: any): any;
static blendModeFromString(str: string): BlendMode; static blendModeFromString(str: string): BlendMode;
static positionModeFromString(str: string): PositionMode; static positionModeFromString(str: string): PositionMode;
static spacingModeFromString(str: string): SpacingMode; static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
static rotateModeFromString(str: string): RotateMode; static rotateModeFromString(str: string): RotateMode;
static transformModeFromString(str: string): TransformMode; static transformModeFromString(str: string): TransformMode;
} }
@ -959,15 +1029,16 @@ declare module spine {
data: TransformConstraintData; data: TransformConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Bone; target: Bone;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
scaleMix: number; mixY: number;
shearMix: number; mixScaleX: number;
mixScaleY: number;
mixShearY: number;
temp: Vector2; temp: Vector2;
active: boolean; active: boolean;
constructor(data: TransformConstraintData, skeleton: Skeleton); constructor(data: TransformConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
applyAbsoluteWorld(): void; applyAbsoluteWorld(): void;
applyRelativeWorld(): void; applyRelativeWorld(): void;
@ -979,10 +1050,12 @@ declare module spine {
class TransformConstraintData extends ConstraintData { class TransformConstraintData extends ConstraintData {
bones: BoneData[]; bones: BoneData[];
target: BoneData; target: BoneData;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
scaleMix: number; mixY: number;
shearMix: number; mixScaleX: number;
mixScaleY: number;
mixShearY: number;
offsetRotation: number; offsetRotation: number;
offsetX: number; offsetX: number;
offsetY: number; offsetY: number;
@ -1027,6 +1100,14 @@ declare module spine {
remove(value: number): void; remove(value: number): void;
clear(): void; clear(): void;
} }
class StringSet {
entries: Map<boolean>;
size: number;
add(value: string): boolean;
addAll(values: string[]): boolean;
contains(value: string): boolean;
clear(): void;
}
interface Disposable { interface Disposable {
dispose(): void; dispose(): void;
} }
@ -1084,6 +1165,7 @@ declare module spine {
class Utils { class Utils {
static SUPPORTS_TYPED_ARRAYS: boolean; static SUPPORTS_TYPED_ARRAYS: boolean;
static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void; static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>; static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>; static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
static newArray<T>(size: number, defaultValue: T): Array<T>; static newArray<T>(size: number, defaultValue: T): Array<T>;

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -2,17 +2,13 @@ declare module spine {
class Animation { class Animation {
name: string; name: string;
timelines: Array<Timeline>; timelines: Array<Timeline>;
timelineIds: Array<boolean>; timelineIds: StringSet;
duration: number; duration: number;
constructor(name: string, timelines: Array<Timeline>, duration: number); constructor(name: string, timelines: Array<Timeline>, duration: number);
hasTimeline(id: number): boolean; hasTimeline(ids: string[]): boolean;
apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
static binarySearch(values: ArrayLike<number>, target: number, step?: number): number; static search(frames: ArrayLike<number>, time: number): number;
static linearSearch(values: ArrayLike<number>, target: number, step: number): number; static search2(values: ArrayLike<number>, time: number, step: number): number;
}
interface Timeline {
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
getPropertyId(): number;
} }
enum MixBlend { enum MixBlend {
setup = 0, setup = 0,
@ -24,103 +20,152 @@ declare module spine {
mixIn = 0, mixIn = 0,
mixOut = 1 mixOut = 1
} }
enum TimelineType { enum Property {
rotate = 0, rotate = 0,
translate = 1, x = 1,
scale = 2, y = 2,
shear = 3, scaleX = 3,
attachment = 4, scaleY = 4,
color = 5, shearX = 5,
deform = 6, shearY = 6,
event = 7, rgb = 7,
drawOrder = 8, alpha = 8,
ikConstraint = 9, rgb2 = 9,
transformConstraint = 10, attachment = 10,
pathConstraintPosition = 11, deform = 11,
pathConstraintSpacing = 12, event = 12,
pathConstraintMix = 13, drawOrder = 13,
twoColor = 14 ikConstraint = 14,
transformConstraint = 15,
pathConstraintPosition = 16,
pathConstraintSpacing = 17,
pathConstraintMix = 18
} }
abstract class CurveTimeline implements Timeline { abstract class Timeline {
propertyIds: string[];
frames: ArrayLike<number>;
constructor(frameCount: number, propertyIds: string[]);
getPropertyIds(): string[];
abstract getFrameEntries(): number;
getFrameCount(): number;
getDuration(): number;
abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
interface BoneTimeline {
boneIndex: number;
}
interface SlotTimeline {
slotIndex: number;
}
abstract class CurveTimeline extends Timeline {
static LINEAR: number; static LINEAR: number;
static STEPPED: number; static STEPPED: number;
static BEZIER: number; static BEZIER: number;
static BEZIER_SIZE: number; static BEZIER_SIZE: number;
private curves; protected curves: ArrayLike<number>;
abstract getPropertyId(): number; constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
constructor(frameCount: number); setLinear(frame: number): void;
getFrameCount(): number; setStepped(frame: number): void;
setLinear(frameIndex: number): void; shrink(bezierCount: number): void;
setStepped(frameIndex: number): void; setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getCurveType(frameIndex: number): number; getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number;
setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
getCurvePercent(frameIndex: number, percent: number): number;
abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class RotateTimeline extends CurveTimeline { abstract class CurveTimeline1 extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number; static VALUE: number;
static PREV_ROTATION: number; constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
static ROTATION: number; getFrameEntries(): number;
setFrame(frame: number, time: number, value: number): void;
getCurveValue(time: number): number;
}
abstract class CurveTimeline2 extends CurveTimeline {
static ENTRIES: number;
static VALUE1: number;
static VALUE2: number;
constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
getFrameEntries(): number;
setFrame(frame: number, time: number, value1: number, value2: number): void;
}
class RotateTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number; boneIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, boneIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, degrees: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TranslateTimeline extends CurveTimeline { class TranslateTimeline extends CurveTimeline2 implements BoneTimeline {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_X: number;
static PREV_Y: number;
static X: number;
static Y: number;
boneIndex: number; boneIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, boneIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, x: number, y: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ScaleTimeline extends TranslateTimeline { class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline {
constructor(frameCount: number); boneIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ShearTimeline extends TranslateTimeline { class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline {
constructor(frameCount: number); boneIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ColorTimeline extends CurveTimeline { class ScaleTimeline extends CurveTimeline2 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearTimeline extends CurveTimeline2 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearXTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearYTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class RGBATimeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_R: number;
static PREV_G: number;
static PREV_B: number;
static PREV_A: number;
static R: number; static R: number;
static G: number; static G: number;
static B: number; static B: number;
static A: number; static A: number;
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, slotIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void;
setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TwoColorTimeline extends CurveTimeline { class RGBTimeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number;
static R: number;
static G: number;
static B: number;
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, r: number, g: number, b: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class AlphaTimeline extends CurveTimeline1 implements SlotTimeline {
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_R: number;
static PREV_G: number;
static PREV_B: number;
static PREV_A: number;
static PREV_R2: number;
static PREV_G2: number;
static PREV_B2: number;
static R: number; static R: number;
static G: number; static G: number;
static B: number; static B: number;
@ -129,124 +174,115 @@ declare module spine {
static G2: number; static G2: number;
static B2: number; static B2: number;
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, slotIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class AttachmentTimeline implements Timeline { class RGB2Timeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number;
static R: number;
static G: number;
static B: number;
static R2: number;
static G2: number;
static B2: number;
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class AttachmentTimeline extends Timeline implements SlotTimeline {
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>;
attachmentNames: Array<string>; attachmentNames: Array<string>;
constructor(frameCount: number); constructor(frameCount: number, slotIndex: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; getFrameCount(): number;
setFrame(frameIndex: number, time: number, attachmentName: string): void; setFrame(frame: number, time: number, attachmentName: string): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void;
} }
class DeformTimeline extends CurveTimeline { class DeformTimeline extends CurveTimeline implements SlotTimeline {
slotIndex: number; slotIndex: number;
attachment: VertexAttachment; attachment: VertexAttachment;
frames: ArrayLike<number>; vertices: Array<ArrayLike<number>>;
frameVertices: Array<ArrayLike<number>>; constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, vertices: ArrayLike<number>): void;
setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void; setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getCurvePercent(time: number, frame: number): number;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class EventTimeline implements Timeline { class EventTimeline extends Timeline {
frames: ArrayLike<number>; static propertyIds: string[];
events: Array<Event>; events: Array<Event>;
constructor(frameCount: number); constructor(frameCount: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; setFrame(frame: number, event: Event): void;
setFrame(frameIndex: number, event: Event): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class DrawOrderTimeline implements Timeline { class DrawOrderTimeline extends Timeline {
frames: ArrayLike<number>; static propertyIds: string[];
drawOrders: Array<Array<number>>; drawOrders: Array<Array<number>>;
constructor(frameCount: number); constructor(frameCount: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; setFrame(frame: number, time: number, drawOrder: Array<number>): void;
setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class IkConstraintTimeline extends CurveTimeline { class IkConstraintTimeline extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_MIX: number;
static PREV_SOFTNESS: number;
static PREV_BEND_DIRECTION: number;
static PREV_COMPRESS: number;
static PREV_STRETCH: number;
static MIX: number; static MIX: number;
static SOFTNESS: number; static SOFTNESS: number;
static BEND_DIRECTION: number; static BEND_DIRECTION: number;
static COMPRESS: number; static COMPRESS: number;
static STRETCH: number; static STRETCH: number;
ikConstraintIndex: number; ikConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TransformConstraintTimeline extends CurveTimeline { class TransformConstraintTimeline extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_ROTATE: number;
static PREV_TRANSLATE: number;
static PREV_SCALE: number;
static PREV_SHEAR: number;
static ROTATE: number; static ROTATE: number;
static TRANSLATE: number; static X: number;
static SCALE: number; static Y: number;
static SHEAR: number; static SCALEX: number;
static SCALEY: number;
static SHEARY: number;
transformConstraintIndex: number; transformConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void;
setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintPositionTimeline extends CurveTimeline { class PathConstraintPositionTimeline extends CurveTimeline1 {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_VALUE: number;
static VALUE: number;
pathConstraintIndex: number; pathConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, value: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { class PathConstraintSpacingTimeline extends CurveTimeline1 {
constructor(frameCount: number); pathConstraintIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintMixTimeline extends CurveTimeline { class PathConstraintMixTimeline extends CurveTimeline {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_ROTATE: number;
static PREV_TRANSLATE: number;
static ROTATE: number;
static TRANSLATE: number;
pathConstraintIndex: number; pathConstraintIndex: number;
frames: ArrayLike<number>; static ENTRIES: number;
constructor(frameCount: number); static ROTATE: number;
getPropertyId(): number; static X: number;
setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; static Y: number;
constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
} }
declare module spine { declare module spine {
class AnimationState { class AnimationState {
static emptyAnimation: Animation; private static _emptyAnimation;
private static emptyAnimation;
static SUBSEQUENT: number; static SUBSEQUENT: number;
static FIRST: number; static FIRST: number;
static HOLD_SUBSEQUENT: number; static HOLD_SUBSEQUENT: number;
@ -261,7 +297,7 @@ declare module spine {
events: Event[]; events: Event[];
listeners: AnimationStateListener[]; listeners: AnimationStateListener[];
queue: EventQueue; queue: EventQueue;
propertyIDs: IntSet; propertyIDs: StringSet;
animationsChanged: boolean; animationsChanged: boolean;
trackEntryPool: Pool<TrackEntry>; trackEntryPool: Pool<TrackEntry>;
constructor(data: AnimationStateData); constructor(data: AnimationStateData);
@ -275,6 +311,7 @@ declare module spine {
queueEvents(entry: TrackEntry, animationTime: number): void; queueEvents(entry: TrackEntry, animationTime: number): void;
clearTracks(): void; clearTracks(): void;
clearTrack(trackIndex: number): void; clearTrack(trackIndex: number): void;
clearNext(entry: TrackEntry): void;
setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; setCurrent(index: number, current: TrackEntry, interrupt: boolean): void;
setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry;
setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry;
@ -296,6 +333,7 @@ declare module spine {
} }
class TrackEntry { class TrackEntry {
animation: Animation; animation: Animation;
previous: TrackEntry;
next: TrackEntry; next: TrackEntry;
mixingFrom: TrackEntry; mixingFrom: TrackEntry;
mixingTo: TrackEntry; mixingTo: TrackEntry;
@ -303,6 +341,7 @@ declare module spine {
trackIndex: number; trackIndex: number;
loop: boolean; loop: boolean;
holdPrevious: boolean; holdPrevious: boolean;
reverse: boolean;
eventThreshold: number; eventThreshold: number;
attachmentThreshold: number; attachmentThreshold: number;
drawOrderThreshold: number; drawOrderThreshold: number;
@ -330,6 +369,7 @@ declare module spine {
setAnimationLast(animationLast: number): void; setAnimationLast(animationLast: number): void;
isComplete(): boolean; isComplete(): boolean;
resetRotationDirections(): void; resetRotationDirections(): void;
getTrackComplete(): number;
} }
class EventQueue { class EventQueue {
objects: Array<any>; objects: Array<any>;
@ -547,7 +587,6 @@ declare module spine {
active: boolean; active: boolean;
constructor(data: IkConstraintData, skeleton: Skeleton); constructor(data: IkConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void;
apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void; apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void;
@ -577,8 +616,9 @@ declare module spine {
target: Slot; target: Slot;
position: number; position: number;
spacing: number; spacing: number;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
mixY: number;
spaces: number[]; spaces: number[];
positions: number[]; positions: number[];
world: number[]; world: number[];
@ -588,9 +628,8 @@ declare module spine {
active: boolean; active: boolean;
constructor(data: PathConstraintData, skeleton: Skeleton); constructor(data: PathConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void; addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
@ -606,8 +645,9 @@ declare module spine {
offsetRotation: number; offsetRotation: number;
position: number; position: number;
spacing: number; spacing: number;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
mixY: number;
constructor(name: string); constructor(name: string);
} }
enum PositionMode { enum PositionMode {
@ -617,7 +657,8 @@ declare module spine {
enum SpacingMode { enum SpacingMode {
Length = 0, Length = 0,
Fixed = 1, Fixed = 1,
Percent = 2 Percent = 2,
Proportional = 3
} }
enum RotateMode { enum RotateMode {
Tangent = 0, Tangent = 0,
@ -655,7 +696,6 @@ declare module spine {
transformConstraints: Array<TransformConstraint>; transformConstraints: Array<TransformConstraint>;
pathConstraints: Array<PathConstraint>; pathConstraints: Array<PathConstraint>;
_updateCache: Updatable[]; _updateCache: Updatable[];
updateCacheReset: Updatable[];
skin: Skin; skin: Skin;
color: Color; color: Color;
time: number; time: number;
@ -673,6 +713,7 @@ declare module spine {
sortBone(bone: Bone): void; sortBone(bone: Bone): void;
sortReset(bones: Array<Bone>): void; sortReset(bones: Array<Bone>): void;
updateWorldTransform(): void; updateWorldTransform(): void;
updateWorldTransformWith(parent: Bone): void;
setToSetupPose(): void; setToSetupPose(): void;
setBonesToSetupPose(): void; setBonesToSetupPose(): void;
setSlotsToSetupPose(): void; setSlotsToSetupPose(): void;
@ -694,7 +735,7 @@ declare module spine {
} }
} }
declare module spine { declare module spine {
class SkeletonBinary { export class SkeletonBinary {
static AttachmentTypeValues: number[]; static AttachmentTypeValues: number[];
static TransformModeValues: TransformMode[]; static TransformModeValues: TransformMode[];
static PositionModeValues: PositionMode[]; static PositionModeValues: PositionMode[];
@ -703,11 +744,20 @@ declare module spine {
static BlendModeValues: BlendMode[]; static BlendModeValues: BlendMode[];
static BONE_ROTATE: number; static BONE_ROTATE: number;
static BONE_TRANSLATE: number; static BONE_TRANSLATE: number;
static BONE_TRANSLATEX: number;
static BONE_TRANSLATEY: number;
static BONE_SCALE: number; static BONE_SCALE: number;
static BONE_SCALEX: number;
static BONE_SCALEY: number;
static BONE_SHEAR: number; static BONE_SHEAR: number;
static BONE_SHEARX: number;
static BONE_SHEARY: number;
static SLOT_ATTACHMENT: number; static SLOT_ATTACHMENT: number;
static SLOT_COLOR: number; static SLOT_RGBA: number;
static SLOT_TWO_COLOR: number; static SLOT_RGB: number;
static SLOT_RGBA2: number;
static SLOT_RGB2: number;
static SLOT_ALPHA: number;
static PATH_POSITION: number; static PATH_POSITION: number;
static PATH_SPACING: number; static PATH_SPACING: number;
static PATH_MIX: number; static PATH_MIX: number;
@ -725,9 +775,26 @@ declare module spine {
private readFloatArray; private readFloatArray;
private readShortArray; private readShortArray;
private readAnimation; private readAnimation;
private readCurve; static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
} }
class BinaryInput {
strings: string[];
private index;
private buffer;
constructor(data: Uint8Array, strings?: string[], index?: number, buffer?: DataView);
readByte(): number;
readUnsignedByte(): number;
readShort(): number;
readInt32(): number;
readInt(optimizePositive: boolean): number;
readStringRef(): string;
readString(): string;
readFloat(): number;
readBoolean(): boolean;
}
export {};
} }
declare module spine { declare module spine {
class SkeletonBounds { class SkeletonBounds {
@ -815,11 +882,14 @@ declare module spine {
readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment;
readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void;
readAnimation(map: any, name: string, skeletonData: SkeletonData): void; readAnimation(map: any, name: string, skeletonData: SkeletonData): void;
readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; private readTimeline;
private readTimeline2;
private readCurve;
setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getValue(map: any, prop: string, defaultValue: any): any; getValue(map: any, prop: string, defaultValue: any): any;
static blendModeFromString(str: string): BlendMode; static blendModeFromString(str: string): BlendMode;
static positionModeFromString(str: string): PositionMode; static positionModeFromString(str: string): PositionMode;
static spacingModeFromString(str: string): SpacingMode; static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
static rotateModeFromString(str: string): RotateMode; static rotateModeFromString(str: string): RotateMode;
static transformModeFromString(str: string): TransformMode; static transformModeFromString(str: string): TransformMode;
} }
@ -959,15 +1029,16 @@ declare module spine {
data: TransformConstraintData; data: TransformConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Bone; target: Bone;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
scaleMix: number; mixY: number;
shearMix: number; mixScaleX: number;
mixScaleY: number;
mixShearY: number;
temp: Vector2; temp: Vector2;
active: boolean; active: boolean;
constructor(data: TransformConstraintData, skeleton: Skeleton); constructor(data: TransformConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
applyAbsoluteWorld(): void; applyAbsoluteWorld(): void;
applyRelativeWorld(): void; applyRelativeWorld(): void;
@ -979,10 +1050,12 @@ declare module spine {
class TransformConstraintData extends ConstraintData { class TransformConstraintData extends ConstraintData {
bones: BoneData[]; bones: BoneData[];
target: BoneData; target: BoneData;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
scaleMix: number; mixY: number;
shearMix: number; mixScaleX: number;
mixScaleY: number;
mixShearY: number;
offsetRotation: number; offsetRotation: number;
offsetX: number; offsetX: number;
offsetY: number; offsetY: number;
@ -1027,6 +1100,14 @@ declare module spine {
remove(value: number): void; remove(value: number): void;
clear(): void; clear(): void;
} }
class StringSet {
entries: Map<boolean>;
size: number;
add(value: string): boolean;
addAll(values: string[]): boolean;
contains(value: string): boolean;
clear(): void;
}
interface Disposable { interface Disposable {
dispose(): void; dispose(): void;
} }
@ -1084,6 +1165,7 @@ declare module spine {
class Utils { class Utils {
static SUPPORTS_TYPED_ARRAYS: boolean; static SUPPORTS_TYPED_ARRAYS: boolean;
static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void; static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>; static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>; static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
static newArray<T>(size: number, defaultValue: T): Array<T>; static newArray<T>(size: number, defaultValue: T): Array<T>;

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -2,17 +2,13 @@ declare module spine {
class Animation { class Animation {
name: string; name: string;
timelines: Array<Timeline>; timelines: Array<Timeline>;
timelineIds: Array<boolean>; timelineIds: StringSet;
duration: number; duration: number;
constructor(name: string, timelines: Array<Timeline>, duration: number); constructor(name: string, timelines: Array<Timeline>, duration: number);
hasTimeline(id: number): boolean; hasTimeline(ids: string[]): boolean;
apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
static binarySearch(values: ArrayLike<number>, target: number, step?: number): number; static search(frames: ArrayLike<number>, time: number): number;
static linearSearch(values: ArrayLike<number>, target: number, step: number): number; static search2(values: ArrayLike<number>, time: number, step: number): number;
}
interface Timeline {
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
getPropertyId(): number;
} }
enum MixBlend { enum MixBlend {
setup = 0, setup = 0,
@ -24,103 +20,152 @@ declare module spine {
mixIn = 0, mixIn = 0,
mixOut = 1 mixOut = 1
} }
enum TimelineType { enum Property {
rotate = 0, rotate = 0,
translate = 1, x = 1,
scale = 2, y = 2,
shear = 3, scaleX = 3,
attachment = 4, scaleY = 4,
color = 5, shearX = 5,
deform = 6, shearY = 6,
event = 7, rgb = 7,
drawOrder = 8, alpha = 8,
ikConstraint = 9, rgb2 = 9,
transformConstraint = 10, attachment = 10,
pathConstraintPosition = 11, deform = 11,
pathConstraintSpacing = 12, event = 12,
pathConstraintMix = 13, drawOrder = 13,
twoColor = 14 ikConstraint = 14,
transformConstraint = 15,
pathConstraintPosition = 16,
pathConstraintSpacing = 17,
pathConstraintMix = 18
} }
abstract class CurveTimeline implements Timeline { abstract class Timeline {
propertyIds: string[];
frames: ArrayLike<number>;
constructor(frameCount: number, propertyIds: string[]);
getPropertyIds(): string[];
abstract getFrameEntries(): number;
getFrameCount(): number;
getDuration(): number;
abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
interface BoneTimeline {
boneIndex: number;
}
interface SlotTimeline {
slotIndex: number;
}
abstract class CurveTimeline extends Timeline {
static LINEAR: number; static LINEAR: number;
static STEPPED: number; static STEPPED: number;
static BEZIER: number; static BEZIER: number;
static BEZIER_SIZE: number; static BEZIER_SIZE: number;
private curves; protected curves: ArrayLike<number>;
abstract getPropertyId(): number; constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
constructor(frameCount: number); setLinear(frame: number): void;
getFrameCount(): number; setStepped(frame: number): void;
setLinear(frameIndex: number): void; shrink(bezierCount: number): void;
setStepped(frameIndex: number): void; setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getCurveType(frameIndex: number): number; getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number;
setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
getCurvePercent(frameIndex: number, percent: number): number;
abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class RotateTimeline extends CurveTimeline { abstract class CurveTimeline1 extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number; static VALUE: number;
static PREV_ROTATION: number; constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
static ROTATION: number; getFrameEntries(): number;
setFrame(frame: number, time: number, value: number): void;
getCurveValue(time: number): number;
}
abstract class CurveTimeline2 extends CurveTimeline {
static ENTRIES: number;
static VALUE1: number;
static VALUE2: number;
constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
getFrameEntries(): number;
setFrame(frame: number, time: number, value1: number, value2: number): void;
}
class RotateTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number; boneIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, boneIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, degrees: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TranslateTimeline extends CurveTimeline { class TranslateTimeline extends CurveTimeline2 implements BoneTimeline {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_X: number;
static PREV_Y: number;
static X: number;
static Y: number;
boneIndex: number; boneIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, boneIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, x: number, y: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ScaleTimeline extends TranslateTimeline { class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline {
constructor(frameCount: number); boneIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ShearTimeline extends TranslateTimeline { class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline {
constructor(frameCount: number); boneIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ColorTimeline extends CurveTimeline { class ScaleTimeline extends CurveTimeline2 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearTimeline extends CurveTimeline2 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearXTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearYTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class RGBATimeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_R: number;
static PREV_G: number;
static PREV_B: number;
static PREV_A: number;
static R: number; static R: number;
static G: number; static G: number;
static B: number; static B: number;
static A: number; static A: number;
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, slotIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void;
setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TwoColorTimeline extends CurveTimeline { class RGBTimeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number;
static R: number;
static G: number;
static B: number;
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, r: number, g: number, b: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class AlphaTimeline extends CurveTimeline1 implements SlotTimeline {
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_R: number;
static PREV_G: number;
static PREV_B: number;
static PREV_A: number;
static PREV_R2: number;
static PREV_G2: number;
static PREV_B2: number;
static R: number; static R: number;
static G: number; static G: number;
static B: number; static B: number;
@ -129,124 +174,115 @@ declare module spine {
static G2: number; static G2: number;
static B2: number; static B2: number;
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, slotIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class AttachmentTimeline implements Timeline { class RGB2Timeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number;
static R: number;
static G: number;
static B: number;
static R2: number;
static G2: number;
static B2: number;
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class AttachmentTimeline extends Timeline implements SlotTimeline {
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>;
attachmentNames: Array<string>; attachmentNames: Array<string>;
constructor(frameCount: number); constructor(frameCount: number, slotIndex: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; getFrameCount(): number;
setFrame(frameIndex: number, time: number, attachmentName: string): void; setFrame(frame: number, time: number, attachmentName: string): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void;
} }
class DeformTimeline extends CurveTimeline { class DeformTimeline extends CurveTimeline implements SlotTimeline {
slotIndex: number; slotIndex: number;
attachment: VertexAttachment; attachment: VertexAttachment;
frames: ArrayLike<number>; vertices: Array<ArrayLike<number>>;
frameVertices: Array<ArrayLike<number>>; constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, vertices: ArrayLike<number>): void;
setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void; setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getCurvePercent(time: number, frame: number): number;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class EventTimeline implements Timeline { class EventTimeline extends Timeline {
frames: ArrayLike<number>; static propertyIds: string[];
events: Array<Event>; events: Array<Event>;
constructor(frameCount: number); constructor(frameCount: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; setFrame(frame: number, event: Event): void;
setFrame(frameIndex: number, event: Event): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class DrawOrderTimeline implements Timeline { class DrawOrderTimeline extends Timeline {
frames: ArrayLike<number>; static propertyIds: string[];
drawOrders: Array<Array<number>>; drawOrders: Array<Array<number>>;
constructor(frameCount: number); constructor(frameCount: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; setFrame(frame: number, time: number, drawOrder: Array<number>): void;
setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class IkConstraintTimeline extends CurveTimeline { class IkConstraintTimeline extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_MIX: number;
static PREV_SOFTNESS: number;
static PREV_BEND_DIRECTION: number;
static PREV_COMPRESS: number;
static PREV_STRETCH: number;
static MIX: number; static MIX: number;
static SOFTNESS: number; static SOFTNESS: number;
static BEND_DIRECTION: number; static BEND_DIRECTION: number;
static COMPRESS: number; static COMPRESS: number;
static STRETCH: number; static STRETCH: number;
ikConstraintIndex: number; ikConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TransformConstraintTimeline extends CurveTimeline { class TransformConstraintTimeline extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_ROTATE: number;
static PREV_TRANSLATE: number;
static PREV_SCALE: number;
static PREV_SHEAR: number;
static ROTATE: number; static ROTATE: number;
static TRANSLATE: number; static X: number;
static SCALE: number; static Y: number;
static SHEAR: number; static SCALEX: number;
static SCALEY: number;
static SHEARY: number;
transformConstraintIndex: number; transformConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void;
setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintPositionTimeline extends CurveTimeline { class PathConstraintPositionTimeline extends CurveTimeline1 {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_VALUE: number;
static VALUE: number;
pathConstraintIndex: number; pathConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, value: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { class PathConstraintSpacingTimeline extends CurveTimeline1 {
constructor(frameCount: number); pathConstraintIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintMixTimeline extends CurveTimeline { class PathConstraintMixTimeline extends CurveTimeline {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_ROTATE: number;
static PREV_TRANSLATE: number;
static ROTATE: number;
static TRANSLATE: number;
pathConstraintIndex: number; pathConstraintIndex: number;
frames: ArrayLike<number>; static ENTRIES: number;
constructor(frameCount: number); static ROTATE: number;
getPropertyId(): number; static X: number;
setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; static Y: number;
constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
} }
declare module spine { declare module spine {
class AnimationState { class AnimationState {
static emptyAnimation: Animation; private static _emptyAnimation;
private static emptyAnimation;
static SUBSEQUENT: number; static SUBSEQUENT: number;
static FIRST: number; static FIRST: number;
static HOLD_SUBSEQUENT: number; static HOLD_SUBSEQUENT: number;
@ -261,7 +297,7 @@ declare module spine {
events: Event[]; events: Event[];
listeners: AnimationStateListener[]; listeners: AnimationStateListener[];
queue: EventQueue; queue: EventQueue;
propertyIDs: IntSet; propertyIDs: StringSet;
animationsChanged: boolean; animationsChanged: boolean;
trackEntryPool: Pool<TrackEntry>; trackEntryPool: Pool<TrackEntry>;
constructor(data: AnimationStateData); constructor(data: AnimationStateData);
@ -275,6 +311,7 @@ declare module spine {
queueEvents(entry: TrackEntry, animationTime: number): void; queueEvents(entry: TrackEntry, animationTime: number): void;
clearTracks(): void; clearTracks(): void;
clearTrack(trackIndex: number): void; clearTrack(trackIndex: number): void;
clearNext(entry: TrackEntry): void;
setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; setCurrent(index: number, current: TrackEntry, interrupt: boolean): void;
setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry;
setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry;
@ -296,6 +333,7 @@ declare module spine {
} }
class TrackEntry { class TrackEntry {
animation: Animation; animation: Animation;
previous: TrackEntry;
next: TrackEntry; next: TrackEntry;
mixingFrom: TrackEntry; mixingFrom: TrackEntry;
mixingTo: TrackEntry; mixingTo: TrackEntry;
@ -303,6 +341,7 @@ declare module spine {
trackIndex: number; trackIndex: number;
loop: boolean; loop: boolean;
holdPrevious: boolean; holdPrevious: boolean;
reverse: boolean;
eventThreshold: number; eventThreshold: number;
attachmentThreshold: number; attachmentThreshold: number;
drawOrderThreshold: number; drawOrderThreshold: number;
@ -330,6 +369,7 @@ declare module spine {
setAnimationLast(animationLast: number): void; setAnimationLast(animationLast: number): void;
isComplete(): boolean; isComplete(): boolean;
resetRotationDirections(): void; resetRotationDirections(): void;
getTrackComplete(): number;
} }
class EventQueue { class EventQueue {
objects: Array<any>; objects: Array<any>;
@ -547,7 +587,6 @@ declare module spine {
active: boolean; active: boolean;
constructor(data: IkConstraintData, skeleton: Skeleton); constructor(data: IkConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void;
apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void; apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void;
@ -577,8 +616,9 @@ declare module spine {
target: Slot; target: Slot;
position: number; position: number;
spacing: number; spacing: number;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
mixY: number;
spaces: number[]; spaces: number[];
positions: number[]; positions: number[];
world: number[]; world: number[];
@ -588,9 +628,8 @@ declare module spine {
active: boolean; active: boolean;
constructor(data: PathConstraintData, skeleton: Skeleton); constructor(data: PathConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void; addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
@ -606,8 +645,9 @@ declare module spine {
offsetRotation: number; offsetRotation: number;
position: number; position: number;
spacing: number; spacing: number;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
mixY: number;
constructor(name: string); constructor(name: string);
} }
enum PositionMode { enum PositionMode {
@ -617,7 +657,8 @@ declare module spine {
enum SpacingMode { enum SpacingMode {
Length = 0, Length = 0,
Fixed = 1, Fixed = 1,
Percent = 2 Percent = 2,
Proportional = 3
} }
enum RotateMode { enum RotateMode {
Tangent = 0, Tangent = 0,
@ -655,7 +696,6 @@ declare module spine {
transformConstraints: Array<TransformConstraint>; transformConstraints: Array<TransformConstraint>;
pathConstraints: Array<PathConstraint>; pathConstraints: Array<PathConstraint>;
_updateCache: Updatable[]; _updateCache: Updatable[];
updateCacheReset: Updatable[];
skin: Skin; skin: Skin;
color: Color; color: Color;
time: number; time: number;
@ -673,6 +713,7 @@ declare module spine {
sortBone(bone: Bone): void; sortBone(bone: Bone): void;
sortReset(bones: Array<Bone>): void; sortReset(bones: Array<Bone>): void;
updateWorldTransform(): void; updateWorldTransform(): void;
updateWorldTransformWith(parent: Bone): void;
setToSetupPose(): void; setToSetupPose(): void;
setBonesToSetupPose(): void; setBonesToSetupPose(): void;
setSlotsToSetupPose(): void; setSlotsToSetupPose(): void;
@ -694,7 +735,7 @@ declare module spine {
} }
} }
declare module spine { declare module spine {
class SkeletonBinary { export class SkeletonBinary {
static AttachmentTypeValues: number[]; static AttachmentTypeValues: number[];
static TransformModeValues: TransformMode[]; static TransformModeValues: TransformMode[];
static PositionModeValues: PositionMode[]; static PositionModeValues: PositionMode[];
@ -703,11 +744,20 @@ declare module spine {
static BlendModeValues: BlendMode[]; static BlendModeValues: BlendMode[];
static BONE_ROTATE: number; static BONE_ROTATE: number;
static BONE_TRANSLATE: number; static BONE_TRANSLATE: number;
static BONE_TRANSLATEX: number;
static BONE_TRANSLATEY: number;
static BONE_SCALE: number; static BONE_SCALE: number;
static BONE_SCALEX: number;
static BONE_SCALEY: number;
static BONE_SHEAR: number; static BONE_SHEAR: number;
static BONE_SHEARX: number;
static BONE_SHEARY: number;
static SLOT_ATTACHMENT: number; static SLOT_ATTACHMENT: number;
static SLOT_COLOR: number; static SLOT_RGBA: number;
static SLOT_TWO_COLOR: number; static SLOT_RGB: number;
static SLOT_RGBA2: number;
static SLOT_RGB2: number;
static SLOT_ALPHA: number;
static PATH_POSITION: number; static PATH_POSITION: number;
static PATH_SPACING: number; static PATH_SPACING: number;
static PATH_MIX: number; static PATH_MIX: number;
@ -725,9 +775,26 @@ declare module spine {
private readFloatArray; private readFloatArray;
private readShortArray; private readShortArray;
private readAnimation; private readAnimation;
private readCurve; static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
} }
class BinaryInput {
strings: string[];
private index;
private buffer;
constructor(data: Uint8Array, strings?: string[], index?: number, buffer?: DataView);
readByte(): number;
readUnsignedByte(): number;
readShort(): number;
readInt32(): number;
readInt(optimizePositive: boolean): number;
readStringRef(): string;
readString(): string;
readFloat(): number;
readBoolean(): boolean;
}
export {};
} }
declare module spine { declare module spine {
class SkeletonBounds { class SkeletonBounds {
@ -815,11 +882,14 @@ declare module spine {
readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment;
readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void;
readAnimation(map: any, name: string, skeletonData: SkeletonData): void; readAnimation(map: any, name: string, skeletonData: SkeletonData): void;
readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; private readTimeline;
private readTimeline2;
private readCurve;
setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getValue(map: any, prop: string, defaultValue: any): any; getValue(map: any, prop: string, defaultValue: any): any;
static blendModeFromString(str: string): BlendMode; static blendModeFromString(str: string): BlendMode;
static positionModeFromString(str: string): PositionMode; static positionModeFromString(str: string): PositionMode;
static spacingModeFromString(str: string): SpacingMode; static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
static rotateModeFromString(str: string): RotateMode; static rotateModeFromString(str: string): RotateMode;
static transformModeFromString(str: string): TransformMode; static transformModeFromString(str: string): TransformMode;
} }
@ -959,15 +1029,16 @@ declare module spine {
data: TransformConstraintData; data: TransformConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Bone; target: Bone;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
scaleMix: number; mixY: number;
shearMix: number; mixScaleX: number;
mixScaleY: number;
mixShearY: number;
temp: Vector2; temp: Vector2;
active: boolean; active: boolean;
constructor(data: TransformConstraintData, skeleton: Skeleton); constructor(data: TransformConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
applyAbsoluteWorld(): void; applyAbsoluteWorld(): void;
applyRelativeWorld(): void; applyRelativeWorld(): void;
@ -979,10 +1050,12 @@ declare module spine {
class TransformConstraintData extends ConstraintData { class TransformConstraintData extends ConstraintData {
bones: BoneData[]; bones: BoneData[];
target: BoneData; target: BoneData;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
scaleMix: number; mixY: number;
shearMix: number; mixScaleX: number;
mixScaleY: number;
mixShearY: number;
offsetRotation: number; offsetRotation: number;
offsetX: number; offsetX: number;
offsetY: number; offsetY: number;
@ -1027,6 +1100,14 @@ declare module spine {
remove(value: number): void; remove(value: number): void;
clear(): void; clear(): void;
} }
class StringSet {
entries: Map<boolean>;
size: number;
add(value: string): boolean;
addAll(values: string[]): boolean;
contains(value: string): boolean;
clear(): void;
}
interface Disposable { interface Disposable {
dispose(): void; dispose(): void;
} }
@ -1084,6 +1165,7 @@ declare module spine {
class Utils { class Utils {
static SUPPORTS_TYPED_ARRAYS: boolean; static SUPPORTS_TYPED_ARRAYS: boolean;
static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void; static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>; static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>; static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
static newArray<T>(size: number, defaultValue: T): Array<T>; static newArray<T>(size: number, defaultValue: T): Array<T>;

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -2,17 +2,13 @@ declare module spine {
class Animation { class Animation {
name: string; name: string;
timelines: Array<Timeline>; timelines: Array<Timeline>;
timelineIds: Array<boolean>; timelineIds: StringSet;
duration: number; duration: number;
constructor(name: string, timelines: Array<Timeline>, duration: number); constructor(name: string, timelines: Array<Timeline>, duration: number);
hasTimeline(id: number): boolean; hasTimeline(ids: string[]): boolean;
apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, loop: boolean, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
static binarySearch(values: ArrayLike<number>, target: number, step?: number): number; static search(frames: ArrayLike<number>, time: number): number;
static linearSearch(values: ArrayLike<number>, target: number, step: number): number; static search2(values: ArrayLike<number>, time: number, step: number): number;
}
interface Timeline {
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
getPropertyId(): number;
} }
enum MixBlend { enum MixBlend {
setup = 0, setup = 0,
@ -24,103 +20,152 @@ declare module spine {
mixIn = 0, mixIn = 0,
mixOut = 1 mixOut = 1
} }
enum TimelineType { enum Property {
rotate = 0, rotate = 0,
translate = 1, x = 1,
scale = 2, y = 2,
shear = 3, scaleX = 3,
attachment = 4, scaleY = 4,
color = 5, shearX = 5,
deform = 6, shearY = 6,
event = 7, rgb = 7,
drawOrder = 8, alpha = 8,
ikConstraint = 9, rgb2 = 9,
transformConstraint = 10, attachment = 10,
pathConstraintPosition = 11, deform = 11,
pathConstraintSpacing = 12, event = 12,
pathConstraintMix = 13, drawOrder = 13,
twoColor = 14 ikConstraint = 14,
transformConstraint = 15,
pathConstraintPosition = 16,
pathConstraintSpacing = 17,
pathConstraintMix = 18
} }
abstract class CurveTimeline implements Timeline { abstract class Timeline {
propertyIds: string[];
frames: ArrayLike<number>;
constructor(frameCount: number, propertyIds: string[]);
getPropertyIds(): string[];
abstract getFrameEntries(): number;
getFrameCount(): number;
getDuration(): number;
abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
interface BoneTimeline {
boneIndex: number;
}
interface SlotTimeline {
slotIndex: number;
}
abstract class CurveTimeline extends Timeline {
static LINEAR: number; static LINEAR: number;
static STEPPED: number; static STEPPED: number;
static BEZIER: number; static BEZIER: number;
static BEZIER_SIZE: number; static BEZIER_SIZE: number;
private curves; protected curves: ArrayLike<number>;
abstract getPropertyId(): number; constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
constructor(frameCount: number); setLinear(frame: number): void;
getFrameCount(): number; setStepped(frame: number): void;
setLinear(frameIndex: number): void; shrink(bezierCount: number): void;
setStepped(frameIndex: number): void; setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getCurveType(frameIndex: number): number; getBezierValue(time: number, frameIndex: number, valueOffset: number, i: number): number;
setCurve(frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void;
getCurvePercent(frameIndex: number, percent: number): number;
abstract apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class RotateTimeline extends CurveTimeline { abstract class CurveTimeline1 extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number; static VALUE: number;
static PREV_ROTATION: number; constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
static ROTATION: number; getFrameEntries(): number;
setFrame(frame: number, time: number, value: number): void;
getCurveValue(time: number): number;
}
abstract class CurveTimeline2 extends CurveTimeline {
static ENTRIES: number;
static VALUE1: number;
static VALUE2: number;
constructor(frameCount: number, bezierCount: number, propertyIds: string[]);
getFrameEntries(): number;
setFrame(frame: number, time: number, value1: number, value2: number): void;
}
class RotateTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number; boneIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, boneIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, degrees: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TranslateTimeline extends CurveTimeline { class TranslateTimeline extends CurveTimeline2 implements BoneTimeline {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_X: number;
static PREV_Y: number;
static X: number;
static Y: number;
boneIndex: number; boneIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, boneIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, x: number, y: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ScaleTimeline extends TranslateTimeline { class TranslateXTimeline extends CurveTimeline1 implements BoneTimeline {
constructor(frameCount: number); boneIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ShearTimeline extends TranslateTimeline { class TranslateYTimeline extends CurveTimeline1 implements BoneTimeline {
constructor(frameCount: number); boneIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class ColorTimeline extends CurveTimeline { class ScaleTimeline extends CurveTimeline2 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ScaleXTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ScaleYTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearTimeline extends CurveTimeline2 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearXTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class ShearYTimeline extends CurveTimeline1 implements BoneTimeline {
boneIndex: number;
constructor(frameCount: number, bezierCount: number, boneIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class RGBATimeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_R: number;
static PREV_G: number;
static PREV_B: number;
static PREV_A: number;
static R: number; static R: number;
static G: number; static G: number;
static B: number; static B: number;
static A: number; static A: number;
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, slotIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, r: number, g: number, b: number, a: number): void;
setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TwoColorTimeline extends CurveTimeline { class RGBTimeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number;
static R: number;
static G: number;
static B: number;
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, r: number, g: number, b: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class AlphaTimeline extends CurveTimeline1 implements SlotTimeline {
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class RGBA2Timeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_R: number;
static PREV_G: number;
static PREV_B: number;
static PREV_A: number;
static PREV_R2: number;
static PREV_G2: number;
static PREV_B2: number;
static R: number; static R: number;
static G: number; static G: number;
static B: number; static B: number;
@ -129,124 +174,115 @@ declare module spine {
static G2: number; static G2: number;
static B2: number; static B2: number;
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, slotIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
setFrame(frameIndex: number, time: number, r: number, g: number, b: number, a: number, r2: number, g2: number, b2: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class AttachmentTimeline implements Timeline { class RGB2Timeline extends CurveTimeline implements SlotTimeline {
static ENTRIES: number;
static R: number;
static G: number;
static B: number;
static R2: number;
static G2: number;
static B2: number;
slotIndex: number;
constructor(frameCount: number, bezierCount: number, slotIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, r: number, g: number, b: number, r2: number, g2: number, b2: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
}
class AttachmentTimeline extends Timeline implements SlotTimeline {
slotIndex: number; slotIndex: number;
frames: ArrayLike<number>;
attachmentNames: Array<string>; attachmentNames: Array<string>;
constructor(frameCount: number); constructor(frameCount: number, slotIndex: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; getFrameCount(): number;
setFrame(frameIndex: number, time: number, attachmentName: string): void; setFrame(frame: number, time: number, attachmentName: string): void;
apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, events: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void; setAttachment(skeleton: Skeleton, slot: Slot, attachmentName: string): void;
} }
class DeformTimeline extends CurveTimeline { class DeformTimeline extends CurveTimeline implements SlotTimeline {
slotIndex: number; slotIndex: number;
attachment: VertexAttachment; attachment: VertexAttachment;
frames: ArrayLike<number>; vertices: Array<ArrayLike<number>>;
frameVertices: Array<ArrayLike<number>>; constructor(frameCount: number, bezierCount: number, slotIndex: number, attachment: VertexAttachment);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, vertices: ArrayLike<number>): void;
setFrame(frameIndex: number, time: number, vertices: ArrayLike<number>): void; setBezier(bezier: number, frame: number, value: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getCurvePercent(time: number, frame: number): number;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class EventTimeline implements Timeline { class EventTimeline extends Timeline {
frames: ArrayLike<number>; static propertyIds: string[];
events: Array<Event>; events: Array<Event>;
constructor(frameCount: number); constructor(frameCount: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; setFrame(frame: number, event: Event): void;
setFrame(frameIndex: number, event: Event): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class DrawOrderTimeline implements Timeline { class DrawOrderTimeline extends Timeline {
frames: ArrayLike<number>; static propertyIds: string[];
drawOrders: Array<Array<number>>; drawOrders: Array<Array<number>>;
constructor(frameCount: number); constructor(frameCount: number);
getPropertyId(): number; getFrameEntries(): number;
getFrameCount(): number; setFrame(frame: number, time: number, drawOrder: Array<number>): void;
setFrame(frameIndex: number, time: number, drawOrder: Array<number>): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class IkConstraintTimeline extends CurveTimeline { class IkConstraintTimeline extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_MIX: number;
static PREV_SOFTNESS: number;
static PREV_BEND_DIRECTION: number;
static PREV_COMPRESS: number;
static PREV_STRETCH: number;
static MIX: number; static MIX: number;
static SOFTNESS: number; static SOFTNESS: number;
static BEND_DIRECTION: number; static BEND_DIRECTION: number;
static COMPRESS: number; static COMPRESS: number;
static STRETCH: number; static STRETCH: number;
ikConstraintIndex: number; ikConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, ikConstraintIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
setFrame(frameIndex: number, time: number, mix: number, softness: number, bendDirection: number, compress: boolean, stretch: boolean): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class TransformConstraintTimeline extends CurveTimeline { class TransformConstraintTimeline extends CurveTimeline {
static ENTRIES: number; static ENTRIES: number;
static PREV_TIME: number;
static PREV_ROTATE: number;
static PREV_TRANSLATE: number;
static PREV_SCALE: number;
static PREV_SHEAR: number;
static ROTATE: number; static ROTATE: number;
static TRANSLATE: number; static X: number;
static SCALE: number; static Y: number;
static SHEAR: number; static SCALEX: number;
static SCALEY: number;
static SHEARY: number;
transformConstraintIndex: number; transformConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, transformConstraintIndex: number);
constructor(frameCount: number); getFrameEntries(): number;
getPropertyId(): number; setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number, mixScaleX: number, mixScaleY: number, mixShearY: number): void;
setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number, scaleMix: number, shearMix: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintPositionTimeline extends CurveTimeline { class PathConstraintPositionTimeline extends CurveTimeline1 {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_VALUE: number;
static VALUE: number;
pathConstraintIndex: number; pathConstraintIndex: number;
frames: ArrayLike<number>; constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
constructor(frameCount: number);
getPropertyId(): number;
setFrame(frameIndex: number, time: number, value: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintSpacingTimeline extends PathConstraintPositionTimeline { class PathConstraintSpacingTimeline extends CurveTimeline1 {
constructor(frameCount: number); pathConstraintIndex: number;
getPropertyId(): number; constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
class PathConstraintMixTimeline extends CurveTimeline { class PathConstraintMixTimeline extends CurveTimeline {
static ENTRIES: number;
static PREV_TIME: number;
static PREV_ROTATE: number;
static PREV_TRANSLATE: number;
static ROTATE: number;
static TRANSLATE: number;
pathConstraintIndex: number; pathConstraintIndex: number;
frames: ArrayLike<number>; static ENTRIES: number;
constructor(frameCount: number); static ROTATE: number;
getPropertyId(): number; static X: number;
setFrame(frameIndex: number, time: number, rotateMix: number, translateMix: number): void; static Y: number;
constructor(frameCount: number, bezierCount: number, pathConstraintIndex: number);
getFrameEntries(): number;
setFrame(frame: number, time: number, mixRotate: number, mixX: number, mixY: number): void;
apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void; apply(skeleton: Skeleton, lastTime: number, time: number, firedEvents: Array<Event>, alpha: number, blend: MixBlend, direction: MixDirection): void;
} }
} }
declare module spine { declare module spine {
class AnimationState { class AnimationState {
static emptyAnimation: Animation; private static _emptyAnimation;
private static emptyAnimation;
static SUBSEQUENT: number; static SUBSEQUENT: number;
static FIRST: number; static FIRST: number;
static HOLD_SUBSEQUENT: number; static HOLD_SUBSEQUENT: number;
@ -261,7 +297,7 @@ declare module spine {
events: Event[]; events: Event[];
listeners: AnimationStateListener[]; listeners: AnimationStateListener[];
queue: EventQueue; queue: EventQueue;
propertyIDs: IntSet; propertyIDs: StringSet;
animationsChanged: boolean; animationsChanged: boolean;
trackEntryPool: Pool<TrackEntry>; trackEntryPool: Pool<TrackEntry>;
constructor(data: AnimationStateData); constructor(data: AnimationStateData);
@ -275,6 +311,7 @@ declare module spine {
queueEvents(entry: TrackEntry, animationTime: number): void; queueEvents(entry: TrackEntry, animationTime: number): void;
clearTracks(): void; clearTracks(): void;
clearTrack(trackIndex: number): void; clearTrack(trackIndex: number): void;
clearNext(entry: TrackEntry): void;
setCurrent(index: number, current: TrackEntry, interrupt: boolean): void; setCurrent(index: number, current: TrackEntry, interrupt: boolean): void;
setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry; setAnimation(trackIndex: number, animationName: string, loop: boolean): TrackEntry;
setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry; setAnimationWith(trackIndex: number, animation: Animation, loop: boolean): TrackEntry;
@ -296,6 +333,7 @@ declare module spine {
} }
class TrackEntry { class TrackEntry {
animation: Animation; animation: Animation;
previous: TrackEntry;
next: TrackEntry; next: TrackEntry;
mixingFrom: TrackEntry; mixingFrom: TrackEntry;
mixingTo: TrackEntry; mixingTo: TrackEntry;
@ -303,6 +341,7 @@ declare module spine {
trackIndex: number; trackIndex: number;
loop: boolean; loop: boolean;
holdPrevious: boolean; holdPrevious: boolean;
reverse: boolean;
eventThreshold: number; eventThreshold: number;
attachmentThreshold: number; attachmentThreshold: number;
drawOrderThreshold: number; drawOrderThreshold: number;
@ -330,6 +369,7 @@ declare module spine {
setAnimationLast(animationLast: number): void; setAnimationLast(animationLast: number): void;
isComplete(): boolean; isComplete(): boolean;
resetRotationDirections(): void; resetRotationDirections(): void;
getTrackComplete(): number;
} }
class EventQueue { class EventQueue {
objects: Array<any>; objects: Array<any>;
@ -547,7 +587,6 @@ declare module spine {
active: boolean; active: boolean;
constructor(data: IkConstraintData, skeleton: Skeleton); constructor(data: IkConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void; apply1(bone: Bone, targetX: number, targetY: number, compress: boolean, stretch: boolean, uniform: boolean, alpha: number): void;
apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void; apply2(parent: Bone, child: Bone, targetX: number, targetY: number, bendDir: number, stretch: boolean, softness: number, alpha: number): void;
@ -577,8 +616,9 @@ declare module spine {
target: Slot; target: Slot;
position: number; position: number;
spacing: number; spacing: number;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
mixY: number;
spaces: number[]; spaces: number[];
positions: number[]; positions: number[];
world: number[]; world: number[];
@ -588,9 +628,8 @@ declare module spine {
active: boolean; active: boolean;
constructor(data: PathConstraintData, skeleton: Skeleton); constructor(data: PathConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean, percentPosition: boolean, percentSpacing: boolean): number[]; computeWorldPositions(path: PathAttachment, spacesCount: number, tangents: boolean): number[];
addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; addBeforePosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void; addAfterPosition(p: number, temp: Array<number>, i: number, out: Array<number>, o: number): void;
addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void; addCurvePosition(p: number, x1: number, y1: number, cx1: number, cy1: number, cx2: number, cy2: number, x2: number, y2: number, out: Array<number>, o: number, tangents: boolean): void;
@ -606,8 +645,9 @@ declare module spine {
offsetRotation: number; offsetRotation: number;
position: number; position: number;
spacing: number; spacing: number;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
mixY: number;
constructor(name: string); constructor(name: string);
} }
enum PositionMode { enum PositionMode {
@ -617,7 +657,8 @@ declare module spine {
enum SpacingMode { enum SpacingMode {
Length = 0, Length = 0,
Fixed = 1, Fixed = 1,
Percent = 2 Percent = 2,
Proportional = 3
} }
enum RotateMode { enum RotateMode {
Tangent = 0, Tangent = 0,
@ -655,7 +696,6 @@ declare module spine {
transformConstraints: Array<TransformConstraint>; transformConstraints: Array<TransformConstraint>;
pathConstraints: Array<PathConstraint>; pathConstraints: Array<PathConstraint>;
_updateCache: Updatable[]; _updateCache: Updatable[];
updateCacheReset: Updatable[];
skin: Skin; skin: Skin;
color: Color; color: Color;
time: number; time: number;
@ -673,6 +713,7 @@ declare module spine {
sortBone(bone: Bone): void; sortBone(bone: Bone): void;
sortReset(bones: Array<Bone>): void; sortReset(bones: Array<Bone>): void;
updateWorldTransform(): void; updateWorldTransform(): void;
updateWorldTransformWith(parent: Bone): void;
setToSetupPose(): void; setToSetupPose(): void;
setBonesToSetupPose(): void; setBonesToSetupPose(): void;
setSlotsToSetupPose(): void; setSlotsToSetupPose(): void;
@ -694,7 +735,7 @@ declare module spine {
} }
} }
declare module spine { declare module spine {
class SkeletonBinary { export class SkeletonBinary {
static AttachmentTypeValues: number[]; static AttachmentTypeValues: number[];
static TransformModeValues: TransformMode[]; static TransformModeValues: TransformMode[];
static PositionModeValues: PositionMode[]; static PositionModeValues: PositionMode[];
@ -703,11 +744,20 @@ declare module spine {
static BlendModeValues: BlendMode[]; static BlendModeValues: BlendMode[];
static BONE_ROTATE: number; static BONE_ROTATE: number;
static BONE_TRANSLATE: number; static BONE_TRANSLATE: number;
static BONE_TRANSLATEX: number;
static BONE_TRANSLATEY: number;
static BONE_SCALE: number; static BONE_SCALE: number;
static BONE_SCALEX: number;
static BONE_SCALEY: number;
static BONE_SHEAR: number; static BONE_SHEAR: number;
static BONE_SHEARX: number;
static BONE_SHEARY: number;
static SLOT_ATTACHMENT: number; static SLOT_ATTACHMENT: number;
static SLOT_COLOR: number; static SLOT_RGBA: number;
static SLOT_TWO_COLOR: number; static SLOT_RGB: number;
static SLOT_RGBA2: number;
static SLOT_RGB2: number;
static SLOT_ALPHA: number;
static PATH_POSITION: number; static PATH_POSITION: number;
static PATH_SPACING: number; static PATH_SPACING: number;
static PATH_MIX: number; static PATH_MIX: number;
@ -725,9 +775,26 @@ declare module spine {
private readFloatArray; private readFloatArray;
private readShortArray; private readShortArray;
private readAnimation; private readAnimation;
private readCurve; static readTimeline(input: BinaryInput, timeline: CurveTimeline1, scale: number): Timeline;
setCurve(timeline: CurveTimeline, frameIndex: number, cx1: number, cy1: number, cx2: number, cy2: number): void; static readTimeline2(input: BinaryInput, timeline: CurveTimeline2, scale: number): Timeline;
static setBezier(input: BinaryInput, timeline: CurveTimeline, bezier: number, frame: number, value: number, time1: number, time2: number, value1: number, value2: number, scale: number): void;
} }
class BinaryInput {
strings: string[];
private index;
private buffer;
constructor(data: Uint8Array, strings?: string[], index?: number, buffer?: DataView);
readByte(): number;
readUnsignedByte(): number;
readShort(): number;
readInt32(): number;
readInt(optimizePositive: boolean): number;
readStringRef(): string;
readString(): string;
readFloat(): number;
readBoolean(): boolean;
}
export {};
} }
declare module spine { declare module spine {
class SkeletonBounds { class SkeletonBounds {
@ -815,11 +882,14 @@ declare module spine {
readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment; readAttachment(map: any, skin: Skin, slotIndex: number, name: string, skeletonData: SkeletonData): Attachment;
readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void; readVertices(map: any, attachment: VertexAttachment, verticesLength: number): void;
readAnimation(map: any, name: string, skeletonData: SkeletonData): void; readAnimation(map: any, name: string, skeletonData: SkeletonData): void;
readCurve(map: any, timeline: CurveTimeline, frameIndex: number): void; private readTimeline;
private readTimeline2;
private readCurve;
setBezier(timeline: CurveTimeline, frame: number, value: number, bezier: number, time1: number, value1: number, cx1: number, cy1: number, cx2: number, cy2: number, time2: number, value2: number): void;
getValue(map: any, prop: string, defaultValue: any): any; getValue(map: any, prop: string, defaultValue: any): any;
static blendModeFromString(str: string): BlendMode; static blendModeFromString(str: string): BlendMode;
static positionModeFromString(str: string): PositionMode; static positionModeFromString(str: string): PositionMode;
static spacingModeFromString(str: string): SpacingMode; static spacingModeFromString(str: string): SpacingMode.Length | SpacingMode.Fixed | SpacingMode.Percent;
static rotateModeFromString(str: string): RotateMode; static rotateModeFromString(str: string): RotateMode;
static transformModeFromString(str: string): TransformMode; static transformModeFromString(str: string): TransformMode;
} }
@ -959,15 +1029,16 @@ declare module spine {
data: TransformConstraintData; data: TransformConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Bone; target: Bone;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
scaleMix: number; mixY: number;
shearMix: number; mixScaleX: number;
mixScaleY: number;
mixShearY: number;
temp: Vector2; temp: Vector2;
active: boolean; active: boolean;
constructor(data: TransformConstraintData, skeleton: Skeleton); constructor(data: TransformConstraintData, skeleton: Skeleton);
isActive(): boolean; isActive(): boolean;
apply(): void;
update(): void; update(): void;
applyAbsoluteWorld(): void; applyAbsoluteWorld(): void;
applyRelativeWorld(): void; applyRelativeWorld(): void;
@ -979,10 +1050,12 @@ declare module spine {
class TransformConstraintData extends ConstraintData { class TransformConstraintData extends ConstraintData {
bones: BoneData[]; bones: BoneData[];
target: BoneData; target: BoneData;
rotateMix: number; mixRotate: number;
translateMix: number; mixX: number;
scaleMix: number; mixY: number;
shearMix: number; mixScaleX: number;
mixScaleY: number;
mixShearY: number;
offsetRotation: number; offsetRotation: number;
offsetX: number; offsetX: number;
offsetY: number; offsetY: number;
@ -1027,6 +1100,14 @@ declare module spine {
remove(value: number): void; remove(value: number): void;
clear(): void; clear(): void;
} }
class StringSet {
entries: Map<boolean>;
size: number;
add(value: string): boolean;
addAll(values: string[]): boolean;
contains(value: string): boolean;
clear(): void;
}
interface Disposable { interface Disposable {
dispose(): void; dispose(): void;
} }
@ -1084,6 +1165,7 @@ declare module spine {
class Utils { class Utils {
static SUPPORTS_TYPED_ARRAYS: boolean; static SUPPORTS_TYPED_ARRAYS: boolean;
static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void; static arrayCopy<T>(source: ArrayLike<T>, sourceStart: number, dest: ArrayLike<T>, destStart: number, numElements: number): void;
static arrayFill<T>(array: ArrayLike<T>, fromIndex: number, toIndex: number, value: T): void;
static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>; static setArraySize<T>(array: Array<T>, size: number, value?: any): Array<T>;
static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>; static ensureArrayCapacity<T>(array: Array<T>, size: number, value?: any): Array<T>;
static newArray<T>(size: number, defaultValue: T): Array<T>; static newArray<T>(size: number, defaultValue: T): Array<T>;

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 KiB

After

Width:  |  Height:  |  Size: 261 KiB

View File

@ -89,6 +89,9 @@ module spine {
data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, "transform", "normal")); data.transformMode = SkeletonJson.transformModeFromString(this.getValue(boneMap, "transform", "normal"));
data.skinRequired = this.getValue(boneMap, "skin", false); data.skinRequired = this.getValue(boneMap, "skin", false);
let color = this.getValue(boneMap, "color", null);
if (color) data.color.setFromString(color);
skeletonData.bones.push(data); skeletonData.bones.push(data);
} }
} }
@ -176,10 +179,12 @@ module spine {
data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0); data.offsetScaleY = this.getValue(constraintMap, "scaleY", 0);
data.offsetShearY = this.getValue(constraintMap, "shearY", 0); data.offsetShearY = this.getValue(constraintMap, "shearY", 0);
data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); data.mixRotate = this.getValue(constraintMap, "mixRotate", 1);
data.translateMix = this.getValue(constraintMap, "translateMix", 1); data.mixX = this.getValue(constraintMap, "mixX", 1);
data.scaleMix = this.getValue(constraintMap, "scaleMix", 1); data.mixY = this.getValue(constraintMap, "mixY", data.mixX);
data.shearMix = this.getValue(constraintMap, "shearMix", 1); data.mixScaleX = this.getValue(constraintMap, "mixScaleX", 1);
data.mixScaleY = this.getValue(constraintMap, "mixScaleY", data.mixScaleX);
data.mixShearY = this.getValue(constraintMap, "mixShearY", 1);
skeletonData.transformConstraints.push(data); skeletonData.transformConstraints.push(data);
} }
@ -212,8 +217,9 @@ module spine {
if (data.positionMode == PositionMode.Fixed) data.position *= scale; if (data.positionMode == PositionMode.Fixed) data.position *= scale;
data.spacing = this.getValue(constraintMap, "spacing", 0); data.spacing = this.getValue(constraintMap, "spacing", 0);
if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) data.spacing *= scale; if (data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed) data.spacing *= scale;
data.rotateMix = this.getValue(constraintMap, "rotateMix", 1); data.mixRotate = this.getValue(constraintMap, "mixRotate", 1);
data.translateMix = this.getValue(constraintMap, "translateMix", 1); data.mixX = this.getValue(constraintMap, "mixX", 1);
data.mixY = this.getValue(constraintMap, "mixY", 1);
skeletonData.pathConstraints.push(data); skeletonData.pathConstraints.push(data);
} }
@ -316,9 +322,7 @@ module spine {
let scale = this.scale; let scale = this.scale;
name = this.getValue(map, "name", name); name = this.getValue(map, "name", name);
let type = this.getValue(map, "type", "region"); switch (this.getValue(map, "type", "region")) {
switch (type) {
case "region": { case "region": {
let path = this.getValue(map, "path", name); let path = this.getValue(map, "path", name);
let region = this.attachmentLoader.newRegionAttachment(skin, name, path); let region = this.attachmentLoader.newRegionAttachment(skin, name, path);
@ -470,15 +474,14 @@ module spine {
if (!timelineMap) continue; if (!timelineMap) continue;
if (timelineName == "attachment") { if (timelineName == "attachment") {
let timeline = new AttachmentTimeline(timelineMap.length, slotIndex); let timeline = new AttachmentTimeline(timelineMap.length, slotIndex);
for (let frame = 0; frame < timelineMap.length; frame++) {
let frame = 0; let keyMap = timelineMap[frame];
for (let i = 0; i < timelineMap.length; i++) { timeline.setFrame(frame, this.getValue(keyMap, "time", 0), keyMap.name);
let keyMap = timelineMap[i];
timeline.setFrame(frame++, this.getValue(keyMap, "time", 0), keyMap.name);
} }
timelines.push(timeline); timelines.push(timeline);
} else if (timelineName == "color") {
let timeline = new ColorTimeline(timelineMap.length, timelineMap.length << 2, slotIndex); } else if (timelineName == "rgba") {
let timeline = new RGBATimeline(timelineMap.length, timelineMap.length << 2, slotIndex);
let keyMap = timelineMap[0]; let keyMap = timelineMap[0];
let time = this.getValue(keyMap, "time", 0); let time = this.getValue(keyMap, "time", 0);
let color = new Color().setFromString(keyMap.color); let color = new Color().setFromString(keyMap.color);
@ -505,8 +508,37 @@ module spine {
timelines.push(timeline); timelines.push(timeline);
} else if (timelineName == "twoColor") { } else if (timelineName == "rgb") {
let timeline = new TwoColorTimeline(timelineMap.length, timelineMap.length * 7, slotIndex); let timeline = new RGBTimeline(timelineMap.length, timelineMap.length * 3, slotIndex);
let keyMap = timelineMap[0];
let time = this.getValue(keyMap, "time", 0);
let color = new Color().setFromString(keyMap.color);
for (let frame = 0, bezier = 0;; frame++) {
timeline.setFrame(frame, time, color.r, color.g, color.b);
if (timelineMap.length == frame + 1) {
break;
}
let nextMap = timelineMap[frame + 1];
let time2 = this.getValue(nextMap, "time", 0);
let newColor = new Color().setFromString(nextMap.color);
let curve = keyMap.curve;
if (curve) {
bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);
}
time = time2;
color = newColor;
keyMap = nextMap;
}
timelines.push(timeline);
} else if (timelineName == "alpha") {
timelines.push(this.readTimeline(timelineMap, new AlphaTimeline(timelineMap.length, timelineMap.length, slotIndex), 0, 1));
} else if (timelineName == "rgba2") {
let timeline = new RGBA2Timeline(timelineMap.length, timelineMap.length * 7, slotIndex);
let keyMap = timelineMap[0]; let keyMap = timelineMap[0];
let time = this.getValue(keyMap, "time", 0); let time = this.getValue(keyMap, "time", 0);
@ -540,6 +572,40 @@ module spine {
timelines.push(timeline); timelines.push(timeline);
} else if (timelineName == "rgb2") {
let timeline = new RGB2Timeline(timelineMap.length, timelineMap.length * 6, slotIndex);
let keyMap = timelineMap[0];
let time = this.getValue(keyMap, "time", 0);
let color = new Color().setFromString(keyMap.light);
let color2 = new Color().setFromString(keyMap.dark);
for (let frame = 0, bezier = 0;; frame++) {
timeline.setFrame(frame, time, color.r, color.g, color.b, color2.r, color2.g, color2.b);
if (timelineMap.length == frame + 1) {
break;
}
let nextMap = timelineMap[frame + 1];
let time2 = this.getValue(nextMap, "time", 0);
let newColor = new Color().setFromString(nextMap.light);
let newColor2 = new Color().setFromString(nextMap.dark);
let curve = keyMap.curve;
if (curve) {
bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, color.r, newColor.r, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 1, time, time2, color.g, newColor.g, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 2, time, time2, color.b, newColor.b, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 3, time, time2, color2.r, newColor2.r, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 4, time, time2, color2.g, newColor2.g, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 5, time, time2, color2.b, newColor2.b, 1);
}
time = time2;
color = newColor;
color2 = newColor2;
keyMap = nextMap;
}
timelines.push(timeline);
} else } else
throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")"); throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")");
} }
@ -554,20 +620,37 @@ module spine {
if (boneIndex == -1) throw new Error("Bone not found: " + boneName); if (boneIndex == -1) throw new Error("Bone not found: " + boneName);
for (let timelineName in boneMap) { for (let timelineName in boneMap) {
let timelineMap = boneMap[timelineName]; let timelineMap = boneMap[timelineName];
let keyMap = timelineMap[0]; if (timelineMap.length == 0) continue;
if (!keyMap) continue;
if (timelineName === "rotate") { if (timelineName === "rotate") {
timelines.push(this.readTimeline(timelineMap, new RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1)); timelines.push(this.readTimeline(timelineMap, new RotateTimeline(timelineMap.length, timelineMap.length, boneIndex), 0, 1));
} else if (timelineName === "translate") { } else if (timelineName === "translate") {
let timeline = new TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); let timeline = new TranslateTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);
timelines.push(this.readTimeline2(timelineMap, timeline, "x", "y", 0, scale)); timelines.push(this.readTimeline2(timelineMap, timeline, "x", "y", 0, scale));
} else if (timelineName === "translatex") {
let timeline = new TranslateXTimeline(timelineMap.length, timelineMap.length, boneIndex);
timelines.push(this.readTimeline(timelineMap, timeline, 0, scale));
} else if (timelineName === "translatey") {
let timeline = new TranslateYTimeline(timelineMap.length, timelineMap.length, boneIndex);
timelines.push(this.readTimeline(timelineMap, timeline, 0, scale));
} else if (timelineName === "scale") { } else if (timelineName === "scale") {
let timeline = new ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); let timeline = new ScaleTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);
timelines.push(this.readTimeline2(timelineMap, timeline, "x", "y", 1, 1)); timelines.push(this.readTimeline2(timelineMap, timeline, "x", "y", 1, 1));
} else if (timelineName === "scalex") {
let timeline = new ScaleXTimeline(timelineMap.length, timelineMap.length, boneIndex);
timelines.push(this.readTimeline(timelineMap, timeline, 1, 1));
} else if (timelineName === "scaley") {
let timeline = new ScaleYTimeline(timelineMap.length, timelineMap.length, boneIndex);
timelines.push(this.readTimeline(timelineMap, timeline, 1, 1));
} else if (timelineName === "shear") { } else if (timelineName === "shear") {
let timeline = new ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex); let timeline = new ShearTimeline(timelineMap.length, timelineMap.length << 1, boneIndex);
timelines.push(this.readTimeline2(timelineMap, timeline, "x", "y", 0, 1)); timelines.push(this.readTimeline2(timelineMap, timeline, "x", "y", 0, 1));
} else if (timelineName === "shearx") {
let timeline = new ShearXTimeline(timelineMap.length, timelineMap.length, boneIndex);
timelines.push(this.readTimeline(timelineMap, timeline, 0, 1));
} else if (timelineName === "sheary") {
let timeline = new ShearYTimeline(timelineMap.length, timelineMap.length, boneIndex);
timelines.push(this.readTimeline(timelineMap, timeline, 0, 1));
} else { } else {
throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); throw new Error("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")");
} }
@ -600,7 +683,6 @@ module spine {
let time2 = this.getValue(nextMap, "time", 0); let time2 = this.getValue(nextMap, "time", 0);
let mix2 = this.getValue(nextMap, "mix", 1); let mix2 = this.getValue(nextMap, "mix", 1);
let softness2 = this.getValue(nextMap, "softness", 0) * scale; let softness2 = this.getValue(nextMap, "softness", 0) * scale;
let curve = keyMap.curve; let curve = keyMap.curve;
if (curve) { if (curve) {
bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1); bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, mix, mix2, 1);
@ -619,46 +701,53 @@ module spine {
// Transform constraint timelines. // Transform constraint timelines.
if (map.transform) { if (map.transform) {
for (let constraintName in map.transform) { for (let constraintName in map.transform) {
let constraintMap = map.transform[constraintName]; let timelineMap = map.transform[constraintName];
let keyMap = constraintMap[0]; let keyMap = timelineMap[0];
if (!keyMap) continue; if (!keyMap) continue;
let constraint = skeletonData.findTransformConstraint(constraintName); let constraint = skeletonData.findTransformConstraint(constraintName);
let constraintIndex = skeletonData.transformConstraints.indexOf(constraint); let constraintIndex = skeletonData.transformConstraints.indexOf(constraint);
let timeline = new TransformConstraintTimeline(constraintMap.length, constraintMap.length << 2, constraintIndex); let timeline = new TransformConstraintTimeline(timelineMap.length, timelineMap.length << 2, constraintIndex);
let time = this.getValue(keyMap, "time", 0); let time = this.getValue(keyMap, "time", 0);
let rotateMix = this.getValue(keyMap, "rotateMix", 1); let mixRotate = this.getValue(keyMap, "mixRotate", 1);
let translateMix = this.getValue(keyMap, "translateMix", 1); let mixShearY = this.getValue(keyMap, "mixShearY", 1);
let scaleMix = this.getValue(keyMap, "scaleMix", 1); let mixX = this.getValue(keyMap, "mixX", 1);
let shearMix = this.getValue(keyMap, "shearMix", 1); let mixY = this.getValue(keyMap, "mixY", mixX);
let mixScaleX = this.getValue(keyMap, "mixScaleX", 1);
let mixScaleY = this.getValue(keyMap, "mixScaleY", mixScaleX);
for (let frame = 0, bezier = 0;; frame++) { for (let frame = 0, bezier = 0;; frame++) {
timeline.setFrame(frame, time, rotateMix, translateMix, scaleMix, shearMix); timeline.setFrame(frame, time, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY);
let nextMap = constraintMap[frame + 1]; let nextMap = timelineMap[frame + 1];
if (!nextMap) { if (!nextMap) {
break; break;
} }
let time2 = this.getValue(nextMap, "time", 0); let time2 = this.getValue(nextMap, "time", 0);
let rotateMix2 = this.getValue(nextMap, "rotateMix", 1); let mixRotate2 = this.getValue(nextMap, "mixRotate", 1);
let translateMix2 = this.getValue(nextMap, "translateMix", 1); let mixShearY2 = this.getValue(nextMap, "mixShearY", 1);
let scaleMix2 = this.getValue(nextMap, "scaleMix", 1); let mixX2 = this.getValue(nextMap, "mixX", 1);
let shearMix2 = this.getValue(nextMap, "shearMix", 1); let mixY2 = this.getValue(nextMap, "mixY", mixX2);
let mixScaleX2 = this.getValue(nextMap, "mixScaleX", 1);
let mixScaleY2 = this.getValue(nextMap, "mixScaleY", mixScaleX2);
let curve = keyMap.curve; let curve = keyMap.curve;
if (curve) { if (curve) {
bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, rotateMix, rotateMix2, 1); bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 1, time, time2, translateMix, translateMix2, 1); bezier = this.readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 2, time, time2, scaleMix, scaleMix2, 1); bezier = this.readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 3, time, time2, shearMix, shearMix2, 1); bezier = this.readCurve(curve, timeline, bezier, frame, 3, time, time2, mixScaleX, mixScaleX2, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 4, time, time2, mixScaleY, mixScaleY2, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 5, time, time2, mixShearY, mixShearY2, 1);
} }
time = time2; time = time2;
rotateMix = rotateMix2; mixRotate = mixRotate2;
translateMix = translateMix2; mixX = mixX2;
scaleMix = scaleMix2; mixY = mixY2;
shearMix = shearMix2; mixScaleX = mixScaleX2;
mixScaleY = mixScaleY2;
mixScaleX = mixScaleX2;
keyMap = nextMap; keyMap = nextMap;
} }
timelines.push(timeline); timelines.push(timeline);
@ -674,7 +763,7 @@ module spine {
let data = skeletonData.pathConstraints[index]; let data = skeletonData.pathConstraints[index];
for (let timelineName in constraintMap) { for (let timelineName in constraintMap) {
let timelineMap = constraintMap[timelineName]; let timelineMap = constraintMap[timelineName];
let keyMap = constraintMap[0]; let keyMap = timelineMap[0];
if (!keyMap) continue; if (!keyMap) continue;
if (timelineName === "position") { if (timelineName === "position") {
@ -684,8 +773,34 @@ module spine {
let timeline = new PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, index); let timeline = new PathConstraintSpacingTimeline(timelineMap.length, timelineMap.length, index);
timelines.push(this.readTimeline(timelineMap, timeline, 0, data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed ? scale : 1)); timelines.push(this.readTimeline(timelineMap, timeline, 0, data.spacingMode == SpacingMode.Length || data.spacingMode == SpacingMode.Fixed ? scale : 1));
} else if (timelineName === "mix") { } else if (timelineName === "mix") {
let timeline = new PathConstraintMixTimeline(timelineMap.size, timelineMap.size << 1, index); let timeline = new PathConstraintMixTimeline(timelineMap.size, timelineMap.size * 3, index);
timelines.push(this.readTimeline2(timelineMap, timeline, "rotateMix", "translateMix", 1, 1)); let time = this.getValue(keyMap, "time", 0);
let mixRotate = this.getValue(keyMap, "mixRotate", 1);
let mixX = this.getValue(keyMap, "mixX", 1);
let mixY = this.getValue(keyMap, "mixY", mixX);
for (let frame = 0, bezier = 0;; frame++) {
timeline.setFrame(frame, time, mixRotate, mixX, mixY);
let nextMap = timelineMap[frame + 1];
if (!nextMap) {
break;
}
let time2 = this.getValue(nextMap, "time", 0);
let mixRotate2 = this.getValue(nextMap, "mixRotate", 1);
let mixX2 = this.getValue(nextMap, "mixX", 1);
let mixY2 = this.getValue(nextMap, "mixY", mixX2);
let curve = keyMap.curve;
if (curve != null) {
bezier = this.readCurve(curve, timeline, bezier, frame, 0, time, time2, mixRotate, mixRotate2, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 1, time, time2, mixX, mixX2, 1);
bezier = this.readCurve(curve, timeline, bezier, frame, 2, time, time2, mixY, mixY2, 1);
}
time = time2;
mixRotate = mixRotate2;
mixX = mixX2;
mixY = mixY2;
keyMap = nextMap;
}
timelines.push(timeline);
} }
} }
} }
@ -811,9 +926,8 @@ module spine {
} }
let duration = 0; let duration = 0;
for (let i = 0, n = timelines.length; i < n; i++) { for (let i = 0, n = timelines.length; i < n; i++)
duration = Math.max(duration, timelines[i].getDuration()); duration = Math.max(duration, (timelines[i]).getDuration());
}
if (isNaN(duration)) { if (isNaN(duration)) {
throw new Error("Error while parsing animation, duration is NaN"); throw new Error("Error while parsing animation, duration is NaN");

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 KiB

After

Width:  |  Height:  |  Size: 465 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 KiB

After

Width:  |  Height:  |  Size: 263 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 KiB

After

Width:  |  Height:  |  Size: 465 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 236 KiB

View File

@ -1,7 +1,7 @@
{ {
"skeleton": { "skeleton": {
"hash": "upF+oMt2JRY", "hash": "svidebPqqeg",
"spine": "4.0.05-beta", "spine": "4.0.34-beta",
"x": -152.5, "x": -152.5,
"y": -151, "y": -151,
"width": 305, "width": 305,
@ -63,7 +63,7 @@
"animation": { "animation": {
"slots": { "slots": {
"coin-front-shine": { "coin-front-shine": {
"twoColor": [ "rgba2": [
{ "light": "7d7d7dff", "dark": "000000" }, { "light": "7d7d7dff", "dark": "000000" },
{ "time": 0.2667, "light": "000000ff", "dark": "7e7e7e" }, { "time": 0.2667, "light": "000000ff", "dark": "7e7e7e" },
{ "time": 0.664, "light": "000000ff", "dark": "000000" }, { "time": 0.664, "light": "000000ff", "dark": "000000" },
@ -80,7 +80,7 @@
] ]
}, },
"coin-front-texture": { "coin-front-texture": {
"color": [ "rgba": [
{ "color": "858585ff" }, { "color": "858585ff" },
{ "time": 0.4, "color": "ffffffff" }, { "time": 0.4, "color": "ffffffff" },
{ {
@ -120,23 +120,23 @@
], ],
"scale": [ "scale": [
{ {
"curve": [ 0.164, 1, 0.484, 0.09, 0.164, 1, 0.484, 1 ] "curve": [ 0.164, 1, 0.484, 0.091, 0.164, 1, 0.484, 1 ]
}, },
{ "time": 0.664, "x": 0, "curve": "stepped" }, { "time": 0.664, "x": 0, "curve": "stepped" },
{ {
"time": 0.6696, "time": 0.6696,
"x": 0.003, "x": 0.003,
"curve": [ 0.786, 0.15, 1.167, 1, 0.786, 1, 1.167, 1 ] "curve": [ 0.786, 0.153, 1.167, 1, 0.786, 1, 1.167, 1 ]
}, },
{ {
"time": 1.3333, "time": 1.3333,
"curve": [ 1.442, 0.99, 1.858, 0.1, 1.442, 1, 1.858, 1 ] "curve": [ 1.442, 0.992, 1.858, 0.098, 1.442, 1, 1.858, 1 ]
}, },
{ "time": 1.9982, "x": 0.003, "curve": "stepped" }, { "time": 1.9982, "x": 0.003, "curve": "stepped" },
{ {
"time": 2.0022, "time": 2.0022,
"x": 0.003, "x": 0.003,
"curve": [ 2.123, 0.15, 2.501, 1, 2.123, 1, 2.501, 1 ] "curve": [ 2.123, 0.151, 2.501, 1, 2.123, 1, 2.501, 1 ]
}, },
{ "time": 2.6667 } { "time": 2.6667 }
] ]
@ -157,54 +157,54 @@
], ],
"scale": [ "scale": [
{ {
"curve": [ 0.085, 1, 0.207, 0.79, 0.085, 1, 0.207, 1 ] "curve": [ 0.085, 1, 0.207, 0.789, 0.085, 1, 0.207, 1 ]
}, },
{ {
"time": 0.3333, "time": 0.3333,
"x": 0.555, "x": 0.555,
"curve": [ 0.449, 0.35, 0.567, 0.12, 0.449, 1, 0.567, 1 ] "curve": [ 0.449, 0.347, 0.567, 0.122, 0.449, 1, 0.567, 1 ]
}, },
{ "time": 0.664, "x": 0.014, "curve": "stepped" }, { "time": 0.664, "x": 0.014, "curve": "stepped" },
{ {
"time": 0.6696, "time": 0.6696,
"x": -0.028, "x": -0.028,
"curve": [ 0.723, -0.13, 0.865, -0.37, 0.723, 1, 0.865, 1 ] "curve": [ 0.723, -0.126, 0.865, -0.367, 0.723, 1, 0.865, 1 ]
}, },
{ {
"time": 1, "time": 1,
"x": -0.609, "x": -0.609,
"curve": [ 1.053, -0.78, 1.29, -1, 1.053, 1, 1.29, 1 ] "curve": [ 1.053, -0.778, 1.29, -0.997, 1.053, 1, 1.29, 1 ]
}, },
{ "time": 1.3318, "x": -1, "curve": "stepped" }, { "time": 1.3318, "x": -1, "curve": "stepped" },
{ {
"time": 1.3333, "time": 1.3333,
"curve": [ 1.384, 1, 1.439, 0.94, 1.384, 1, 1.439, 1 ] "curve": [ 1.384, 0.997, 1.439, 0.94, 1.384, 1, 1.439, 1 ]
}, },
{ {
"time": 1.5, "time": 1.5,
"x": 0.852, "x": 0.852,
"curve": [ 1.564, 0.75, 1.703, 0.51, 1.564, 1, 1.703, 1 ] "curve": [ 1.564, 0.748, 1.703, 0.509, 1.564, 1, 1.703, 1 ]
}, },
{ {
"time": 1.8, "time": 1.8,
"x": 0.315, "x": 0.315,
"curve": [ 1.873, 0.13, 1.987, 0.01, 1.873, 1, 1.987, 1 ] "curve": [ 1.873, 0.13, 1.987, 0.015, 1.873, 1, 1.987, 1 ]
}, },
{ "time": 1.9982, "x": 0.014, "curve": "stepped" }, { "time": 1.9982, "x": 0.014, "curve": "stepped" },
{ {
"time": 2.0022, "time": 2.0022,
"x": -0.028, "x": -0.028,
"curve": [ 2.039, -0.07, 2.123, -0.24, 2.039, 1, 2.123, 1 ] "curve": [ 2.039, -0.072, 2.123, -0.239, 2.039, 1, 2.123, 1 ]
}, },
{ {
"time": 2.2018, "time": 2.2018,
"x": -0.365, "x": -0.365,
"curve": [ 2.269, -0.51, 2.337, -0.63, 2.269, 1, 2.337, 1 ] "curve": [ 2.269, -0.513, 2.337, -0.635, 2.269, 1, 2.337, 1 ]
}, },
{ {
"time": 2.4, "time": 2.4,
"x": -0.731, "x": -0.731,
"curve": [ 2.503, -0.87, 2.596, -0.96, 2.503, 1, 2.596, 1 ] "curve": [ 2.503, -0.871, 2.596, -0.961, 2.503, 1, 2.596, 1 ]
}, },
{ {
"time": 2.6592, "time": 2.6592,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 166 KiB

View File

@ -1,7 +1,7 @@
{ {
"skeleton": { "skeleton": {
"hash": "PtTAK+zF95I", "hash": "PtTAK+zF95I",
"spine": "4.0.05-beta", "spine": "4.0.34-beta",
"x": -134.12, "x": -134.12,
"y": -3.28, "y": -3.28,
"width": 266.94, "width": 266.94,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 KiB

After

Width:  |  Height:  |  Size: 384 KiB

View File

@ -1,7 +1,7 @@
{ {
"skeleton": { "skeleton": {
"hash": "nE4g85mprlE", "hash": "EedJfu7UJ/I",
"spine": "4.0.05-beta", "spine": "4.0.34-beta",
"x": -240.58, "x": -240.58,
"y": -3.38, "y": -3.38,
"width": 410.36, "width": 410.36,
@ -838,30 +838,36 @@
"order": 12, "order": 12,
"bones": [ "eye-back-iris" ], "bones": [ "eye-back-iris" ],
"target": "eye-back-pupil", "target": "eye-back-pupil",
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0.4, "mixX": 0.4,
"scaleMix": 0, "mixY": 0.4,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "eye-front-pupil", "name": "eye-front-pupil",
"order": 11, "order": 11,
"bones": [ "eye-front-iris" ], "bones": [ "eye-front-iris" ],
"target": "eye-front-pupil", "target": "eye-front-pupil",
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0.4, "mixX": 0.4,
"scaleMix": 0, "mixY": 0.4,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "eye-transform", "name": "eye-transform",
"order": 7, "order": 7,
"bones": [ "features-control" ], "bones": [ "features-control" ],
"target": "head-control", "target": "head-control",
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0.2, "mixX": 0.2,
"scaleMix": 0, "mixY": 0.2,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "hair-side-back", "name": "hair-side-back",
@ -871,10 +877,12 @@
"rotation": -62.21, "rotation": -62.21,
"x": 132.47, "x": 132.47,
"y": 46.72, "y": 46.72,
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0.05, "mixX": 0.05,
"scaleMix": 0, "mixY": 0.05,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "hair-side-front-control", "name": "hair-side-front-control",
@ -884,10 +892,12 @@
"rotation": -80.89, "rotation": -80.89,
"x": -102.78, "x": -102.78,
"y": 27.17, "y": 27.17,
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0.15, "mixX": 0.15,
"scaleMix": 0, "mixY": 0.15,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "hat-control", "name": "hat-control",
@ -899,10 +909,12 @@
"x": -78.91, "x": -78.91,
"y": 123.01, "y": 123.01,
"shearY": -36, "shearY": -36,
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0.6, "mixX": 0.6,
"scaleMix": 0, "mixY": 0.6,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "head-control", "name": "head-control",
@ -910,10 +922,12 @@
"bones": [ "head-back-control" ], "bones": [ "head-back-control" ],
"target": "head-control", "target": "head-control",
"x": -88.92, "x": -88.92,
"rotateMix": 0, "mixRotate": 0,
"translateMix": -1, "mixX": -1,
"scaleMix": 0, "mixY": -1,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "leg-down-back", "name": "leg-down-back",
@ -923,8 +937,9 @@
"target": "leg-down-back", "target": "leg-down-back",
"x": 132.85, "x": 132.85,
"y": 58.02, "y": 58.02,
"scaleMix": 0, "mixScaleX": 0,
"shearMix": 0 "mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "leg-down-back-up", "name": "leg-down-back-up",
@ -934,8 +949,9 @@
"target": "leg-down-back", "target": "leg-down-back",
"x": 17.25, "x": 17.25,
"y": 41.79, "y": 41.79,
"scaleMix": 0, "mixScaleX": 0,
"shearMix": 0 "mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "leg-down-down", "name": "leg-down-down",
@ -945,8 +961,9 @@
"target": "leg-down", "target": "leg-down",
"x": 147.87, "x": 147.87,
"y": -60.85, "y": -60.85,
"scaleMix": 0, "mixScaleX": 0,
"shearMix": 0 "mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "leg-down-front", "name": "leg-down-front",
@ -956,8 +973,9 @@
"target": "leg-down", "target": "leg-down",
"x": 23.51, "x": 23.51,
"y": -48.52, "y": -48.52,
"scaleMix": 0, "mixScaleX": 0,
"shearMix": 0 "mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "leg-up", "name": "leg-up",
@ -967,8 +985,9 @@
"target": "leg-up", "target": "leg-up",
"x": 130.03, "x": 130.03,
"y": -50.13, "y": -50.13,
"scaleMix": 0, "mixScaleX": 0,
"shearMix": 0 "mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "leg-up-back", "name": "leg-up-back",
@ -978,8 +997,9 @@
"target": "leg-up-back", "target": "leg-up-back",
"x": 129.36, "x": 129.36,
"y": 40.42, "y": 40.42,
"scaleMix": 0, "mixScaleX": 0,
"shearMix": 0 "mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "shoulder-back", "name": "shoulder-back",
@ -989,10 +1009,12 @@
"rotation": 180, "rotation": 180,
"x": -14.41, "x": -14.41,
"y": -46.12, "y": -46.12,
"rotateMix": 0.18, "mixRotate": 0.18,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "shoulder-front", "name": "shoulder-front",
@ -1002,10 +1024,12 @@
"rotation": 90, "rotation": 90,
"x": -24.78, "x": -24.78,
"y": 29.54, "y": 29.54,
"rotateMix": 0.186, "mixRotate": 0.186,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "skirt-rotation-back", "name": "skirt-rotation-back",
@ -1017,9 +1041,11 @@
"x": 148.43, "x": 148.43,
"y": -0.72, "y": -0.72,
"shearY": -36, "shearY": -36,
"translateMix": 0.7, "mixX": 0.7,
"scaleMix": 0, "mixY": 0.7,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "skirt-rotation-front", "name": "skirt-rotation-front",
@ -1031,9 +1057,11 @@
"x": 141.99, "x": 141.99,
"y": 2.23, "y": 2.23,
"shearY": -36, "shearY": -36,
"translateMix": 0.7, "mixX": 0.7,
"scaleMix": 0, "mixY": 0.7,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
} }
], ],
"path": [ "path": [
@ -6017,10 +6045,10 @@
}, },
"transform": { "transform": {
"leg-down-back": [ "leg-down-back": [
{ "rotateMix": 0.269, "translateMix": 0.234, "scaleMix": 0, "shearMix": 0 } { "mixRotate": 0.269, "mixX": 0.234, "mixScaleX": 0, "mixShearY": 0 }
], ],
"leg-down-down": [ "leg-down-down": [
{ "rotateMix": 0.394, "translateMix": 0.177, "scaleMix": 0, "shearMix": 0 } { "mixRotate": 0.394, "mixX": 0.177, "mixScaleX": 0, "mixShearY": 0 }
] ]
} }
}, },
@ -6917,29 +6945,29 @@
}, },
"transform": { "transform": {
"leg-down-back": [ "leg-down-back": [
{ "scaleMix": 0, "shearMix": 0 }, { "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.1333, "rotateMix": 0, "translateMix": 0.026, "scaleMix": 0, "shearMix": 0, "curve": "stepped" }, { "time": 0.1333, "mixRotate": 0, "mixX": 0.026, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
{ "time": 1.1667, "rotateMix": 0, "translateMix": 0.026, "scaleMix": 0, "shearMix": 0 }, { "time": 1.1667, "mixRotate": 0, "mixX": 0.026, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 1.2667, "rotateMix": 0.1905, "translateMix": 0.2115, "scaleMix": 0, "shearMix": 0 }, { "time": 1.2667, "mixRotate": 0.1905, "mixX": 0.2115, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 1.5333, "scaleMix": 0, "shearMix": 0, "curve": "stepped" }, { "time": 1.5333, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
{ "time": 2.0667, "scaleMix": 0, "shearMix": 0 }, { "time": 2.0667, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 2.1, "rotateMix": 0.217, "translateMix": 0.078, "scaleMix": 0, "shearMix": 0 }, { "time": 2.1, "mixRotate": 0.217, "mixX": 0.078, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 2.4667, "scaleMix": 0, "shearMix": 0 } { "time": 2.4667, "mixScaleX": 0, "mixShearY": 0 }
], ],
"leg-down-down": [ "leg-down-down": [
{ "scaleMix": 0, "shearMix": 0 }, { "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.0667, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }, { "time": 0.0667, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.3333, "scaleMix": 0, "shearMix": 0, "curve": "stepped" }, { "time": 0.3333, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
{ "time": 1.0667, "scaleMix": 0, "shearMix": 0 }, { "time": 1.0667, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 1.3667, "translateMix": 0.774, "scaleMix": 0, "shearMix": 0 }, { "time": 1.3667, "mixX": 0.774, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 2.7667, "scaleMix": 0, "shearMix": 0 } { "time": 2.7667, "mixScaleX": 0, "mixShearY": 0 }
], ],
"leg-down-front": [ "leg-down-front": [
{ "scaleMix": 0, "shearMix": 0 }, { "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.2333, "translateMix": 0.609, "scaleMix": 0, "shearMix": 0 }, { "time": 0.2333, "mixX": 0.609, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.3667, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0, "curve": "stepped" }, { "time": 0.3667, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
{ "time": 2.1, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }, { "time": 2.1, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 2.5, "scaleMix": 0, "shearMix": 0 } { "time": 2.5, "mixScaleX": 0, "mixShearY": 0 }
] ]
} }
}, },
@ -7970,30 +7998,30 @@
}, },
"transform": { "transform": {
"leg-down-back": [ "leg-down-back": [
{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0, "curve": "stepped" }, { "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
{ "time": 0.1, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }, { "time": 0.1, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.3333, "scaleMix": 0, "shearMix": 0 }, { "time": 0.3333, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.5667, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 } { "time": 0.5667, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
], ],
"leg-down-back-up": [ "leg-down-back-up": [
{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0, "curve": "stepped" }, { "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0, "curve": "stepped" },
{ "time": 0.1, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }, { "time": 0.1, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.3333, "scaleMix": 0, "shearMix": 0 }, { "time": 0.3333, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.5667, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 } { "time": 0.5667, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
], ],
"leg-down-down": [ "leg-down-down": [
{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 } { "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
], ],
"leg-down-front": [ "leg-down-front": [
{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 } { "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
], ],
"leg-up": [ "leg-up": [
{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 } { "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
], ],
"leg-up-back": [ "leg-up-back": [
{ "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }, { "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.3333, "scaleMix": 0, "shearMix": 0 }, { "time": 0.3333, "mixScaleX": 0, "mixShearY": 0 },
{ "time": 0.5667, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 } { "time": 0.5667, "mixRotate": 0, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
] ]
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 KiB

After

Width:  |  Height:  |  Size: 432 KiB

View File

@ -1,7 +1,7 @@
{ {
"skeleton": { "skeleton": {
"hash": "Px3F6YZd0YY", "hash": "HV648sya8jg",
"spine": "4.0.05-beta", "spine": "4.0.34-beta",
"x": -644, "x": -644,
"y": -274, "y": -274,
"width": 1350.84, "width": 1350.84,
@ -129,10 +129,12 @@
"name": "control-back", "name": "control-back",
"bones": [ "control-back" ], "bones": [ "control-back" ],
"target": "control", "target": "control",
"rotateMix": 0, "mixRotate": 0,
"translateMix": -1, "mixX": -1,
"scaleMix": 0, "mixY": -1,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
} }
], ],
"skins": [ "skins": [

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 KiB

After

Width:  |  Height:  |  Size: 465 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 KiB

After

Width:  |  Height:  |  Size: 263 KiB

View File

@ -1,7 +1,7 @@
{ {
"skeleton": { "skeleton": {
"hash": "97I2+5rUsUE", "hash": "xw6BotWLkgU",
"spine": "4.0.05-beta", "spine": "4.0.34-beta",
"x": -188.63, "x": -188.63,
"y": -7.94, "y": -7.94,
"width": 418.45, "width": 418.45,
@ -356,10 +356,12 @@
"bones": [ "front-upper-arm" ], "bones": [ "front-upper-arm" ],
"target": "aim-constraint-target", "target": "aim-constraint-target",
"rotation": -180, "rotation": -180,
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "aim-head-transform", "name": "aim-head-transform",
@ -367,10 +369,12 @@
"bones": [ "head" ], "bones": [ "head" ],
"target": "aim-constraint-target", "target": "aim-constraint-target",
"rotation": 84.3, "rotation": 84.3,
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "aim-rear-arm-transform", "name": "aim-rear-arm-transform",
@ -379,10 +383,12 @@
"target": "aim-constraint-target", "target": "aim-constraint-target",
"x": 57.7, "x": 57.7,
"y": 56.4, "y": 56.4,
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "aim-torso-transform", "name": "aim-torso-transform",
@ -391,10 +397,12 @@
"target": "aim-constraint-target", "target": "aim-constraint-target",
"rotation": 69.5, "rotation": 69.5,
"shearY": -36, "shearY": -36,
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "front-foot-board-transform", "name": "front-foot-board-transform",
@ -403,10 +411,12 @@
"target": "hoverboard-controller", "target": "hoverboard-controller",
"x": -69.8, "x": -69.8,
"y": 20.7, "y": 20.7,
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "rear-foot-board-transform", "name": "rear-foot-board-transform",
@ -415,10 +425,12 @@
"target": "hoverboard-controller", "target": "hoverboard-controller",
"x": 86.6, "x": 86.6,
"y": 21.3, "y": 21.3,
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "shoulder", "name": "shoulder",
@ -426,20 +438,24 @@
"target": "front-shoulder", "target": "front-shoulder",
"x": 40.17, "x": 40.17,
"y": -1.66, "y": -1.66,
"rotateMix": 0, "mixRotate": 0,
"translateMix": -1, "mixX": -1,
"scaleMix": 0, "mixY": -1,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "toes-board", "name": "toes-board",
"order": 14, "order": 14,
"bones": [ "front-foot-tip", "back-foot-tip" ], "bones": [ "front-foot-tip", "back-foot-tip" ],
"target": "hoverboard-controller", "target": "hoverboard-controller",
"rotateMix": 0, "mixRotate": 0,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
} }
], ],
"skins": [ "skins": [
@ -479,7 +495,7 @@
"eye-indifferent": { "eye-indifferent": {
"type": "mesh", "type": "mesh",
"uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ],
"triangles": [ 1, 2, 3, 1, 3, 0 ], "triangles": [ 1, 3, 0, 1, 2, 3 ],
"vertices": [ 2, 66, -36.8, -91.35, 0.3, 46, 73.41, -91.35, 0.7, 2, 66, -87.05, -13.11, 0.70968, 46, 23.16, -13.11, 0.29032, 2, 66, -12.18, 34.99, 0.82818, 46, 98.03, 34.99, 0.17182, 2, 66, 38.07, -43.25, 0.59781, 46, 148.28, -43.25, 0.40219 ], "vertices": [ 2, 66, -36.8, -91.35, 0.3, 46, 73.41, -91.35, 0.7, 2, 66, -87.05, -13.11, 0.70968, 46, 23.16, -13.11, 0.29032, 2, 66, -12.18, 34.99, 0.82818, 46, 98.03, 34.99, 0.17182, 2, 66, 38.07, -43.25, 0.59781, 46, 148.28, -43.25, 0.40219 ],
"hull": 4, "hull": 4,
"edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ],
@ -489,7 +505,7 @@
"eye-surprised": { "eye-surprised": {
"type": "mesh", "type": "mesh",
"uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ],
"triangles": [ 1, 3, 0, 1, 2, 3 ], "triangles": [ 1, 2, 3, 1, 3, 0 ],
"vertices": [ 2, 66, -46.74, -89.7, 0.3, 46, 63.47, -89.7, 0.7, 2, 66, -77.58, -1.97, 0.71, 46, 32.63, -1.97, 0.29, 2, 66, 6.38, 27.55, 0.83, 46, 116.59, 27.55, 0.17, 2, 66, 37.22, -60.19, 0.6, 46, 147.44, -60.19, 0.4 ], "vertices": [ 2, 66, -46.74, -89.7, 0.3, 46, 63.47, -89.7, 0.7, 2, 66, -77.58, -1.97, 0.71, 46, 32.63, -1.97, 0.29, 2, 66, 6.38, 27.55, 0.83, 46, 116.59, 27.55, 0.17, 2, 66, 37.22, -60.19, 0.6, 46, 147.44, -60.19, 0.4 ],
"hull": 4, "hull": 4,
"edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ],
@ -508,7 +524,7 @@
"front-foot": { "front-foot": {
"type": "mesh", "type": "mesh",
"uvs": [ 0.59417, 0.23422, 0.62257, 0.30336, 0.6501, 0.37036, 0.67637, 0.38404, 0.72068, 0.4071, 0.76264, 0.42894, 1, 0.70375, 1, 1, 0.65517, 1, 0.46923, 0.99999, 0, 1, 0, 0.39197, 0.17846, 0, 0.49796, 0 ], "uvs": [ 0.59417, 0.23422, 0.62257, 0.30336, 0.6501, 0.37036, 0.67637, 0.38404, 0.72068, 0.4071, 0.76264, 0.42894, 1, 0.70375, 1, 1, 0.65517, 1, 0.46923, 0.99999, 0, 1, 0, 0.39197, 0.17846, 0, 0.49796, 0 ],
"triangles": [ 8, 6, 7, 6, 8, 5, 5, 8, 4, 4, 8, 3, 8, 9, 3, 9, 10, 2, 1, 2, 10, 9, 2, 3, 0, 1, 11, 0, 11, 12, 0, 12, 13, 11, 1, 10 ], "triangles": [ 8, 9, 3, 4, 8, 3, 5, 8, 4, 6, 8, 5, 8, 6, 7, 11, 1, 10, 0, 12, 13, 0, 11, 12, 0, 1, 11, 9, 2, 3, 1, 2, 10, 9, 10, 2 ],
"vertices": [ 2, 38, 18.17, 41.57, 0.7896, 39, 12.46, 46.05, 0.2104, 2, 38, 24.08, 40.76, 0.71228, 39, 16.12, 41.34, 0.28772, 2, 38, 29.81, 39.98, 0.55344, 39, 19.67, 36.78, 0.44656, 2, 38, 32.81, 41.67, 0.38554, 39, 23, 35.89, 0.61446, 2, 38, 37.86, 44.52, 0.25567, 39, 28.61, 34.4, 0.74433, 2, 38, 42.65, 47.22, 0.17384, 39, 33.92, 32.99, 0.82616, 1, 39, 64.15, 14.56, 1, 1, 39, 64.51, -5.87, 1, 1, 39, 21.08, -6.64, 1, 2, 38, 44.67, -6.77, 0.5684, 39, -2.34, -6.97, 0.4316, 1, 38, 3.1, -48.81, 1, 1, 38, -26.73, -19.31, 1, 1, 38, -30.15, 15.69, 1, 1, 38, -1.84, 44.32, 1 ], "vertices": [ 2, 38, 18.17, 41.57, 0.7896, 39, 12.46, 46.05, 0.2104, 2, 38, 24.08, 40.76, 0.71228, 39, 16.12, 41.34, 0.28772, 2, 38, 29.81, 39.98, 0.55344, 39, 19.67, 36.78, 0.44656, 2, 38, 32.81, 41.67, 0.38554, 39, 23, 35.89, 0.61446, 2, 38, 37.86, 44.52, 0.25567, 39, 28.61, 34.4, 0.74433, 2, 38, 42.65, 47.22, 0.17384, 39, 33.92, 32.99, 0.82616, 1, 39, 64.15, 14.56, 1, 1, 39, 64.51, -5.87, 1, 1, 39, 21.08, -6.64, 1, 2, 38, 44.67, -6.77, 0.5684, 39, -2.34, -6.97, 0.4316, 1, 38, 3.1, -48.81, 1, 1, 38, -26.73, -19.31, 1, 1, 38, -30.15, 15.69, 1, 1, 38, -1.84, 44.32, 1 ],
"hull": 14, "hull": 14,
"edges": [ 14, 16, 16, 18, 18, 20, 4, 18, 20, 22, 24, 26, 22, 24, 12, 14, 10, 12, 2, 4, 2, 20, 4, 6, 6, 16, 2, 0, 0, 26, 6, 8, 8, 10 ], "edges": [ 14, 16, 16, 18, 18, 20, 4, 18, 20, 22, 24, 26, 22, 24, 12, 14, 10, 12, 2, 4, 2, 20, 4, 6, 6, 16, 2, 0, 0, 26, 6, 8, 8, 10 ],
@ -538,7 +554,7 @@
"goggles": { "goggles": {
"type": "mesh", "type": "mesh",
"uvs": [ 0.53653, 0.04114, 0.72922, 0.16036, 0.91667, 0.33223, 0.97046, 0.31329, 1, 0.48053, 0.95756, 0.5733, 0.88825, 0.6328, 0.86878, 0.78962, 0.77404, 0.8675, 0.72628, 1, 0.60714, 0.93863, 0.49601, 0.88138, 0.41558, 0.75027, 0.32547, 0.70084, 0.2782, 0.58257, 0.1721, 0.63281, 0.17229, 0.75071, 0.10781, 0.79898, 0, 0.32304, 0, 0.12476, 0.07373, 0.07344, 0.15423, 0.10734, 0.23165, 0.13994, 0.30313, 0.02256, 0.34802, 0, 0.42979, 0.69183, 0.39476, 0.51042, 0.39488, 0.31512, 0.45878, 0.23198, 0.56501, 0.28109, 0.69961, 0.39216, 0.82039, 0.54204, 0.85738, 0.62343, 0.91107, 0.51407, 0.72639, 0.32147, 0.58764, 0.19609, 0.48075, 0.11269, 0.37823, 0.05501, 0.3287, 0.17866, 0.319, 0.305, 0.36036, 0.53799, 0.40327, 0.70072, 0.30059, 0.55838, 0.21957, 0.2815, 0.09963, 0.28943, 0.56863, 0.4368, 0.4911, 0.37156, 0.51185, 0.52093, 0.67018, 0.59304, 0.7619, 0.68575, 0.73296, 0.43355 ], "uvs": [ 0.53653, 0.04114, 0.72922, 0.16036, 0.91667, 0.33223, 0.97046, 0.31329, 1, 0.48053, 0.95756, 0.5733, 0.88825, 0.6328, 0.86878, 0.78962, 0.77404, 0.8675, 0.72628, 1, 0.60714, 0.93863, 0.49601, 0.88138, 0.41558, 0.75027, 0.32547, 0.70084, 0.2782, 0.58257, 0.1721, 0.63281, 0.17229, 0.75071, 0.10781, 0.79898, 0, 0.32304, 0, 0.12476, 0.07373, 0.07344, 0.15423, 0.10734, 0.23165, 0.13994, 0.30313, 0.02256, 0.34802, 0, 0.42979, 0.69183, 0.39476, 0.51042, 0.39488, 0.31512, 0.45878, 0.23198, 0.56501, 0.28109, 0.69961, 0.39216, 0.82039, 0.54204, 0.85738, 0.62343, 0.91107, 0.51407, 0.72639, 0.32147, 0.58764, 0.19609, 0.48075, 0.11269, 0.37823, 0.05501, 0.3287, 0.17866, 0.319, 0.305, 0.36036, 0.53799, 0.40327, 0.70072, 0.30059, 0.55838, 0.21957, 0.2815, 0.09963, 0.28943, 0.56863, 0.4368, 0.4911, 0.37156, 0.51185, 0.52093, 0.67018, 0.59304, 0.7619, 0.68575, 0.73296, 0.43355 ],
"triangles": [ 33, 50, 34, 8, 49, 7, 49, 32, 7, 49, 31, 32, 31, 49, 50, 6, 32, 33, 32, 31, 33, 31, 50, 33, 7, 32, 6, 5, 6, 33, 5, 33, 4, 33, 2, 4, 2, 33, 34, 18, 19, 44, 2, 3, 4, 44, 19, 21, 17, 18, 15, 21, 19, 20, 18, 44, 15, 2, 34, 1, 49, 8, 48, 48, 9, 10, 47, 48, 10, 46, 28, 29, 12, 13, 42, 13, 14, 42, 14, 15, 44, 42, 14, 44, 44, 21, 43, 47, 10, 25, 12, 41, 25, 34, 35, 1, 35, 0, 1, 26, 27, 46, 27, 28, 46, 29, 28, 35, 28, 36, 35, 36, 0, 35, 22, 23, 38, 37, 23, 24, 43, 22, 38, 27, 39, 38, 38, 37, 36, 39, 43, 38, 37, 38, 23, 26, 39, 27, 28, 27, 38, 40, 39, 26, 28, 38, 36, 42, 39, 40, 42, 43, 39, 36, 37, 0, 37, 24, 0, 25, 26, 47, 40, 26, 25, 29, 35, 34, 41, 42, 40, 41, 40, 25, 43, 21, 22, 42, 44, 43, 41, 12, 42, 12, 25, 11, 25, 10, 11, 47, 26, 46, 30, 34, 50, 30, 29, 34, 30, 45, 29, 45, 46, 29, 45, 47, 46, 50, 45, 30, 47, 45, 48, 50, 48, 45, 49, 48, 50, 9, 48, 8, 17, 15, 16 ], "triangles": [ 18, 44, 15, 21, 19, 20, 17, 18, 15, 44, 19, 21, 2, 3, 4, 18, 19, 44, 2, 33, 34, 33, 2, 4, 5, 33, 4, 5, 6, 33, 7, 32, 6, 31, 50, 33, 32, 31, 33, 6, 32, 33, 31, 49, 50, 49, 31, 32, 49, 32, 7, 8, 49, 7, 33, 50, 34, 17, 15, 16, 9, 48, 8, 49, 48, 50, 50, 48, 45, 47, 45, 48, 50, 45, 30, 45, 47, 46, 45, 46, 29, 30, 45, 29, 30, 29, 34, 30, 34, 50, 47, 26, 46, 25, 10, 11, 12, 25, 11, 41, 12, 42, 42, 44, 43, 43, 21, 22, 41, 40, 25, 41, 42, 40, 29, 35, 34, 40, 26, 25, 25, 26, 47, 37, 24, 0, 36, 37, 0, 42, 43, 39, 42, 39, 40, 28, 38, 36, 40, 39, 26, 28, 27, 38, 26, 39, 27, 37, 38, 23, 39, 43, 38, 38, 37, 36, 27, 39, 38, 43, 22, 38, 37, 23, 24, 22, 23, 38, 36, 0, 35, 28, 36, 35, 29, 28, 35, 27, 28, 46, 26, 27, 46, 35, 0, 1, 34, 35, 1, 12, 41, 25, 47, 10, 25, 44, 21, 43, 42, 14, 44, 14, 15, 44, 13, 14, 42, 12, 13, 42, 46, 28, 29, 47, 48, 10, 48, 9, 10, 49, 8, 48, 2, 34, 1 ],
"vertices": [ 2, 66, 61.88, 22.81, 0.832, 46, 172.09, 22.81, 0.168, 2, 66, 59.89, -31.19, 0.6855, 46, 170.1, -31.19, 0.3145, 2, 66, 49.2, -86.8, 0.32635, 46, 159.41, -86.8, 0.67365, 2, 66, 56.82, -99.01, 0.01217, 46, 167.03, -99.01, 0.98783, 1, 46, 143.4, -115.48, 1, 2, 66, 15, -110.14, 0.0041, 46, 125.21, -110.14, 0.9959, 2, 66, -0.32, -96.36, 0.07948, 46, 109.89, -96.36, 0.92052, 2, 66, -26.56, -100.19, 0.01905, 46, 83.65, -100.19, 0.98095, 2, 66, -46.96, -81.16, 0.4921, 46, 63.26, -81.16, 0.50791, 2, 66, -71.84, -76.69, 0.56923, 46, 38.37, -76.69, 0.43077, 2, 66, -72.54, -43.98, 0.74145, 46, 37.67, -43.98, 0.25855, 2, 66, -73.2, -13.47, 0.87929, 46, 37.01, -13.47, 0.12071, 2, 66, -59.63, 13.55, 0.864, 46, 50.58, 13.55, 0.136, 2, 66, -59.69, 38.45, 0.85289, 46, 50.52, 38.45, 0.14711, 2, 66, -45.26, 56.6, 0.74392, 46, 64.95, 56.6, 0.25608, 2, 66, -62.31, 79.96, 0.624, 46, 47.9, 79.96, 0.376, 2, 66, -80.76, 73.42, 0.616, 46, 29.45, 73.42, 0.384, 2, 66, -93.9, 86.64, 0.288, 46, 16.31, 86.64, 0.712, 1, 46, 81.51, 139.38, 1, 1, 46, 112.56, 150.3, 1, 2, 66, 16.76, 134.97, 0.02942, 46, 126.97, 134.97, 0.97058, 2, 66, 18.42, 113.28, 0.36147, 46, 128.63, 113.28, 0.63853, 2, 66, 20.02, 92.43, 0.7135, 46, 130.23, 92.43, 0.2865, 2, 66, 44.58, 81.29, 0.69603, 46, 154.79, 81.29, 0.30397, 2, 66, 52, 71.48, 0.848, 46, 162.21, 71.48, 0.152, 2, 66, -49.25, 13.27, 0.8, 46, 60.96, 13.27, 0.2, 2, 66, -23.88, 31.88, 0.896, 46, 86.33, 31.88, 0.104, 2, 66, 6.72, 42.6, 0.928, 46, 116.93, 42.6, 0.072, 2, 66, 25.26, 31.44, 0.8, 46, 135.47, 31.44, 0.2, 2, 66, 26.77, 2.59, 0.75, 46, 136.98, 2.59, 0.25, 2, 66, 21.02, -36.66, 0.54887, 46, 131.23, -36.66, 0.45113, 2, 66, 8.01, -74.65, 0.36029, 46, 118.22, -74.65, 0.63971, 2, 66, -1.52, -88.24, 0.1253, 46, 108.69, -88.24, 0.8747, 2, 66, 20.25, -95.44, 0.08687, 46, 130.46, -95.44, 0.91313, 2, 66, 34.42, -39.36, 0.72613, 46, 144.63, -39.36, 0.27387, 2, 66, 42.03, 1.7, 0.824, 46, 152.25, 1.7, 0.176, 2, 66, 45.85, 32.6, 0.856, 46, 156.06, 32.6, 0.144, 1, 66, 46.01, 61.02, 1, 1, 66, 22.35, 66.41, 1, 1, 66, 1.73, 61.84, 1, 2, 66, -31.17, 38.83, 0.928, 46, 79.04, 38.83, 0.072, 2, 66, -52.94, 19.31, 0.79073, 46, 57.27, 19.31, 0.20927, 2, 66, -39.54, 52.42, 0.912, 46, 70.67, 52.42, 0.088, 2, 66, -3.2, 87.61, 0.744, 46, 107.02, 87.61, 0.256, 2, 66, -14.82, 116.7, 0.6368, 46, 95.4, 116.7, 0.3632, 2, 66, 2.7, -6.87, 0.856, 46, 112.91, -6.87, 0.144, 2, 66, 6.21, 15.8, 0.744, 46, 116.42, 15.8, 0.256, 2, 66, -15.39, 2.47, 0.856, 46, 94.82, 2.47, 0.144, 2, 66, -12.98, -40.48, 0.72102, 46, 97.24, -40.48, 0.27898, 2, 66, -19.55, -68.16, 0.59162, 46, 90.66, -68.16, 0.40838, 2, 66, 17.44, -47.15, 0.53452, 46, 127.65, -47.15, 0.46548 ], "vertices": [ 2, 66, 61.88, 22.81, 0.832, 46, 172.09, 22.81, 0.168, 2, 66, 59.89, -31.19, 0.6855, 46, 170.1, -31.19, 0.3145, 2, 66, 49.2, -86.8, 0.32635, 46, 159.41, -86.8, 0.67365, 2, 66, 56.82, -99.01, 0.01217, 46, 167.03, -99.01, 0.98783, 1, 46, 143.4, -115.48, 1, 2, 66, 15, -110.14, 0.0041, 46, 125.21, -110.14, 0.9959, 2, 66, -0.32, -96.36, 0.07948, 46, 109.89, -96.36, 0.92052, 2, 66, -26.56, -100.19, 0.01905, 46, 83.65, -100.19, 0.98095, 2, 66, -46.96, -81.16, 0.4921, 46, 63.26, -81.16, 0.50791, 2, 66, -71.84, -76.69, 0.56923, 46, 38.37, -76.69, 0.43077, 2, 66, -72.54, -43.98, 0.74145, 46, 37.67, -43.98, 0.25855, 2, 66, -73.2, -13.47, 0.87929, 46, 37.01, -13.47, 0.12071, 2, 66, -59.63, 13.55, 0.864, 46, 50.58, 13.55, 0.136, 2, 66, -59.69, 38.45, 0.85289, 46, 50.52, 38.45, 0.14711, 2, 66, -45.26, 56.6, 0.74392, 46, 64.95, 56.6, 0.25608, 2, 66, -62.31, 79.96, 0.624, 46, 47.9, 79.96, 0.376, 2, 66, -80.76, 73.42, 0.616, 46, 29.45, 73.42, 0.384, 2, 66, -93.9, 86.64, 0.288, 46, 16.31, 86.64, 0.712, 1, 46, 81.51, 139.38, 1, 1, 46, 112.56, 150.3, 1, 2, 66, 16.76, 134.97, 0.02942, 46, 126.97, 134.97, 0.97058, 2, 66, 18.42, 113.28, 0.36147, 46, 128.63, 113.28, 0.63853, 2, 66, 20.02, 92.43, 0.7135, 46, 130.23, 92.43, 0.2865, 2, 66, 44.58, 81.29, 0.69603, 46, 154.79, 81.29, 0.30397, 2, 66, 52, 71.48, 0.848, 46, 162.21, 71.48, 0.152, 2, 66, -49.25, 13.27, 0.8, 46, 60.96, 13.27, 0.2, 2, 66, -23.88, 31.88, 0.896, 46, 86.33, 31.88, 0.104, 2, 66, 6.72, 42.6, 0.928, 46, 116.93, 42.6, 0.072, 2, 66, 25.26, 31.44, 0.8, 46, 135.47, 31.44, 0.2, 2, 66, 26.77, 2.59, 0.75, 46, 136.98, 2.59, 0.25, 2, 66, 21.02, -36.66, 0.54887, 46, 131.23, -36.66, 0.45113, 2, 66, 8.01, -74.65, 0.36029, 46, 118.22, -74.65, 0.63971, 2, 66, -1.52, -88.24, 0.1253, 46, 108.69, -88.24, 0.8747, 2, 66, 20.25, -95.44, 0.08687, 46, 130.46, -95.44, 0.91313, 2, 66, 34.42, -39.36, 0.72613, 46, 144.63, -39.36, 0.27387, 2, 66, 42.03, 1.7, 0.824, 46, 152.25, 1.7, 0.176, 2, 66, 45.85, 32.6, 0.856, 46, 156.06, 32.6, 0.144, 1, 66, 46.01, 61.02, 1, 1, 66, 22.35, 66.41, 1, 1, 66, 1.73, 61.84, 1, 2, 66, -31.17, 38.83, 0.928, 46, 79.04, 38.83, 0.072, 2, 66, -52.94, 19.31, 0.79073, 46, 57.27, 19.31, 0.20927, 2, 66, -39.54, 52.42, 0.912, 46, 70.67, 52.42, 0.088, 2, 66, -3.2, 87.61, 0.744, 46, 107.02, 87.61, 0.256, 2, 66, -14.82, 116.7, 0.6368, 46, 95.4, 116.7, 0.3632, 2, 66, 2.7, -6.87, 0.856, 46, 112.91, -6.87, 0.144, 2, 66, 6.21, 15.8, 0.744, 46, 116.42, 15.8, 0.256, 2, 66, -15.39, 2.47, 0.856, 46, 94.82, 2.47, 0.144, 2, 66, -12.98, -40.48, 0.72102, 46, 97.24, -40.48, 0.27898, 2, 66, -19.55, -68.16, 0.59162, 46, 90.66, -68.16, 0.40838, 2, 66, 17.44, -47.15, 0.53452, 46, 127.65, -47.15, 0.46548 ],
"hull": 25, "hull": 25,
"edges": [ 36, 34, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 18, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 0, 48, 48, 46, 46, 44, 36, 38, 40, 38, 24, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 62, 64, 64, 12, 8, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 24, 24, 84, 84, 86, 86, 44, 40, 42, 42, 44, 42, 88, 88, 30, 58, 90, 90, 92, 92, 94, 18, 20, 20, 22, 94, 20, 18, 96, 96, 98, 60, 100, 100, 62, 98, 100 ], "edges": [ 36, 34, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 18, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 0, 48, 48, 46, 46, 44, 36, 38, 40, 38, 24, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 62, 64, 64, 12, 8, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 24, 24, 84, 84, 86, 86, 44, 40, 42, 42, 44, 42, 88, 88, 30, 58, 90, 90, 92, 92, 94, 18, 20, 20, 22, 94, 20, 18, 96, 96, 98, 60, 100, 100, 62, 98, 100 ],
@ -553,7 +569,7 @@
"head": { "head": {
"type": "mesh", "type": "mesh",
"uvs": [ 0.75919, 0.06107, 0.88392, 0.17893, 0.90174, 0.30856, 0.94224, 0.1966, 1, 0.26584, 1, 0.422, 0.95864, 0.46993, 0.92118, 0.51333, 0.85957, 0.5347, 0.78388, 0.65605, 0.74384, 0.74838, 0.85116, 0.75151, 0.84828, 0.82564, 0.81781, 0.85367, 0.75599, 0.85906, 0.76237, 0.90468, 0.65875, 1, 0.38337, 1, 0.1858, 0.85404, 0.12742, 0.81091, 0.06025, 0.69209, 0, 0.58552, 0, 0.41021, 0.0853, 0.20692, 0.24243, 0.14504, 0.5, 0.1421, 0.50324, 0.07433, 0.41738, 0, 0.57614, 0, 0.85059, 0.36087, 0.73431, 0.43206, 0.68481, 0.31271, 0.72165, 0.16718, 0.55931, 0.04154, 0.44764, 0.22895, 0.23926, 0.26559, 0.71272, 0.44036, 0.56993, 0.383, 0.41678, 0.33511, 0.293, 0.31497, 0.70802, 0.44502, 0.56676, 0.38976, 0.41521, 0.34416, 0.28754, 0.33017, 0.88988, 0.50177, 0.30389, 0.73463, 0.2646, 0.65675, 0.21414, 0.61584, 0.14613, 0.62194, 0.10316, 0.66636, 0.10358, 0.72557, 0.14505, 0.79164, 0.20263, 0.81355, 0.27873, 0.80159, 0.34947, 0.7376, 0.23073, 0.57073, 0.08878, 0.60707, 0.29461, 0.8129, 0.73006, 0.87883, 0.69805, 0.87348, 0.66166, 0.79681, 0.22468, 0.69824, 0.14552, 0.67405 ], "uvs": [ 0.75919, 0.06107, 0.88392, 0.17893, 0.90174, 0.30856, 0.94224, 0.1966, 1, 0.26584, 1, 0.422, 0.95864, 0.46993, 0.92118, 0.51333, 0.85957, 0.5347, 0.78388, 0.65605, 0.74384, 0.74838, 0.85116, 0.75151, 0.84828, 0.82564, 0.81781, 0.85367, 0.75599, 0.85906, 0.76237, 0.90468, 0.65875, 1, 0.38337, 1, 0.1858, 0.85404, 0.12742, 0.81091, 0.06025, 0.69209, 0, 0.58552, 0, 0.41021, 0.0853, 0.20692, 0.24243, 0.14504, 0.5, 0.1421, 0.50324, 0.07433, 0.41738, 0, 0.57614, 0, 0.85059, 0.36087, 0.73431, 0.43206, 0.68481, 0.31271, 0.72165, 0.16718, 0.55931, 0.04154, 0.44764, 0.22895, 0.23926, 0.26559, 0.71272, 0.44036, 0.56993, 0.383, 0.41678, 0.33511, 0.293, 0.31497, 0.70802, 0.44502, 0.56676, 0.38976, 0.41521, 0.34416, 0.28754, 0.33017, 0.88988, 0.50177, 0.30389, 0.73463, 0.2646, 0.65675, 0.21414, 0.61584, 0.14613, 0.62194, 0.10316, 0.66636, 0.10358, 0.72557, 0.14505, 0.79164, 0.20263, 0.81355, 0.27873, 0.80159, 0.34947, 0.7376, 0.23073, 0.57073, 0.08878, 0.60707, 0.29461, 0.8129, 0.73006, 0.87883, 0.69805, 0.87348, 0.66166, 0.79681, 0.22468, 0.69824, 0.14552, 0.67405 ],
"triangles": [ 19, 50, 51, 18, 57, 17, 57, 54, 17, 17, 54, 60, 57, 52, 53, 57, 18, 52, 52, 19, 51, 53, 52, 61, 57, 45, 54, 57, 53, 45, 52, 51, 61, 53, 61, 45, 54, 41, 60, 60, 41, 40, 61, 50, 62, 61, 51, 50, 55, 41, 54, 61, 46, 45, 42, 41, 55, 46, 54, 45, 61, 62, 47, 62, 48, 47, 61, 47, 46, 62, 49, 48, 47, 55, 46, 42, 55, 43, 46, 55, 54, 47, 48, 55, 55, 48, 56, 55, 22, 43, 36, 30, 44, 36, 40, 37, 40, 41, 37, 30, 36, 31, 36, 37, 31, 30, 31, 29, 43, 22, 39, 41, 42, 37, 42, 38, 37, 31, 37, 34, 32, 2, 31, 43, 39, 42, 42, 39, 38, 37, 38, 34, 38, 39, 34, 39, 35, 34, 34, 25, 31, 50, 49, 62, 2, 32, 1, 31, 25, 32, 33, 32, 25, 33, 25, 26, 32, 0, 1, 32, 33, 0, 0, 33, 28, 26, 27, 33, 33, 27, 28, 30, 29, 6, 6, 29, 5, 29, 2, 5, 2, 4, 5, 29, 31, 2, 2, 3, 4, 44, 30, 6, 20, 49, 50, 15, 59, 58, 15, 16, 59, 59, 16, 60, 16, 17, 60, 58, 14, 15, 58, 59, 14, 59, 60, 14, 13, 14, 10, 14, 60, 10, 13, 10, 12, 12, 10, 11, 20, 50, 19, 10, 60, 9, 9, 60, 40, 20, 56, 49, 20, 21, 56, 9, 40, 8, 55, 56, 22, 56, 21, 22, 8, 44, 7, 40, 36, 8, 8, 36, 44, 7, 44, 6, 22, 23, 35, 39, 22, 35, 35, 24, 34, 35, 23, 24, 34, 24, 25, 49, 56, 48, 18, 19, 52 ], "triangles": [ 50, 49, 62, 34, 25, 31, 39, 35, 34, 38, 39, 34, 37, 38, 34, 42, 39, 38, 43, 39, 42, 32, 2, 31, 31, 37, 34, 42, 38, 37, 41, 42, 37, 43, 22, 39, 30, 31, 29, 36, 37, 31, 30, 36, 31, 40, 41, 37, 36, 40, 37, 36, 30, 44, 55, 22, 43, 55, 48, 56, 47, 48, 55, 46, 55, 54, 42, 55, 43, 47, 55, 46, 62, 49, 48, 61, 47, 46, 62, 48, 47, 61, 62, 47, 46, 54, 45, 42, 41, 55, 61, 46, 45, 55, 41, 54, 61, 51, 50, 61, 50, 62, 60, 41, 40, 54, 41, 60, 53, 61, 45, 52, 51, 61, 57, 53, 45, 57, 45, 54, 53, 52, 61, 52, 19, 51, 57, 18, 52, 57, 52, 53, 17, 54, 60, 57, 54, 17, 18, 57, 17, 19, 50, 51, 33, 27, 28, 26, 27, 33, 0, 33, 28, 32, 33, 0, 32, 0, 1, 33, 25, 26, 33, 32, 25, 31, 25, 32, 2, 32, 1, 2, 3, 4, 29, 31, 2, 2, 4, 5, 29, 2, 5, 6, 29, 5, 30, 29, 6, 44, 30, 6, 18, 19, 52, 49, 56, 48, 34, 24, 25, 35, 23, 24, 35, 24, 34, 39, 22, 35, 22, 23, 35, 7, 44, 6, 8, 36, 44, 40, 36, 8, 8, 44, 7, 56, 21, 22, 55, 56, 22, 9, 40, 8, 20, 21, 56, 20, 56, 49, 9, 60, 40, 10, 60, 9, 20, 50, 19, 12, 10, 11, 13, 10, 12, 14, 60, 10, 13, 14, 10, 59, 60, 14, 58, 59, 14, 58, 14, 15, 16, 17, 60, 59, 16, 60, 15, 16, 59, 15, 59, 58, 20, 49, 50 ],
"vertices": [ 2, 50, 41.97, -41.8, 0.94074, 66, 165.41, -22.6, 0.05926, 4, 48, 73.47, 27.54, 0.26795, 50, -5.75, -51.71, 0.4738, 49, 112.99, -11.41, 0.12255, 66, 143.5, -66.13, 0.1357, 4, 48, 38.23, 10.99, 0.6831, 50, -41.01, -35.22, 0.07866, 49, 92.73, -44.66, 0.04872, 66, 108.65, -83.49, 0.18952, 2, 48, 73.35, 10.89, 0.8455, 66, 143.77, -82.78, 0.1545, 2, 48, 58.59, -10.38, 0.91607, 66, 129.5, -104.39, 0.08393, 3, 46, 195.82, -119.82, 0.104, 47, 75.49, -4.55, 0.09191, 48, 14.36, -24.8, 0.80409, 4, 46, 178.62, -113.98, 0.19022, 47, 59.82, -13.72, 0.33409, 48, -2.7, -18.57, 0.46643, 66, 68.41, -113.98, 0.00926, 4, 46, 163.06, -108.69, 0.18724, 47, 45.64, -22.03, 0.3133, 48, -18.14, -12.93, 0.47469, 66, 52.84, -108.69, 0.02477, 2, 46, 151.52, -95.05, 0.91122, 66, 41.31, -95.05, 0.08878, 2, 46, 110.61, -87.69, 0.70564, 66, 0.4, -87.69, 0.29436, 2, 46, 81.05, -86.58, 0.63951, 66, -29.16, -86.58, 0.36049, 2, 46, 89.82, -114.32, 0.57, 66, -20.39, -114.32, 0.43, 2, 46, 68.72, -120.91, 0.57, 66, -41.49, -120.91, 0.43, 2, 46, 58.1, -115.9, 0.57, 66, -52.11, -115.9, 0.43, 2, 46, 51.03, -100.63, 0.64242, 66, -59.18, -100.63, 0.35758, 2, 46, 38.79, -106.76, 0.81659, 66, -71.43, -106.76, 0.18341, 2, 46, 2.68, -89.7, 0.77801, 66, -107.53, -89.7, 0.22199, 2, 46, -22.07, -19.3, 0.823, 66, -132.28, -19.3, 0.177, 2, 46, 1.2, 45.63, 0.51204, 66, -109.01, 45.63, 0.48796, 2, 46, 8.07, 64.81, 0.60869, 66, -102.14, 64.81, 0.39131, 2, 46, 35.44, 93.73, 0.80009, 66, -74.77, 93.73, 0.19991, 2, 46, 59.98, 119.66, 0.93554, 66, -50.23, 119.66, 0.06446, 2, 46, 109.26, 136.99, 0.99895, 66, -0.95, 136.99, 0.00105, 1, 46, 174.07, 135.27, 1, 3, 46, 205.59, 101.22, 0.80778, 49, -16.84, 104.63, 0.15658, 66, 95.38, 101.22, 0.03564, 3, 50, 58.94, 30.5, 0.43491, 49, 38.36, 61.89, 0.28116, 66, 119.35, 35.65, 0.28393, 2, 50, 75.56, 19.01, 0.92164, 66, 138.68, 41.52, 0.07836, 1, 50, 106.7, 26.9, 1, 1, 50, 83.79, -9.51, 1, 5, 47, 44.51, 27.24, 0.15139, 48, 19.12, 19.33, 0.44847, 50, -46.82, -15.19, 0.05757, 49, 72.19, -48.24, 0.1149, 66, 89.35, -75.58, 0.22767, 3, 47, 7.42, 19.08, 0.37772, 49, 34.32, -45.24, 0.09918, 66, 58.9, -52.89, 0.52311, 2, 49, 45.94, -9.07, 0.4826, 66, 87.99, -28.45, 0.5174, 2, 50, 20.62, -16.35, 0.7435, 66, 132.21, -23.49, 0.2565, 2, 50, 75.74, 0.94, 0.97172, 66, 152.95, 30.42, 0.02828, 4, 46, 200.45, 40.46, 0.18809, 50, 44.6, 56.29, 0.05831, 49, 11.15, 50.46, 0.14366, 66, 90.24, 40.46, 0.60994, 2, 46, 171.41, 90.12, 0.48644, 66, 61.2, 90.12, 0.51356, 2, 46, 164.84, -48.18, 0.43217, 66, 54.62, -48.18, 0.56783, 4, 46, 168.13, -6.02, 0.01949, 47, -28.65, 49.02, 0.02229, 49, 8.54, -6.09, 0.12791, 66, 57.92, -6.02, 0.83031, 2, 46, 167.84, 37.87, 0.15, 66, 57.63, 37.87, 0.85, 2, 46, 162.36, 71.5, 0.24107, 66, 52.15, 71.5, 0.75893, 2, 46, 163.11, -47.44, 0.41951, 66, 52.9, -47.44, 0.58049, 2, 46, 165.94, -5.87, 0.16355, 66, 55.73, -5.87, 0.83645, 2, 46, 165.14, 37.38, 0.15, 66, 54.93, 37.38, 0.85, 2, 46, 157.6, 71.4, 0.21735, 66, 47.39, 71.4, 0.78265, 3, 46, 163.5, -99.54, 0.61812, 47, 39.01, -15.71, 0.30445, 66, 53.29, -99.54, 0.07744, 2, 46, 45.38, 27.24, 0.16741, 66, -64.83, 27.24, 0.83259, 2, 46, 63.74, 44.98, 0.15, 66, -46.47, 44.98, 0.85, 2, 46, 70.7, 61.92, 0.22175, 66, -39.51, 61.92, 0.77825, 2, 46, 62.88, 78.71, 0.38, 66, -47.34, 78.71, 0.62, 2, 46, 46.53, 85.3, 0.51, 66, -63.68, 85.3, 0.49, 2, 46, 29.92, 79.34, 0.388, 66, -80.29, 79.34, 0.612, 2, 46, 15.08, 62.21, 0.38, 66, -95.13, 62.21, 0.62, 2, 46, 14.09, 45.32, 0.41, 66, -96.12, 45.32, 0.59, 2, 46, 24.3, 27.06, 0.192, 66, -85.91, 27.06, 0.808, 1, 66, -61.57, 15.3, 1, 2, 46, 84.87, 62.14, 0.16757, 66, -25.34, 62.14, 0.83243, 2, 46, 61.9, 94.84, 0.68145, 66, -48.31, 94.84, 0.31855, 2, 46, 22.54, 21.88, 0.16, 66, -87.67, 21.88, 0.84, 2, 46, 43.15, -95.95, 0.73445, 66, -67.06, -95.95, 0.26555, 2, 46, 41.77, -87.24, 0.67858, 66, -68.44, -87.24, 0.32142, 2, 46, 60.05, -70.36, 0.50195, 66, -50.16, -70.36, 0.49805, 2, 46, 48.49, 51.09, 0.25, 66, -61.72, 51.09, 0.75, 2, 46, 48.17, 73.71, 0.15634, 66, -62.04, 73.71, 0.84366 ], "vertices": [ 2, 50, 41.97, -41.8, 0.94074, 66, 165.41, -22.6, 0.05926, 4, 48, 73.47, 27.54, 0.26795, 50, -5.75, -51.71, 0.4738, 49, 112.99, -11.41, 0.12255, 66, 143.5, -66.13, 0.1357, 4, 48, 38.23, 10.99, 0.6831, 50, -41.01, -35.22, 0.07866, 49, 92.73, -44.66, 0.04872, 66, 108.65, -83.49, 0.18952, 2, 48, 73.35, 10.89, 0.8455, 66, 143.77, -82.78, 0.1545, 2, 48, 58.59, -10.38, 0.91607, 66, 129.5, -104.39, 0.08393, 3, 46, 195.82, -119.82, 0.104, 47, 75.49, -4.55, 0.09191, 48, 14.36, -24.8, 0.80409, 4, 46, 178.62, -113.98, 0.19022, 47, 59.82, -13.72, 0.33409, 48, -2.7, -18.57, 0.46643, 66, 68.41, -113.98, 0.00926, 4, 46, 163.06, -108.69, 0.18724, 47, 45.64, -22.03, 0.3133, 48, -18.14, -12.93, 0.47469, 66, 52.84, -108.69, 0.02477, 2, 46, 151.52, -95.05, 0.91122, 66, 41.31, -95.05, 0.08878, 2, 46, 110.61, -87.69, 0.70564, 66, 0.4, -87.69, 0.29436, 2, 46, 81.05, -86.58, 0.63951, 66, -29.16, -86.58, 0.36049, 2, 46, 89.82, -114.32, 0.57, 66, -20.39, -114.32, 0.43, 2, 46, 68.72, -120.91, 0.57, 66, -41.49, -120.91, 0.43, 2, 46, 58.1, -115.9, 0.57, 66, -52.11, -115.9, 0.43, 2, 46, 51.03, -100.63, 0.64242, 66, -59.18, -100.63, 0.35758, 2, 46, 38.79, -106.76, 0.81659, 66, -71.43, -106.76, 0.18341, 2, 46, 2.68, -89.7, 0.77801, 66, -107.53, -89.7, 0.22199, 2, 46, -22.07, -19.3, 0.823, 66, -132.28, -19.3, 0.177, 2, 46, 1.2, 45.63, 0.51204, 66, -109.01, 45.63, 0.48796, 2, 46, 8.07, 64.81, 0.60869, 66, -102.14, 64.81, 0.39131, 2, 46, 35.44, 93.73, 0.80009, 66, -74.77, 93.73, 0.19991, 2, 46, 59.98, 119.66, 0.93554, 66, -50.23, 119.66, 0.06446, 2, 46, 109.26, 136.99, 0.99895, 66, -0.95, 136.99, 0.00105, 1, 46, 174.07, 135.27, 1, 3, 46, 205.59, 101.22, 0.80778, 49, -16.84, 104.63, 0.15658, 66, 95.38, 101.22, 0.03564, 3, 50, 58.94, 30.5, 0.43491, 49, 38.36, 61.89, 0.28116, 66, 119.35, 35.65, 0.28393, 2, 50, 75.56, 19.01, 0.92164, 66, 138.68, 41.52, 0.07836, 1, 50, 106.7, 26.9, 1, 1, 50, 83.79, -9.51, 1, 5, 47, 44.51, 27.24, 0.15139, 48, 19.12, 19.33, 0.44847, 50, -46.82, -15.19, 0.05757, 49, 72.19, -48.24, 0.1149, 66, 89.35, -75.58, 0.22767, 3, 47, 7.42, 19.08, 0.37772, 49, 34.32, -45.24, 0.09918, 66, 58.9, -52.89, 0.52311, 2, 49, 45.94, -9.07, 0.4826, 66, 87.99, -28.45, 0.5174, 2, 50, 20.62, -16.35, 0.7435, 66, 132.21, -23.49, 0.2565, 2, 50, 75.74, 0.94, 0.97172, 66, 152.95, 30.42, 0.02828, 4, 46, 200.45, 40.46, 0.18809, 50, 44.6, 56.29, 0.05831, 49, 11.15, 50.46, 0.14366, 66, 90.24, 40.46, 0.60994, 2, 46, 171.41, 90.12, 0.48644, 66, 61.2, 90.12, 0.51356, 2, 46, 164.84, -48.18, 0.43217, 66, 54.62, -48.18, 0.56783, 4, 46, 168.13, -6.02, 0.01949, 47, -28.65, 49.02, 0.02229, 49, 8.54, -6.09, 0.12791, 66, 57.92, -6.02, 0.83031, 2, 46, 167.84, 37.87, 0.15, 66, 57.63, 37.87, 0.85, 2, 46, 162.36, 71.5, 0.24107, 66, 52.15, 71.5, 0.75893, 2, 46, 163.11, -47.44, 0.41951, 66, 52.9, -47.44, 0.58049, 2, 46, 165.94, -5.87, 0.16355, 66, 55.73, -5.87, 0.83645, 2, 46, 165.14, 37.38, 0.15, 66, 54.93, 37.38, 0.85, 2, 46, 157.6, 71.4, 0.21735, 66, 47.39, 71.4, 0.78265, 3, 46, 163.5, -99.54, 0.61812, 47, 39.01, -15.71, 0.30445, 66, 53.29, -99.54, 0.07744, 2, 46, 45.38, 27.24, 0.16741, 66, -64.83, 27.24, 0.83259, 2, 46, 63.74, 44.98, 0.15, 66, -46.47, 44.98, 0.85, 2, 46, 70.7, 61.92, 0.22175, 66, -39.51, 61.92, 0.77825, 2, 46, 62.88, 78.71, 0.38, 66, -47.34, 78.71, 0.62, 2, 46, 46.53, 85.3, 0.51, 66, -63.68, 85.3, 0.49, 2, 46, 29.92, 79.34, 0.388, 66, -80.29, 79.34, 0.612, 2, 46, 15.08, 62.21, 0.38, 66, -95.13, 62.21, 0.62, 2, 46, 14.09, 45.32, 0.41, 66, -96.12, 45.32, 0.59, 2, 46, 24.3, 27.06, 0.192, 66, -85.91, 27.06, 0.808, 1, 66, -61.57, 15.3, 1, 2, 46, 84.87, 62.14, 0.16757, 66, -25.34, 62.14, 0.83243, 2, 46, 61.9, 94.84, 0.68145, 66, -48.31, 94.84, 0.31855, 2, 46, 22.54, 21.88, 0.16, 66, -87.67, 21.88, 0.84, 2, 46, 43.15, -95.95, 0.73445, 66, -67.06, -95.95, 0.26555, 2, 46, 41.77, -87.24, 0.67858, 66, -68.44, -87.24, 0.32142, 2, 46, 60.05, -70.36, 0.50195, 66, -50.16, -70.36, 0.49805, 2, 46, 48.49, 51.09, 0.25, 66, -61.72, 51.09, 0.75, 2, 46, 48.17, 73.71, 0.15634, 66, -62.04, 73.71, 0.84366 ],
"hull": 29, "hull": 29,
"edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 0, 56, 54, 56, 54, 52, 52, 50, 50, 48, 48, 46, 46, 44, 42, 44, 32, 34, 4, 58, 58, 60, 62, 64, 64, 66, 66, 54, 50, 68, 68, 70, 70, 44, 60, 72, 62, 74, 72, 74, 74, 76, 76, 78, 78, 44, 16, 80, 80, 82, 82, 84, 84, 86, 86, 44, 14, 88, 88, 72, 14, 16, 10, 12, 12, 14, 12, 60, 90, 92, 92, 94, 94, 96, 96, 98, 98, 100, 100, 102, 102, 104, 104, 106, 106, 90, 108, 110, 110, 112, 38, 40, 40, 42, 112, 40, 34, 36, 36, 38, 36, 114, 114, 108, 30, 32, 30, 28, 24, 26, 28, 26, 22, 24, 22, 20, 20, 18, 18, 16, 28, 116, 116, 118, 118, 120, 120, 20 ], "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 0, 56, 54, 56, 54, 52, 52, 50, 50, 48, 48, 46, 46, 44, 42, 44, 32, 34, 4, 58, 58, 60, 62, 64, 64, 66, 66, 54, 50, 68, 68, 70, 70, 44, 60, 72, 62, 74, 72, 74, 74, 76, 76, 78, 78, 44, 16, 80, 80, 82, 82, 84, 84, 86, 86, 44, 14, 88, 88, 72, 14, 16, 10, 12, 12, 14, 12, 60, 90, 92, 92, 94, 94, 96, 96, 98, 98, 100, 100, 102, 102, 104, 104, 106, 106, 90, 108, 110, 110, 112, 38, 40, 40, 42, 112, 40, 34, 36, 36, 38, 36, 114, 114, 108, 30, 32, 30, 28, 24, 26, 28, 26, 22, 24, 22, 20, 20, 18, 18, 16, 28, 116, 116, 118, 118, 120, 120, 20 ],
@ -774,7 +790,7 @@
"rear-foot": { "rear-foot": {
"type": "mesh", "type": "mesh",
"uvs": [ 0.48368, 0.1387, 0.51991, 0.21424, 0.551, 0.27907, 0.58838, 0.29816, 0.63489, 0.32191, 0.77342, 0.39267, 1, 0.73347, 1, 1, 0.54831, 0.99883, 0.31161, 1, 0, 1, 0, 0.41397, 0.13631, 0, 0.41717, 0 ], "uvs": [ 0.48368, 0.1387, 0.51991, 0.21424, 0.551, 0.27907, 0.58838, 0.29816, 0.63489, 0.32191, 0.77342, 0.39267, 1, 0.73347, 1, 1, 0.54831, 0.99883, 0.31161, 1, 0, 1, 0, 0.41397, 0.13631, 0, 0.41717, 0 ],
"triangles": [ 8, 6, 7, 8, 5, 6, 8, 4, 5, 8, 3, 4, 3, 8, 9, 2, 9, 10, 1, 11, 0, 0, 11, 12, 12, 13, 0, 2, 10, 1, 3, 9, 2, 11, 1, 10 ], "triangles": [ 8, 3, 4, 8, 4, 5, 8, 5, 6, 8, 6, 7, 11, 1, 10, 3, 9, 2, 2, 10, 1, 12, 13, 0, 0, 11, 12, 1, 11, 0, 2, 9, 10, 3, 8, 9 ],
"vertices": [ 2, 8, 10.45, 29.41, 0.90802, 9, -6.74, 49.62, 0.09198, 2, 8, 16.56, 29.27, 0.84259, 9, -2.65, 45.09, 0.15741, 2, 8, 21.8, 29.15, 0.69807, 9, 0.85, 41.2, 0.30193, 2, 8, 25.53, 31.43, 0.52955, 9, 5.08, 40.05, 0.47045, 2, 8, 30.18, 34.27, 0.39303, 9, 10.33, 38.62, 0.60697, 2, 8, 44.02, 42.73, 0.27525, 9, 25.98, 34.36, 0.72475, 2, 8, 76.47, 47.28, 0.21597, 9, 51.56, 13.9, 0.78403, 2, 8, 88.09, 36.29, 0.28719, 9, 51.55, -2.09, 0.71281, 2, 8, 52.94, -0.73, 0.47576, 9, 0.52, -1.98, 0.52424, 2, 8, 34.63, -20.23, 0.68757, 9, -26.23, -2.03, 0.31243, 2, 8, 10.44, -45.81, 0.84141, 9, -61.43, -2, 0.15859, 2, 8, -15.11, -21.64, 0.93283, 9, -61.4, 33.15, 0.06717, 1, 8, -22.57, 6.61, 1, 1, 8, -0.76, 29.67, 1 ], "vertices": [ 2, 8, 10.45, 29.41, 0.90802, 9, -6.74, 49.62, 0.09198, 2, 8, 16.56, 29.27, 0.84259, 9, -2.65, 45.09, 0.15741, 2, 8, 21.8, 29.15, 0.69807, 9, 0.85, 41.2, 0.30193, 2, 8, 25.53, 31.43, 0.52955, 9, 5.08, 40.05, 0.47045, 2, 8, 30.18, 34.27, 0.39303, 9, 10.33, 38.62, 0.60697, 2, 8, 44.02, 42.73, 0.27525, 9, 25.98, 34.36, 0.72475, 2, 8, 76.47, 47.28, 0.21597, 9, 51.56, 13.9, 0.78403, 2, 8, 88.09, 36.29, 0.28719, 9, 51.55, -2.09, 0.71281, 2, 8, 52.94, -0.73, 0.47576, 9, 0.52, -1.98, 0.52424, 2, 8, 34.63, -20.23, 0.68757, 9, -26.23, -2.03, 0.31243, 2, 8, 10.44, -45.81, 0.84141, 9, -61.43, -2, 0.15859, 2, 8, -15.11, -21.64, 0.93283, 9, -61.4, 33.15, 0.06717, 1, 8, -22.57, 6.61, 1, 1, 8, -0.76, 29.67, 1 ],
"hull": 14, "hull": 14,
"edges": [ 14, 12, 10, 12, 14, 16, 16, 18, 18, 20, 4, 18, 20, 22, 24, 26, 22, 24, 4, 2, 2, 20, 4, 6, 6, 16, 6, 8, 8, 10, 2, 0, 0, 26 ], "edges": [ 14, 12, 10, 12, 14, 16, 16, 18, 18, 20, 4, 18, 20, 22, 24, 26, 22, 24, 4, 2, 2, 20, 4, 6, 6, 16, 6, 8, 8, 10, 2, 0, 0, 26 ],
@ -804,7 +820,7 @@
"torso": { "torso": {
"type": "mesh", "type": "mesh",
"uvs": [ 0.6251, 0.12672, 1, 0.26361, 1, 0.28871, 1, 0.66021, 1, 0.68245, 0.92324, 0.69259, 0.95116, 0.84965, 0.77124, 1, 0.49655, 1, 0.27181, 1, 0.13842, 0.77196, 0.09886, 0.6817, 0.05635, 0.58471, 0, 0.45614, 0, 0.33778, 0, 0.19436, 0.14463, 0, 0.27802, 0, 0.72525, 0.27835, 0.76091, 0.46216, 0.84888, 0.67963, 0.68257, 0.63249, 0.53986, 0.3847, 0.25443, 0.3217, 0.30063, 0.55174, 0.39553, 0.79507, 0.26389, 0.17007, 0.5241, 0.18674, 0.71492, 0.76655, 0.82151, 0.72956, 0.27626, 0.4304, 0.62327, 0.52952, 0.3455, 0.66679, 0.53243, 0.2914 ], "uvs": [ 0.6251, 0.12672, 1, 0.26361, 1, 0.28871, 1, 0.66021, 1, 0.68245, 0.92324, 0.69259, 0.95116, 0.84965, 0.77124, 1, 0.49655, 1, 0.27181, 1, 0.13842, 0.77196, 0.09886, 0.6817, 0.05635, 0.58471, 0, 0.45614, 0, 0.33778, 0, 0.19436, 0.14463, 0, 0.27802, 0, 0.72525, 0.27835, 0.76091, 0.46216, 0.84888, 0.67963, 0.68257, 0.63249, 0.53986, 0.3847, 0.25443, 0.3217, 0.30063, 0.55174, 0.39553, 0.79507, 0.26389, 0.17007, 0.5241, 0.18674, 0.71492, 0.76655, 0.82151, 0.72956, 0.27626, 0.4304, 0.62327, 0.52952, 0.3455, 0.66679, 0.53243, 0.2914 ],
"triangles": [ 19, 2, 3, 18, 1, 2, 0, 27, 17, 13, 14, 23, 17, 27, 16, 15, 16, 26, 14, 15, 23, 27, 26, 16, 23, 15, 26, 18, 0, 1, 24, 30, 22, 32, 24, 31, 12, 30, 24, 31, 22, 19, 24, 22, 31, 12, 13, 30, 21, 31, 19, 11, 12, 24, 13, 23, 30, 20, 21, 19, 5, 20, 3, 29, 21, 20, 29, 20, 5, 28, 21, 29, 10, 11, 32, 25, 32, 21, 25, 21, 28, 10, 32, 25, 29, 5, 6, 9, 10, 25, 8, 25, 28, 9, 25, 8, 7, 28, 29, 7, 29, 6, 8, 28, 7, 4, 5, 3, 11, 24, 32, 32, 31, 21, 3, 20, 19, 27, 0, 18, 33, 23, 26, 23, 33, 22, 22, 33, 18, 30, 23, 22, 33, 27, 18, 19, 18, 2, 22, 18, 19, 33, 26, 27 ], "triangles": [ 18, 1, 2, 19, 2, 3, 18, 0, 1, 23, 15, 26, 27, 26, 16, 14, 15, 23, 15, 16, 26, 17, 27, 16, 13, 14, 23, 0, 27, 17, 13, 23, 30, 11, 12, 24, 21, 31, 19, 12, 13, 30, 24, 22, 31, 31, 22, 19, 12, 30, 24, 32, 24, 31, 24, 30, 22, 3, 20, 19, 32, 31, 21, 11, 24, 32, 4, 5, 3, 8, 28, 7, 7, 29, 6, 7, 28, 29, 9, 25, 8, 8, 25, 28, 9, 10, 25, 29, 5, 6, 10, 32, 25, 25, 21, 28, 25, 32, 21, 10, 11, 32, 28, 21, 29, 29, 20, 5, 29, 21, 20, 5, 20, 3, 20, 21, 19, 33, 26, 27, 22, 18, 19, 19, 18, 2, 33, 27, 18, 30, 23, 22, 22, 33, 18, 23, 33, 22, 33, 23, 26, 27, 0, 18 ],
"vertices": [ 2, 29, 44.59, -10.39, 0.88, 40, -17.65, 33.99, 0.12, 3, 28, 59.65, -45.08, 0.12189, 29, 17.13, -45.08, 0.26811, 40, 22.68, 15.82, 0.61, 3, 28, 55.15, -44.72, 0.1345, 29, 12.63, -44.72, 0.2555, 40, 23.43, 11.37, 0.61, 3, 27, 31.01, -39.45, 0.51133, 28, -11.51, -39.45, 0.30867, 40, 34.58, -54.57, 0.18, 3, 27, 27.01, -39.14, 0.53492, 28, -15.5, -39.14, 0.28508, 40, 35.25, -58.52, 0.18, 2, 27, 25.79, -31.5, 0.75532, 28, -16.73, -31.5, 0.24468, 1, 27, -2.61, -32, 1, 1, 27, -28.2, -12.29, 1, 1, 27, -26.08, 14.55, 1, 1, 27, -24.35, 36.5, 1, 2, 27, 17.6, 46.3, 0.8332, 28, -24.92, 46.3, 0.1668, 2, 27, 34.1, 48.89, 0.59943, 28, -8.42, 48.89, 0.40058, 3, 27, 51.83, 51.67, 0.29262, 28, 9.32, 51.67, 0.63181, 29, -33.2, 51.67, 0.07557, 3, 27, 75.34, 55.35, 0.06656, 28, 32.82, 55.35, 0.62298, 29, -9.7, 55.35, 0.31046, 2, 28, 54.06, 53.67, 0.37296, 29, 11.54, 53.67, 0.62704, 2, 28, 79.79, 51.64, 0.10373, 29, 37.27, 51.64, 0.89627, 1, 29, 71.04, 34.76, 1, 1, 29, 70.01, 21.72, 1, 1, 30, 36.74, 7.06, 1, 3, 30, 45.7, -24.98, 0.67, 28, 25.87, -18.9, 0.3012, 29, -16.65, -18.9, 0.0288, 2, 27, 28.69, -24.42, 0.77602, 28, -13.83, -24.42, 0.22398, 3, 30, 43.24, -56.49, 0.064, 27, 38.43, -8.84, 0.67897, 28, -4.09, -8.84, 0.25703, 3, 30, 22.02, -14.85, 0.29, 28, 41.48, 1.59, 0.53368, 29, -1.04, 1.59, 0.17632, 3, 30, -7.45, -8.33, 0.76, 28, 54.98, 28.59, 0.06693, 29, 12.46, 28.59, 0.17307, 3, 30, 3.91, -48.4, 0.25, 27, 55.87, 27.33, 0.15843, 28, 13.35, 27.33, 0.59157, 1, 27, 11.47, 21.51, 1, 2, 30, -11.09, 18.74, 0.416, 29, 39.6, 25.51, 0.584, 2, 30, 14.56, 20.03, 0.53, 29, 34.6, 0.33, 0.47, 1, 27, 14.12, -10.1, 1, 2, 27, 19.94, -21.03, 0.92029, 28, -22.58, -21.03, 0.07971, 3, 30, -2.08, -27.26, 0.29, 28, 35.31, 27.99, 0.49582, 29, -7.21, 27.99, 0.21418, 2, 30, 34.42, -39.19, 0.25, 28, 14.84, -4.5, 0.75, 2, 27, 34.87, 24.58, 0.67349, 28, -7.64, 24.58, 0.32651, 2, 30, 18.5, 1.59, 0.76, 29, 15.76, 1, 0.24 ], "vertices": [ 2, 29, 44.59, -10.39, 0.88, 40, -17.65, 33.99, 0.12, 3, 28, 59.65, -45.08, 0.12189, 29, 17.13, -45.08, 0.26811, 40, 22.68, 15.82, 0.61, 3, 28, 55.15, -44.72, 0.1345, 29, 12.63, -44.72, 0.2555, 40, 23.43, 11.37, 0.61, 3, 27, 31.01, -39.45, 0.51133, 28, -11.51, -39.45, 0.30867, 40, 34.58, -54.57, 0.18, 3, 27, 27.01, -39.14, 0.53492, 28, -15.5, -39.14, 0.28508, 40, 35.25, -58.52, 0.18, 2, 27, 25.79, -31.5, 0.75532, 28, -16.73, -31.5, 0.24468, 1, 27, -2.61, -32, 1, 1, 27, -28.2, -12.29, 1, 1, 27, -26.08, 14.55, 1, 1, 27, -24.35, 36.5, 1, 2, 27, 17.6, 46.3, 0.8332, 28, -24.92, 46.3, 0.1668, 2, 27, 34.1, 48.89, 0.59943, 28, -8.42, 48.89, 0.40058, 3, 27, 51.83, 51.67, 0.29262, 28, 9.32, 51.67, 0.63181, 29, -33.2, 51.67, 0.07557, 3, 27, 75.34, 55.35, 0.06656, 28, 32.82, 55.35, 0.62298, 29, -9.7, 55.35, 0.31046, 2, 28, 54.06, 53.67, 0.37296, 29, 11.54, 53.67, 0.62704, 2, 28, 79.79, 51.64, 0.10373, 29, 37.27, 51.64, 0.89627, 1, 29, 71.04, 34.76, 1, 1, 29, 70.01, 21.72, 1, 1, 30, 36.74, 7.06, 1, 3, 30, 45.7, -24.98, 0.67, 28, 25.87, -18.9, 0.3012, 29, -16.65, -18.9, 0.0288, 2, 27, 28.69, -24.42, 0.77602, 28, -13.83, -24.42, 0.22398, 3, 30, 43.24, -56.49, 0.064, 27, 38.43, -8.84, 0.67897, 28, -4.09, -8.84, 0.25703, 3, 30, 22.02, -14.85, 0.29, 28, 41.48, 1.59, 0.53368, 29, -1.04, 1.59, 0.17632, 3, 30, -7.45, -8.33, 0.76, 28, 54.98, 28.59, 0.06693, 29, 12.46, 28.59, 0.17307, 3, 30, 3.91, -48.4, 0.25, 27, 55.87, 27.33, 0.15843, 28, 13.35, 27.33, 0.59157, 1, 27, 11.47, 21.51, 1, 2, 30, -11.09, 18.74, 0.416, 29, 39.6, 25.51, 0.584, 2, 30, 14.56, 20.03, 0.53, 29, 34.6, 0.33, 0.47, 1, 27, 14.12, -10.1, 1, 2, 27, 19.94, -21.03, 0.92029, 28, -22.58, -21.03, 0.07971, 3, 30, -2.08, -27.26, 0.29, 28, 35.31, 27.99, 0.49582, 29, -7.21, 27.99, 0.21418, 2, 30, 34.42, -39.19, 0.25, 28, 14.84, -4.5, 0.75, 2, 27, 34.87, 24.58, 0.67349, 28, -7.64, 24.58, 0.32651, 2, 30, 18.5, 1.59, 0.76, 29, 15.76, 1, 0.24 ],
"hull": 18, "hull": 18,
"edges": [ 14, 12, 12, 10, 10, 8, 18, 20, 32, 34, 30, 32, 2, 4, 36, 4, 36, 38, 38, 40, 4, 6, 6, 8, 40, 6, 40, 42, 14, 16, 16, 18, 50, 16, 46, 52, 54, 36, 2, 0, 0, 34, 54, 0, 54, 32, 20, 50, 14, 56, 56, 42, 50, 56, 56, 58, 58, 40, 58, 10, 46, 60, 60, 48, 26, 60, 60, 44, 24, 26, 24, 48, 42, 62, 62, 44, 48, 62, 48, 64, 64, 50, 42, 64, 20, 22, 22, 24, 64, 22, 26, 28, 28, 30, 28, 46, 44, 66, 66, 54, 46, 66, 66, 36, 62, 38 ], "edges": [ 14, 12, 12, 10, 10, 8, 18, 20, 32, 34, 30, 32, 2, 4, 36, 4, 36, 38, 38, 40, 4, 6, 6, 8, 40, 6, 40, 42, 14, 16, 16, 18, 50, 16, 46, 52, 54, 36, 2, 0, 0, 34, 54, 0, 54, 32, 20, 50, 14, 56, 56, 42, 50, 56, 56, 58, 58, 40, 58, 10, 46, 60, 60, 48, 26, 60, 60, 44, 24, 26, 24, 48, 42, 62, 62, 44, 48, 62, 48, 64, 64, 50, 42, 64, 20, 22, 22, 24, 64, 22, 26, 28, 28, 30, 28, 46, 44, 66, 66, 54, 46, 66, 66, 36, 62, 38 ],
@ -861,13 +877,13 @@
}, },
"transform": { "transform": {
"aim-front-arm-transform": [ "aim-front-arm-transform": [
{ "rotateMix": 0.784, "translateMix": 0, "scaleMix": 0, "shearMix": 0 } { "mixRotate": 0.784, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
], ],
"aim-head-transform": [ "aim-head-transform": [
{ "rotateMix": 0.659, "translateMix": 0, "scaleMix": 0, "shearMix": 0 } { "mixRotate": 0.659, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
], ],
"aim-torso-transform": [ "aim-torso-transform": [
{ "rotateMix": 0.423, "translateMix": 0, "scaleMix": 0, "shearMix": 0 } { "mixRotate": 0.423, "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
] ]
} }
}, },
@ -969,19 +985,19 @@
"scale": [ "scale": [
{ {
"time": 0.4667, "time": 0.4667,
"curve": [ 0.469, 1, 0.492, 1.07, 0.475, 1.02, 0.492, 0.94 ] "curve": [ 0.469, 1.005, 0.492, 1.065, 0.475, 1.018, 0.492, 0.94 ]
}, },
{ {
"time": 0.5, "time": 0.5,
"x": 1.065, "x": 1.065,
"y": 0.94, "y": 0.94,
"curve": [ 0.517, 1.07, 0.541, 0.99, 0.517, 0.94, 0.542, 1.03 ] "curve": [ 0.517, 1.065, 0.541, 0.991, 0.517, 0.94, 0.542, 1.026 ]
}, },
{ {
"time": 0.5667, "time": 0.5667,
"x": 0.99, "x": 0.99,
"y": 1.025, "y": 1.025,
"curve": [ 0.593, 0.99, 0.609, 1, 0.595, 1.02, 0.607, 1 ] "curve": [ 0.593, 0.988, 0.609, 1.002, 0.595, 1.024, 0.607, 1.001 ]
}, },
{ "time": 0.6333 } { "time": 0.6333 }
] ]
@ -2481,48 +2497,48 @@
{ {
"x": 1.593, "x": 1.593,
"y": 0.964, "y": 0.964,
"curve": [ 0.033, 1.59, 0.1, 1, 0.033, 0.96, 0.1, 0.71 ] "curve": [ 0.033, 1.593, 0.1, 1, 0.033, 0.964, 0.1, 0.713 ]
}, },
{ {
"time": 0.1333, "time": 0.1333,
"y": 0.713, "y": 0.713,
"curve": [ 0.15, 1, 0.183, 1.77, 0.15, 0.71, 0.183, 0.88 ] "curve": [ 0.15, 1, 0.183, 1.774, 0.15, 0.713, 0.183, 0.883 ]
}, },
{ {
"time": 0.2, "time": 0.2,
"x": 1.774, "x": 1.774,
"y": 0.883, "y": 0.883,
"curve": [ 0.242, 1.77, 0.325, 1.18, 0.242, 0.88, 0.325, 0.65 ] "curve": [ 0.242, 1.774, 0.325, 1.181, 0.242, 0.883, 0.325, 0.649 ]
}, },
{ {
"time": 0.3667, "time": 0.3667,
"x": 1.181, "x": 1.181,
"y": 0.649, "y": 0.649,
"curve": [ 0.408, 1.18, 0.492, 1.89, 0.408, 0.65, 0.492, 0.82 ] "curve": [ 0.408, 1.181, 0.492, 1.893, 0.408, 0.649, 0.492, 0.819 ]
}, },
{ {
"time": 0.5333, "time": 0.5333,
"x": 1.893, "x": 1.893,
"y": 0.819, "y": 0.819,
"curve": [ 0.558, 1.89, 0.608, 1.18, 0.558, 0.82, 0.608, 0.69 ] "curve": [ 0.558, 1.893, 0.608, 1.18, 0.558, 0.819, 0.608, 0.686 ]
}, },
{ {
"time": 0.6333, "time": 0.6333,
"x": 1.18, "x": 1.18,
"y": 0.686, "y": 0.686,
"curve": [ 0.658, 1.18, 0.708, 1.9, 0.658, 0.69, 0.708, 0.86 ] "curve": [ 0.658, 1.18, 0.708, 1.903, 0.658, 0.686, 0.708, 0.855 ]
}, },
{ {
"time": 0.7333, "time": 0.7333,
"x": 1.903, "x": 1.903,
"y": 0.855, "y": 0.855,
"curve": [ 0.767, 1.9, 0.833, 1.31, 0.767, 0.86, 0.833, 0.62 ] "curve": [ 0.767, 1.903, 0.833, 1.311, 0.767, 0.855, 0.833, 0.622 ]
}, },
{ {
"time": 0.8667, "time": 0.8667,
"x": 1.311, "x": 1.311,
"y": 0.622, "y": 0.622,
"curve": [ 0.9, 1.31, 0.967, 1.59, 0.9, 0.62, 0.967, 0.96 ] "curve": [ 0.9, 1.311, 0.967, 1.593, 0.9, 0.622, 0.967, 0.964 ]
}, },
{ "time": 1, "x": 1.593, "y": 0.964 } { "time": 1, "x": 1.593, "y": 0.964 }
] ]
@ -2532,48 +2548,48 @@
{ {
"x": 1.88, "x": 1.88,
"y": 0.832, "y": 0.832,
"curve": [ 0.025, 1.88, 0.075, 1.31, 0.025, 0.83, 0.075, 0.69 ] "curve": [ 0.025, 1.88, 0.075, 1.311, 0.025, 0.832, 0.075, 0.686 ]
}, },
{ {
"time": 0.1, "time": 0.1,
"x": 1.311, "x": 1.311,
"y": 0.686, "y": 0.686,
"curve": [ 0.133, 1.31, 0.2, 2.01, 0.133, 0.69, 0.208, 0.74 ] "curve": [ 0.133, 1.311, 0.2, 2.01, 0.133, 0.686, 0.208, 0.736 ]
}, },
{ {
"time": 0.2333, "time": 0.2333,
"x": 2.01, "x": 2.01,
"y": 0.769, "y": 0.769,
"curve": [ 0.267, 2.01, 0.333, 1, 0.282, 0.83, 0.333, 0.91 ] "curve": [ 0.267, 2.01, 0.333, 1, 0.282, 0.831, 0.333, 0.91 ]
}, },
{ {
"time": 0.3667, "time": 0.3667,
"y": 0.91, "y": 0.91,
"curve": [ 0.4, 1, 0.467, 1.7, 0.4, 0.91, 0.474, 0.89 ] "curve": [ 0.4, 1, 0.467, 1.699, 0.4, 0.91, 0.474, 0.891 ]
}, },
{ {
"time": 0.5, "time": 0.5,
"x": 1.699, "x": 1.699,
"y": 0.86, "y": 0.86,
"curve": [ 0.517, 1.7, 0.55, 1.18, 0.54, 0.81, 0.55, 0.71 ] "curve": [ 0.517, 1.699, 0.55, 1.181, 0.54, 0.813, 0.55, 0.713 ]
}, },
{ {
"time": 0.5667, "time": 0.5667,
"x": 1.181, "x": 1.181,
"y": 0.713, "y": 0.713,
"curve": [ 0.617, 1.18, 0.717, 1.88, 0.617, 0.71, 0.717, 0.8 ] "curve": [ 0.617, 1.181, 0.717, 1.881, 0.617, 0.713, 0.717, 0.796 ]
}, },
{ {
"time": 0.7667, "time": 0.7667,
"x": 1.881, "x": 1.881,
"y": 0.796, "y": 0.796,
"curve": [ 0.8, 1.88, 0.867, 1.3, 0.8, 0.8, 0.867, 0.65 ] "curve": [ 0.8, 1.881, 0.867, 1.3, 0.8, 0.796, 0.867, 0.649 ]
}, },
{ {
"time": 0.9, "time": 0.9,
"x": 1.3, "x": 1.3,
"y": 0.649, "y": 0.649,
"curve": [ 0.925, 1.3, 0.975, 1.88, 0.925, 0.65, 0.975, 0.83 ] "curve": [ 0.925, 1.3, 0.975, 1.88, 0.925, 0.649, 0.975, 0.832 ]
}, },
{ "time": 1, "x": 1.88, "y": 0.832 } { "time": 1, "x": 1.88, "y": 0.832 }
] ]
@ -2596,79 +2612,79 @@
{ {
"x": 0.849, "x": 0.849,
"y": 1.764, "y": 1.764,
"curve": [ 0.017, 0.85, 0.05, 0.83, 0.017, 1.76, 0.05, 2.03 ] "curve": [ 0.017, 0.849, 0.05, 0.835, 0.017, 1.764, 0.05, 2.033 ]
}, },
{ {
"time": 0.0667, "time": 0.0667,
"x": 0.835, "x": 0.835,
"y": 2.033, "y": 2.033,
"curve": [ 0.092, 0.83, 0.142, 0.75, 0.092, 2.03, 0.142, 1.58 ] "curve": [ 0.092, 0.835, 0.142, 0.752, 0.092, 2.033, 0.142, 1.584 ]
}, },
{ {
"time": 0.1667, "time": 0.1667,
"x": 0.752, "x": 0.752,
"y": 1.584, "y": 1.584,
"curve": [ 0.183, 0.75, 0.217, 0.81, 0.183, 1.58, 0.217, 1.71 ] "curve": [ 0.183, 0.752, 0.217, 0.809, 0.183, 1.584, 0.217, 1.71 ]
}, },
{ {
"time": 0.2333, "time": 0.2333,
"x": 0.809, "x": 0.809,
"y": 1.71, "y": 1.71,
"curve": [ 0.25, 0.81, 0.283, 0.72, 0.25, 1.71, 0.283, 1.45 ] "curve": [ 0.25, 0.809, 0.283, 0.717, 0.25, 1.71, 0.283, 1.45 ]
}, },
{ {
"time": 0.3, "time": 0.3,
"x": 0.717, "x": 0.717,
"y": 1.45, "y": 1.45,
"curve": [ 0.317, 0.72, 0.35, 0.78, 0.317, 1.45, 0.35, 1.7 ] "curve": [ 0.317, 0.717, 0.35, 0.777, 0.317, 1.45, 0.35, 1.698 ]
}, },
{ {
"time": 0.3667, "time": 0.3667,
"x": 0.777, "x": 0.777,
"y": 1.698, "y": 1.698,
"curve": [ 0.4, 0.78, 0.45, 0.68, 0.375, 1.7, 0.45, 1.17 ] "curve": [ 0.4, 0.781, 0.45, 0.685, 0.375, 1.698, 0.45, 1.173 ]
}, },
{ {
"time": 0.4667, "time": 0.4667,
"x": 0.685, "x": 0.685,
"y": 1.173, "y": 1.173,
"curve": [ 0.492, 0.68, 0.542, 0.83, 0.492, 1.17, 0.542, 1.57 ] "curve": [ 0.492, 0.685, 0.542, 0.825, 0.492, 1.173, 0.542, 1.572 ]
}, },
{ {
"time": 0.5667, "time": 0.5667,
"x": 0.825, "x": 0.825,
"y": 1.572, "y": 1.572,
"curve": [ 0.611, 0.82, 0.63, 0.73, 0.611, 1.58, 0.606, 1.25 ] "curve": [ 0.611, 0.816, 0.63, 0.727, 0.611, 1.577, 0.606, 1.255 ]
}, },
{ {
"time": 0.6667, "time": 0.6667,
"x": 0.725, "x": 0.725,
"y": 1.241, "y": 1.241,
"curve": [ 0.692, 0.72, 0.742, 0.9, 0.692, 1.24, 0.749, 1.8 ] "curve": [ 0.692, 0.725, 0.742, 0.895, 0.692, 1.241, 0.749, 1.799 ]
}, },
{ {
"time": 0.7667, "time": 0.7667,
"x": 0.895, "x": 0.895,
"y": 1.857, "y": 1.857,
"curve": [ 0.783, 0.9, 0.796, 0.89, 0.796, 1.96, 0.817, 1.96 ] "curve": [ 0.783, 0.895, 0.796, 0.892, 0.796, 1.955, 0.817, 1.962 ]
}, },
{ {
"time": 0.8333, "time": 0.8333,
"x": 0.845, "x": 0.845,
"y": 1.962, "y": 1.962,
"curve": [ 0.845, 0.83, 0.883, 0.8, 0.85, 1.96, 0.872, 1.7 ] "curve": [ 0.845, 0.831, 0.883, 0.802, 0.85, 1.962, 0.872, 1.704 ]
}, },
{ {
"time": 0.9, "time": 0.9,
"x": 0.802, "x": 0.802,
"y": 1.491, "y": 1.491,
"curve": [ 0.917, 0.8, 0.95, 0.84, 0.907, 1.44, 0.936, 1.51 ] "curve": [ 0.917, 0.802, 0.95, 0.845, 0.907, 1.441, 0.936, 1.508 ]
}, },
{ {
"time": 0.9667, "time": 0.9667,
"x": 0.845, "x": 0.845,
"y": 1.627, "y": 1.627,
"curve": [ 0.975, 0.84, 0.992, 0.85, 0.973, 1.65, 0.992, 1.76 ] "curve": [ 0.975, 0.845, 0.992, 0.849, 0.973, 1.652, 0.992, 1.764 ]
}, },
{ "time": 1, "x": 0.849, "y": 1.764 } { "time": 1, "x": 0.849, "y": 1.764 }
] ]
@ -2691,61 +2707,61 @@
{ {
"x": 0.845, "x": 0.845,
"y": 1.31, "y": 1.31,
"curve": [ 0.017, 0.84, 0.117, 0.9, 0.017, 1.31, 0.117, 2.03 ] "curve": [ 0.017, 0.845, 0.117, 0.899, 0.017, 1.31, 0.117, 2.033 ]
}, },
{ {
"time": 0.1333, "time": 0.1333,
"x": 0.899, "x": 0.899,
"y": 2.033, "y": 2.033,
"curve": [ 0.15, 0.9, 0.183, 0.75, 0.15, 2.03, 0.183, 1.57 ] "curve": [ 0.15, 0.899, 0.183, 0.752, 0.15, 2.033, 0.183, 1.574 ]
}, },
{ {
"time": 0.2, "time": 0.2,
"x": 0.752, "x": 0.752,
"y": 1.574, "y": 1.574,
"curve": [ 0.225, 0.75, 0.275, 0.81, 0.225, 1.57, 0.275, 1.71 ] "curve": [ 0.225, 0.752, 0.275, 0.809, 0.225, 1.574, 0.275, 1.71 ]
}, },
{ {
"time": 0.3, "time": 0.3,
"x": 0.809, "x": 0.809,
"y": 1.71, "y": 1.71,
"curve": [ 0.317, 0.81, 0.35, 0.72, 0.317, 1.71, 0.35, 1.4 ] "curve": [ 0.317, 0.809, 0.35, 0.717, 0.317, 1.71, 0.35, 1.397 ]
}, },
{ {
"time": 0.3667, "time": 0.3667,
"x": 0.717, "x": 0.717,
"y": 1.397, "y": 1.397,
"curve": [ 0.383, 0.72, 0.417, 0.78, 0.383, 1.4, 0.417, 1.45 ] "curve": [ 0.383, 0.717, 0.417, 0.777, 0.383, 1.397, 0.417, 1.45 ]
}, },
{ {
"time": 0.4333, "time": 0.4333,
"x": 0.777, "x": 0.777,
"y": 1.45, "y": 1.45,
"curve": [ 0.45, 0.78, 0.496, 0.69, 0.45, 1.45, 0.481, 1.17 ] "curve": [ 0.45, 0.777, 0.496, 0.689, 0.45, 1.45, 0.481, 1.168 ]
}, },
{ {
"time": 0.5333, "time": 0.5333,
"x": 0.685, "x": 0.685,
"y": 1.173, "y": 1.173,
"curve": [ 0.565, 0.68, 0.617, 0.76, 0.575, 1.18, 0.617, 1.3 ] "curve": [ 0.565, 0.682, 0.617, 0.758, 0.575, 1.177, 0.617, 1.297 ]
}, },
{ {
"time": 0.6333, "time": 0.6333,
"x": 0.758, "x": 0.758,
"y": 1.297, "y": 1.297,
"curve": [ 0.658, 0.76, 0.708, 0.72, 0.658, 1.3, 0.708, 1.24 ] "curve": [ 0.658, 0.758, 0.708, 0.725, 0.658, 1.297, 0.708, 1.241 ]
}, },
{ {
"time": 0.7333, "time": 0.7333,
"x": 0.725, "x": 0.725,
"y": 1.241, "y": 1.241,
"curve": [ 0.772, 0.73, 0.796, 0.89, 0.782, 1.24, 0.778, 1.85 ] "curve": [ 0.772, 0.732, 0.796, 0.893, 0.782, 1.238, 0.778, 1.854 ]
}, },
{ {
"time": 0.8333, "time": 0.8333,
"x": 0.895, "x": 0.895,
"y": 1.857, "y": 1.857,
"curve": [ 0.878, 0.9, 0.992, 0.84, 0.88, 1.86, 0.992, 1.31 ] "curve": [ 0.878, 0.9, 0.992, 0.845, 0.88, 1.86, 0.992, 1.31 ]
}, },
{ "time": 1, "x": 0.845, "y": 1.31 } { "time": 1, "x": 0.845, "y": 1.31 }
] ]
@ -2900,49 +2916,49 @@
{ {
"x": 1.882, "x": 1.882,
"y": 0.81, "y": 0.81,
"curve": [ 0.017, 1.88, 0.167, 1.3, 0.017, 0.81, 0.167, 0.65 ] "curve": [ 0.017, 1.882, 0.167, 1.3, 0.017, 0.81, 0.167, 0.649 ]
}, },
{ {
"time": 0.2, "time": 0.2,
"x": 1.3, "x": 1.3,
"y": 0.649, "y": 0.649,
"curve": [ 0.225, 1.3, 0.275, 2.05, 0.225, 0.65, 0.275, 0.98 ] "curve": [ 0.225, 1.3, 0.275, 2.051, 0.225, 0.649, 0.275, 0.984 ]
}, },
{ {
"time": 0.3, "time": 0.3,
"x": 2.051, "x": 2.051,
"y": 0.984, "y": 0.984,
"curve": [ 0.325, 2.05, 0.375, 1.31, 0.325, 0.98, 0.384, 0.72 ] "curve": [ 0.325, 2.051, 0.375, 1.311, 0.325, 0.984, 0.384, 0.715 ]
}, },
{ {
"time": 0.4, "time": 0.4,
"x": 1.311, "x": 1.311,
"y": 0.686, "y": 0.686,
"curve": [ 0.433, 1.31, 0.5, 1.86, 0.426, 0.64, 0.5, 0.54 ] "curve": [ 0.433, 1.311, 0.5, 1.86, 0.426, 0.638, 0.5, 0.537 ]
}, },
{ {
"time": 0.5333, "time": 0.5333,
"x": 1.86, "x": 1.86,
"y": 0.537, "y": 0.537,
"curve": [ 0.567, 1.86, 0.633, 1.19, 0.567, 0.54, 0.604, 0.85 ] "curve": [ 0.567, 1.86, 0.633, 1.187, 0.567, 0.537, 0.604, 0.854 ]
}, },
{ {
"time": 0.6667, "time": 0.6667,
"x": 1.187, "x": 1.187,
"y": 0.854, "y": 0.854,
"curve": [ 0.7, 1.19, 0.767, 1.55, 0.707, 0.85, 0.774, 0.78 ] "curve": [ 0.7, 1.187, 0.767, 1.549, 0.707, 0.854, 0.774, 0.775 ]
}, },
{ {
"time": 0.8, "time": 0.8,
"x": 1.549, "x": 1.549,
"y": 0.746, "y": 0.746,
"curve": [ 0.817, 1.55, 0.85, 1.18, 0.815, 0.73, 0.85, 0.71 ] "curve": [ 0.817, 1.549, 0.85, 1.181, 0.815, 0.729, 0.85, 0.713 ]
}, },
{ {
"time": 0.8667, "time": 0.8667,
"x": 1.181, "x": 1.181,
"y": 0.713, "y": 0.713,
"curve": [ 0.9, 1.18, 0.967, 1.88, 0.9, 0.71, 0.967, 0.81 ] "curve": [ 0.9, 1.181, 0.967, 1.882, 0.9, 0.713, 0.967, 0.81 ]
}, },
{ "time": 1, "x": 1.882, "y": 0.81 } { "time": 1, "x": 1.882, "y": 0.81 }
] ]
@ -3458,13 +3474,13 @@
}, },
"transform": { "transform": {
"front-foot-board-transform": [ "front-foot-board-transform": [
{ "rotateMix": 0.997 } { "mixRotate": 0.997 }
], ],
"rear-foot-board-transform": [ "rear-foot-board-transform": [
{} {}
], ],
"toes-board": [ "toes-board": [
{ "translateMix": 0, "scaleMix": 0, "shearMix": 0 } { "mixX": 0, "mixScaleX": 0, "mixShearY": 0 }
] ]
}, },
"deform": { "deform": {
@ -4009,13 +4025,13 @@
"scale": [ "scale": [
{ {
"x": 0.94, "x": 0.94,
"curve": [ 0, 0.96, 0.024, 1.24, 0, 1, 0.026, 0.95 ] "curve": [ 0, 0.962, 0.024, 1.237, 0, 1, 0.026, 0.947 ]
}, },
{ {
"time": 0.0667, "time": 0.0667,
"x": 1.236, "x": 1.236,
"y": 0.947, "y": 0.947,
"curve": [ 0.117, 1.24, 0.189, 1, 0.117, 0.95, 0.189, 1 ] "curve": [ 0.117, 1.235, 0.189, 1, 0.117, 0.947, 0.189, 1 ]
}, },
{ "time": 0.2667 } { "time": 0.2667 }
] ]
@ -4578,31 +4594,31 @@
], ],
"scale": [ "scale": [
{ {
"curve": [ 0.041, 1, 0.052, 0.96, 0.041, 1, 0.052, 1.14 ] "curve": [ 0.041, 1, 0.052, 0.962, 0.041, 1, 0.052, 1.137 ]
}, },
{ {
"time": 0.1, "time": 0.1,
"x": 0.954, "x": 0.954,
"y": 1.137, "y": 1.137,
"curve": [ 0.202, 0.96, 0.318, 1, 0.202, 1.14, 0.252, 1 ] "curve": [ 0.202, 0.962, 0.318, 1, 0.202, 1.137, 0.252, 1.002 ]
}, },
{ "time": 0.4667 }, { "time": 0.4667 },
{ {
"time": 1.0667, "time": 1.0667,
"x": 1.002, "x": 1.002,
"curve": [ 1.092, 1, 1.126, 1.14, 1.092, 1, 1.128, 0.97 ] "curve": [ 1.092, 1.002, 1.126, 1.143, 1.092, 1, 1.128, 0.975 ]
}, },
{ {
"time": 1.1667, "time": 1.1667,
"x": 1.144, "x": 1.144,
"y": 0.973, "y": 0.973,
"curve": [ 1.204, 1.14, 1.233, 0.96, 1.206, 0.97, 1.227, 1.06 ] "curve": [ 1.204, 1.145, 1.233, 0.959, 1.206, 0.972, 1.227, 1.062 ]
}, },
{ {
"time": 1.2667, "time": 1.2667,
"x": 0.958, "x": 0.958,
"y": 1.063, "y": 1.063,
"curve": [ 1.284, 0.96, 1.292, 1, 1.288, 1.06, 1.288, 1 ] "curve": [ 1.284, 0.958, 1.292, 1.001, 1.288, 1.063, 1.288, 1.001 ]
}, },
{ "time": 1.3333 } { "time": 1.3333 }
] ]
@ -5323,55 +5339,55 @@
{ {
"x": 0.003, "x": 0.003,
"y": 0.006, "y": 0.006,
"curve": [ 0.329, 0.04, 0.347, 0.12, 0.329, 0.1, 0.37, 0.25 ] "curve": [ 0.329, 0.044, 0.347, 0.117, 0.329, 0.097, 0.37, 0.249 ]
}, },
{ {
"time": 0.4, "time": 0.4,
"x": 0.175, "x": 0.175,
"y": 0.387, "y": 0.387,
"curve": [ 0.63, 0.62, 0.663, 0.72, 0.609, 1.34, 0.645, 1.52 ] "curve": [ 0.63, 0.619, 0.663, 0.723, 0.609, 1.338, 0.645, 1.524 ]
}, },
{ {
"time": 0.7333, "time": 0.7333,
"x": 0.724, "x": 0.724,
"y": 1.52, "y": 1.52,
"curve": [ 0.798, 0.72, 0.907, 0.65, 0.797, 1.52, 0.895, 1.42 ] "curve": [ 0.798, 0.725, 0.907, 0.647, 0.797, 1.517, 0.895, 1.424 ]
}, },
{ {
"time": 1, "time": 1,
"x": 0.645, "x": 0.645,
"y": 1.426, "y": 1.426,
"curve": [ 1.095, 0.64, 1.139, 0.69, 1.089, 1.43, 1.115, 1.51 ] "curve": [ 1.095, 0.643, 1.139, 0.688, 1.089, 1.428, 1.115, 1.513 ]
}, },
{ {
"time": 1.2333, "time": 1.2333,
"x": 0.685, "x": 0.685,
"y": 1.516, "y": 1.516,
"curve": [ 1.325, 0.68, 1.508, 0.64, 1.343, 1.52, 1.467, 1.4 ] "curve": [ 1.325, 0.683, 1.508, 0.636, 1.343, 1.518, 1.467, 1.4 ]
}, },
{ {
"time": 1.6, "time": 1.6,
"x": 0.634, "x": 0.634,
"y": 1.401, "y": 1.401,
"curve": [ 1.728, 0.63, 1.946, 0.69, 1.722, 1.4, 1.924, 1.52 ] "curve": [ 1.728, 0.631, 1.946, 0.687, 1.722, 1.402, 1.924, 1.522 ]
}, },
{ {
"time": 2.0667, "time": 2.0667,
"x": 0.688, "x": 0.688,
"y": 1.522, "y": 1.522,
"curve": [ 2.189, 0.69, 2.289, 0.65, 2.142, 1.52, 2.265, 1.42 ] "curve": [ 2.189, 0.69, 2.289, 0.649, 2.142, 1.522, 2.265, 1.417 ]
}, },
{ {
"time": 2.4, "time": 2.4,
"x": 0.65, "x": 0.65,
"y": 1.426, "y": 1.426,
"curve": [ 2.494, 0.65, 2.504, 0.77, 2.508, 1.43, 2.543, 1.57 ] "curve": [ 2.494, 0.651, 2.504, 0.766, 2.508, 1.434, 2.543, 1.566 ]
}, },
{ {
"time": 2.6, "time": 2.6,
"x": 0.766, "x": 0.766,
"y": 1.568, "y": 1.568,
"curve": [ 2.73, 0.76, 3.006, 0.1, 2.767, 1.56, 2.997, 0.1 ] "curve": [ 2.73, 0.765, 3.006, 0.098, 2.767, 1.564, 2.997, 0.1 ]
}, },
{ "time": 3.0333, "x": 0.007, "y": 0.015 } { "time": 3.0333, "x": 0.007, "y": 0.015 }
] ]
@ -5420,19 +5436,19 @@
], ],
"scale": [ "scale": [
{ {
"curve": [ 0.167, 1, 0.5, 1.05, 0.167, 1, 0.5, 1.05 ] "curve": [ 0.167, 1, 0.5, 1.053, 0.167, 1, 0.5, 1.053 ]
}, },
{ {
"time": 0.6667, "time": 0.6667,
"x": 1.053, "x": 1.053,
"y": 1.053, "y": 1.053,
"curve": [ 0.833, 1.05, 1.167, 0.99, 0.833, 1.05, 1.167, 0.99 ] "curve": [ 0.833, 1.053, 1.167, 0.986, 0.833, 1.053, 1.167, 0.986 ]
}, },
{ {
"time": 1.3333, "time": 1.3333,
"x": 0.986, "x": 0.986,
"y": 0.986, "y": 0.986,
"curve": [ 1.5, 0.99, 1.833, 1.05, 1.5, 0.99, 1.833, 1.05 ] "curve": [ 1.5, 0.986, 1.833, 1.053, 1.5, 0.986, 1.833, 1.053 ]
}, },
{ "time": 2, "x": 1.053, "y": 1.053 } { "time": 2, "x": 1.053, "y": 1.053 }
] ]
@ -5451,25 +5467,25 @@
{ {
"x": 1.014, "x": 1.014,
"y": 1.014, "y": 1.014,
"curve": [ 0.229, 0.91, 0.501, 0.76, 0.242, 0.89, 0.502, 0.77 ] "curve": [ 0.229, 0.909, 0.501, 0.755, 0.242, 0.892, 0.502, 0.768 ]
}, },
{ {
"time": 0.8667, "time": 0.8667,
"x": 0.745, "x": 0.745,
"y": 0.745, "y": 0.745,
"curve": [ 1.282, 0.73, 2.021, 0.7, 1.27, 0.72, 2.071, 0.71 ] "curve": [ 1.282, 0.733, 2.021, 0.699, 1.27, 0.719, 2.071, 0.709 ]
}, },
{ {
"time": 2.2, "time": 2.2,
"x": 0.7, "x": 0.7,
"y": 0.704, "y": 0.704,
"curve": [ 2.315, 0.7, 2.421, 0.79, 2.311, 0.7, 2.485, 0.8 ] "curve": [ 2.315, 0.7, 2.421, 0.794, 2.311, 0.701, 2.485, 0.797 ]
}, },
{ {
"time": 2.5667, "time": 2.5667,
"x": 0.794, "x": 0.794,
"y": 0.794, "y": 0.794,
"curve": [ 2.734, 0.79, 2.99, 0.32, 2.714, 0.79, 3.019, 0.34 ] "curve": [ 2.734, 0.794, 2.99, 0.323, 2.714, 0.789, 3.019, 0.341 ]
}, },
{ "time": 3.1667, "x": 0, "y": 0 } { "time": 3.1667, "x": 0, "y": 0 }
] ]
@ -5759,19 +5775,19 @@
"scale": [ "scale": [
{ {
"time": 1.3333, "time": 1.3333,
"curve": [ 1.392, 1, 1.526, 1, 1.392, 1, 1.508, 1.04 ] "curve": [ 1.392, 1, 1.526, 1, 1.392, 1, 1.508, 1.043 ]
}, },
{ {
"time": 1.5667, "time": 1.5667,
"x": 0.992, "x": 0.992,
"y": 1.043, "y": 1.043,
"curve": [ 1.598, 0.99, 1.676, 0.95, 1.584, 1.04, 1.672, 1.04 ] "curve": [ 1.598, 0.985, 1.676, 0.955, 1.584, 1.043, 1.672, 1.04 ]
}, },
{ {
"time": 1.7333, "time": 1.7333,
"x": 0.954, "x": 0.954,
"y": 1.029, "y": 1.029,
"curve": [ 1.843, 0.95, 1.933, 1, 1.825, 1.01, 1.933, 1 ] "curve": [ 1.843, 0.954, 1.933, 1, 1.825, 1.013, 1.933, 1 ]
}, },
{ "time": 2 } { "time": 2 }
] ]
@ -6205,25 +6221,25 @@
"time": 1.1, "time": 1.1,
"x": 0.805, "x": 0.805,
"y": 0.805, "y": 0.805,
"curve": [ 1.119, 0.76, 1.16, 1.16, 1.117, 0.81, 1.15, 0.61 ] "curve": [ 1.119, 0.763, 1.16, 1.162, 1.117, 0.805, 1.15, 0.605 ]
}, },
{ {
"time": 1.1667, "time": 1.1667,
"x": 1.279, "x": 1.279,
"y": 0.605, "y": 0.605,
"curve": [ 1.177, 1.47, 1.192, 2.15, 1.175, 0.61, 1.192, 0.91 ] "curve": [ 1.177, 1.47, 1.192, 2.151, 1.175, 0.605, 1.192, 0.911 ]
}, },
{ {
"time": 1.2, "time": 1.2,
"x": 2.151, "x": 2.151,
"y": 0.911, "y": 0.911,
"curve": [ 1.208, 2.15, 1.231, 1.67, 1.208, 0.91, 1.227, 0.84 ] "curve": [ 1.208, 2.151, 1.231, 1.668, 1.208, 0.911, 1.227, 0.844 ]
}, },
{ {
"time": 1.2333, "time": 1.2333,
"x": 1.608, "x": 1.608,
"y": 0.805, "y": 0.805,
"curve": [ 1.249, 1.2, 1.283, 0.55, 1.254, 0.69, 1.283, 0.42 ] "curve": [ 1.249, 1.205, 1.283, 0.547, 1.254, 0.685, 1.283, 0.416 ]
}, },
{ "time": 1.3, "x": 0.547, "y": 0.416 } { "time": 1.3, "x": 0.547, "y": 0.416 }
], ],
@ -6819,35 +6835,35 @@
], ],
"scale": [ "scale": [
{ {
"curve": [ 0.014, 1, 0.068, 0.99, 0.027, 1.01, 0.083, 1.01 ] "curve": [ 0.014, 0.996, 0.068, 0.991, 0.027, 1.005, 0.083, 1.012 ]
}, },
{ {
"time": 0.1, "time": 0.1,
"x": 0.991, "x": 0.991,
"y": 1.012, "y": 1.012,
"curve": [ 0.128, 0.99, 0.205, 1.02, 0.128, 1.01, 0.197, 0.99 ] "curve": [ 0.128, 0.991, 0.205, 1.018, 0.128, 1.012, 0.197, 0.988 ]
}, },
{ {
"time": 0.2333, "time": 0.2333,
"x": 1.018, "x": 1.018,
"y": 0.988, "y": 0.988,
"curve": [ 0.272, 1.02, 0.305, 1.01, 0.262, 0.99, 0.311, 0.99 ] "curve": [ 0.272, 1.018, 0.305, 1.008, 0.262, 0.988, 0.311, 0.995 ]
}, },
{ {
"time": 0.3333, "time": 0.3333,
"curve": [ 0.351, 1, 0.417, 0.99, 0.359, 1.01, 0.417, 1.01 ] "curve": [ 0.351, 0.995, 0.417, 0.987, 0.359, 1.006, 0.417, 1.013 ]
}, },
{ {
"time": 0.4333, "time": 0.4333,
"x": 0.987, "x": 0.987,
"y": 1.013, "y": 1.013,
"curve": [ 0.467, 0.99, 0.533, 1.02, 0.467, 1.01, 0.533, 0.99 ] "curve": [ 0.467, 0.987, 0.533, 1.02, 0.467, 1.013, 0.533, 0.989 ]
}, },
{ {
"time": 0.5667, "time": 0.5667,
"x": 1.02, "x": 1.02,
"y": 0.989, "y": 0.989,
"curve": [ 0.592, 1.02, 0.652, 1, 0.592, 0.99, 0.644, 1 ] "curve": [ 0.592, 1.02, 0.652, 1.004, 0.592, 0.989, 0.644, 0.996 ]
}, },
{ "time": 0.6667 } { "time": 0.6667 }
] ]
@ -7518,7 +7534,7 @@
"scale": [ "scale": [
{ {
"x": 0.844, "x": 0.844,
"curve": [ 0.067, 0.84, 0.2, 1, 0.067, 1, 0.2, 1 ] "curve": [ 0.067, 0.844, 0.2, 1, 0.067, 1, 0.2, 1 ]
}, },
{ "time": 0.2667 } { "time": 0.2667 }
] ]
@ -7563,7 +7579,7 @@
{ {
"x": 0.963, "x": 0.963,
"y": 1.074, "y": 1.074,
"curve": [ 0.067, 0.96, 0.132, 1, 0.067, 1.07, 0.132, 1 ] "curve": [ 0.067, 0.963, 0.132, 1, 0.067, 1.074, 0.132, 1 ]
}, },
{ "time": 0.2667 } { "time": 0.2667 }
] ]
@ -7674,7 +7690,7 @@
"shoot": { "shoot": {
"slots": { "slots": {
"muzzle": { "muzzle": {
"color": [ "rgba": [
{ "time": 0.1333, "color": "ffffffff" }, { "time": 0.1333, "color": "ffffffff" },
{ "time": 0.2, "color": "ffffff62" } { "time": 0.2, "color": "ffffff62" }
], ],
@ -7688,7 +7704,7 @@
] ]
}, },
"muzzle-glow": { "muzzle-glow": {
"color": [ "rgba": [
{ "color": "ff0c0c00" }, { "color": "ff0c0c00" },
{ {
"time": 0.0333, "time": 0.0333,
@ -7703,7 +7719,7 @@
] ]
}, },
"muzzle-ring": { "muzzle-ring": {
"color": [ "rgba": [
{ {
"time": 0.0333, "time": 0.0333,
"color": "d8baffff", "color": "d8baffff",
@ -7717,7 +7733,7 @@
] ]
}, },
"muzzle-ring2": { "muzzle-ring2": {
"color": [ "rgba": [
{ {
"time": 0.0333, "time": 0.0333,
"color": "d8baffff", "color": "d8baffff",
@ -7731,7 +7747,7 @@
] ]
}, },
"muzzle-ring3": { "muzzle-ring3": {
"color": [ "rgba": [
{ {
"time": 0.0333, "time": 0.0333,
"color": "d8baffff", "color": "d8baffff",
@ -7745,7 +7761,7 @@
] ]
}, },
"muzzle-ring4": { "muzzle-ring4": {
"color": [ "rgba": [
{ {
"time": 0.0333, "time": 0.0333,
"color": "d8baffff", "color": "d8baffff",
@ -8143,35 +8159,35 @@
], ],
"scale": [ "scale": [
{ {
"curve": [ 0.039, 1, 0.084, 0.99, 0.039, 1, 0.084, 1.02 ] "curve": [ 0.039, 1, 0.084, 0.991, 0.039, 1, 0.084, 1.019 ]
}, },
{ {
"time": 0.1333, "time": 0.1333,
"x": 0.991, "x": 0.991,
"y": 1.019, "y": 1.019,
"curve": [ 0.205, 0.99, 0.318, 1.02, 0.205, 1.02, 0.337, 0.99 ] "curve": [ 0.205, 0.991, 0.318, 1.019, 0.205, 1.019, 0.337, 0.992 ]
}, },
{ {
"time": 0.4, "time": 0.4,
"x": 1.019, "x": 1.019,
"y": 0.992, "y": 0.992,
"curve": [ 0.456, 1.02, 0.494, 1, 0.483, 0.99, 0.493, 1 ] "curve": [ 0.456, 1.019, 0.494, 1.001, 0.483, 0.991, 0.493, 0.999 ]
}, },
{ {
"time": 0.5, "time": 0.5,
"curve": [ 0.508, 1, 0.584, 0.99, 0.51, 1, 0.584, 1.02 ] "curve": [ 0.508, 0.998, 0.584, 0.991, 0.51, 1.002, 0.584, 1.019 ]
}, },
{ {
"time": 0.6333, "time": 0.6333,
"x": 0.991, "x": 0.991,
"y": 1.019, "y": 1.019,
"curve": [ 0.705, 0.99, 0.818, 1.02, 0.705, 1.02, 0.837, 0.99 ] "curve": [ 0.705, 0.991, 0.818, 1.019, 0.705, 1.019, 0.837, 0.992 ]
}, },
{ {
"time": 0.9, "time": 0.9,
"x": 1.019, "x": 1.019,
"y": 0.992, "y": 0.992,
"curve": [ 0.956, 1.02, 0.955, 1, 0.983, 0.99, 0.955, 1 ] "curve": [ 0.956, 1.019, 0.955, 1, 0.983, 0.991, 0.955, 1 ]
}, },
{ "time": 1 } { "time": 1 }
] ]
@ -8563,11 +8579,6 @@
{ "time": 1 } { "time": 1 }
] ]
}, },
"crosshair": {
"rotate": [
{ "time": 0.2333, "value": 0.11 }
]
},
"gun-tip": { "gun-tip": {
"rotate": [ "rotate": [
{ "time": 0.2333, "value": 0.11 } { "time": 0.2333, "value": 0.11 }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 245 KiB

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 113 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 KiB

After

Width:  |  Height:  |  Size: 519 KiB

View File

@ -1,7 +1,7 @@
{ {
"skeleton": { "skeleton": {
"hash": "C8ZQzuFlwMI", "hash": "3P3VgYJ8Bxk",
"spine": "4.0.05-beta", "spine": "4.0.34-beta",
"x": -5852.65, "x": -5852.65,
"y": -348.5, "y": -348.5,
"width": 7202.61, "width": 7202.61,
@ -888,9 +888,11 @@
"bones": [ "wheel-big2" ], "bones": [ "wheel-big2" ],
"target": "wheel-big1", "target": "wheel-big1",
"rotation": 65.6, "rotation": 65.6,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "wheel-mid1-transform", "name": "wheel-mid1-transform",
@ -898,9 +900,11 @@
"bones": [ "wheel-mid2", "wheel-mid4" ], "bones": [ "wheel-mid2", "wheel-mid4" ],
"target": "wheel-mid1", "target": "wheel-mid1",
"rotation": 93, "rotation": 93,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "wheel-mid2-transform", "name": "wheel-mid2-transform",
@ -908,9 +912,11 @@
"bones": [ "wheel-mid3", "wheel-mid5" ], "bones": [ "wheel-mid3", "wheel-mid5" ],
"target": "wheel-mid1", "target": "wheel-mid1",
"rotation": -89, "rotation": -89,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "wheel-mid3-transform", "name": "wheel-mid3-transform",
@ -918,9 +924,11 @@
"bones": [ "wheel-mid6" ], "bones": [ "wheel-mid6" ],
"target": "wheel-mid1", "target": "wheel-mid1",
"rotation": -152.6, "rotation": -152.6,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "wheel-small1-transform", "name": "wheel-small1-transform",
@ -928,9 +936,11 @@
"bones": [ "wheel-small2" ], "bones": [ "wheel-small2" ],
"target": "wheel-small1", "target": "wheel-small1",
"rotation": 87, "rotation": 87,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
}, },
{ {
"name": "wheel-small2-transform", "name": "wheel-small2-transform",
@ -938,9 +948,11 @@
"bones": [ "wheel-small3" ], "bones": [ "wheel-small3" ],
"target": "wheel-small1", "target": "wheel-small1",
"rotation": 54.9, "rotation": 54.9,
"translateMix": 0, "mixX": 0,
"scaleMix": 0, "mixY": 0,
"shearMix": 0 "mixScaleX": 0,
"mixScaleY": 0,
"mixShearY": 0
} }
], ],
"path": [ "path": [
@ -3424,7 +3436,7 @@
] ]
}, },
"smoke-glow": { "smoke-glow": {
"color": [ "rgba": [
{ "time": 0.1333, "color": "ffffffff" }, { "time": 0.1333, "color": "ffffffff" },
{ "time": 0.1667, "color": "ffbc8af4" }, { "time": 0.1667, "color": "ffbc8af4" },
{ "time": 0.2, "color": "fc8e8e90" }, { "time": 0.2, "color": "fc8e8e90" },
@ -3436,7 +3448,7 @@
] ]
}, },
"smoke-puff1-bg": { "smoke-puff1-bg": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
@ -3447,7 +3459,7 @@
] ]
}, },
"smoke-puff1-bg2": { "smoke-puff1-bg2": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@ -3458,7 +3470,7 @@
] ]
}, },
"smoke-puff1-bg3": { "smoke-puff1-bg3": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@ -3469,7 +3481,7 @@
] ]
}, },
"smoke-puff1-bg4": { "smoke-puff1-bg4": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
@ -3480,7 +3492,7 @@
] ]
}, },
"smoke-puff1-bg5": { "smoke-puff1-bg5": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
@ -3491,7 +3503,7 @@
] ]
}, },
"smoke-puff1-bg6": { "smoke-puff1-bg6": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@ -3502,7 +3514,7 @@
] ]
}, },
"smoke-puff1-bg7": { "smoke-puff1-bg7": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@ -3513,7 +3525,7 @@
] ]
}, },
"smoke-puff1-bg8": { "smoke-puff1-bg8": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4333, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4333, "light": "ffd50cff", "dark": "604b3f" },
@ -3524,7 +3536,7 @@
] ]
}, },
"smoke-puff1-bg9": { "smoke-puff1-bg9": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.1333, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.5333, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.5333, "light": "ffd50cff", "dark": "604b3f" },
@ -3535,7 +3547,7 @@
] ]
}, },
"smoke-puff1-bg10": { "smoke-puff1-bg10": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.1333, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.5333, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.5333, "light": "ffd50cff", "dark": "604b3f" },
@ -3546,7 +3558,7 @@
] ]
}, },
"smoke-puff1-bg11": { "smoke-puff1-bg11": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.1333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
{ "time": 0.7667, "light": "ffd50c00", "dark": "604b3f" } { "time": 0.7667, "light": "ffd50c00", "dark": "604b3f" }
@ -3556,7 +3568,7 @@
] ]
}, },
"smoke-puff1-bg12": { "smoke-puff1-bg12": {
"twoColor": [ "rgba2": [
{ "time": 0.3333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
{ "time": 0.8667, "light": "ffd50c00", "dark": "604a3f" } { "time": 0.8667, "light": "ffd50c00", "dark": "604a3f" }
@ -3566,7 +3578,7 @@
] ]
}, },
"smoke-puff1-bg13": { "smoke-puff1-bg13": {
"twoColor": [ "rgba2": [
{ "time": 0.3667, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3667, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
{ "time": 1, "light": "ffd50c00", "dark": "604b3f" } { "time": 1, "light": "ffd50c00", "dark": "604b3f" }
@ -3576,7 +3588,7 @@
] ]
}, },
"smoke-puff1-bg14": { "smoke-puff1-bg14": {
"twoColor": [ "rgba2": [
{ "time": 0.4333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.4333, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
{ "time": 1.0667, "light": "ffd50c00", "dark": "604b3f" } { "time": 1.0667, "light": "ffd50c00", "dark": "604b3f" }
@ -3586,7 +3598,7 @@
] ]
}, },
"smoke-puff1-bg15": { "smoke-puff1-bg15": {
"twoColor": [ "rgba2": [
{ "time": 0.4, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.4, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
{ "time": 0.8333, "light": "ffd50c00", "dark": "604b3f" } { "time": 0.8333, "light": "ffd50c00", "dark": "604b3f" }
@ -3596,7 +3608,7 @@
] ]
}, },
"smoke-puff1-bg16": { "smoke-puff1-bg16": {
"twoColor": [ "rgba2": [
{ "time": 0.4, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.4, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
{ "time": 0.7, "light": "ffd50c00", "dark": "604b3f" } { "time": 0.7, "light": "ffd50c00", "dark": "604b3f" }
@ -3606,7 +3618,7 @@
] ]
}, },
"smoke-puff1-bg17": { "smoke-puff1-bg17": {
"twoColor": [ "rgba2": [
{ "time": 0.2333, "light": "ffd50cff", "dark": "534035" }, { "time": 0.2333, "light": "ffd50cff", "dark": "534035" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4, "light": "ffd50cff", "dark": "604b3f" },
@ -3617,7 +3629,7 @@
] ]
}, },
"smoke-puff1-bg18": { "smoke-puff1-bg18": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.5, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.5, "light": "ffd50cff", "dark": "604b3f" },
@ -3628,7 +3640,7 @@
] ]
}, },
"smoke-puff1-bg20": { "smoke-puff1-bg20": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@ -3639,7 +3651,7 @@
] ]
}, },
"smoke-puff1-bg21": { "smoke-puff1-bg21": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@ -3647,7 +3659,7 @@
] ]
}, },
"smoke-puff1-bg22": { "smoke-puff1-bg22": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
@ -3655,7 +3667,7 @@
] ]
}, },
"smoke-puff1-bg23": { "smoke-puff1-bg23": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" }, { "time": 0.0667, "light": "ffd50cff", "dark": "3b2c23" },
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.5, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.5, "light": "ffd50cff", "dark": "604b3f" },
@ -3666,7 +3678,7 @@
] ]
}, },
"smoke-puff1-bg24": { "smoke-puff1-bg24": {
"twoColor": [ "rgba2": [
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
{ "time": 0.7, "light": "ffd50c00", "dark": "604b3f" } { "time": 0.7, "light": "ffd50c00", "dark": "604b3f" }
@ -3676,7 +3688,7 @@
] ]
}, },
"smoke-puff1-bg25": { "smoke-puff1-bg25": {
"twoColor": [ "rgba2": [
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
{ "time": 1, "light": "ffd50c00", "dark": "604b3f" } { "time": 1, "light": "ffd50c00", "dark": "604b3f" }
@ -3686,7 +3698,7 @@
] ]
}, },
"smoke-puff1-bg26": { "smoke-puff1-bg26": {
"twoColor": [ "rgba2": [
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.6, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.6, "light": "ffd50cff", "dark": "604b3f" },
{ "time": 0.9333, "light": "ffd50c00", "dark": "604b3f" } { "time": 0.9333, "light": "ffd50c00", "dark": "604b3f" }
@ -3696,7 +3708,7 @@
] ]
}, },
"smoke-puff1-bg27": { "smoke-puff1-bg27": {
"twoColor": [ "rgba2": [
{ "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" }, { "time": 0.3, "light": "ffd50cff", "dark": "604b3f", "curve": "stepped" },
{ "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" }, { "time": 0.4667, "light": "ffd50cff", "dark": "604b3f" },
{ "time": 0.7333, "light": "ffd50c00", "dark": "604b3f" } { "time": 0.7333, "light": "ffd50c00", "dark": "604b3f" }
@ -3706,7 +3718,7 @@
] ]
}, },
"smoke-puff1-fg": { "smoke-puff1-fg": {
"twoColor": [ "rgba2": [
{ "time": 0.0667, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.0667, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1333, "light": "fde252ff", "dark": "ff0000" }, { "time": 0.1333, "light": "fde252ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
@ -3723,7 +3735,7 @@
] ]
}, },
"smoke-puff1-fg2": { "smoke-puff1-fg2": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3739,7 +3751,7 @@
] ]
}, },
"smoke-puff1-fg3": { "smoke-puff1-fg3": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffe457ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffe457ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3755,7 +3767,7 @@
] ]
}, },
"smoke-puff1-fg4": { "smoke-puff1-fg4": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "fae781ff", "dark": "ff0000" }, { "time": 0.1333, "light": "fae781ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3771,7 +3783,7 @@
] ]
}, },
"smoke-puff1-fg5": { "smoke-puff1-fg5": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3787,7 +3799,7 @@
] ]
}, },
"smoke-puff1-fg6": { "smoke-puff1-fg6": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3803,7 +3815,7 @@
] ]
}, },
"smoke-puff1-fg7": { "smoke-puff1-fg7": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3819,7 +3831,7 @@
] ]
}, },
"smoke-puff1-fg8": { "smoke-puff1-fg8": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3835,7 +3847,7 @@
] ]
}, },
"smoke-puff1-fg9": { "smoke-puff1-fg9": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3851,7 +3863,7 @@
] ]
}, },
"smoke-puff1-fg10": { "smoke-puff1-fg10": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "fce35dff", "dark": "ff0000" }, { "time": 0.1333, "light": "fce35dff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3867,7 +3879,7 @@
] ]
}, },
"smoke-puff1-fg11": { "smoke-puff1-fg11": {
"twoColor": [ "rgba2": [
{ "time": 0.3333, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.3333, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
{ "time": 0.7667, "light": "ab764c00", "dark": "ac8d75" } { "time": 0.7667, "light": "ab764c00", "dark": "ac8d75" }
@ -3877,7 +3889,7 @@
] ]
}, },
"smoke-puff1-fg12": { "smoke-puff1-fg12": {
"twoColor": [ "rgba2": [
{ "time": 0.3667, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.3667, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
{ "time": 0.8667, "light": "ac8c7500", "dark": "604a3f" } { "time": 0.8667, "light": "ac8c7500", "dark": "604a3f" }
@ -3887,7 +3899,7 @@
] ]
}, },
"smoke-puff1-fg13": { "smoke-puff1-fg13": {
"twoColor": [ "rgba2": [
{ "time": 0.3667, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.3667, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
{ "time": 1, "light": "ab764c00", "dark": "ac8d75" } { "time": 1, "light": "ab764c00", "dark": "ac8d75" }
@ -3897,7 +3909,7 @@
] ]
}, },
"smoke-puff1-fg14": { "smoke-puff1-fg14": {
"twoColor": [ "rgba2": [
{ "time": 0.4333, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.4333, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
{ "time": 1.0667, "light": "ab764c00", "dark": "ac8d75" } { "time": 1.0667, "light": "ab764c00", "dark": "ac8d75" }
@ -3907,7 +3919,7 @@
] ]
}, },
"smoke-puff1-fg15": { "smoke-puff1-fg15": {
"twoColor": [ "rgba2": [
{ "time": 0.4, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.4, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
{ "time": 0.8333, "light": "ab764c00", "dark": "ac8d75" } { "time": 0.8333, "light": "ab764c00", "dark": "ac8d75" }
@ -3917,7 +3929,7 @@
] ]
}, },
"smoke-puff1-fg16": { "smoke-puff1-fg16": {
"twoColor": [ "rgba2": [
{ "time": 0.4, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.4, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
{ "time": 0.7, "light": "ab764c00", "dark": "ac8d75" } { "time": 0.7, "light": "ab764c00", "dark": "ac8d75" }
@ -3927,7 +3939,7 @@
] ]
}, },
"smoke-puff1-fg17": { "smoke-puff1-fg17": {
"twoColor": [ "rgba2": [
{ "time": 0.2333, "light": "e3c05eff", "dark": "ab7e59" }, { "time": 0.2333, "light": "e3c05eff", "dark": "ab7e59" },
{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.4, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.4, "light": "ab764cff", "dark": "ac8d75" },
@ -3938,7 +3950,7 @@
] ]
}, },
"smoke-puff1-fg18": { "smoke-puff1-fg18": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3952,7 +3964,7 @@
] ]
}, },
"smoke-puff1-fg20": { "smoke-puff1-fg20": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3965,7 +3977,7 @@
] ]
}, },
"smoke-puff1-fg21": { "smoke-puff1-fg21": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3975,7 +3987,7 @@
] ]
}, },
"smoke-puff1-fg22": { "smoke-puff1-fg22": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3985,7 +3997,7 @@
] ]
}, },
"smoke-puff1-fg23": { "smoke-puff1-fg23": {
"twoColor": [ "rgba2": [
{ "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" }, { "time": 0.1333, "light": "ffdf31ff", "dark": "ff0000" },
{ "time": 0.1667, "light": "ffe568ff", "dark": "e26425" }, { "time": 0.1667, "light": "ffe568ff", "dark": "e26425" },
{ "time": 0.2, "light": "ffe568ff", "dark": "ab774c" }, { "time": 0.2, "light": "ffe568ff", "dark": "ab774c" },
@ -3998,7 +4010,7 @@
] ]
}, },
"smoke-puff1-fg24": { "smoke-puff1-fg24": {
"twoColor": [ "rgba2": [
{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
{ "time": 0.7, "light": "ab764c00", "dark": "ac8d75" } { "time": 0.7, "light": "ab764c00", "dark": "ac8d75" }
@ -4008,7 +4020,7 @@
] ]
}, },
"smoke-puff1-fg25": { "smoke-puff1-fg25": {
"twoColor": [ "rgba2": [
{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
{ "time": 1, "light": "ab764c00", "dark": "ac8d75" } { "time": 1, "light": "ab764c00", "dark": "ac8d75" }
@ -4018,7 +4030,7 @@
] ]
}, },
"smoke-puff1-fg26": { "smoke-puff1-fg26": {
"twoColor": [ "rgba2": [
{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.6, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.6, "light": "ab764cff", "dark": "ac8d75" },
{ "time": 0.9333, "light": "ab764c00", "dark": "ac8d75" } { "time": 0.9333, "light": "ab764c00", "dark": "ac8d75" }
@ -4028,7 +4040,7 @@
] ]
}, },
"smoke-puff1-fg27": { "smoke-puff1-fg27": {
"twoColor": [ "rgba2": [
{ "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" }, { "time": 0.3, "light": "ab764cff", "dark": "ac8d75", "curve": "stepped" },
{ "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" }, { "time": 0.4667, "light": "ab764cff", "dark": "ac8d75" },
{ "time": 0.7333, "light": "ab764c00", "dark": "ac8d75" } { "time": 0.7333, "light": "ab764c00", "dark": "ac8d75" }
@ -4038,7 +4050,7 @@
] ]
}, },
"tank-glow": { "tank-glow": {
"color": [ "rgba": [
{ "time": 0.0667, "color": "fc994d84" }, { "time": 0.0667, "color": "fc994d84" },
{ {
"time": 0.1333, "time": 0.1333,
@ -4864,7 +4876,7 @@
"time": 0.1333, "time": 0.1333,
"x": 1.185, "x": 1.185,
"y": 0.945, "y": 0.945,
"curve": [ 0.199, 1.18, 0.222, 1.05, 0.199, 0.94, 0.222, 0.58 ] "curve": [ 0.199, 1.182, 0.222, 1.048, 0.199, 0.939, 0.222, 0.579 ]
}, },
{ "time": 0.2333, "x": 1.008, "y": 0.471 } { "time": 0.2333, "x": 1.008, "y": 0.471 }
] ]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 135 KiB

View File

@ -1,7 +1,7 @@
{ {
"skeleton": { "skeleton": {
"hash": "xgpkAVpHzus", "hash": "mROo4Xkf3Fs",
"spine": "4.0.05-beta", "spine": "4.0.34-beta",
"x": -87.7, "x": -87.7,
"y": -1.71, "y": -1.71,
"width": 227.65, "width": 227.65,
@ -176,7 +176,7 @@
"grow": { "grow": {
"slots": { "slots": {
"vine": { "vine": {
"color": [ "rgba": [
{ {
"color": "ffcb73ff", "color": "ffcb73ff",
"curve": [ 2.592, 1, 7.775, 1, 2.592, 0.8, 7.775, 0.98, 2.592, 0.45, 7.775, 1, 2.592, 1, 7.775, 1 ] "curve": [ 2.592, 1, 7.775, 1, 2.592, 0.8, 7.775, 0.98, 2.592, 0.45, 7.775, 1, 2.592, 1, 7.775, 1 ]
@ -191,13 +191,13 @@
{ {
"x": 0, "x": 0,
"y": 0.183, "y": 0.183,
"curve": [ 0.978, 0.7, 1.776, 1.01, 0.978, 0.71, 1.776, 0.94 ] "curve": [ 0.978, 0.698, 1.776, 1.011, 0.978, 0.708, 1.776, 0.944 ]
}, },
{ {
"time": 3.2333, "time": 3.2333,
"x": 1.218, "x": 1.218,
"y": 1.1, "y": 1.1,
"curve": [ 7.182, 1.16, 9.04, 1.12, 7.182, 1.18, 9.04, 1.26 ] "curve": [ 7.182, 1.164, 9.04, 1.116, 7.182, 1.184, 9.04, 1.259 ]
}, },
{ "time": 11.4333, "y": 1.439 } { "time": 11.4333, "y": 1.439 }
] ]
@ -227,16 +227,16 @@
], ],
"scale": [ "scale": [
{ {
"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.79 ] "curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.792 ]
}, },
{ {
"time": 4.3333, "time": 4.3333,
"y": 0.792, "y": 0.792,
"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.79, 6.783, 1 ] "curve": [ 5.15, 1, 6.783, 1, 5.15, 0.792, 6.783, 1 ]
}, },
{ {
"time": 7.6, "time": 7.6,
"curve": [ 8.558, 1, 9.781, 1, 8.558, 1, 9.781, 0.64 ] "curve": [ 8.558, 1, 9.781, 1, 8.558, 1, 9.781, 0.638 ]
}, },
{ "time": 11.4333, "y": 0.636 } { "time": 11.4333, "y": 0.636 }
] ]
@ -261,16 +261,16 @@
], ],
"scale": [ "scale": [
{ {
"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.79 ] "curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.792 ]
}, },
{ {
"time": 4.3333, "time": 4.3333,
"y": 0.792, "y": 0.792,
"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.79, 6.783, 1 ] "curve": [ 5.15, 1, 6.783, 1, 5.15, 0.792, 6.783, 1 ]
}, },
{ {
"time": 7.6, "time": 7.6,
"curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.92 ] "curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.924 ]
}, },
{ "time": 11.4333, "y": 0.924 } { "time": 11.4333, "y": 0.924 }
] ]
@ -299,16 +299,16 @@
], ],
"scale": [ "scale": [
{ {
"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.79 ] "curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.792 ]
}, },
{ {
"time": 4.3333, "time": 4.3333,
"y": 0.792, "y": 0.792,
"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.79, 6.783, 1 ] "curve": [ 5.15, 1, 6.783, 1, 5.15, 0.792, 6.783, 1 ]
}, },
{ {
"time": 7.6, "time": 7.6,
"curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.92 ] "curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.924 ]
}, },
{ "time": 11.4333, "y": 0.924 } { "time": 11.4333, "y": 0.924 }
] ]
@ -337,16 +337,16 @@
], ],
"scale": [ "scale": [
{ {
"curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.79 ] "curve": [ 1.083, 1, 3.25, 1, 1.083, 1, 3.25, 0.792 ]
}, },
{ {
"time": 4.3333, "time": 4.3333,
"y": 0.792, "y": 0.792,
"curve": [ 5.15, 1, 6.783, 1, 5.15, 0.79, 6.783, 1 ] "curve": [ 5.15, 1, 6.783, 1, 5.15, 0.792, 6.783, 1 ]
}, },
{ {
"time": 7.6, "time": 7.6,
"curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.92 ] "curve": [ 8.558, 1, 10.475, 1, 8.558, 1, 10.475, 0.924 ]
}, },
{ "time": 11.4333, "y": 0.924 } { "time": 11.4333, "y": 0.924 }
] ]

View File

@ -50,8 +50,8 @@ function load() {
var atlasLoader = new spine.AtlasAttachmentLoader(atlas); var atlasLoader = new spine.AtlasAttachmentLoader(atlas);
var skeletonBinary = new spine.SkeletonBinary(atlasLoader); var skeletonBinary = new spine.SkeletonBinary(atlasLoader);
skeletonBinary.scale = SCALE; skeletonBinary.scale = SCALE;
var skeletonJson = new spine.SkeletonJson(atlasLoader); // var skeletonJson = new spine.SkeletonJson(atlasLoader);
skeletonJson.scale = SCALE; // skeletonJson.scale = SCALE;
var skeletonData = null; var skeletonData = null;
var skeletonJsonData = null; var skeletonJsonData = null;