Skip to content

Commit 28895c5

Browse files
committed
Base Spine plugin now handles a lot more
1 parent f95f611 commit 28895c5

3 files changed

Lines changed: 65 additions & 109 deletions

File tree

plugins/spine/src/BaseSpinePlugin.js

Lines changed: 50 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ var ScenePlugin = require('../../../src/plugins/ScenePlugin');
99
var SpineFile = require('./SpineFile');
1010
var SpineGameObject = require('./gameobject/SpineGameObject');
1111

12+
var runtime;
13+
1214
/**
1315
* @classdesc
1416
* TODO
@@ -27,29 +29,32 @@ var SpinePlugin = new Class({
2729

2830
initialize:
2931

30-
function SpinePlugin (scene, pluginManager)
32+
function SpinePlugin (scene, pluginManager, SpineRuntime)
3133
{
3234
console.log('BaseSpinePlugin created');
3335

3436
ScenePlugin.call(this, scene, pluginManager);
3537

3638
var game = pluginManager.game;
3739

38-
this.canvas = game.canvas;
39-
this.context = game.context;
40-
4140
// Create a custom cache to store the spine data (.atlas files)
4241
this.cache = game.cache.addCustom('spine');
4342

4443
this.json = game.cache.json;
4544

4645
this.textures = game.textures;
4746

47+
this.skeletonRenderer;
48+
49+
this.drawDebug = false;
50+
4851
// Register our file type
4952
pluginManager.registerFileType('spine', this.spineFileCallback, scene);
5053

5154
// Register our game object
5255
pluginManager.registerGameObject('spine', this.createSpineFactory(this));
56+
57+
runtime = SpineRuntime;
5358
},
5459

5560
spineFileCallback: function (key, jsonURL, atlasURL, jsonXhrSettings, atlasXhrSettings)
@@ -103,6 +108,47 @@ var SpinePlugin = new Class({
103108
return callback;
104109
},
105110

111+
getRuntime: function ()
112+
{
113+
return runtime;
114+
},
115+
116+
createSkeleton: function (key, skeletonJSON)
117+
{
118+
var atlas = this.getAtlas(key);
119+
120+
var atlasLoader = new runtime.AtlasAttachmentLoader(atlas);
121+
122+
var skeletonJson = new runtime.SkeletonJson(atlasLoader);
123+
124+
var data = (skeletonJSON) ? skeletonJSON : this.json.get(key);
125+
126+
var skeletonData = skeletonJson.readSkeletonData(data);
127+
128+
var skeleton = new runtime.Skeleton(skeletonData);
129+
130+
return { skeletonData: skeletonData, skeleton: skeleton };
131+
},
132+
133+
getBounds: function (skeleton)
134+
{
135+
var offset = new runtime.Vector2();
136+
var size = new runtime.Vector2();
137+
138+
skeleton.getBounds(offset, size, []);
139+
140+
return { offset: offset, size: size };
141+
},
142+
143+
createAnimationState: function (skeleton)
144+
{
145+
var stateData = new runtime.AnimationStateData(skeleton.data);
146+
147+
var state = new runtime.AnimationState(stateData);
148+
149+
return { stateData: stateData, state: state };
150+
},
151+
106152
/**
107153
* The Scene that owns this plugin is shutting down.
108154
* We need to kill and reset all internal properties as well as stop listening to Scene events.

plugins/spine/src/SpineCanvasPlugin.js

Lines changed: 4 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ var Class = require('../../../src/utils/Class');
88
var BaseSpinePlugin = require('./BaseSpinePlugin');
99
var SpineCanvas = require('SpineCanvas');
1010

11-
var runtime;
12-
1311
/**
1412
* @classdesc
1513
* Just the Canvas Runtime.
@@ -32,28 +30,21 @@ var SpineCanvasPlugin = new Class({
3230
{
3331
console.log('SpineCanvasPlugin created');
3432

35-
BaseSpinePlugin.call(this, scene, pluginManager);
36-
37-
runtime = SpineCanvas;
33+
BaseSpinePlugin.call(this, scene, pluginManager, SpineCanvas);
3834
},
3935

4036
boot: function ()
4137
{
4238
this.skeletonRenderer = new SpineCanvas.canvas.SkeletonRenderer(this.game.context);
4339
},
4440

45-
getRuntime: function ()
46-
{
47-
return runtime;
48-
},
49-
50-
createSkeleton: function (key, child)
41+
getAtlas: function (key)
5142
{
5243
var atlasData = this.cache.get(key);
5344

5445
if (!atlasData)
5546
{
56-
console.warn('No skeleton data for: ' + key);
47+
console.warn('No atlas data for: ' + key);
5748
return;
5849
}
5950

@@ -64,41 +55,7 @@ var SpineCanvasPlugin = new Class({
6455
return new SpineCanvas.canvas.CanvasTexture(textures.get(path).getSourceImage());
6556
});
6657

67-
var atlasLoader = new SpineCanvas.AtlasAttachmentLoader(atlas);
68-
69-
var skeletonJson = new SpineCanvas.SkeletonJson(atlasLoader);
70-
71-
var data = this.json.get(key);
72-
73-
if (child)
74-
{
75-
data = data[child];
76-
}
77-
78-
var skeletonData = skeletonJson.readSkeletonData(data);
79-
80-
var skeleton = new SpineCanvas.Skeleton(skeletonData);
81-
82-
return { skeletonData: skeletonData, skeleton: skeleton };
83-
},
84-
85-
getBounds: function (skeleton)
86-
{
87-
var offset = new SpineCanvas.Vector2();
88-
var size = new SpineCanvas.Vector2();
89-
90-
skeleton.getBounds(offset, size, []);
91-
92-
return { offset: offset, size: size };
93-
},
94-
95-
createAnimationState: function (skeleton)
96-
{
97-
var stateData = new SpineCanvas.AnimationStateData(skeleton.data);
98-
99-
var state = new SpineCanvas.AnimationState(stateData);
100-
101-
return { stateData: stateData, state: state };
58+
return atlas;
10259
}
10360

10461
});

plugins/spine/src/SpineWebGLPlugin.js

Lines changed: 11 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ var BaseSpinePlugin = require('./BaseSpinePlugin');
99
var SpineWebGL = require('SpineWebGL');
1010
var Matrix4 = require('../../../src/math/Matrix4');
1111

12-
var runtime;
13-
1412
/**
1513
* @classdesc
1614
* Just the WebGL Runtime.
@@ -33,9 +31,14 @@ var SpineWebGLPlugin = new Class({
3331
{
3432
console.log('SpineWebGLPlugin created');
3533

36-
BaseSpinePlugin.call(this, scene, pluginManager);
34+
BaseSpinePlugin.call(this, scene, pluginManager, SpineWebGL);
3735

38-
runtime = SpineWebGL;
36+
this.gl;
37+
this.mvp;
38+
this.shader;
39+
this.batcher;
40+
this.debugRenderer;
41+
this.debugShader;
3942
},
4043

4144
boot: function ()
@@ -55,34 +58,18 @@ var SpineWebGLPlugin = new Class({
5558

5659
this.shapes = new SpineWebGL.webgl.ShapeRenderer(gl);
5760

58-
var debugRenderer = new SpineWebGL.webgl.SkeletonDebugRenderer(gl);
59-
60-
debugRenderer.premultipliedAlpha = true;
61-
debugRenderer.drawRegionAttachments = true;
62-
debugRenderer.drawBoundingBoxes = true;
63-
debugRenderer.drawMeshHull = true;
64-
debugRenderer.drawMeshTriangles = true;
65-
debugRenderer.drawPaths = true;
66-
67-
this.drawDebug = false;
61+
this.debugRenderer = new SpineWebGL.webgl.SkeletonDebugRenderer(gl);
6862

6963
this.debugShader = SpineWebGL.webgl.Shader.newColored(gl);
70-
71-
this.debugRenderer = debugRenderer;
72-
},
73-
74-
getRuntime: function ()
75-
{
76-
return runtime;
7764
},
7865

79-
createSkeleton: function (key, child)
66+
getAtlas: function (key)
8067
{
8168
var atlasData = this.cache.get(key);
8269

8370
if (!atlasData)
8471
{
85-
console.warn('No skeleton data for: ' + key);
72+
console.warn('No atlas data for: ' + key);
8673
return;
8774
}
8875

@@ -95,41 +82,7 @@ var SpineWebGLPlugin = new Class({
9582
return new SpineWebGL.webgl.GLTexture(gl, textures.get(path).getSourceImage());
9683
});
9784

98-
var atlasLoader = new SpineWebGL.AtlasAttachmentLoader(atlas);
99-
100-
var skeletonJson = new SpineWebGL.SkeletonJson(atlasLoader);
101-
102-
var data = this.json.get(key);
103-
104-
if (child)
105-
{
106-
data = data[child];
107-
}
108-
109-
var skeletonData = skeletonJson.readSkeletonData(data);
110-
111-
var skeleton = new SpineWebGL.Skeleton(skeletonData);
112-
113-
return { skeletonData: skeletonData, skeleton: skeleton };
114-
},
115-
116-
getBounds: function (skeleton)
117-
{
118-
var offset = new SpineWebGL.Vector2();
119-
var size = new SpineWebGL.Vector2();
120-
121-
skeleton.getBounds(offset, size, []);
122-
123-
return { offset: offset, size: size };
124-
},
125-
126-
createAnimationState: function (skeleton)
127-
{
128-
var stateData = new SpineWebGL.AnimationStateData(skeleton.data);
129-
130-
var state = new SpineWebGL.AnimationState(stateData);
131-
132-
return { stateData: stateData, state: state };
85+
return atlas;
13386
}
13487

13588
});

0 commit comments

Comments
 (0)