From 725fd49c77bcf473272e1d9c8ac3306c5a331fa6 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Wed, 30 Oct 2013 22:27:06 +0100 Subject: [PATCH] Support for Atlas with spine-starling in addition to Starling's texture atlas. --- spine-as3/spine-as3/src/spine/atlas/Atlas.as | 5 +- .../spine-as3/src/spine/atlas/AtlasRegion.as | 1 + .../src/spine/atlas/TextureLoader.as | 5 +- .../src/spine/flash/SingleTextureLoader.as | 10 +- .../src/AtlasExample.as | 79 +++++++++++ .../spine-starling-example/src/Main.as | 2 +- .../src/{Game.as => StarlingAtlasExample.as} | 8 +- .../src/spineboy-atlas.atlas | 131 ++++++++++++++++++ .../src/spineboy-atlas.png | Bin 0 -> 74638 bytes .../{spineboy.png => spineboy-starling.png} | Bin .../{spineboy.xml => spineboy-starling.xml} | 0 .../src/spine/starling/SingleTextureLoader.as | 87 ++++++++++++ .../src/spine/starling/SkeletonSprite.as | 13 +- 13 files changed, 325 insertions(+), 16 deletions(-) create mode 100644 spine-starling/spine-starling-example/src/AtlasExample.as rename spine-starling/spine-starling-example/src/{Game.as => StarlingAtlasExample.as} (92%) create mode 100644 spine-starling/spine-starling-example/src/spineboy-atlas.atlas create mode 100644 spine-starling/spine-starling-example/src/spineboy-atlas.png rename spine-starling/spine-starling-example/src/{spineboy.png => spineboy-starling.png} (100%) rename spine-starling/spine-starling-example/src/{spineboy.xml => spineboy-starling.xml} (100%) create mode 100644 spine-starling/spine-starling/src/spine/starling/SingleTextureLoader.as diff --git a/spine-as3/spine-as3/src/spine/atlas/Atlas.as b/spine-as3/spine-as3/src/spine/atlas/Atlas.as index 8036807ee..d1b1f07e7 100644 --- a/spine-as3/spine-as3/src/spine/atlas/Atlas.as +++ b/spine-as3/spine-as3/src/spine/atlas/Atlas.as @@ -87,7 +87,7 @@ public class Atlas { else if (direction == "xy") page.uWrap = page.vWrap = TextureWrap.repeat; - textureLoader.load(page, line); + textureLoader.loadPage(page, line); pages.push(page); @@ -139,6 +139,7 @@ public class Atlas { region.index = parseInt(reader.readValue()); + textureLoader.loadRegion(region); regions.push(region); } } @@ -156,7 +157,7 @@ public class Atlas { public function dispose () : void { for (var i:int = 0, n:int = pages.length; i < n; i++) - textureLoader.unload(pages[i].rendererObject); + textureLoader.unloadPage(pages[i]); } } diff --git a/spine-as3/spine-as3/src/spine/atlas/AtlasRegion.as b/spine-as3/spine-as3/src/spine/atlas/AtlasRegion.as index 67238b27a..292268b4f 100644 --- a/spine-as3/spine-as3/src/spine/atlas/AtlasRegion.as +++ b/spine-as3/spine-as3/src/spine/atlas/AtlasRegion.as @@ -52,6 +52,7 @@ public class AtlasRegion { public var rotate:Boolean; public var splits:Vector.; public var pads:Vector.; + public var rendererObject:Object; } } diff --git a/spine-as3/spine-as3/src/spine/atlas/TextureLoader.as b/spine-as3/spine-as3/src/spine/atlas/TextureLoader.as index 1ea88d7c4..88a3ab5ea 100644 --- a/spine-as3/spine-as3/src/spine/atlas/TextureLoader.as +++ b/spine-as3/spine-as3/src/spine/atlas/TextureLoader.as @@ -34,8 +34,9 @@ package spine.atlas { public interface TextureLoader { - function load (page:AtlasPage, path:String) : void; - function unload (texture:Object) : void; + function loadPage (page:AtlasPage, path:String) : void; + function loadRegion (region:AtlasRegion) : void; + function unloadPage (page:AtlasPage) : void; } } diff --git a/spine-as3/spine-as3/src/spine/flash/SingleTextureLoader.as b/spine-as3/spine-as3/src/spine/flash/SingleTextureLoader.as index 1847f4883..0c303f38c 100644 --- a/spine-as3/spine-as3/src/spine/flash/SingleTextureLoader.as +++ b/spine-as3/spine-as3/src/spine/flash/SingleTextureLoader.as @@ -36,6 +36,7 @@ import flash.display.Bitmap; import flash.display.BitmapData; import spine.atlas.AtlasPage; +import spine.atlas.AtlasRegion; import spine.atlas.TextureLoader; public class SingleTextureLoader implements TextureLoader { @@ -51,14 +52,17 @@ public class SingleTextureLoader implements TextureLoader { throw new ArgumentError("object must be a Bitmap or BitmapData."); } - public function load (page:AtlasPage, path:String) : void { + public function loadPage (page:AtlasPage, path:String) : void { page.rendererObject = pageBitmapData; page.width = pageBitmapData.width; page.height = pageBitmapData.height; } + + public function loadRegion (region:AtlasRegion) : void { + } - public function unload (texture:Object) : void { - BitmapData(texture).dispose(); + public function unloadPage (page:AtlasPage) : void { + BitmapData(page.rendererObject).dispose(); } } diff --git a/spine-starling/spine-starling-example/src/AtlasExample.as b/spine-starling/spine-starling-example/src/AtlasExample.as new file mode 100644 index 000000000..e25f03355 --- /dev/null +++ b/spine-starling/spine-starling-example/src/AtlasExample.as @@ -0,0 +1,79 @@ +package { + +import spine.Event; +import spine.SkeletonData; +import spine.SkeletonJson; +import spine.animation.AnimationStateData; +import spine.atlas.Atlas; +import spine.attachments.AtlasAttachmentLoader; +import spine.starling.SingleTextureLoader; +import spine.starling.SkeletonAnimation; +import spine.starling.StarlingAtlasAttachmentLoader; + +import starling.core.Starling; +import starling.display.Sprite; +import starling.events.Touch; +import starling.events.TouchEvent; +import starling.events.TouchPhase; +import starling.textures.Texture; +import starling.textures.TextureAtlas; + +public class AtlasExample extends Sprite { + [Embed(source = "spineboy-atlas.atlas", mimeType = "application/octet-stream")] + static public const SpineboyAtlasFile:Class; + + [Embed(source = "spineboy-atlas.png")] + static public const SpineboyAtlasTexture:Class; + + [Embed(source = "spineboy.json", mimeType = "application/octet-stream")] + static public const SpineboyJson:Class; + + private var skeleton:SkeletonAnimation; + + public function AtlasExample () { + var atlas:Atlas = new Atlas(new SpineboyAtlasFile(), new SingleTextureLoader(new SpineboyAtlasTexture())); + var json:SkeletonJson = new SkeletonJson(new AtlasAttachmentLoader(atlas)); + var skeletonData:SkeletonData = json.readSkeletonData(new SpineboyJson()); + + var stateData:AnimationStateData = new AnimationStateData(skeletonData); + stateData.setMixByName("walk", "jump", 0.2); + stateData.setMixByName("jump", "walk", 0.4); + stateData.setMixByName("jump", "jump", 0.2); + + skeleton = new SkeletonAnimation(skeletonData, stateData); + skeleton.x = 320; + skeleton.y = 420; + + skeleton.state.onStart = function (trackIndex:int) : void { + trace(trackIndex + " start: " + skeleton.state.getCurrent(trackIndex)); + }; + skeleton.state.onEnd = function (trackIndex:int) : void { + trace(trackIndex + " end: " + skeleton.state.getCurrent(trackIndex)); + }; + skeleton.state.onComplete = function (trackIndex:int, count:int) : void { + trace(trackIndex + " complete: " + skeleton.state.getCurrent(trackIndex) + ", " + count); + }; + skeleton.state.onEvent = function (trackIndex:int, event:Event) : void { + trace(trackIndex + " event: " + skeleton.state.getCurrent(trackIndex) + ", " + + event.data.name + ": " + event.intValue + ", " + event.floatValue + ", " + event.stringValue); + }; + + skeleton.state.setAnimationByName(0, "walk", true); + skeleton.state.addAnimationByName(0, "jump", false, 3); + skeleton.state.addAnimationByName(0, "walk", true, 0); + + addChild(skeleton); + Starling.juggler.add(skeleton); + + addEventListener(TouchEvent.TOUCH, onClick); + } + + private function onClick (event:TouchEvent) : void { + var touch:Touch = event.getTouch(this); + if (touch && touch.phase == TouchPhase.BEGAN) { + skeleton.state.setAnimationByName(0, "jump", false); + skeleton.state.addAnimationByName(0, "walk", true, 0); + } + } +} +} diff --git a/spine-starling/spine-starling-example/src/Main.as b/spine-starling/spine-starling-example/src/Main.as index ab6b7c99d..08e618af1 100644 --- a/spine-starling/spine-starling-example/src/Main.as +++ b/spine-starling/spine-starling-example/src/Main.as @@ -9,7 +9,7 @@ public class Main extends Sprite { private var _starling:Starling; public function Main () { - _starling = new Starling(Game, stage); + _starling = new Starling(AtlasExample, stage); _starling.start(); } } diff --git a/spine-starling/spine-starling-example/src/Game.as b/spine-starling/spine-starling-example/src/StarlingAtlasExample.as similarity index 92% rename from spine-starling/spine-starling-example/src/Game.as rename to spine-starling/spine-starling-example/src/StarlingAtlasExample.as index f2c93bc69..7efc309fc 100644 --- a/spine-starling/spine-starling-example/src/Game.as +++ b/spine-starling/spine-starling-example/src/StarlingAtlasExample.as @@ -15,11 +15,11 @@ import starling.events.TouchPhase; import starling.textures.Texture; import starling.textures.TextureAtlas; -public class Game extends Sprite { - [Embed(source = "spineboy.xml", mimeType = "application/octet-stream")] +public class StarlingAtlasExample extends Sprite { + [Embed(source = "spineboy-starling.xml", mimeType = "application/octet-stream")] static public const SpineboyAtlasXml:Class; - [Embed(source = "spineboy.png")] + [Embed(source = "spineboy-starling.png")] static public const SpineboyAtlasTexture:Class; [Embed(source = "spineboy.json", mimeType = "application/octet-stream")] @@ -27,7 +27,7 @@ public class Game extends Sprite { private var skeleton:SkeletonAnimation; - public function Game () { + public function StarlingAtlasExample () { var texture:Texture = Texture.fromBitmap(new SpineboyAtlasTexture()); var xml:XML = XML(new SpineboyAtlasXml()); var atlas:TextureAtlas = new TextureAtlas(texture, xml); diff --git a/spine-starling/spine-starling-example/src/spineboy-atlas.atlas b/spine-starling/spine-starling-example/src/spineboy-atlas.atlas new file mode 100644 index 000000000..3e1c84e4f --- /dev/null +++ b/spine-starling/spine-starling-example/src/spineboy-atlas.atlas @@ -0,0 +1,131 @@ + +spineboy.png +format: RGBA8888 +filter: Nearest,Nearest +repeat: none +eyes + rotate: false + xy: 312, 24 + size: 34, 27 + orig: 34, 27 + offset: 0, 0 + index: -1 +eyes-closed + rotate: false + xy: 348, 24 + size: 34, 27 + orig: 34, 27 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 2 + size: 121, 132 + orig: 121, 132 + offset: 0, 0 + index: -1 +left-arm + rotate: true + xy: 217, 10 + size: 35, 29 + orig: 35, 29 + offset: 0, 0 + index: -1 +left-foot + rotate: false + xy: 386, 55 + size: 65, 30 + orig: 65, 30 + offset: 0, 0 + index: -1 +left-hand + rotate: false + xy: 125, 2 + size: 35, 38 + orig: 35, 38 + offset: 0, 0 + index: -1 +left-lower-leg + rotate: true + xy: 320, 85 + size: 49, 64 + orig: 49, 64 + offset: 0, 0 + index: -1 +left-shoulder + rotate: true + xy: 162, 6 + size: 34, 53 + orig: 34, 53 + offset: 0, 0 + index: -1 +left-upper-leg + rotate: true + xy: 248, 55 + size: 33, 67 + orig: 33, 67 + offset: 0, 0 + index: -1 +neck + rotate: true + xy: 282, 19 + size: 34, 28 + orig: 34, 28 + offset: 0, 0 + index: -1 +pelvis + rotate: false + xy: 386, 87 + size: 63, 47 + orig: 63, 47 + offset: 0, 0 + index: -1 +right-arm + rotate: true + xy: 195, 47 + size: 21, 45 + orig: 21, 45 + offset: 0, 0 + index: -1 +right-foot + rotate: false + xy: 317, 53 + size: 67, 30 + orig: 67, 30 + offset: 0, 0 + index: -1 +right-hand + rotate: false + xy: 248, 21 + size: 32, 32 + orig: 32, 32 + offset: 0, 0 + index: -1 +right-lower-leg + rotate: false + xy: 195, 70 + size: 51, 64 + orig: 51, 64 + offset: 0, 0 + index: -1 +right-shoulder + rotate: false + xy: 386, 2 + size: 52, 51 + orig: 52, 51 + offset: 0, 0 + index: -1 +right-upper-leg + rotate: true + xy: 248, 90 + size: 44, 70 + orig: 44, 70 + offset: 0, 0 + index: -1 +torso + rotate: false + xy: 125, 42 + size: 68, 92 + orig: 68, 92 + offset: 0, 0 + index: -1 diff --git a/spine-starling/spine-starling-example/src/spineboy-atlas.png b/spine-starling/spine-starling-example/src/spineboy-atlas.png new file mode 100644 index 0000000000000000000000000000000000000000..c55c6af41e5791e1e2013b1cc2d7db74f0573f94 GIT binary patch literal 74638 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

gjUi!*jRF`iU}adJ6dnDBPdyK~VNijno*RGl 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%0Aiv(z{9Dy z&Hx4+J?ecHj9hRTdcXGn?4l)d(R@jXHNB8nD*<7T?zcx}; zF1jKiL0}ZU@kRzC+Uq4KE)f(J0}uhnolO=oUTpyo#YC-5Y^%3j*6gtSIf3mXqjkPD z!vUXx0Ox7L7l=bh~yx9BP_69h(q*GS<8Fv95!&`rKrp=clwg{u4v z#AdQ+U5yA5AYE3o(2>IhsO(Ub7PBBA@^Q04N6@s2O@lpGbj2gr3?^DuO!Rc9`r6{Y zzLr=80oLZWSq)yNy(AH-Updm*_5lK*(5m3Ti$xLr|LT$=0-Z|WxB^7QP$*a_nvB=K zFBGfcz`ahku;25yZk6ne6lw8kAijkuV!xe4@Dqw}ESiINh_gqcqbqxXaJ;|ZGQn9(elc9L;zMTxl zKV&E>fjJ5g6-5qbk3Fs{t`ihEb^hK*$38;$(oOdbmZ{7Szf~wIrT`I!IY)GMum>P< z4Dd9m3X)4Z=(%ZcsLQ7Jw$pjs<~Ej2ms1ZqSmD05r9N;)Ej<@#n*>JD)f5)vU2P0T ze*TvNikG%iZvf(CfPpB6{8rIhVH2HRm*}G#fJEEfzA~W08tDRXoosld2Vm09s3s1773Hm^z(3RO}U3*+e=U;FfvqC zMMbPYF-NG^lnRqx%inn}H^8utoHhZG8yf=v3+mG$m;&LYZRs}v5v9BUML2&Y9UlQv zRJ*Kv&j3j%&66{={4s6{5CIKzm~dUH(vIQZ%2FG}&d26TF4{eRxw%)DB492^*}gRX{Cpu z*x^k=u_FaV1&Eh6!9biKB|6rfAQ-lYK^OtCw@O8@`>07*qoM6N<$f*ngE#sB~S literal 0 HcmV?d00001 diff --git a/spine-starling/spine-starling-example/src/spineboy.png b/spine-starling/spine-starling-example/src/spineboy-starling.png similarity index 100% rename from spine-starling/spine-starling-example/src/spineboy.png rename to spine-starling/spine-starling-example/src/spineboy-starling.png diff --git a/spine-starling/spine-starling-example/src/spineboy.xml b/spine-starling/spine-starling-example/src/spineboy-starling.xml similarity index 100% rename from spine-starling/spine-starling-example/src/spineboy.xml rename to spine-starling/spine-starling-example/src/spineboy-starling.xml diff --git a/spine-starling/spine-starling/src/spine/starling/SingleTextureLoader.as b/spine-starling/spine-starling/src/spine/starling/SingleTextureLoader.as new file mode 100644 index 000000000..33c282a92 --- /dev/null +++ b/spine-starling/spine-starling/src/spine/starling/SingleTextureLoader.as @@ -0,0 +1,87 @@ +/****************************************************************************** + * Spine Runtime Software License - Version 1.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * Redistribution and use in source and binary forms in whole or in part, with + * or without modification, are permitted provided that the following conditions + * are met: + * + * 1. A Spine Essential, Professional, Enterprise, or Education License must + * be purchased from Esoteric Software and the license must remain valid: + * http://esotericsoftware.com/ + * 2. Redistributions of source code must retain this license, which is the + * above copyright notice, this declaration of conditions and the following + * disclaimer. + * 3. Redistributions in binary form must reproduce this license, which is the + * above copyright notice, this declaration of conditions and the following + * disclaimer, in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +package spine.starling { +import flash.display.Bitmap; +import flash.display.BitmapData; +import flash.geom.Point; +import flash.geom.Rectangle; + +import spine.atlas.AtlasPage; +import spine.atlas.AtlasRegion; +import spine.atlas.TextureLoader; + +import starling.textures.SubTexture; +import starling.textures.Texture; + +public class SingleTextureLoader implements TextureLoader { + private var pageBitmapData:BitmapData; + + /** @param object A Bitmap or BitmapData. */ + public function SingleTextureLoader (object:*) { + if (object is BitmapData) + pageBitmapData = BitmapData(object); + else if (object is Bitmap) + pageBitmapData = Bitmap(object).bitmapData; + else + throw new ArgumentError("object must be a Bitmap or BitmapData."); + } + + public function loadPage (page:AtlasPage, path:String) : void { + page.rendererObject = Texture.fromBitmapData(pageBitmapData); + page.width = pageBitmapData.width; + page.height = pageBitmapData.height; + } + + public function loadRegion (region:AtlasRegion) : void { + var image:SkeletonImage = new SkeletonImage(Texture(region.page.rendererObject)); + if (region.rotate) { + image.setTexCoordsTo(0, region.u, region.v2); + image.setTexCoordsTo(1, region.u, region.v); + image.setTexCoordsTo(2, region.u2, region.v2); + image.setTexCoordsTo(3, region.u2, region.v); + } else { + image.setTexCoordsTo(0, region.u, region.v); + image.setTexCoordsTo(1, region.u2, region.v); + image.setTexCoordsTo(2, region.u, region.v2); + image.setTexCoordsTo(3, region.u2, region.v2); + } + region.rendererObject = image; + } + + public function unloadPage (page:AtlasPage) : void { + BitmapData(pageBitmapData).dispose(); + } +} + +} diff --git a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as index 12d62b8e8..ec97f5736 100644 --- a/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as +++ b/spine-starling/spine-starling/src/spine/starling/SkeletonSprite.as @@ -40,6 +40,8 @@ import spine.Bone; import spine.Skeleton; import spine.SkeletonData; import spine.Slot; +import spine.atlas.AtlasPage; +import spine.atlas.AtlasRegion; import spine.attachments.RegionAttachment; import starling.animation.IAnimatable; @@ -87,12 +89,15 @@ public class SkeletonSprite extends DisplayObject implements IAnimatable { var a:Number = slot.a; var rgb:uint = Color.rgb(r * slot.r, g * slot.g, b * slot.b); - var image:SkeletonImage = regionAttachment.rendererObject as SkeletonImage; + var image:SkeletonImage; + image = regionAttachment.rendererObject as SkeletonImage; + if (image == null) image = SkeletonImage(AtlasRegion(regionAttachment.rendererObject).rendererObject); + var vertexData:VertexData = image.vertexData; - - vertexData.setPosition(0, vertices[2], vertices[3]); + + vertexData.setPosition(0, vertices[2], vertices[3]); vertexData.setColorAndAlpha(0, rgb, a); - + vertexData.setPosition(1, vertices[4], vertices[5]); vertexData.setColorAndAlpha(1, rgb, a);