@melonjs/spine-plugin 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.1.0
4
+
5
+ ### Added
6
+ - Tiled integration: Spine objects can now be placed directly in Tiled maps — set the object class to "Spine" and add `atlasFile`/`jsonFile` custom properties. The plugin registers a Tiled object class on initialization via `registerTiledObjectClass("Spine", Spine)`
7
+
8
+ ### Changed
9
+ - minimum melonJS version is now 18.3.0 — required for the Tiled object factory registry that enables placing Spine objects directly in Tiled maps
10
+
11
+ ### Fixed
12
+ - Auto-detect `premultipliedAlpha` from atlas pages and set it on the SkeletonRenderer, fixing incorrect blending for PMA textures (e.g. Cloud Pot)
13
+
14
+ ## 2.0.1
15
+
16
+ ### Changed
17
+ - minimum melonJS version is now 18.2.1 (loading screen race condition fix)
18
+
3
19
  ## 2.0.0
4
20
 
5
21
  ### Changed
package/README.md CHANGED
@@ -30,7 +30,7 @@ A [Spine](http://en.esotericsoftware.com/spine-in-depth) 4.2 runtime integration
30
30
  ## Installation
31
31
  -------------------------------------------------------------------------------
32
32
  This plugin is already bundled with the required Spine [4.x runtime](package.json#dependencies), so there is no need to install it separately.
33
- >Note: this plugin requires melonJS version 18.2.0 or higher.
33
+ >Note: this plugin requires melonJS version 18.3.0 or higher.
34
34
 
35
35
  To install the plugin using npm:
36
36
 
@@ -58,8 +58,14 @@ const DataManifest = [
58
58
  },
59
59
  ];
60
60
 
61
+ // create a new Application
62
+ const app = new me.Application(800, 600, {
63
+ parent: "screen",
64
+ renderer: me.video.AUTO,
65
+ });
66
+
61
67
  // preload assets
62
- me.loader.preload(DataManifest, async function() {
68
+ me.loader.preload(DataManifest, function() {
63
69
 
64
70
  // create a new Spine Renderable
65
71
  let spineAlien = new Spine(100, 100, {atlasFile: "alien.atlas", jsonFile: "alien-ess.json"});
@@ -68,9 +74,9 @@ me.loader.preload(DataManifest, async function() {
68
74
  spineAlien.setAnimation(0, "death", true);
69
75
 
70
76
  // add it to the game world
71
- me.game.world.addChild(spineAlien);
77
+ app.world.addChild(spineAlien);
72
78
 
73
- }
79
+ });
74
80
  ```
75
81
  >Note: use "spine" as a value for the `type` property to indicate which assets are actual Spine assets and to be loaded using the plugin
76
82
 
@@ -119,7 +125,9 @@ me.loader.preload(DataManifest, async function() {
119
125
 
120
126
  | @melonjs/spine-plugin | melonJS | spine-runtime |
121
127
  |---|---|---|
122
- | v2.0.x | v18.2.x (or higher) | v4.2.x |
128
+ | v2.1.0 | v18.3.0 (or higher) | v4.2.x |
129
+ | v2.0.1 | v18.2.1 (or higher) | v4.2.x |
130
+ | v2.0.0 | v18.2.0 | v4.2.x |
123
131
  | v1.5.x | v15.12.x — v18.0.x | v4.1, v4.2-beta |
124
132
 
125
133
  ## Questions, need help ?
package/build/Spine.d.ts CHANGED
@@ -115,6 +115,7 @@ export default class Spine extends Renderable {
115
115
  * me.game.world.addChild(spineAlien);
116
116
  */
117
117
  setSkeleton(atlasFile: string, jsonFile: string): void;
118
+ premultipliedAlpha: any;
118
119
  /**
119
120
  * Flip the Spine skeleton on the horizontal axis (around its center).
120
121
  * @param {boolean} [flip=true] - `true` to flip this Spine object.
@@ -1 +1 @@
1
- {"version":3,"file":"Spine.d.ts","sourceRoot":"","sources":["../src/Spine.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH;IAmCC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,eApCW,MAAM,KACN,MAAM,YAEd;QAA0B,SAAS;QACT,QAAQ;QACR,OAAO;KACjC,EA+FF;IAxID,gDAAQ;IACR,cAAS;IACT,0BAAO;IACP,qCAAS;IACT,oBAAe;IACf,iEAAiB;IACjB,UAAK;IACL,gCAAW;IACX,8BAAS;IACT;;;MAGE;IAEF;;;;;;;;;;;;;;;;;OAiBG;IACH,cAhBU,UAAU,CAgBP;IAqDX,QAA0B;IAC1B,YAA+C;IAC/C,gDAA4B;IAC5B,kCAAwB;IASxB,kBAAuD;IASvD,4CAA+D;IAC/D,6CAAyD;IACzD,oEAEC;IAmBF,gBAAsC;IAGrC,6BAAiC;IACjC,8BAAmC;IAcrC,0BANU,OAAO,EAQhB;IAXD;;;;OAIG;IACH,sBAFU,OAAO,CAIhB;IAMD;;;;;;;;;;;;;;;;;OAiBG;IACH,uBAfW,MAAM,YACN,MAAM,QA2DhB;IAED;;;;OAIG;IACH,aAHW,OAAO,GACL,KAAK,CASjB;IAED;;;;OAIG;IACH,aAHW,OAAO,GACL,KAAK,CASjB;IAED;;;;;OAKG;IACH,cAJW,MAAM,MACN,QAAQ,GAAC,kBAAkB,GACzB,KAAK,CAWjB;IAED;;;;;OAKG;IACH,SAJW,MAAM,MACN,MAAM,GACJ,KAAK,CAMjB;IAED;;;;;OAKG;IACH,wBAHW,OAAO,GACL,MAAM,CA6ClB;IAgCD;;;;;;OAMG;IACH,eAFW,cAAc,GAAC,aAAa,QAoCtC;IAED;;;OAGG;IACH,gBAMC;IAWD;;;;;;OAMG;IACH,gCALW,MAAM,SACN,MAAM,SACN,OAAO,GACL,UAAU,CAYtB;IAED;;;;;;;;;OASG;IACH,yBARW,MAAM,QACN,MAAM,SACN,OAAO,GACL,UAAU,CAYtB;IAED;;;;;;;;OAQG;IACH,yBAPW,MAAM,GACJ,OAAO,CAWnB;IAED;;;;;;;OAOG;IACH,gCANW,MAAM,SACN,MAAM,SACN,OAAO,UACP,MAAM,GACJ,UAAU,CAatB;IAED;;;;;;;OAOG;IACH,yBANW,MAAM,QACN,MAAM,SACN,OAAO,UACP,MAAM,GACJ,UAAU,CAItB;IAED;;;OAGG;IACH,2BAFW,MAAM,QAIhB;IAED;;;;;OAKG;IACH,qCAJW,MAAM,mBACN,MAAM,WACN,MAAM,QAIhB;IAED;;;;;;;;;;;;;;;OAeG;IACH,wBAdW,MAAM,QAgBhB;IAED;;;;;;;OAOG;IACH,8BANW,MAAM,gBACH,MAAM,EAAA,QAkBnB;IAED;;;;;OAKG;IACH,8BAJW,MAAM,gBACN,MAAM,GACJ,UAAU,CAItB;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,IAAI,GAAC,IAAI,CAIrB;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,IAAI,GAAC,IAAI,CAIrB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,+BAhBG;QAA4B,KAAK;QACL,SAAS;QACT,GAAG;QACH,OAAO;QACP,QAAQ;QACR,KAAK;KACjC,QAYF;IAED;;;OAGG;IACH,kCAFW,MAAM,QAIhB;IAED;;;OAGG;IACH,qBAFa,MAAM,EAAE,CAMpB;IAED;;;OAGG;IACH,gBAFa,MAAM,EAAE,CAMpB;IAED;;OAEG;IACH,uBAYC;CACD;2BAnqBwC,SAAS;4BADtB,+BAA+B;6BAF9B,gCAAgC;uBAGpB,SAAS;6BACrB,uBAAuB"}
1
+ {"version":3,"file":"Spine.d.ts","sourceRoot":"","sources":["../src/Spine.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH;IAmCC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,eApCW,MAAM,KACN,MAAM,YAEd;QAA0B,SAAS;QACT,QAAQ;QACR,OAAO;KACjC,EA+FF;IAxID,gDAAQ;IACR,cAAS;IACT,0BAAO;IACP,qCAAS;IACT,oBAAe;IACf,iEAAiB;IACjB,UAAK;IACL,gCAAW;IACX,8BAAS;IACT;;;MAGE;IAEF;;;;;;;;;;;;;;;;;OAiBG;IACH,cAhBU,UAAU,CAgBP;IAqDX,QAA0B;IAC1B,YAA+C;IAC/C,gDAA4B;IAC5B,kCAAwB;IASxB,kBAAuD;IASvD,4CAA+D;IAC/D,6CAAyD;IACzD,oEAEC;IAmBF,gBAAsC;IAGrC,6BAAiC;IACjC,8BAAmC;IAcrC,0BANU,OAAO,EAQhB;IAXD;;;;OAIG;IACH,sBAFU,OAAO,CAIhB;IAMD;;;;;;;;;;;;;;;;;OAiBG;IACH,uBAfW,MAAM,YACN,MAAM,QAmEhB;IA3CA,wBAEE;IA2CH;;;;OAIG;IACH,aAHW,OAAO,GACL,KAAK,CASjB;IAED;;;;OAIG;IACH,aAHW,OAAO,GACL,KAAK,CASjB;IAED;;;;;OAKG;IACH,cAJW,MAAM,MACN,QAAQ,GAAC,kBAAkB,GACzB,KAAK,CAWjB;IAED;;;;;OAKG;IACH,SAJW,MAAM,MACN,MAAM,GACJ,KAAK,CAMjB;IAED;;;;;OAKG;IACH,wBAHW,OAAO,GACL,MAAM,CA6ClB;IAgCD;;;;;;OAMG;IACH,eAFW,cAAc,GAAC,aAAa,QAoCtC;IAED;;;OAGG;IACH,gBAMC;IAWD;;;;;;OAMG;IACH,gCALW,MAAM,SACN,MAAM,SACN,OAAO,GACL,UAAU,CAYtB;IAED;;;;;;;;;OASG;IACH,yBARW,MAAM,QACN,MAAM,SACN,OAAO,GACL,UAAU,CAYtB;IAED;;;;;;;;OAQG;IACH,yBAPW,MAAM,GACJ,OAAO,CAWnB;IAED;;;;;;;OAOG;IACH,gCANW,MAAM,SACN,MAAM,SACN,OAAO,UACP,MAAM,GACJ,UAAU,CAatB;IAED;;;;;;;OAOG;IACH,yBANW,MAAM,QACN,MAAM,SACN,OAAO,UACP,MAAM,GACJ,UAAU,CAItB;IAED;;;OAGG;IACH,2BAFW,MAAM,QAIhB;IAED;;;;;OAKG;IACH,qCAJW,MAAM,mBACN,MAAM,WACN,MAAM,QAIhB;IAED;;;;;;;;;;;;;;;OAeG;IACH,wBAdW,MAAM,QAgBhB;IAED;;;;;;;OAOG;IACH,8BANW,MAAM,gBACH,MAAM,EAAA,QAkBnB;IAED;;;;;OAKG;IACH,8BAJW,MAAM,gBACN,MAAM,GACJ,UAAU,CAItB;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,IAAI,GAAC,IAAI,CAIrB;IAED;;;;OAIG;IACH,mBAHW,MAAM,GACJ,IAAI,GAAC,IAAI,CAIrB;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,+BAhBG;QAA4B,KAAK;QACL,SAAS;QACT,GAAG;QACH,OAAO;QACP,QAAQ;QACR,KAAK;KACjC,QAYF;IAED;;;OAGG;IACH,kCAFW,MAAM,QAIhB;IAED;;;OAGG;IACH,qBAFa,MAAM,EAAE,CAMpB;IAED;;;OAGG;IACH,gBAFa,MAAM,EAAE,CAMpB;IAED;;OAEG;IACH,uBAYC;CACD;2BA3qBwC,SAAS;4BADtB,+BAA+B;6BAF9B,gCAAgC;uBAGpB,SAAS;6BACrB,uBAAuB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SpinePlugin.d.ts","sourceRoot":"","sources":["../src/SpinePlugin.js"],"names":[],"mappings":"AAUA;;;;GAIG;AACH;IACC,cAcC;IADA,2BAAuD;CAExD;uBA/BsB,SAAS;yBAQP,gBAAgB"}
1
+ {"version":3,"file":"SpinePlugin.d.ts","sourceRoot":"","sources":["../src/SpinePlugin.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH;IACC,cAkBC;IALA,2BAAuD;CAMxD;uBApCgD,SAAS;yBAQjC,gBAAgB"}
package/build/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Spine plugin - 2.0.0
2
+ * melonJS Spine plugin - 2.1.0
3
3
  * http://www.melonjs.org
4
4
  * @melonjs/spine-plugin is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -15459,14 +15459,14 @@ var SpineBatcher = class extends Batcher {
15459
15459
  };
15460
15460
 
15461
15461
  // src/SpinePlugin.js
15462
- import { plugin } from "melonjs";
15462
+ import { plugin, registerTiledObjectClass } from "melonjs";
15463
15463
 
15464
15464
  // package.json
15465
15465
  var name = "@melonjs/spine-plugin";
15466
- var version = "2.0.0";
15466
+ var version = "2.1.0";
15467
15467
  var homepage = "https://www.npmjs.com/package/@melonjs/spine-plugin";
15468
15468
  var peerDependencies = {
15469
- melonjs: ">=18.2.0"
15469
+ melonjs: ">=18.3.0"
15470
15470
  };
15471
15471
  var dependencies = {
15472
15472
  "@esotericsoftware/spine-canvas": "^4.2.108",
@@ -15597,6 +15597,7 @@ var SpinePlugin = class extends plugin.BasePlugin {
15597
15597
  `${name} ${version} - spine runtime ${dependencies["@esotericsoftware/spine-core"]} | ${homepage}`
15598
15598
  );
15599
15599
  this.assetManager = new AssetManager3(this.app.renderer);
15600
+ registerTiledObjectClass("Spine", Spine);
15600
15601
  }
15601
15602
  };
15602
15603
 
@@ -15756,6 +15757,12 @@ var Spine = class extends Renderable2 {
15756
15757
  const skeletonData = skeletonJson.readSkeletonData(
15757
15758
  this.plugin.assetManager.require(jsonFile)
15758
15759
  );
15760
+ this.premultipliedAlpha = atlas.pages.some((page) => {
15761
+ return page.pma;
15762
+ });
15763
+ if (this.renderer.WebGLVersion >= 1) {
15764
+ this.skeletonRenderer.premultipliedAlpha = this.premultipliedAlpha;
15765
+ }
15759
15766
  this.skeleton = new this.runtime.Skeleton(skeletonData);
15760
15767
  if (this.skeletonRenderer instanceof SkeletonRenderer3) {
15761
15768
  this.skeletonRenderer.triangleRendering = skeletonData.skins.some(