UNPKG

@pixi-spine/loader-uni

Version:

Pixi integration with EsotericSoftware Spine, big, contains all runtimes

1 lines 9.1 kB
{"version":3,"file":"loader-uni.mjs","sources":["../src/versions.ts","../src/SpineLoader.ts","../src/Spine.ts","../src/index.ts"],"sourcesContent":["/**\n * @public\n */\nexport enum SPINE_VERSION {\n UNKNOWN = 0,\n VER37 = 37,\n VER38 = 38,\n VER40 = 40,\n VER41 = 41,\n}\n\n/**\n * @public\n */\nexport function detectSpineVersion(version: string): SPINE_VERSION {\n const ver3 = version.substr(0, 3);\n const verNum = Math.floor(Number(ver3) * 10 + 1e-3);\n\n if (ver3 === '3.7') {\n return SPINE_VERSION.VER37;\n }\n if (ver3 === '3.8') {\n return SPINE_VERSION.VER38;\n }\n if (ver3 === '4.0') {\n return SPINE_VERSION.VER40;\n }\n if (ver3 === '4.1') {\n return SPINE_VERSION.VER41;\n }\n // try parse old versions with 3.7\n if (verNum < SPINE_VERSION.VER37) {\n return SPINE_VERSION.VER37;\n }\n\n return SPINE_VERSION.UNKNOWN;\n}\n","import { ISpineResource, SpineLoaderAbstract } from '@pixi-spine/loader-base';\nimport { BinaryInput, ISkeletonData, ISkeletonParser, TextureAtlas } from '@pixi-spine/base';\nimport * as spine38 from '@pixi-spine/runtime-3.8';\nimport * as spine37 from '@pixi-spine/runtime-3.7';\nimport * as spine41 from '@pixi-spine/runtime-4.1';\nimport { detectSpineVersion, SPINE_VERSION } from './versions';\n\nclass UniBinaryParser implements ISkeletonParser {\n scale = 1;\n\n readSkeletonData(atlas: TextureAtlas, dataToParse: Uint8Array): ISkeletonData {\n let parser: any = null;\n let version = this.readVersionOldFormat(dataToParse);\n let ver = detectSpineVersion(version);\n\n if (ver === SPINE_VERSION.VER38) {\n parser = new spine38.SkeletonBinary(new spine38.AtlasAttachmentLoader(atlas));\n }\n version = this.readVersionNewFormat(dataToParse);\n ver = detectSpineVersion(version);\n if (ver === SPINE_VERSION.VER40 || ver === SPINE_VERSION.VER41) {\n parser = new spine41.SkeletonBinary(new spine41.AtlasAttachmentLoader(atlas));\n }\n if (!parser) {\n const error = `Unsupported version of spine model ${version}, please update pixi-spine`;\n\n console.error(error);\n }\n\n parser.scale = this.scale;\n\n return parser.readSkeletonData(dataToParse);\n }\n\n readVersionOldFormat(dataToParse: Uint8Array) {\n const input = new BinaryInput(dataToParse);\n let version;\n\n try {\n input.readString();\n version = input.readString();\n } catch (e) {\n version = '';\n }\n\n return version || '';\n }\n\n readVersionNewFormat(dataToParse: Uint8Array) {\n const input = new BinaryInput(dataToParse);\n\n input.readInt32();\n input.readInt32();\n let version;\n\n try {\n version = input.readString();\n } catch (e) {\n version = '';\n }\n\n return version || '';\n }\n}\n\nclass UniJsonParser implements ISkeletonParser {\n scale = 1;\n\n readSkeletonData(atlas: TextureAtlas, dataToParse: any): ISkeletonData {\n const version = dataToParse.skeleton.spine;\n const ver = detectSpineVersion(version);\n let parser: any = null;\n\n if (ver === SPINE_VERSION.VER37) {\n parser = new spine37.SkeletonJson(new spine37.AtlasAttachmentLoader(atlas));\n }\n if (ver === SPINE_VERSION.VER38) {\n parser = new spine38.SkeletonJson(new spine38.AtlasAttachmentLoader(atlas));\n }\n if (ver === SPINE_VERSION.VER40 || ver === SPINE_VERSION.VER41) {\n parser = new spine41.SkeletonJson(new spine41.AtlasAttachmentLoader(atlas));\n }\n if (!parser) {\n const error = `Unsupported version of spine model ${version}, please update pixi-spine`;\n\n console.error(error);\n }\n\n parser.scale = this.scale;\n\n return parser.readSkeletonData(dataToParse);\n }\n}\n\n/**\n * @public\n */\nexport class SpineLoader extends SpineLoaderAbstract<ISkeletonData> {\n createBinaryParser(): ISkeletonParser {\n return new UniBinaryParser();\n }\n\n createJsonParser(): ISkeletonParser {\n return new UniJsonParser();\n }\n\n parseData(parser: ISkeletonParser, atlas: TextureAtlas, dataToParse: any): ISpineResource<ISkeletonData> {\n const parserCast = parser as UniBinaryParser | UniJsonParser;\n\n return {\n spineData: parserCast.readSkeletonData(atlas, dataToParse),\n spineAtlas: atlas,\n };\n }\n}\n","import { IAnimationState, IAnimationStateData, ISkeleton, ISkeletonData, SpineBase } from '@pixi-spine/base';\nimport * as spine38 from '@pixi-spine/runtime-3.8';\nimport * as spine37 from '@pixi-spine/runtime-3.7';\nimport * as spine41 from '@pixi-spine/runtime-4.1';\nimport { detectSpineVersion, SPINE_VERSION } from './versions';\n\n/**\n * @public\n */\nexport class Spine extends SpineBase<ISkeleton, ISkeletonData, IAnimationState, IAnimationStateData> {\n createSkeleton(spineData: ISkeletonData) {\n const ver = detectSpineVersion(spineData.version);\n let spine: any = null;\n\n if (ver === SPINE_VERSION.VER37) {\n spine = spine37;\n }\n if (ver === SPINE_VERSION.VER38) {\n spine = spine38;\n }\n if (ver === SPINE_VERSION.VER40 || ver === SPINE_VERSION.VER41) {\n spine = spine41;\n }\n if (!spine) {\n const error = `Cant detect version of spine model ${spineData.version}`;\n\n console.error(error);\n }\n this.skeleton = new spine.Skeleton(spineData);\n this.skeleton.updateWorldTransform();\n this.stateData = new spine.AnimationStateData(spineData);\n this.state = new spine.AnimationState(this.stateData);\n }\n}\n","/* eslint-disable spaced-comment */\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"../global.d.ts\" />\nimport '@pixi-spine/loader-base'; // Side effect install atlas loader\nimport { SpineLoader } from './SpineLoader';\nexport * from './Spine';\nexport * from './versions';\n\n// Install the loader\nnew SpineLoader().installLoader();\n"],"names":["SPINE_VERSION","r","detectSpineVersion","version","ver3","verNum","UniBinaryParser","atlas","dataToParse","parser","ver","spine38","spine41","error","input","BinaryInput","e","UniJsonParser","spine37","SpineLoader","SpineLoaderAbstract","Spine","SpineBase","spineData","spine"],"mappings":"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"}