mirror of
https://github.com/photonstorm/phaser
synced 2025-02-16 14:08:28 +00:00
Base Spine plugin now handles a lot more
This commit is contained in:
parent
f95f611c1f
commit
28895c5162
3 changed files with 65 additions and 109 deletions
|
@ -9,6 +9,8 @@ var ScenePlugin = require('../../../src/plugins/ScenePlugin');
|
|||
var SpineFile = require('./SpineFile');
|
||||
var SpineGameObject = require('./gameobject/SpineGameObject');
|
||||
|
||||
var runtime;
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
* TODO
|
||||
|
@ -27,7 +29,7 @@ var SpinePlugin = new Class({
|
|||
|
||||
initialize:
|
||||
|
||||
function SpinePlugin (scene, pluginManager)
|
||||
function SpinePlugin (scene, pluginManager, SpineRuntime)
|
||||
{
|
||||
console.log('BaseSpinePlugin created');
|
||||
|
||||
|
@ -35,9 +37,6 @@ var SpinePlugin = new Class({
|
|||
|
||||
var game = pluginManager.game;
|
||||
|
||||
this.canvas = game.canvas;
|
||||
this.context = game.context;
|
||||
|
||||
// Create a custom cache to store the spine data (.atlas files)
|
||||
this.cache = game.cache.addCustom('spine');
|
||||
|
||||
|
@ -45,11 +44,17 @@ var SpinePlugin = new Class({
|
|||
|
||||
this.textures = game.textures;
|
||||
|
||||
this.skeletonRenderer;
|
||||
|
||||
this.drawDebug = false;
|
||||
|
||||
// Register our file type
|
||||
pluginManager.registerFileType('spine', this.spineFileCallback, scene);
|
||||
|
||||
// Register our game object
|
||||
pluginManager.registerGameObject('spine', this.createSpineFactory(this));
|
||||
|
||||
runtime = SpineRuntime;
|
||||
},
|
||||
|
||||
spineFileCallback: function (key, jsonURL, atlasURL, jsonXhrSettings, atlasXhrSettings)
|
||||
|
@ -103,6 +108,47 @@ var SpinePlugin = new Class({
|
|||
return callback;
|
||||
},
|
||||
|
||||
getRuntime: function ()
|
||||
{
|
||||
return runtime;
|
||||
},
|
||||
|
||||
createSkeleton: function (key, skeletonJSON)
|
||||
{
|
||||
var atlas = this.getAtlas(key);
|
||||
|
||||
var atlasLoader = new runtime.AtlasAttachmentLoader(atlas);
|
||||
|
||||
var skeletonJson = new runtime.SkeletonJson(atlasLoader);
|
||||
|
||||
var data = (skeletonJSON) ? skeletonJSON : this.json.get(key);
|
||||
|
||||
var skeletonData = skeletonJson.readSkeletonData(data);
|
||||
|
||||
var skeleton = new runtime.Skeleton(skeletonData);
|
||||
|
||||
return { skeletonData: skeletonData, skeleton: skeleton };
|
||||
},
|
||||
|
||||
getBounds: function (skeleton)
|
||||
{
|
||||
var offset = new runtime.Vector2();
|
||||
var size = new runtime.Vector2();
|
||||
|
||||
skeleton.getBounds(offset, size, []);
|
||||
|
||||
return { offset: offset, size: size };
|
||||
},
|
||||
|
||||
createAnimationState: function (skeleton)
|
||||
{
|
||||
var stateData = new runtime.AnimationStateData(skeleton.data);
|
||||
|
||||
var state = new runtime.AnimationState(stateData);
|
||||
|
||||
return { stateData: stateData, state: state };
|
||||
},
|
||||
|
||||
/**
|
||||
* The Scene that owns this plugin is shutting down.
|
||||
* We need to kill and reset all internal properties as well as stop listening to Scene events.
|
||||
|
|
|
@ -8,8 +8,6 @@ var Class = require('../../../src/utils/Class');
|
|||
var BaseSpinePlugin = require('./BaseSpinePlugin');
|
||||
var SpineCanvas = require('SpineCanvas');
|
||||
|
||||
var runtime;
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
* Just the Canvas Runtime.
|
||||
|
@ -32,9 +30,7 @@ var SpineCanvasPlugin = new Class({
|
|||
{
|
||||
console.log('SpineCanvasPlugin created');
|
||||
|
||||
BaseSpinePlugin.call(this, scene, pluginManager);
|
||||
|
||||
runtime = SpineCanvas;
|
||||
BaseSpinePlugin.call(this, scene, pluginManager, SpineCanvas);
|
||||
},
|
||||
|
||||
boot: function ()
|
||||
|
@ -42,18 +38,13 @@ var SpineCanvasPlugin = new Class({
|
|||
this.skeletonRenderer = new SpineCanvas.canvas.SkeletonRenderer(this.game.context);
|
||||
},
|
||||
|
||||
getRuntime: function ()
|
||||
{
|
||||
return runtime;
|
||||
},
|
||||
|
||||
createSkeleton: function (key, child)
|
||||
getAtlas: function (key)
|
||||
{
|
||||
var atlasData = this.cache.get(key);
|
||||
|
||||
if (!atlasData)
|
||||
{
|
||||
console.warn('No skeleton data for: ' + key);
|
||||
console.warn('No atlas data for: ' + key);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -64,41 +55,7 @@ var SpineCanvasPlugin = new Class({
|
|||
return new SpineCanvas.canvas.CanvasTexture(textures.get(path).getSourceImage());
|
||||
});
|
||||
|
||||
var atlasLoader = new SpineCanvas.AtlasAttachmentLoader(atlas);
|
||||
|
||||
var skeletonJson = new SpineCanvas.SkeletonJson(atlasLoader);
|
||||
|
||||
var data = this.json.get(key);
|
||||
|
||||
if (child)
|
||||
{
|
||||
data = data[child];
|
||||
}
|
||||
|
||||
var skeletonData = skeletonJson.readSkeletonData(data);
|
||||
|
||||
var skeleton = new SpineCanvas.Skeleton(skeletonData);
|
||||
|
||||
return { skeletonData: skeletonData, skeleton: skeleton };
|
||||
},
|
||||
|
||||
getBounds: function (skeleton)
|
||||
{
|
||||
var offset = new SpineCanvas.Vector2();
|
||||
var size = new SpineCanvas.Vector2();
|
||||
|
||||
skeleton.getBounds(offset, size, []);
|
||||
|
||||
return { offset: offset, size: size };
|
||||
},
|
||||
|
||||
createAnimationState: function (skeleton)
|
||||
{
|
||||
var stateData = new SpineCanvas.AnimationStateData(skeleton.data);
|
||||
|
||||
var state = new SpineCanvas.AnimationState(stateData);
|
||||
|
||||
return { stateData: stateData, state: state };
|
||||
return atlas;
|
||||
}
|
||||
|
||||
});
|
||||
|
|
|
@ -9,8 +9,6 @@ var BaseSpinePlugin = require('./BaseSpinePlugin');
|
|||
var SpineWebGL = require('SpineWebGL');
|
||||
var Matrix4 = require('../../../src/math/Matrix4');
|
||||
|
||||
var runtime;
|
||||
|
||||
/**
|
||||
* @classdesc
|
||||
* Just the WebGL Runtime.
|
||||
|
@ -33,9 +31,14 @@ var SpineWebGLPlugin = new Class({
|
|||
{
|
||||
console.log('SpineWebGLPlugin created');
|
||||
|
||||
BaseSpinePlugin.call(this, scene, pluginManager);
|
||||
BaseSpinePlugin.call(this, scene, pluginManager, SpineWebGL);
|
||||
|
||||
runtime = SpineWebGL;
|
||||
this.gl;
|
||||
this.mvp;
|
||||
this.shader;
|
||||
this.batcher;
|
||||
this.debugRenderer;
|
||||
this.debugShader;
|
||||
},
|
||||
|
||||
boot: function ()
|
||||
|
@ -55,34 +58,18 @@ var SpineWebGLPlugin = new Class({
|
|||
|
||||
this.shapes = new SpineWebGL.webgl.ShapeRenderer(gl);
|
||||
|
||||
var debugRenderer = new SpineWebGL.webgl.SkeletonDebugRenderer(gl);
|
||||
|
||||
debugRenderer.premultipliedAlpha = true;
|
||||
debugRenderer.drawRegionAttachments = true;
|
||||
debugRenderer.drawBoundingBoxes = true;
|
||||
debugRenderer.drawMeshHull = true;
|
||||
debugRenderer.drawMeshTriangles = true;
|
||||
debugRenderer.drawPaths = true;
|
||||
|
||||
this.drawDebug = false;
|
||||
this.debugRenderer = new SpineWebGL.webgl.SkeletonDebugRenderer(gl);
|
||||
|
||||
this.debugShader = SpineWebGL.webgl.Shader.newColored(gl);
|
||||
|
||||
this.debugRenderer = debugRenderer;
|
||||
},
|
||||
|
||||
getRuntime: function ()
|
||||
{
|
||||
return runtime;
|
||||
},
|
||||
|
||||
createSkeleton: function (key, child)
|
||||
getAtlas: function (key)
|
||||
{
|
||||
var atlasData = this.cache.get(key);
|
||||
|
||||
if (!atlasData)
|
||||
{
|
||||
console.warn('No skeleton data for: ' + key);
|
||||
console.warn('No atlas data for: ' + key);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -95,41 +82,7 @@ var SpineWebGLPlugin = new Class({
|
|||
return new SpineWebGL.webgl.GLTexture(gl, textures.get(path).getSourceImage());
|
||||
});
|
||||
|
||||
var atlasLoader = new SpineWebGL.AtlasAttachmentLoader(atlas);
|
||||
|
||||
var skeletonJson = new SpineWebGL.SkeletonJson(atlasLoader);
|
||||
|
||||
var data = this.json.get(key);
|
||||
|
||||
if (child)
|
||||
{
|
||||
data = data[child];
|
||||
}
|
||||
|
||||
var skeletonData = skeletonJson.readSkeletonData(data);
|
||||
|
||||
var skeleton = new SpineWebGL.Skeleton(skeletonData);
|
||||
|
||||
return { skeletonData: skeletonData, skeleton: skeleton };
|
||||
},
|
||||
|
||||
getBounds: function (skeleton)
|
||||
{
|
||||
var offset = new SpineWebGL.Vector2();
|
||||
var size = new SpineWebGL.Vector2();
|
||||
|
||||
skeleton.getBounds(offset, size, []);
|
||||
|
||||
return { offset: offset, size: size };
|
||||
},
|
||||
|
||||
createAnimationState: function (skeleton)
|
||||
{
|
||||
var stateData = new SpineWebGL.AnimationStateData(skeleton.data);
|
||||
|
||||
var state = new SpineWebGL.AnimationState(stateData);
|
||||
|
||||
return { stateData: stateData, state: state };
|
||||
return atlas;
|
||||
}
|
||||
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue