export interface BoneJson { name : string ; length ? : number ; x ? : number ; y ? : number ; rotation ? : number ; shearX ? : number ; shearY ? : number ; scaleX ? : number ; scaleY ? : number ; parent ? : string ; } export interface SlotJson { name : string ; bone ? : string ; attachment ? : string ; } export interface AnimationKeyFrameJson { time ? : number ; curve ? : string ; c2 ? : number ; c3 ? : number ; c4 ? : number ; cacheSamples ? : Array < number > ; } export interface AnimationBoneKeyFrameJson extends AnimationKeyFrameJson { angle ? : number ; x ? : number ; y ? : number ; } export interface AnimationDeformFrameJson extends AnimationKeyFrameJson { vertices ? : Array < number > ; offset ? : number ; } export interface AnimationAttachmentKeyFrameJson extends AnimationKeyFrameJson { name ? : string ; } export interface AnimationBoneJson { rotate ? : Array < AnimationBoneKeyFrameJson > ; scale ? : Array < AnimationBoneKeyFrameJson > ; translate ? : Array < AnimationBoneKeyFrameJson > ; shear ? : Array < AnimationBoneKeyFrameJson > ; } export interface AnimationSlotJson { attachment ? : Array < AnimationAttachmentKeyFrameJson > ; } export interface AnimationJson { bones ? : { [ k ] : AnimationBoneJson ; } ; slots ? : { [ k ] : AnimationSlotJson ; } ; deform ? : { [ k ] : { [ k ] : { [ k ] : Array < AnimationDeformFrameJson > ; } ; } ; } ; } export interface AttachmentJson { x ? : number ; y ? : number ; width ? : number ; height ? : number ; type ? : string ; name ? : string ; scaleX ? : number ; scaleY ? : number ; rotation ? : number ; uvs ? : Array < number > ; triangles ? : Array < number > ; vertices ? : Array < number > ; hull ? : number ; edges : Array < number > ; } export interface SkinJson { name : string ; attachments : { [ k ] : { [ k ] : AttachmentJson ; } ; } ; } export interface SpineJson { bones : Array < BoneJson > ; slots : Array < SlotJson > ; animations : { [ k ] : AnimationJson ; } ; skins : Array < SkinJson > ; } export default class SpineData { public json : SpineJson ; public setJson ( json ) { this . json = json ; } public getAnimationData ( animationName ) { return this . json . animations [ animationName ] ; } public getAnimationList ( ) { let list = [ ] ; for ( let k in this . json . animations ) { list . push ( k ) ; } return list ; } }