[ts] Refactored demos so we can load them sequentially

This commit is contained in:
badlogic 2016-08-30 12:07:33 +02:00
parent d5688bf999
commit 15c82b221a
30 changed files with 123 additions and 110 deletions

View File

@ -1161,7 +1161,7 @@ declare module spine.webgl {
constructor(canvas: HTMLCanvasElement, gl: WebGLRenderingContext); constructor(canvas: HTMLCanvasElement, gl: WebGLRenderingContext);
begin(): void; begin(): void;
drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean): void; drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean): void;
drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean): void; drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean, ignoredBones?: Array<string>): void;
drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void; drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void;
drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color): void; drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color): void;
line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void; line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void;
@ -1275,6 +1275,7 @@ declare module spine.webgl {
drawMeshHull: boolean; drawMeshHull: boolean;
drawMeshTriangles: boolean; drawMeshTriangles: boolean;
drawPaths: boolean; drawPaths: boolean;
drawSkeletonXY: boolean;
premultipliedAlpha: boolean; premultipliedAlpha: boolean;
scale: number; scale: number;
boneWidth: number; boneWidth: number;
@ -1284,7 +1285,7 @@ declare module spine.webgl {
private static LIGHT_GRAY; private static LIGHT_GRAY;
private static GREEN; private static GREEN;
constructor(gl: WebGLRenderingContext); constructor(gl: WebGLRenderingContext);
draw(shapes: ShapeRenderer, skeleton: Skeleton): void; draw(shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones?: Array<string>): void;
dispose(): void; dispose(): void;
} }
} }

View File

@ -5725,11 +5725,12 @@ var spine;
this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha;
this.skeletonRenderer.draw(this.batcher, skeleton); this.skeletonRenderer.draw(this.batcher, skeleton);
}; };
SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha) { SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha, ignoredBones) {
if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } if (premultipliedAlpha === void 0) { premultipliedAlpha = false; }
if (ignoredBones === void 0) { ignoredBones = null; }
this.enableRenderer(this.shapes); this.enableRenderer(this.shapes);
this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha;
this.skeletonDebugRenderer.draw(this.shapes, skeleton); this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones);
}; };
SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) { SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) {
if (color === void 0) { color = null; } if (color === void 0) { color = null; }
@ -6411,6 +6412,7 @@ var spine;
this.drawMeshHull = true; this.drawMeshHull = true;
this.drawMeshTriangles = true; this.drawMeshTriangles = true;
this.drawPaths = true; this.drawPaths = true;
this.drawSkeletonXY = false;
this.premultipliedAlpha = false; this.premultipliedAlpha = false;
this.scale = 1; this.scale = 1;
this.boneWidth = 2; this.boneWidth = 2;
@ -6418,7 +6420,8 @@ var spine;
this.temp = new Array(); this.temp = new Array();
this.gl = gl; this.gl = gl;
} }
SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton) { SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton, ignoredBones) {
if (ignoredBones === void 0) { ignoredBones = null; }
var skeletonX = skeleton.x; var skeletonX = skeleton.x;
var skeletonY = skeleton.y; var skeletonY = skeleton.y;
var gl = this.gl; var gl = this.gl;
@ -6429,13 +6432,16 @@ var spine;
shapes.setColor(this.boneLineColor); shapes.setColor(this.boneLineColor);
for (var i = 0, n = bones.length; i < n; i++) { for (var i = 0, n = bones.length; i < n; i++) {
var bone = bones[i]; var bone = bones[i];
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1)
continue;
if (bone.parent == null) if (bone.parent == null)
continue; continue;
var x = skeletonX + bone.data.length * bone.a + bone.worldX; var x = skeletonX + bone.data.length * bone.a + bone.worldX;
var y = skeletonY + bone.data.length * bone.c + bone.worldY; var y = skeletonY + bone.data.length * bone.c + bone.worldY;
shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale);
} }
shapes.x(skeletonX, skeletonY, 4 * this.scale); if (this.drawSkeletonXY)
shapes.x(skeletonX, skeletonY, 4 * this.scale);
} }
if (this.drawRegionAttachments) { if (this.drawRegionAttachments) {
shapes.setColor(this.attachmentLineColor); shapes.setColor(this.attachmentLineColor);
@ -6540,6 +6546,8 @@ var spine;
shapes.setColor(this.boneOriginColor); shapes.setColor(this.boneOriginColor);
for (var i = 0, n = bones.length; i < n; i++) { for (var i = 0, n = bones.length; i < n; i++) {
var bone = bones[i]; var bone = bones[i];
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1)
continue;
shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8);
} }
} }

File diff suppressed because one or more lines are too long

View File

@ -1091,7 +1091,7 @@ declare module spine.webgl {
constructor(canvas: HTMLCanvasElement, gl: WebGLRenderingContext); constructor(canvas: HTMLCanvasElement, gl: WebGLRenderingContext);
begin(): void; begin(): void;
drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean): void; drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean): void;
drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean): void; drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean, ignoredBones?: Array<string>): void;
drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void; drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void;
drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color): void; drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color): void;
line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void; line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void;
@ -1205,6 +1205,7 @@ declare module spine.webgl {
drawMeshHull: boolean; drawMeshHull: boolean;
drawMeshTriangles: boolean; drawMeshTriangles: boolean;
drawPaths: boolean; drawPaths: boolean;
drawSkeletonXY: boolean;
premultipliedAlpha: boolean; premultipliedAlpha: boolean;
scale: number; scale: number;
boneWidth: number; boneWidth: number;
@ -1214,7 +1215,7 @@ declare module spine.webgl {
private static LIGHT_GRAY; private static LIGHT_GRAY;
private static GREEN; private static GREEN;
constructor(gl: WebGLRenderingContext); constructor(gl: WebGLRenderingContext);
draw(shapes: ShapeRenderer, skeleton: Skeleton): void; draw(shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones?: Array<string>): void;
dispose(): void; dispose(): void;
} }
} }

View File

@ -5302,11 +5302,12 @@ var spine;
this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha;
this.skeletonRenderer.draw(this.batcher, skeleton); this.skeletonRenderer.draw(this.batcher, skeleton);
}; };
SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha) { SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha, ignoredBones) {
if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } if (premultipliedAlpha === void 0) { premultipliedAlpha = false; }
if (ignoredBones === void 0) { ignoredBones = null; }
this.enableRenderer(this.shapes); this.enableRenderer(this.shapes);
this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha;
this.skeletonDebugRenderer.draw(this.shapes, skeleton); this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones);
}; };
SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) { SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) {
if (color === void 0) { color = null; } if (color === void 0) { color = null; }
@ -5988,6 +5989,7 @@ var spine;
this.drawMeshHull = true; this.drawMeshHull = true;
this.drawMeshTriangles = true; this.drawMeshTriangles = true;
this.drawPaths = true; this.drawPaths = true;
this.drawSkeletonXY = false;
this.premultipliedAlpha = false; this.premultipliedAlpha = false;
this.scale = 1; this.scale = 1;
this.boneWidth = 2; this.boneWidth = 2;
@ -5995,7 +5997,8 @@ var spine;
this.temp = new Array(); this.temp = new Array();
this.gl = gl; this.gl = gl;
} }
SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton) { SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton, ignoredBones) {
if (ignoredBones === void 0) { ignoredBones = null; }
var skeletonX = skeleton.x; var skeletonX = skeleton.x;
var skeletonY = skeleton.y; var skeletonY = skeleton.y;
var gl = this.gl; var gl = this.gl;
@ -6006,13 +6009,16 @@ var spine;
shapes.setColor(this.boneLineColor); shapes.setColor(this.boneLineColor);
for (var i = 0, n = bones.length; i < n; i++) { for (var i = 0, n = bones.length; i < n; i++) {
var bone = bones[i]; var bone = bones[i];
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1)
continue;
if (bone.parent == null) if (bone.parent == null)
continue; continue;
var x = skeletonX + bone.data.length * bone.a + bone.worldX; var x = skeletonX + bone.data.length * bone.a + bone.worldX;
var y = skeletonY + bone.data.length * bone.c + bone.worldY; var y = skeletonY + bone.data.length * bone.c + bone.worldY;
shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale);
} }
shapes.x(skeletonX, skeletonY, 4 * this.scale); if (this.drawSkeletonXY)
shapes.x(skeletonX, skeletonY, 4 * this.scale);
} }
if (this.drawRegionAttachments) { if (this.drawRegionAttachments) {
shapes.setColor(this.attachmentLineColor); shapes.setColor(this.attachmentLineColor);
@ -6117,6 +6123,8 @@ var spine;
shapes.setColor(this.boneOriginColor); shapes.setColor(this.boneOriginColor);
for (var i = 0, n = bones.length; i < n; i++) { for (var i = 0, n = bones.length; i < n; i++) {
var bone = bones[i]; var bone = bones[i];
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1)
continue;
shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8);
} }
} }

File diff suppressed because one or more lines are too long

View File

@ -1091,7 +1091,7 @@ declare module spine.webgl {
constructor(canvas: HTMLCanvasElement, gl: WebGLRenderingContext); constructor(canvas: HTMLCanvasElement, gl: WebGLRenderingContext);
begin(): void; begin(): void;
drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean): void; drawSkeleton(skeleton: Skeleton, premultipliedAlpha?: boolean): void;
drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean): void; drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha?: boolean, ignoredBones?: Array<string>): void;
drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void; drawTexture(texture: GLTexture, x: number, y: number, width: number, height: number, color?: Color): void;
drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color): void; drawRegion(region: TextureAtlasRegion, x: number, y: number, width: number, height: number, color?: Color): void;
line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void; line(x: number, y: number, x2: number, y2: number, color?: Color, color2?: Color): void;
@ -1205,6 +1205,7 @@ declare module spine.webgl {
drawMeshHull: boolean; drawMeshHull: boolean;
drawMeshTriangles: boolean; drawMeshTriangles: boolean;
drawPaths: boolean; drawPaths: boolean;
drawSkeletonXY: boolean;
premultipliedAlpha: boolean; premultipliedAlpha: boolean;
scale: number; scale: number;
boneWidth: number; boneWidth: number;
@ -1214,7 +1215,7 @@ declare module spine.webgl {
private static LIGHT_GRAY; private static LIGHT_GRAY;
private static GREEN; private static GREEN;
constructor(gl: WebGLRenderingContext); constructor(gl: WebGLRenderingContext);
draw(shapes: ShapeRenderer, skeleton: Skeleton): void; draw(shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones?: Array<string>): void;
dispose(): void; dispose(): void;
} }
} }

View File

@ -5302,11 +5302,12 @@ var spine;
this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha; this.skeletonRenderer.premultipliedAlpha = premultipliedAlpha;
this.skeletonRenderer.draw(this.batcher, skeleton); this.skeletonRenderer.draw(this.batcher, skeleton);
}; };
SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha) { SceneRenderer.prototype.drawSkeletonDebug = function (skeleton, premultipliedAlpha, ignoredBones) {
if (premultipliedAlpha === void 0) { premultipliedAlpha = false; } if (premultipliedAlpha === void 0) { premultipliedAlpha = false; }
if (ignoredBones === void 0) { ignoredBones = null; }
this.enableRenderer(this.shapes); this.enableRenderer(this.shapes);
this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha;
this.skeletonDebugRenderer.draw(this.shapes, skeleton); this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones);
}; };
SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) { SceneRenderer.prototype.drawTexture = function (texture, x, y, width, height, color) {
if (color === void 0) { color = null; } if (color === void 0) { color = null; }
@ -5988,6 +5989,7 @@ var spine;
this.drawMeshHull = true; this.drawMeshHull = true;
this.drawMeshTriangles = true; this.drawMeshTriangles = true;
this.drawPaths = true; this.drawPaths = true;
this.drawSkeletonXY = false;
this.premultipliedAlpha = false; this.premultipliedAlpha = false;
this.scale = 1; this.scale = 1;
this.boneWidth = 2; this.boneWidth = 2;
@ -5995,7 +5997,8 @@ var spine;
this.temp = new Array(); this.temp = new Array();
this.gl = gl; this.gl = gl;
} }
SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton) { SkeletonDebugRenderer.prototype.draw = function (shapes, skeleton, ignoredBones) {
if (ignoredBones === void 0) { ignoredBones = null; }
var skeletonX = skeleton.x; var skeletonX = skeleton.x;
var skeletonY = skeleton.y; var skeletonY = skeleton.y;
var gl = this.gl; var gl = this.gl;
@ -6006,13 +6009,16 @@ var spine;
shapes.setColor(this.boneLineColor); shapes.setColor(this.boneLineColor);
for (var i = 0, n = bones.length; i < n; i++) { for (var i = 0, n = bones.length; i < n; i++) {
var bone = bones[i]; var bone = bones[i];
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1)
continue;
if (bone.parent == null) if (bone.parent == null)
continue; continue;
var x = skeletonX + bone.data.length * bone.a + bone.worldX; var x = skeletonX + bone.data.length * bone.a + bone.worldX;
var y = skeletonY + bone.data.length * bone.c + bone.worldY; var y = skeletonY + bone.data.length * bone.c + bone.worldY;
shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale);
} }
shapes.x(skeletonX, skeletonY, 4 * this.scale); if (this.drawSkeletonXY)
shapes.x(skeletonX, skeletonY, 4 * this.scale);
} }
if (this.drawRegionAttachments) { if (this.drawRegionAttachments) {
shapes.setColor(this.attachmentLineColor); shapes.setColor(this.attachmentLineColor);
@ -6117,6 +6123,8 @@ var spine;
shapes.setColor(this.boneOriginColor); shapes.setColor(this.boneOriginColor);
for (var i = 0, n = bones.length; i < n; i++) { for (var i = 0, n = bones.length; i < n; i++) {
var bone = bones[i]; var bone = bones[i];
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1)
continue;
shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8);
} }
} }

File diff suppressed because one or more lines are too long

View File

@ -18,9 +18,10 @@
<div id="animationmixingdemo-timeslider"></div></br> <div id="animationmixingdemo-timeslider"></div></br>
</div> </div>
</center> </center>
<script src="utils.js"></script>
<script src="animationmixing.js"></script> <script src="animationmixing.js"></script>
<script> <script>
animationMixingDemo(); animationMixingDemo("", spineDemos.setupRendering);
</script> </script>
</body> </body>
</html> </html>

View File

@ -1,10 +1,10 @@
var animationMixingDemo = function(pathPrefix) { var animationMixingDemo = function(pathPrefix, loadingComplete) {
var OUTLINE_COLOR = new spine.Color(0, 0.8, 0, 1); var OUTLINE_COLOR = new spine.Color(0, 0.8, 0, 1);
var canvas, gl, renderer, input, assetManager; var canvas, gl, renderer, input, assetManager;
var skeleton, skeletonNoMix, state, stateNoMix, bounds; var skeleton, skeletonNoMix, state, stateNoMix, bounds;
var timeSlider, timeSliderLabel; var timeSlider, timeSliderLabel;
var lastFrameTime = Date.now() / 1000 var lastFrameTime = Date.now() / 1000
function init () { function init () {
timeSlider = $("#animationmixingdemo-timeslider"); timeSlider = $("#animationmixingdemo-timeslider");
@ -45,8 +45,8 @@ var animationMixingDemo = function(pathPrefix) {
state.apply(skeleton); state.apply(skeleton);
skeleton.updateWorldTransform(); skeleton.updateWorldTransform();
bounds = { offset: new spine.Vector2(), size: new spine.Vector2() }; bounds = { offset: new spine.Vector2(), size: new spine.Vector2() };
skeleton.getBounds(bounds.offset, bounds.size); skeleton.getBounds(bounds.offset, bounds.size);
requestAnimationFrame(render); loadingComplete(canvas, render);
} else requestAnimationFrame(load); } else requestAnimationFrame(load);
} }
@ -121,10 +121,8 @@ var animationMixingDemo = function(pathPrefix) {
skeletonNoMix.updateWorldTransform(); skeletonNoMix.updateWorldTransform();
skeletonNoMix.x = size.x; skeletonNoMix.x = size.x;
renderer.drawSkeleton(skeletonNoMix); renderer.drawSkeleton(skeletonNoMix);
renderer.end(); renderer.end();
requestAnimationFrame(render);
} }
init(); init();
return render;
}; };

View File

@ -8,9 +8,10 @@
<body> <body>
<canvas id="ikdemo-canvas"></canvas> <canvas id="ikdemo-canvas"></canvas>
<center><div id="info" style="color: #f00; position: fixed; top: 0; width: 100%"></div></center> <center><div id="info" style="color: #f00; position: fixed; top: 0; width: 100%"></div></center>
<script src="utils.js"></script>
<script src="ikconstraint.js"></script> <script src="ikconstraint.js"></script>
<script> <script>
ikConstraintDemo(); ikConstraintDemo("", spineDemos.setupRendering);
</script> </script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
var ikConstraintDemo = function(pathPrefix) { var ikConstraintDemo = function(pathPrefix, loadingComplete) {
var CIRCLE_INNER_COLOR = new spine.Color(0.8, 0, 0, 0.5); var CIRCLE_INNER_COLOR = new spine.Color(0.8, 0, 0, 0.5);
var CIRCLE_OUTER_COLOR = new spine.Color(0.8, 0, 0, 0.8); var CIRCLE_OUTER_COLOR = new spine.Color(0.8, 0, 0, 0.8);
@ -68,7 +68,7 @@ var ikConstraintDemo = function(pathPrefix) {
renderer.camera.position.x = offset.x + bounds.x / 2; renderer.camera.position.x = offset.x + bounds.x / 2;
renderer.camera.position.y = offset.y + bounds.y / 2; renderer.camera.position.y = offset.y + bounds.y / 2;
requestAnimationFrame(render); loadingComplete(canvas, render);
} else requestAnimationFrame(load); } else requestAnimationFrame(load);
} }
@ -92,10 +92,7 @@ var ikConstraintDemo = function(pathPrefix) {
var bone = skeleton.findBone(boneName); var bone = skeleton.findBone(boneName);
renderer.circle(true, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, CIRCLE_INNER_COLOR); renderer.circle(true, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, CIRCLE_INNER_COLOR);
renderer.circle(false, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, CIRCLE_OUTER_COLOR); renderer.circle(false, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, CIRCLE_OUTER_COLOR);
renderer.end(); renderer.end();
requestAnimationFrame(render);
} }
init(); init();
}; };

View File

@ -19,9 +19,10 @@
<div id="imagesequencesdemo-timeline" class="slider"></div> <div id="imagesequencesdemo-timeline" class="slider"></div>
</div> </div>
</center> </center>
<script src="utils.js"></script>
<script src="imagesequences.js"></script> <script src="imagesequences.js"></script>
<script> <script>
imageSequencesDemo(); imageSequencesDemo("", spineDemos.setupRendering);
</script> </script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
var imageSequencesDemo = function(pathPrefix) { var imageSequencesDemo = function(pathPrefix, loadingComplete) {
var OUTLINE_COLOR = new spine.Color(0, 0.8, 0, 1); var OUTLINE_COLOR = new spine.Color(0, 0.8, 0, 1);
var canvas, gl, renderer, input, assetManager; var canvas, gl, renderer, input, assetManager;
@ -30,7 +30,7 @@ var imageSequencesDemo = function(pathPrefix) {
skeletons["alien"] = loadSkeleton("alien", "death", ["head", "splat01"]); skeletons["alien"] = loadSkeleton("alien", "death", ["head", "splat01"]);
skeletons["dragon"] = loadSkeleton("dragon", "flying", ["R_wing"]) skeletons["dragon"] = loadSkeleton("dragon", "flying", ["R_wing"])
setupUI(); setupUI();
requestAnimationFrame(render); loadingComplete(canvas, render);
} else requestAnimationFrame(load); } else requestAnimationFrame(load);
} }
@ -199,9 +199,7 @@ var imageSequencesDemo = function(pathPrefix) {
} }
} }
renderer.end(); renderer.end();
requestAnimationFrame(render);
} }
init(); init();

View File

@ -16,21 +16,18 @@
<div style="position: fixed; top: 0; width: 100%"> <div style="position: fixed; top: 0; width: 100%">
<select id="meshesdemo-active-skeleton"></select></br> <select id="meshesdemo-active-skeleton"></select></br>
<span style="color: #fff">Draw Bones</span> <span style="color: #fff">Draw Bones</span>
<input type="checkbox" id="meshesdemo-drawbonescheckbox" style="color: #fff;" checked="true"></input> <input type="checkbox" id="meshesdemo-drawbonescheckbox" style="color: #fff;" checked="true"></input>
<span style="color: #fff">Draw Regions</span> <span style="color: #fff">Draw Triangles</span>
<input type="checkbox" id="meshesdemo-drawregionscheckbox" style="color: #fff;" checked="true"></input>
<span style="color: #fff">Draw Mesh Hull</span>
<input type="checkbox" id="meshesdemo-drawmeshhullcheckbox" style="color: #fff;" checked="true"></input>
<span style="color: #fff">Draw Mesh Triangles</span>
<input type="checkbox" id="meshesdemo-drawmeshtrianglescheckbox" style="color: #fff;" checked="true"></input> <input type="checkbox" id="meshesdemo-drawmeshtrianglescheckbox" style="color: #fff;" checked="true"></input>
<br> <br>
<input id="meshesdemo-playbutton" type="button" value="Pause"></input> <input id="meshesdemo-playbutton" type="button" value="Pause"></input>
<div id="meshesdemo-timeline" class="slider"></input> <div id="meshesdemo-timeline" class="slider"></input>
</div> </div>
</center> </center>
<script src="utils.js"></script>
<script src="meshes.js"></script> <script src="meshes.js"></script>
<script> <script>
meshesDemo(); meshesDemo("", spineDemos.setupRendering);
</script> </script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
var meshesDemo = function(pathPrefix) { var meshesDemo = function(pathPrefix, loadingComplete) {
var canvas, gl, renderer, input, assetManager; var canvas, gl, renderer, input, assetManager;
var skeleton, bounds; var skeleton, bounds;
var lastFrameTime = Date.now() / 1000; var lastFrameTime = Date.now() / 1000;
@ -13,6 +13,7 @@ var meshesDemo = function(pathPrefix) {
gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false }); gl = canvas.getContext("webgl", { alpha: false }) || canvas.getContext("experimental-webgl", { alpha: false });
renderer = new spine.webgl.SceneRenderer(canvas, gl); renderer = new spine.webgl.SceneRenderer(canvas, gl);
renderer.skeletonDebugRenderer.drawRegionAttachments = false;
assetManager = new spine.webgl.AssetManager(gl, pathPrefix); assetManager = new spine.webgl.AssetManager(gl, pathPrefix);
assetManager.loadTexture("assets/girl.png"); assetManager.loadTexture("assets/girl.png");
assetManager.loadText("assets/girl.json"); assetManager.loadText("assets/girl.json");
@ -32,7 +33,7 @@ var meshesDemo = function(pathPrefix) {
skeletons["green_girl"] = loadSkeleton("gree_girl", "animation"); skeletons["green_girl"] = loadSkeleton("gree_girl", "animation");
skeletons["fanart"] = loadSkeleton("fanart_cut", "animation"); skeletons["fanart"] = loadSkeleton("fanart_cut", "animation");
setupUI(); setupUI();
requestAnimationFrame(render); loadingComplete(canvas, render);
} else requestAnimationFrame(load); } else requestAnimationFrame(load);
} }
@ -82,13 +83,8 @@ var meshesDemo = function(pathPrefix) {
$("#meshesdemo-drawbonescheckbox").click(function() { $("#meshesdemo-drawbonescheckbox").click(function() {
renderer.skeletonDebugRenderer.drawBones = this.checked; renderer.skeletonDebugRenderer.drawBones = this.checked;
}) })
$("#meshesdemo-drawregionscheckbox").click(function() {
renderer.skeletonDebugRenderer.drawRegionAttachments = this.checked;
})
$("#meshesdemo-drawmeshhullcheckbox").click(function() {
renderer.skeletonDebugRenderer.drawMeshHull = this.checked;
})
$("#meshesdemo-drawmeshtrianglescheckbox").click(function() { $("#meshesdemo-drawmeshtrianglescheckbox").click(function() {
renderer.skeletonDebugRenderer.drawMeshHull = this.checked;
renderer.skeletonDebugRenderer.drawMeshTriangles = this.checked; renderer.skeletonDebugRenderer.drawMeshTriangles = this.checked;
}) })
} }
@ -160,9 +156,7 @@ var meshesDemo = function(pathPrefix) {
renderer.begin(); renderer.begin();
renderer.drawSkeleton(skeleton); renderer.drawSkeleton(skeleton);
renderer.drawSkeletonDebug(skeleton); renderer.drawSkeletonDebug(skeleton);
renderer.end(); renderer.end();
requestAnimationFrame(render);
} }
init(); init();

View File

@ -22,9 +22,10 @@
<div id="skeletonvsspritedemo-timeline" class="slider"></div> <div id="skeletonvsspritedemo-timeline" class="slider"></div>
</center> </center>
</div> </div>
<script src="utils.js"></script>
<script src="skeletonvssprite.js"></script> <script src="skeletonvssprite.js"></script>
<script> <script>
skeletonVsSpriteDemo(); skeletonVsSpriteDemo("", spineDemos.setupRendering);
</script> </script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
var skeletonVsSpriteDemo = function(pathPrefix) { var skeletonVsSpriteDemo = function(pathPrefix, loadingComplete) {
var SKELETON_ATLAS_COLOR = new spine.Color(0, 0.8, 0, 0.8); var SKELETON_ATLAS_COLOR = new spine.Color(0, 0.8, 0, 0.8);
var FRAME_ATLAS_COLOR = new spine.Color(0.8, 0, 0, 0.8); var FRAME_ATLAS_COLOR = new spine.Color(0.8, 0, 0, 0.8);
@ -60,7 +60,7 @@ var skeletonVsSpriteDemo = function(pathPrefix) {
viewportHeight = ((0 + bounds.y) - offset.y); viewportHeight = ((0 + bounds.y) - offset.y);
setupUI(); setupUI();
requestAnimationFrame(render); loadingComplete(canvas, render);
} else requestAnimationFrame(load); } else requestAnimationFrame(load);
} }
@ -170,9 +170,7 @@ var skeletonVsSpriteDemo = function(pathPrefix) {
} }
} }
} }
renderer.end(); renderer.end();
requestAnimationFrame(render);
} }
init(); init();

View File

@ -20,9 +20,10 @@
<div id="skinsdemo-timeline" class="slider"></input> <div id="skinsdemo-timeline" class="slider"></input>
</div> </div>
</center> </center>
<script src="utils.js"></script>
<script src="skins.js"></script> <script src="skins.js"></script>
<script> <script>
skinsDemo(); skinsDemo("", spineDemos.setupRendering);
</script> </script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
var skinsDemo = function(pathPrefix) { var skinsDemo = function(pathPrefix, loadingComplete) {
var canvas, gl, renderer, input, assetManager; var canvas, gl, renderer, input, assetManager;
var skeleton, state, offset, bounds; var skeleton, state, offset, bounds;
var lastFrameTime = Date.now() / 1000; var lastFrameTime = Date.now() / 1000;
@ -36,7 +36,7 @@ var skinsDemo = function(pathPrefix) {
bounds = new spine.Vector2(); bounds = new spine.Vector2();
skeleton.getBounds(offset, bounds); skeleton.getBounds(offset, bounds);
setupUI(); setupUI();
requestAnimationFrame(render); loadingComplete(canvas, render);
} else requestAnimationFrame(load); } else requestAnimationFrame(load);
} }
@ -121,9 +121,7 @@ var skinsDemo = function(pathPrefix) {
var scale = width / texture.getImage().width; var scale = width / texture.getImage().width;
var height = scale * texture.getImage().height; var height = scale * texture.getImage().height;
renderer.drawTexture(texture, offset.x + bounds.x, offset.y + bounds.y / 2 - height / 2, width, height); renderer.drawTexture(texture, offset.x + bounds.x, offset.y + bounds.y / 2 - height / 2, width, height);
renderer.end(); renderer.end();
requestAnimationFrame(render);
} }
init(); init();

View File

@ -19,9 +19,10 @@
<div id="tankdemo-timeline" class="slider"></input> <div id="tankdemo-timeline" class="slider"></input>
</div> </div>
</center> </center>
<script src="utils.js"></script>
<script src="tank.js"></script> <script src="tank.js"></script>
<script> <script>
tankDemo(); tankDemo("", spineDemos.setupRendering);
</script> </script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
var tankDemo = function(pathPrefix) { var tankDemo = function(pathPrefix, loadingComplete) {
var canvas, gl, renderer, input, assetManager; var canvas, gl, renderer, input, assetManager;
var skeleton, state, offset, bounds; var skeleton, state, offset, bounds;
var lastFrameTime = Date.now() / 1000; var lastFrameTime = Date.now() / 1000;
@ -36,7 +36,7 @@ var tankDemo = function(pathPrefix) {
bounds = new spine.Vector2(); bounds = new spine.Vector2();
skeleton.getBounds(offset, bounds); skeleton.getBounds(offset, bounds);
setupUI(); setupUI();
requestAnimationFrame(render); loadingComplete(canvas, render);
} else requestAnimationFrame(load); } else requestAnimationFrame(load);
} }
@ -103,8 +103,6 @@ var tankDemo = function(pathPrefix) {
renderer.begin(); renderer.begin();
renderer.drawSkeleton(skeleton); renderer.drawSkeleton(skeleton);
renderer.end(); renderer.end();
requestAnimationFrame(render);
} }
init(); init();

View File

@ -16,13 +16,13 @@
<center> <center>
<div style="position: fixed; top: 0; width: 100%"> <div style="position: fixed; top: 0; width: 100%">
<div id="info"></div></br> <div id="info"></div></br>
<div>Rotation Offset</div><div id="transformdemo-rotationoffset" class="slider"></div> <div>Rotation Offset</div><div id="transformdemo-rotationoffset" class="slider"></div>
<div>Rotation Mix</div><div id="transformdemo-rotationmix" class="slider"></div>
</div> </div>
</center> </center>
<script src="utils.js"></script>
<script src="transformconstraint.js"></script> <script src="transformconstraint.js"></script>
<script> <script>
transformConstraintDemo(); transformConstraintDemo("", spineDemos.setupRendering);
</script> </script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
var transformConstraintDemo = function(pathPrefix) { var transformConstraintDemo = function(pathPrefix, loadingComplete) {
var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5); var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5);
var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8); var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8);
var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5); var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5);
@ -76,7 +76,7 @@ var transformConstraintDemo = function(pathPrefix) {
setupUI(); setupUI();
requestAnimationFrame(render); loadingComplete(canvas, render);
} else requestAnimationFrame(load); } else requestAnimationFrame(load);
} }
@ -88,16 +88,8 @@ var transformConstraintDemo = function(pathPrefix) {
lastOffset = val; lastOffset = val;
skeleton.findTransformConstraint("wheel2").data.offsetRotation += delta; skeleton.findTransformConstraint("wheel2").data.offsetRotation += delta;
skeleton.findTransformConstraint("wheel3").data.offsetRotation += delta; skeleton.findTransformConstraint("wheel3").data.offsetRotation += delta;
$("#transformdemo-rotationoffset-label").text(val + "%"); $("#transformdemo-rotationoffset-label").text(val + "°");
}}); }});
mix = $("#transformdemo-rotationmix");
mix.slider({ range: "max", min: 0, max: 100, value: 100, slide: function () {
var val = mix.slider("value");
skeleton.findTransformConstraint("wheel2").rotateMix = val / 100;
skeleton.findTransformConstraint("wheel3").rotateMix = val / 100;
$("#transformdemo-rotationmix-label").text(val + "%");
}});
} }
function render () { function render () {
@ -113,18 +105,16 @@ var transformConstraintDemo = function(pathPrefix) {
renderer.resize(spine.webgl.ResizeMode.Fit); renderer.resize(spine.webgl.ResizeMode.Fit);
gl.clearColor(0.2, 0.2, 0.2, 1); gl.clearColor(0.2, 0.2, 0.2, 1);
gl.clear(gl.COLOR_BUFFER_BIT); gl.clear(gl.COLOR_BUFFER_BIT);
renderer.begin(); renderer.begin();
renderer.drawSkeleton(skeleton); renderer.drawSkeleton(skeleton);
renderer.drawSkeletonDebug(skeleton); renderer.drawSkeletonDebug(skeleton, false, ["root"]);
var bone = wheel1; var bone = wheel1;
var colorInner = bone === target ? COLOR_INNER_SELECTED : COLOR_INNER; var colorInner = bone === target ? COLOR_INNER_SELECTED : COLOR_INNER;
var colorOuter = bone === target ? COLOR_OUTER_SELECTED : COLOR_OUTER; var colorOuter = bone === target ? COLOR_OUTER_SELECTED : COLOR_OUTER;
renderer.circle(false, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorOuter); renderer.circle(false, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorOuter);
renderer.end(); renderer.end();
requestAnimationFrame(render);
} }
init(); init();

View File

@ -0,0 +1,10 @@
var spineDemos;
(function(spineDemos) {
spineDemos.setupRendering = function (canvas, renderFunc) {
function render() {
renderFunc();
requestAnimationFrame(render);
};
render();
}
})(spineDemos || (spineDemos = { }));

View File

@ -24,9 +24,10 @@
<div id="vinedemo-timeline" class="slider"></div> <div id="vinedemo-timeline" class="slider"></div>
</div> </div>
</center> </center>
<script src="utils.js"></script>
<script src="vine.js"></script> <script src="vine.js"></script>
<script> <script>
vineDemo(); vineDemo("", spineDemos.setupRendering);
</script> </script>
</body> </body>
</html> </html>

View File

@ -1,4 +1,4 @@
var vineDemo = function(pathPrefix) { var vineDemo = function(pathPrefix, loadingComplete) {
var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5); var COLOR_INNER = new spine.Color(0.8, 0, 0, 0.5);
var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8); var COLOR_OUTER = new spine.Color(0.8, 0, 0, 0.8);
var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5); var COLOR_INNER_SELECTED = new spine.Color(0.0, 0, 0.8, 0.5);
@ -82,7 +82,7 @@ var vineDemo = function(pathPrefix) {
setupUI(); setupUI();
requestAnimationFrame(render); loadingComplete(canvas, render);
} else requestAnimationFrame(load); } else requestAnimationFrame(load);
} }
@ -164,9 +164,7 @@ var vineDemo = function(pathPrefix) {
renderer.circle(true, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorInner); renderer.circle(true, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorInner);
renderer.circle(false, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorOuter); renderer.circle(false, skeleton.x + bone.worldX, skeleton.y + bone.worldY, 20, colorOuter);
} }
renderer.end(); renderer.end();
requestAnimationFrame(render);
} }
init(); init();

View File

@ -73,10 +73,10 @@ module spine.webgl {
this.skeletonRenderer.draw(this.batcher, skeleton); this.skeletonRenderer.draw(this.batcher, skeleton);
} }
drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha = false) { drawSkeletonDebug(skeleton: Skeleton, premultipliedAlpha = false, ignoredBones: Array<string> = null) {
this.enableRenderer(this.shapes); this.enableRenderer(this.shapes);
this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha; this.skeletonDebugRenderer.premultipliedAlpha = premultipliedAlpha;
this.skeletonDebugRenderer.draw(this.shapes, skeleton); this.skeletonDebugRenderer.draw(this.shapes, skeleton, ignoredBones);
} }
drawTexture (texture: GLTexture, x: number, y: number, width: number, height: number, color: Color = null) { drawTexture (texture: GLTexture, x: number, y: number, width: number, height: number, color: Color = null) {

View File

@ -42,6 +42,7 @@ module spine.webgl {
drawMeshHull = true; drawMeshHull = true;
drawMeshTriangles = true; drawMeshTriangles = true;
drawPaths = true; drawPaths = true;
drawSkeletonXY = false;
premultipliedAlpha = false; premultipliedAlpha = false;
scale = 1; scale = 1;
boneWidth = 2; boneWidth = 2;
@ -56,7 +57,7 @@ module spine.webgl {
this.gl = gl; this.gl = gl;
} }
draw (shapes: ShapeRenderer, skeleton: Skeleton) { draw (shapes: ShapeRenderer, skeleton: Skeleton, ignoredBones: Array<string> = null) {
let skeletonX = skeleton.x; let skeletonX = skeleton.x;
let skeletonY = skeleton.y; let skeletonY = skeleton.y;
let gl = this.gl; let gl = this.gl;
@ -68,12 +69,13 @@ module spine.webgl {
shapes.setColor(this.boneLineColor); shapes.setColor(this.boneLineColor);
for (let i = 0, n = bones.length; i < n; i++) { for (let i = 0, n = bones.length; i < n; i++) {
let bone = bones[i]; let bone = bones[i];
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) continue;
if (bone.parent == null) continue; if (bone.parent == null) continue;
let x = skeletonX + bone.data.length * bone.a + bone.worldX; let x = skeletonX + bone.data.length * bone.a + bone.worldX;
let y = skeletonY + bone.data.length * bone.c + bone.worldY; let y = skeletonY + bone.data.length * bone.c + bone.worldY;
shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale); shapes.rectLine(true, skeletonX + bone.worldX, skeletonY + bone.worldY, x, y, this.boneWidth * this.scale);
} }
shapes.x(skeletonX, skeletonY, 4 * this.scale); if (this.drawSkeletonXY) shapes.x(skeletonX, skeletonY, 4 * this.scale);
} }
if (this.drawRegionAttachments) { if (this.drawRegionAttachments) {
@ -183,7 +185,8 @@ module spine.webgl {
if (this.drawBones) { if (this.drawBones) {
shapes.setColor(this.boneOriginColor); shapes.setColor(this.boneOriginColor);
for (let i = 0, n = bones.length; i < n; i++) { for (let i = 0, n = bones.length; i < n; i++) {
let bone = bones[i]; let bone = bones[i];
if (ignoredBones && ignoredBones.indexOf(bone.data.name) > -1) continue;
shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8); shapes.circle(true, skeletonX + bone.worldX, skeletonY + bone.worldY, 3 * this.scale, SkeletonDebugRenderer.GREEN, 8);
} }
} }