Spine 3.7, 3.8, 4.0 implementation for PixiJS v5 & v6.
Typescript definitions are up-to-date with PixiJS v6.
For spine < 3.7 support is limited, but accepting PR's for runtime-3.7
package.
For previous versions of pixi & typescript definitions - please refer to README in pixi5
Demos:
https://pixijs.io/examples/#/plugin-spine/spineboy-pro.js
https://pixijs.io/examples/#/plugin-projection/runner.js
https://sbfkcel.github.io/pixi-spine-debug/
Please read this carefully: there are three ways to add this lib to your app.
- Angular, React, Webpack, Rollup - if you know those words, use ES6 bundles
- Good old
<script src="pixi-spine.umd.js">
, also named vanilla JS - Custom bundle, for guys who really want to shake da tree
import * as PIXI from 'pixi.js';
import {Spine} from 'pixi-spine';
const app = new PIXI.Application();
document.body.appendChild(app.view);
app.loader
.add('spineCharacter', 'spine-data-1/HERO.json')
.load(function (loader, resources) {
const animation = new Spine(resources.spineCharacter.spineData);
// add the animation to the scene and render...
app.stage.addChild(animation);
if (animation.state.hasAnimation('run')) {
// run forever, little boy!
animation.state.setAnimation(0, 'run', true);
// dont run too fast
animation.state.timeScale = 0.1;
}
app.start();
});
Alternatively, you may use @pixi-spine/all-3.8
package.
Classes like AttachmentType
, TextureAtlas
, TextureRegion
and Utils
are shared across all spine versions, and re-exported by all bundles. But if you want to see them directly, they are in @pixi-spine-base
.
Base also contains unified interfaces, ISkeleton
, ISkeletonData
, IAnimationData
and so on, see ISkeleton.ts
file.
Most of classes are spine-version-dependant, including Skeleton
, SkeletonData
, they are stored in corresponding packages @pixi-spine/runtime-3.8
and so on.
All pixiJS v6 plugins has special umd
build suited for vanilla.
Navigate pixi-spine
npm package, take dist/pixi-spine.umd.js
file.
Alternatively, you can look in @pixi-spine/all-3.8
npm package.
<script src='lib/pixi.js'></script>
<script src='lib/pixi-spine.umd.js'></script>
const animation = new PIXI.spine.Spine(resources.spineCharacter.spineData);
Unfortunately, there are no typescript definitions for vanilla build on both pixi
v6 and pixi-spine
Main bundle pixi-spine
weights more than 1 MB.
Bundle @pixi-spine/all-3.8
weights about 400 KB.
If you want to use different version (3.7, 4.0) please look how modules loader-3.8
and pixi-spine-3.8
are made.
Basically, you have to copy its code in a separate file in your project, and alter imports to corresonding version.
For example, here's bundle for 3.8:
import {SpineParser} from '@pixi-spine/loader-3.8';
export {SpineParser};
export * from '@pixi-spine/runtime-3.8';
export * from '@pixi-spine/base';
SpineParser.registerLoaderPlugin();
In case author was too lazy to publishloader-3.7
or loader-4.0
, you can do the same trick with them, just look in sources of loader-3.8
.
Read our docs.
Light-dark tint is supported with help of pixi-heaven Currently supported only by UMD build.
let spine = new PIXI.heaven.Spine(spineData);
To show bones and bounds you can use pixi-spine-debug. If you want to write your own debug plugin, look at how this one was created
Demo: https://sbfkcel.github.io/pixi-spine-debug/
You will need to have node setup on your machine.
Make sure you have rush installed:
npm install -g @microsoft/rush
Then you can install dependencies and build:
npm run prepare
npm run build
That will output the built all modules. UMD can be found in ./bundles/pixi-spine/dist
.
If you use IntellIJ Idea / Webstorm to navigate the project, take this line and set it in project settings / exclude files
packages/*/node_modules;packages/*/compile;bundles/*/node_modules;bundles/*/compile;lib;dist