From 5b1814cff345a14d12b148efd074a69cf61a8d89 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 11 Oct 2016 16:33:25 +0200 Subject: [PATCH] spine-lua, spine-love, spine-corona update to 3.4.02 (#722) The spine-lua API has been updated to be compatible with Spine version 3.4.02 (latest stable). The spine-lua API now supports path constraints, transform constraints, uses the new way we encode meshes etc. There are no API breaking changes, only API additions, such as PathConstraints and TransformConstraints as well as additional methods to Skeleton and similar classes. The internals of the spine-lua API have also been updated to follow Lua best performance practices by localizing heavily and using meta tables for "class methods". The spine-lua API now also loads texture atlases as exported by Spine. All that is required for a consumer is to supply an image loading function for their specific engine/framework. We provide implementations for spine-love and spine-corona. The spine-love API can now render all Spine attachment types, including meshes and linked meshes. The API has changed. Where previously a "class" Skeleton existed with a draw function, the new spine-love API introduces a new SkeletonRenderer. See the example on API usage. The spine-corona API can now also render all Spine attachment types. The API has not changed. --- examples/export/export.sh | 6 + examples/export/runtimes.sh | 30 + examples/test/export/test-pma.atlas | 20 + examples/test/export/test-pma.png | Bin 0 -> 10904 bytes examples/test/export/test.atlas | 20 + examples/test/export/test.json | 278 ++ examples/test/export/test.png | Bin 0 -> 10768 bytes examples/test/export/test.skel | Bin 0 -> 5366 bytes examples/test/images/logo.png | Bin 0 -> 16849 bytes examples/test/images/spine.png | Bin 0 -> 28593 bytes examples/test/test.spine | Bin 0 -> 4019 bytes spine-corona/README.md | 12 +- spine-corona/build.settings | 6 +- spine-corona/data/goblins-mesh.json | 1082 +++++++ spine-corona/data/goblins.atlas | 293 ++ spine-corona/data/goblins.png | Bin 0 -> 210574 bytes spine-corona/data/raptor.atlas | 279 ++ spine-corona/data/raptor.json | 2621 +++++++++++++++++ spine-corona/data/raptor.png | Bin 0 -> 506867 bytes spine-corona/data/spineboy.atlas | 216 ++ .../{spineboy-atlas => data}/spineboy.json | 59 +- spine-corona/data/spineboy.png | Bin 0 -> 693860 bytes spine-corona/data/stretchyman.atlas | 41 + spine-corona/data/stretchyman.json | 762 +++++ spine-corona/data/stretchyman.png | Bin 0 -> 134187 bytes spine-corona/data/tank.atlas | 125 + spine-corona/data/tank.json | 1900 ++++++++++++ spine-corona/data/tank.png | Bin 0 -> 325742 bytes spine-corona/data/test.atlas | 20 + spine-corona/data/test.json | 278 ++ spine-corona/data/test.png | Bin 0 -> 10768 bytes spine-corona/data/vine.atlas | 13 + spine-corona/data/vine.json | 313 ++ spine-corona/data/vine.png | Bin 0 -> 160151 bytes spine-corona/examples/dragon/dragon.json | 768 ----- spine-corona/examples/dragon/dragon.lua | 40 - .../examples/dragon/images/L_front_leg.png | Bin 5203 -> 0 bytes .../examples/dragon/images/L_front_thigh.png | Bin 6458 -> 0 bytes .../examples/dragon/images/L_rear_leg.png | Bin 14818 -> 0 bytes .../examples/dragon/images/L_rear_thigh.png | Bin 4090 -> 0 bytes .../examples/dragon/images/L_wing01.png | Bin 5550 -> 0 bytes .../examples/dragon/images/L_wing02.png | Bin 5799 -> 0 bytes .../examples/dragon/images/L_wing03.png | Bin 4926 -> 0 bytes .../examples/dragon/images/L_wing04.png | Bin 4521 -> 0 bytes .../examples/dragon/images/L_wing05.png | Bin 5683 -> 0 bytes .../examples/dragon/images/L_wing06.png | Bin 6855 -> 0 bytes .../examples/dragon/images/L_wing07.png | Bin 5380 -> 0 bytes .../examples/dragon/images/L_wing08.png | Bin 4331 -> 0 bytes .../examples/dragon/images/L_wing09.png | Bin 5291 -> 0 bytes .../examples/dragon/images/R_front_leg.png | Bin 9765 -> 0 bytes .../examples/dragon/images/R_front_thigh.png | Bin 13171 -> 0 bytes .../examples/dragon/images/R_rear_leg.png | Bin 9722 -> 0 bytes .../examples/dragon/images/R_rear_thigh.png | Bin 18440 -> 0 bytes .../examples/dragon/images/R_wing01.png | Bin 51348 -> 0 bytes .../examples/dragon/images/R_wing02.png | Bin 46201 -> 0 bytes .../examples/dragon/images/R_wing03.png | Bin 46075 -> 0 bytes .../examples/dragon/images/R_wing04.png | Bin 27403 -> 0 bytes .../examples/dragon/images/R_wing05.png | Bin 27892 -> 0 bytes .../examples/dragon/images/R_wing06.png | Bin 31996 -> 0 bytes .../examples/dragon/images/R_wing07.png | Bin 25147 -> 0 bytes .../examples/dragon/images/R_wing08.png | Bin 31830 -> 0 bytes .../examples/dragon/images/R_wing09.png | Bin 39744 -> 0 bytes spine-corona/examples/dragon/images/back.png | Bin 49820 -> 0 bytes spine-corona/examples/dragon/images/chest.png | Bin 20897 -> 0 bytes spine-corona/examples/dragon/images/chin.png | Bin 40756 -> 0 bytes .../examples/dragon/images/front_toeA.png | Bin 3380 -> 0 bytes .../examples/dragon/images/front_toeB.png | Bin 4640 -> 0 bytes spine-corona/examples/dragon/images/head.png | Bin 98503 -> 0 bytes .../examples/dragon/images/license.txt | 5 - spine-corona/examples/dragon/images/logo.png | Bin 21289 -> 0 bytes .../examples/dragon/images/rear-toe.png | Bin 8188 -> 0 bytes .../examples/dragon/images/tail01.png | Bin 23285 -> 0 bytes .../examples/dragon/images/tail02.png | Bin 15928 -> 0 bytes .../examples/dragon/images/tail03.png | Bin 10996 -> 0 bytes .../examples/dragon/images/tail04.png | Bin 7683 -> 0 bytes .../examples/dragon/images/tail05.png | Bin 6382 -> 0 bytes .../examples/dragon/images/tail06.png | Bin 8004 -> 0 bytes spine-corona/examples/goblins/goblins.json | 499 ---- spine-corona/examples/goblins/goblins.lua | 40 - .../examples/goblins/images/dagger.png | Bin 6583 -> 0 bytes .../goblins/images/goblin/eyes-closed.png | Bin 2387 -> 0 bytes .../examples/goblins/images/goblin/head.png | Bin 13908 -> 0 bytes .../goblins/images/goblin/left-arm.png | Bin 4335 -> 0 bytes .../goblins/images/goblin/left-foot.png | Bin 5684 -> 0 bytes .../goblins/images/goblin/left-hand.png | Bin 4632 -> 0 bytes .../goblins/images/goblin/left-lower-leg.png | Bin 6111 -> 0 bytes .../goblins/images/goblin/left-shoulder.png | Bin 4008 -> 0 bytes .../goblins/images/goblin/left-upper-leg.png | Bin 5738 -> 0 bytes .../examples/goblins/images/goblin/neck.png | Bin 4488 -> 0 bytes .../examples/goblins/images/goblin/pelvis.png | Bin 6039 -> 0 bytes .../goblins/images/goblin/right-arm.png | Bin 3749 -> 0 bytes .../goblins/images/goblin/right-foot.png | Bin 5998 -> 0 bytes .../goblins/images/goblin/right-hand.png | Bin 4174 -> 0 bytes .../goblins/images/goblin/right-lower-leg.png | Bin 6365 -> 0 bytes .../goblins/images/goblin/right-shoulder.png | Bin 4754 -> 0 bytes .../goblins/images/goblin/right-upper-leg.png | Bin 5802 -> 0 bytes .../examples/goblins/images/goblin/torso.png | Bin 14342 -> 0 bytes .../goblins/images/goblin/undie-straps.png | Bin 3871 -> 0 bytes .../examples/goblins/images/goblin/undies.png | Bin 3890 -> 0 bytes .../goblins/images/goblingirl/eyes-closed.png | Bin 2955 -> 0 bytes .../goblins/images/goblingirl/head.png | Bin 18178 -> 0 bytes .../goblins/images/goblingirl/left-arm.png | Bin 4133 -> 0 bytes .../goblins/images/goblingirl/left-foot.png | Bin 5536 -> 0 bytes .../goblins/images/goblingirl/left-hand.png | Bin 4357 -> 0 bytes .../images/goblingirl/left-lower-leg.png | Bin 5862 -> 0 bytes .../images/goblingirl/left-shoulder.png | Bin 4144 -> 0 bytes .../images/goblingirl/left-upper-leg.png | Bin 5417 -> 0 bytes .../goblins/images/goblingirl/neck.png | Bin 4663 -> 0 bytes .../goblins/images/goblingirl/pelvis.png | Bin 6251 -> 0 bytes .../goblins/images/goblingirl/right-arm.png | Bin 4312 -> 0 bytes .../goblins/images/goblingirl/right-foot.png | Bin 5813 -> 0 bytes .../goblins/images/goblingirl/right-hand.png | Bin 4050 -> 0 bytes .../images/goblingirl/right-lower-leg.png | Bin 6070 -> 0 bytes .../images/goblingirl/right-shoulder.png | Bin 4492 -> 0 bytes .../images/goblingirl/right-upper-leg.png | Bin 5317 -> 0 bytes .../goblins/images/goblingirl/torso.png | Bin 14125 -> 0 bytes .../images/goblingirl/undie-straps.png | Bin 3823 -> 0 bytes .../goblins/images/goblingirl/undies.png | Bin 3894 -> 0 bytes .../examples/goblins/images/spear.png | Bin 15868 -> 0 bytes spine-corona/examples/hero/hero.json | 1 - spine-corona/examples/hero/hero.lua | 55 - spine-corona/examples/hero/images/body.png | Bin 14971 -> 0 bytes spine-corona/examples/hero/images/cape.png | Bin 18361 -> 0 bytes spine-corona/examples/hero/images/eyes.png | Bin 12988 -> 0 bytes spine-corona/examples/hero/images/fingers.png | Bin 6914 -> 0 bytes spine-corona/examples/hero/images/foot1.png | Bin 11231 -> 0 bytes spine-corona/examples/hero/images/foot2.png | Bin 10883 -> 0 bytes .../examples/hero/images/forearm1.png | Bin 6706 -> 0 bytes .../examples/hero/images/forearm2.png | Bin 6789 -> 0 bytes spine-corona/examples/hero/images/hand1.png | Bin 9941 -> 0 bytes spine-corona/examples/hero/images/hand2.png | Bin 7414 -> 0 bytes spine-corona/examples/hero/images/head.png | Bin 28162 -> 0 bytes spine-corona/examples/hero/images/license.txt | 5 - spine-corona/examples/hero/images/mantles.png | Bin 14681 -> 0 bytes spine-corona/examples/hero/images/mouth.png | Bin 5974 -> 0 bytes spine-corona/examples/hero/images/shin1.png | Bin 8044 -> 0 bytes spine-corona/examples/hero/images/shin2.png | Bin 7635 -> 0 bytes spine-corona/examples/hero/images/sword.png | Bin 15396 -> 0 bytes spine-corona/examples/hero/images/thigh1.png | Bin 7656 -> 0 bytes spine-corona/examples/hero/images/thigh2.png | Bin 7133 -> 0 bytes .../examples/hero/images/upperarm1.png | Bin 6338 -> 0 bytes .../examples/hero/images/upperarm2.png | Bin 5832 -> 0 bytes .../examples/spineboy-atlas/spineboy.atlas | 194 -- .../examples/spineboy-atlas/spineboy.json | 2419 --------------- .../examples/spineboy-atlas/spineboy.lua | 87 - .../examples/spineboy-atlas/spineboy.png | Bin 258904 -> 0 bytes .../spineboy/images/eye_indifferent.png | Bin 35984 -> 0 bytes .../spineboy/images/eye_surprised.png | Bin 35984 -> 0 bytes .../examples/spineboy/images/eyes-closed.png | Bin 3296 -> 0 bytes .../examples/spineboy/images/eyes.png | Bin 3454 -> 0 bytes .../examples/spineboy/images/front_bracer.png | Bin 21427 -> 0 bytes .../spineboy/images/front_fist_closed.png | Bin 27469 -> 0 bytes .../spineboy/images/front_fist_open.png | Bin 32802 -> 0 bytes .../examples/spineboy/images/front_foot.png | Bin 37632 -> 0 bytes .../spineboy/images/front_foot_bend1.png | Bin 38697 -> 0 bytes .../spineboy/images/front_foot_bend2.png | Bin 43056 -> 0 bytes .../examples/spineboy/images/front_shin.png | Bin 63323 -> 0 bytes .../examples/spineboy/images/front_thigh.png | Bin 24403 -> 0 bytes .../spineboy/images/front_upper_arm.png | Bin 23836 -> 0 bytes .../examples/spineboy/images/goggles.png | Bin 176277 -> 0 bytes spine-corona/examples/spineboy/images/gun.png | Bin 173530 -> 0 bytes .../examples/spineboy/images/head.png | Bin 326157 -> 0 bytes .../examples/spineboy/images/left-ankle.png | Bin 1570 -> 0 bytes .../examples/spineboy/images/left-arm.png | Bin 3546 -> 0 bytes .../examples/spineboy/images/left-foot.png | Bin 5349 -> 0 bytes .../examples/spineboy/images/left-hand.png | Bin 4802 -> 0 bytes .../spineboy/images/left-lower-leg.png | Bin 6146 -> 0 bytes .../spineboy/images/left-pant-bottom.png | Bin 2456 -> 0 bytes .../spineboy/images/left-shoulder.png | Bin 3867 -> 0 bytes .../spineboy/images/left-upper-leg.png | Bin 4456 -> 0 bytes .../examples/spineboy/images/mouth_grind.png | Bin 24794 -> 0 bytes .../examples/spineboy/images/mouth_oooo.png | Bin 24794 -> 0 bytes .../examples/spineboy/images/mouth_smile.png | Bin 24794 -> 0 bytes .../examples/spineboy/images/muzzle.png | Bin 151189 -> 0 bytes .../examples/spineboy/images/neck.png | Bin 8732 -> 0 bytes .../examples/spineboy/images/pelvis.png | Bin 5861 -> 0 bytes .../examples/spineboy/images/rear_bracer.png | Bin 18987 -> 0 bytes .../examples/spineboy/images/rear_foot.png | Bin 29967 -> 0 bytes .../spineboy/images/rear_foot_bend1.png | Bin 33741 -> 0 bytes .../spineboy/images/rear_foot_bend2.png | Bin 37066 -> 0 bytes .../examples/spineboy/images/rear_shin.png | Bin 56365 -> 0 bytes .../examples/spineboy/images/rear_thigh.png | Bin 29931 -> 0 bytes .../spineboy/images/rear_upper_arm.png | Bin 19230 -> 0 bytes .../examples/spineboy/images/right-ankle.png | Bin 1530 -> 0 bytes .../examples/spineboy/images/right-arm.png | Bin 3173 -> 0 bytes .../spineboy/images/right-foot-idle.png | Bin 4555 -> 0 bytes .../examples/spineboy/images/right-foot.png | Bin 5402 -> 0 bytes .../examples/spineboy/images/right-hand.png | Bin 3744 -> 0 bytes .../spineboy/images/right-lower-leg.png | Bin 6174 -> 0 bytes .../spineboy/images/right-pant-bottom.png | Bin 2068 -> 0 bytes .../spineboy/images/right-shoulder.png | Bin 4847 -> 0 bytes .../spineboy/images/right-upper-leg.png | Bin 5550 -> 0 bytes .../examples/spineboy/images/torso.png | Bin 73532 -> 0 bytes .../examples/spineboy/spineboy-mesh.json | 989 ------- .../examples/spineboy/spineboy-mesh.lua | 62 - spine-corona/examples/spineboy/spineboy.json | 1 - spine-corona/examples/spineboy/spineboy.lua | 85 - spine-corona/main.lua | 99 +- spine-corona/mobdebug.lua | 1465 +++++++++ spine-corona/spine-corona/spine.lua | 491 +-- spine-corona/spineboy-atlas/spineboy.atlas | 194 -- spine-corona/spineboy-atlas/spineboy.lua | 87 - spine-corona/spineboy-atlas/spineboy.png | Bin 258904 -> 0 bytes .../com/esotericsoftware/spine/Sandbox.java | 132 + spine-love/README.md | 4 +- spine-love/data/goblins-mesh.json | 1082 +++++++ spine-love/data/goblins.atlas | 293 ++ spine-love/data/goblins.png | Bin 0 -> 210574 bytes spine-love/data/images/eye_indifferent.png | Bin 35984 -> 0 bytes spine-love/data/images/eye_surprised.png | Bin 35984 -> 0 bytes spine-love/data/images/eyes-closed.png | Bin 3296 -> 0 bytes spine-love/data/images/eyes.png | Bin 3454 -> 0 bytes spine-love/data/images/front_bracer.png | Bin 21427 -> 0 bytes spine-love/data/images/front_fist_closed.png | Bin 27469 -> 0 bytes spine-love/data/images/front_fist_open.png | Bin 32802 -> 0 bytes spine-love/data/images/front_foot.png | Bin 37632 -> 0 bytes spine-love/data/images/front_foot_bend1.png | Bin 38697 -> 0 bytes spine-love/data/images/front_foot_bend2.png | Bin 43056 -> 0 bytes spine-love/data/images/front_shin.png | Bin 63323 -> 0 bytes spine-love/data/images/front_thigh.png | Bin 24403 -> 0 bytes spine-love/data/images/front_upper_arm.png | Bin 23836 -> 0 bytes spine-love/data/images/goggles.png | Bin 176277 -> 0 bytes spine-love/data/images/gun.png | Bin 173530 -> 0 bytes spine-love/data/images/head.png | Bin 326157 -> 0 bytes spine-love/data/images/left-ankle.png | Bin 1570 -> 0 bytes spine-love/data/images/left-arm.png | Bin 3546 -> 0 bytes spine-love/data/images/left-foot.png | Bin 5349 -> 0 bytes spine-love/data/images/left-hand.png | Bin 4802 -> 0 bytes spine-love/data/images/left-lower-leg.png | Bin 6146 -> 0 bytes spine-love/data/images/left-pant-bottom.png | Bin 2456 -> 0 bytes spine-love/data/images/left-shoulder.png | Bin 3867 -> 0 bytes spine-love/data/images/left-upper-leg.png | Bin 4456 -> 0 bytes spine-love/data/images/mouth_grind.png | Bin 24794 -> 0 bytes spine-love/data/images/mouth_oooo.png | Bin 24794 -> 0 bytes spine-love/data/images/mouth_smile.png | Bin 24794 -> 0 bytes spine-love/data/images/muzzle.png | Bin 151189 -> 0 bytes spine-love/data/images/neck.png | Bin 8732 -> 0 bytes spine-love/data/images/pelvis.png | Bin 5861 -> 0 bytes spine-love/data/images/rear_bracer.png | Bin 18987 -> 0 bytes spine-love/data/images/rear_foot.png | Bin 29967 -> 0 bytes spine-love/data/images/rear_foot_bend1.png | Bin 33741 -> 0 bytes spine-love/data/images/rear_foot_bend2.png | Bin 37066 -> 0 bytes spine-love/data/images/rear_shin.png | Bin 56365 -> 0 bytes spine-love/data/images/rear_thigh.png | Bin 29931 -> 0 bytes spine-love/data/images/rear_upper_arm.png | Bin 19230 -> 0 bytes spine-love/data/images/right-ankle.png | Bin 1530 -> 0 bytes spine-love/data/images/right-arm.png | Bin 3173 -> 0 bytes spine-love/data/images/right-foot-idle.png | Bin 4555 -> 0 bytes spine-love/data/images/right-foot.png | Bin 5402 -> 0 bytes spine-love/data/images/right-hand.png | Bin 3744 -> 0 bytes spine-love/data/images/right-lower-leg.png | Bin 6174 -> 0 bytes spine-love/data/images/right-pant-bottom.png | Bin 2068 -> 0 bytes spine-love/data/images/right-shoulder.png | Bin 4847 -> 0 bytes spine-love/data/images/right-upper-leg.png | Bin 5550 -> 0 bytes spine-love/data/images/torso.png | Bin 73532 -> 0 bytes spine-love/data/raptor.atlas | 279 ++ spine-love/data/raptor.json | 2621 +++++++++++++++++ spine-love/data/raptor.png | Bin 0 -> 506867 bytes spine-love/data/spineboy.atlas | 216 ++ spine-love/data/spineboy.json | 2413 ++++++++++++++- spine-love/data/spineboy.png | Bin 0 -> 693860 bytes spine-love/data/stretchyman.atlas | 41 + spine-love/data/stretchyman.json | 762 +++++ spine-love/data/stretchyman.png | Bin 0 -> 134187 bytes spine-love/data/tank.atlas | 125 + spine-love/data/tank.json | 1900 ++++++++++++ spine-love/data/tank.png | Bin 0 -> 325742 bytes spine-love/data/test.atlas | 20 + spine-love/data/test.json | 278 ++ spine-love/data/test.png | Bin 0 -> 10768 bytes spine-love/data/vine.atlas | 13 + spine-love/data/vine.json | 313 ++ spine-love/data/vine.png | Bin 0 -> 160151 bytes spine-love/main.lua | 98 +- spine-love/spine-love/dkjson.lua | 1062 +++---- spine-love/spine-love/spine.lua | 339 ++- spine-lua/Animation.lua | 795 +++-- spine-lua/Atlas.lua | 2 +- spine-lua/AttachmentLoader.lua | 15 +- spine-lua/Bone.lua | 400 ++- spine-lua/BoneData.lua | 11 +- spine-lua/Color.lua | 84 + spine-lua/Event.lua | 5 +- spine-lua/IkConstraint.lua | 321 +- spine-lua/PathConstraint.lua | 517 ++++ spine-lua/PathConstraintData.lua | 70 + spine-lua/Skeleton.lua | 607 ++-- spine-lua/SkeletonBounds.lua | 291 +- spine-lua/SkeletonData.lua | 164 +- spine-lua/SkeletonJson.lua | 715 +++-- spine-lua/Skin.lua | 84 +- spine-lua/SkinnedMeshAttachment.lua | 2 +- spine-lua/Slot.lua | 81 +- spine-lua/SlotData.lua | 22 +- spine-lua/TextureAtlas.lua | 244 ++ spine-lua/TextureAtlasAttachmentLoader.lua | 82 + spine-lua/TextureAtlasRegion.lua | 53 + spine-lua/TextureFilter.lua | 41 + spine-lua/TextureRegion.lua | 52 + spine-lua/TextureWrap.lua | 36 + spine-lua/TransformConstraint.lua | 151 + spine-lua/TransformConstraintData.lua | 47 + spine-lua/attachments/Attachment.lua | 51 + spine-lua/attachments/AttachmentType.lua | 39 + .../attachments/BoundingBoxAttachment.lua | 48 + spine-lua/attachments/MeshAttachment.lua | 233 ++ spine-lua/attachments/PathAttachment.lua | 49 + spine-lua/attachments/RegionAttachment.lua | 231 ++ spine-lua/attachments/VertexAttachment.lua | 154 + spine-lua/utils.lua | 49 + spine-ts/webgl/example/index.html | 8 +- 311 files changed, 25743 insertions(+), 7962 deletions(-) create mode 100644 examples/test/export/test-pma.atlas create mode 100644 examples/test/export/test-pma.png create mode 100644 examples/test/export/test.atlas create mode 100644 examples/test/export/test.json create mode 100644 examples/test/export/test.png create mode 100644 examples/test/export/test.skel create mode 100644 examples/test/images/logo.png create mode 100644 examples/test/images/spine.png create mode 100644 examples/test/test.spine create mode 100644 spine-corona/data/goblins-mesh.json create mode 100644 spine-corona/data/goblins.atlas create mode 100644 spine-corona/data/goblins.png create mode 100644 spine-corona/data/raptor.atlas create mode 100644 spine-corona/data/raptor.json create mode 100644 spine-corona/data/raptor.png create mode 100644 spine-corona/data/spineboy.atlas rename spine-corona/{spineboy-atlas => data}/spineboy.json (97%) create mode 100644 spine-corona/data/spineboy.png create mode 100644 spine-corona/data/stretchyman.atlas create mode 100644 spine-corona/data/stretchyman.json create mode 100644 spine-corona/data/stretchyman.png create mode 100644 spine-corona/data/tank.atlas create mode 100644 spine-corona/data/tank.json create mode 100644 spine-corona/data/tank.png create mode 100644 spine-corona/data/test.atlas create mode 100644 spine-corona/data/test.json create mode 100644 spine-corona/data/test.png create mode 100644 spine-corona/data/vine.atlas create mode 100644 spine-corona/data/vine.json create mode 100644 spine-corona/data/vine.png delete mode 100644 spine-corona/examples/dragon/dragon.json delete mode 100644 spine-corona/examples/dragon/dragon.lua delete mode 100644 spine-corona/examples/dragon/images/L_front_leg.png delete mode 100644 spine-corona/examples/dragon/images/L_front_thigh.png delete mode 100644 spine-corona/examples/dragon/images/L_rear_leg.png delete mode 100644 spine-corona/examples/dragon/images/L_rear_thigh.png delete mode 100644 spine-corona/examples/dragon/images/L_wing01.png delete mode 100644 spine-corona/examples/dragon/images/L_wing02.png delete mode 100644 spine-corona/examples/dragon/images/L_wing03.png delete mode 100644 spine-corona/examples/dragon/images/L_wing04.png delete mode 100644 spine-corona/examples/dragon/images/L_wing05.png delete mode 100644 spine-corona/examples/dragon/images/L_wing06.png delete mode 100644 spine-corona/examples/dragon/images/L_wing07.png delete mode 100644 spine-corona/examples/dragon/images/L_wing08.png delete mode 100644 spine-corona/examples/dragon/images/L_wing09.png delete mode 100644 spine-corona/examples/dragon/images/R_front_leg.png delete mode 100644 spine-corona/examples/dragon/images/R_front_thigh.png delete mode 100644 spine-corona/examples/dragon/images/R_rear_leg.png delete mode 100644 spine-corona/examples/dragon/images/R_rear_thigh.png delete mode 100644 spine-corona/examples/dragon/images/R_wing01.png delete mode 100644 spine-corona/examples/dragon/images/R_wing02.png delete mode 100644 spine-corona/examples/dragon/images/R_wing03.png delete mode 100644 spine-corona/examples/dragon/images/R_wing04.png delete mode 100644 spine-corona/examples/dragon/images/R_wing05.png delete mode 100644 spine-corona/examples/dragon/images/R_wing06.png delete mode 100644 spine-corona/examples/dragon/images/R_wing07.png delete mode 100644 spine-corona/examples/dragon/images/R_wing08.png delete mode 100644 spine-corona/examples/dragon/images/R_wing09.png delete mode 100644 spine-corona/examples/dragon/images/back.png delete mode 100644 spine-corona/examples/dragon/images/chest.png delete mode 100644 spine-corona/examples/dragon/images/chin.png delete mode 100644 spine-corona/examples/dragon/images/front_toeA.png delete mode 100644 spine-corona/examples/dragon/images/front_toeB.png delete mode 100644 spine-corona/examples/dragon/images/head.png delete mode 100644 spine-corona/examples/dragon/images/license.txt delete mode 100644 spine-corona/examples/dragon/images/logo.png delete mode 100644 spine-corona/examples/dragon/images/rear-toe.png delete mode 100644 spine-corona/examples/dragon/images/tail01.png delete mode 100644 spine-corona/examples/dragon/images/tail02.png delete mode 100644 spine-corona/examples/dragon/images/tail03.png delete mode 100644 spine-corona/examples/dragon/images/tail04.png delete mode 100644 spine-corona/examples/dragon/images/tail05.png delete mode 100644 spine-corona/examples/dragon/images/tail06.png delete mode 100644 spine-corona/examples/goblins/goblins.json delete mode 100644 spine-corona/examples/goblins/goblins.lua delete mode 100644 spine-corona/examples/goblins/images/dagger.png delete mode 100644 spine-corona/examples/goblins/images/goblin/eyes-closed.png delete mode 100644 spine-corona/examples/goblins/images/goblin/head.png delete mode 100644 spine-corona/examples/goblins/images/goblin/left-arm.png delete mode 100644 spine-corona/examples/goblins/images/goblin/left-foot.png delete mode 100644 spine-corona/examples/goblins/images/goblin/left-hand.png delete mode 100644 spine-corona/examples/goblins/images/goblin/left-lower-leg.png delete mode 100644 spine-corona/examples/goblins/images/goblin/left-shoulder.png delete mode 100644 spine-corona/examples/goblins/images/goblin/left-upper-leg.png delete mode 100644 spine-corona/examples/goblins/images/goblin/neck.png delete mode 100644 spine-corona/examples/goblins/images/goblin/pelvis.png delete mode 100644 spine-corona/examples/goblins/images/goblin/right-arm.png delete mode 100644 spine-corona/examples/goblins/images/goblin/right-foot.png delete mode 100644 spine-corona/examples/goblins/images/goblin/right-hand.png delete mode 100644 spine-corona/examples/goblins/images/goblin/right-lower-leg.png delete mode 100644 spine-corona/examples/goblins/images/goblin/right-shoulder.png delete mode 100644 spine-corona/examples/goblins/images/goblin/right-upper-leg.png delete mode 100644 spine-corona/examples/goblins/images/goblin/torso.png delete mode 100644 spine-corona/examples/goblins/images/goblin/undie-straps.png delete mode 100644 spine-corona/examples/goblins/images/goblin/undies.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/eyes-closed.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/head.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/left-arm.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/left-foot.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/left-hand.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/left-lower-leg.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/left-shoulder.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/left-upper-leg.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/neck.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/pelvis.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/right-arm.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/right-foot.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/right-hand.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/right-lower-leg.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/right-shoulder.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/right-upper-leg.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/torso.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/undie-straps.png delete mode 100644 spine-corona/examples/goblins/images/goblingirl/undies.png delete mode 100644 spine-corona/examples/goblins/images/spear.png delete mode 100644 spine-corona/examples/hero/hero.json delete mode 100644 spine-corona/examples/hero/hero.lua delete mode 100644 spine-corona/examples/hero/images/body.png delete mode 100644 spine-corona/examples/hero/images/cape.png delete mode 100644 spine-corona/examples/hero/images/eyes.png delete mode 100644 spine-corona/examples/hero/images/fingers.png delete mode 100644 spine-corona/examples/hero/images/foot1.png delete mode 100644 spine-corona/examples/hero/images/foot2.png delete mode 100644 spine-corona/examples/hero/images/forearm1.png delete mode 100644 spine-corona/examples/hero/images/forearm2.png delete mode 100644 spine-corona/examples/hero/images/hand1.png delete mode 100644 spine-corona/examples/hero/images/hand2.png delete mode 100644 spine-corona/examples/hero/images/head.png delete mode 100644 spine-corona/examples/hero/images/license.txt delete mode 100644 spine-corona/examples/hero/images/mantles.png delete mode 100644 spine-corona/examples/hero/images/mouth.png delete mode 100644 spine-corona/examples/hero/images/shin1.png delete mode 100644 spine-corona/examples/hero/images/shin2.png delete mode 100644 spine-corona/examples/hero/images/sword.png delete mode 100644 spine-corona/examples/hero/images/thigh1.png delete mode 100644 spine-corona/examples/hero/images/thigh2.png delete mode 100644 spine-corona/examples/hero/images/upperarm1.png delete mode 100644 spine-corona/examples/hero/images/upperarm2.png delete mode 100644 spine-corona/examples/spineboy-atlas/spineboy.atlas delete mode 100644 spine-corona/examples/spineboy-atlas/spineboy.json delete mode 100644 spine-corona/examples/spineboy-atlas/spineboy.lua delete mode 100644 spine-corona/examples/spineboy-atlas/spineboy.png delete mode 100644 spine-corona/examples/spineboy/images/eye_indifferent.png delete mode 100644 spine-corona/examples/spineboy/images/eye_surprised.png delete mode 100644 spine-corona/examples/spineboy/images/eyes-closed.png delete mode 100644 spine-corona/examples/spineboy/images/eyes.png delete mode 100644 spine-corona/examples/spineboy/images/front_bracer.png delete mode 100644 spine-corona/examples/spineboy/images/front_fist_closed.png delete mode 100644 spine-corona/examples/spineboy/images/front_fist_open.png delete mode 100644 spine-corona/examples/spineboy/images/front_foot.png delete mode 100644 spine-corona/examples/spineboy/images/front_foot_bend1.png delete mode 100644 spine-corona/examples/spineboy/images/front_foot_bend2.png delete mode 100644 spine-corona/examples/spineboy/images/front_shin.png delete mode 100644 spine-corona/examples/spineboy/images/front_thigh.png delete mode 100644 spine-corona/examples/spineboy/images/front_upper_arm.png delete mode 100644 spine-corona/examples/spineboy/images/goggles.png delete mode 100644 spine-corona/examples/spineboy/images/gun.png delete mode 100644 spine-corona/examples/spineboy/images/head.png delete mode 100644 spine-corona/examples/spineboy/images/left-ankle.png delete mode 100644 spine-corona/examples/spineboy/images/left-arm.png delete mode 100644 spine-corona/examples/spineboy/images/left-foot.png delete mode 100644 spine-corona/examples/spineboy/images/left-hand.png delete mode 100644 spine-corona/examples/spineboy/images/left-lower-leg.png delete mode 100644 spine-corona/examples/spineboy/images/left-pant-bottom.png delete mode 100644 spine-corona/examples/spineboy/images/left-shoulder.png delete mode 100644 spine-corona/examples/spineboy/images/left-upper-leg.png delete mode 100644 spine-corona/examples/spineboy/images/mouth_grind.png delete mode 100644 spine-corona/examples/spineboy/images/mouth_oooo.png delete mode 100644 spine-corona/examples/spineboy/images/mouth_smile.png delete mode 100644 spine-corona/examples/spineboy/images/muzzle.png delete mode 100644 spine-corona/examples/spineboy/images/neck.png delete mode 100644 spine-corona/examples/spineboy/images/pelvis.png delete mode 100644 spine-corona/examples/spineboy/images/rear_bracer.png delete mode 100644 spine-corona/examples/spineboy/images/rear_foot.png delete mode 100644 spine-corona/examples/spineboy/images/rear_foot_bend1.png delete mode 100644 spine-corona/examples/spineboy/images/rear_foot_bend2.png delete mode 100644 spine-corona/examples/spineboy/images/rear_shin.png delete mode 100644 spine-corona/examples/spineboy/images/rear_thigh.png delete mode 100644 spine-corona/examples/spineboy/images/rear_upper_arm.png delete mode 100644 spine-corona/examples/spineboy/images/right-ankle.png delete mode 100644 spine-corona/examples/spineboy/images/right-arm.png delete mode 100644 spine-corona/examples/spineboy/images/right-foot-idle.png delete mode 100644 spine-corona/examples/spineboy/images/right-foot.png delete mode 100644 spine-corona/examples/spineboy/images/right-hand.png delete mode 100644 spine-corona/examples/spineboy/images/right-lower-leg.png delete mode 100644 spine-corona/examples/spineboy/images/right-pant-bottom.png delete mode 100644 spine-corona/examples/spineboy/images/right-shoulder.png delete mode 100644 spine-corona/examples/spineboy/images/right-upper-leg.png delete mode 100644 spine-corona/examples/spineboy/images/torso.png delete mode 100755 spine-corona/examples/spineboy/spineboy-mesh.json delete mode 100644 spine-corona/examples/spineboy/spineboy-mesh.lua delete mode 100644 spine-corona/examples/spineboy/spineboy.json delete mode 100644 spine-corona/examples/spineboy/spineboy.lua create mode 100644 spine-corona/mobdebug.lua mode change 100755 => 100644 spine-corona/spine-corona/spine.lua delete mode 100644 spine-corona/spineboy-atlas/spineboy.atlas delete mode 100644 spine-corona/spineboy-atlas/spineboy.lua delete mode 100644 spine-corona/spineboy-atlas/spineboy.png create mode 100644 spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Sandbox.java create mode 100644 spine-love/data/goblins-mesh.json create mode 100644 spine-love/data/goblins.atlas create mode 100644 spine-love/data/goblins.png delete mode 100644 spine-love/data/images/eye_indifferent.png delete mode 100644 spine-love/data/images/eye_surprised.png delete mode 100644 spine-love/data/images/eyes-closed.png delete mode 100644 spine-love/data/images/eyes.png delete mode 100644 spine-love/data/images/front_bracer.png delete mode 100644 spine-love/data/images/front_fist_closed.png delete mode 100644 spine-love/data/images/front_fist_open.png delete mode 100644 spine-love/data/images/front_foot.png delete mode 100644 spine-love/data/images/front_foot_bend1.png delete mode 100644 spine-love/data/images/front_foot_bend2.png delete mode 100644 spine-love/data/images/front_shin.png delete mode 100644 spine-love/data/images/front_thigh.png delete mode 100644 spine-love/data/images/front_upper_arm.png delete mode 100644 spine-love/data/images/goggles.png delete mode 100644 spine-love/data/images/gun.png delete mode 100644 spine-love/data/images/head.png delete mode 100644 spine-love/data/images/left-ankle.png delete mode 100644 spine-love/data/images/left-arm.png delete mode 100644 spine-love/data/images/left-foot.png delete mode 100644 spine-love/data/images/left-hand.png delete mode 100644 spine-love/data/images/left-lower-leg.png delete mode 100644 spine-love/data/images/left-pant-bottom.png delete mode 100644 spine-love/data/images/left-shoulder.png delete mode 100644 spine-love/data/images/left-upper-leg.png delete mode 100644 spine-love/data/images/mouth_grind.png delete mode 100644 spine-love/data/images/mouth_oooo.png delete mode 100644 spine-love/data/images/mouth_smile.png delete mode 100644 spine-love/data/images/muzzle.png delete mode 100644 spine-love/data/images/neck.png delete mode 100644 spine-love/data/images/pelvis.png delete mode 100644 spine-love/data/images/rear_bracer.png delete mode 100644 spine-love/data/images/rear_foot.png delete mode 100644 spine-love/data/images/rear_foot_bend1.png delete mode 100644 spine-love/data/images/rear_foot_bend2.png delete mode 100644 spine-love/data/images/rear_shin.png delete mode 100644 spine-love/data/images/rear_thigh.png delete mode 100644 spine-love/data/images/rear_upper_arm.png delete mode 100644 spine-love/data/images/right-ankle.png delete mode 100644 spine-love/data/images/right-arm.png delete mode 100644 spine-love/data/images/right-foot-idle.png delete mode 100644 spine-love/data/images/right-foot.png delete mode 100644 spine-love/data/images/right-hand.png delete mode 100644 spine-love/data/images/right-lower-leg.png delete mode 100644 spine-love/data/images/right-pant-bottom.png delete mode 100644 spine-love/data/images/right-shoulder.png delete mode 100644 spine-love/data/images/right-upper-leg.png delete mode 100644 spine-love/data/images/torso.png create mode 100644 spine-love/data/raptor.atlas create mode 100644 spine-love/data/raptor.json create mode 100644 spine-love/data/raptor.png create mode 100644 spine-love/data/spineboy.atlas create mode 100644 spine-love/data/spineboy.png create mode 100644 spine-love/data/stretchyman.atlas create mode 100644 spine-love/data/stretchyman.json create mode 100644 spine-love/data/stretchyman.png create mode 100644 spine-love/data/tank.atlas create mode 100644 spine-love/data/tank.json create mode 100644 spine-love/data/tank.png create mode 100644 spine-love/data/test.atlas create mode 100644 spine-love/data/test.json create mode 100644 spine-love/data/test.png create mode 100644 spine-love/data/vine.atlas create mode 100644 spine-love/data/vine.json create mode 100644 spine-love/data/vine.png create mode 100644 spine-lua/Color.lua create mode 100644 spine-lua/PathConstraint.lua create mode 100644 spine-lua/PathConstraintData.lua mode change 100755 => 100644 spine-lua/SkeletonJson.lua create mode 100644 spine-lua/TextureAtlas.lua create mode 100644 spine-lua/TextureAtlasAttachmentLoader.lua create mode 100644 spine-lua/TextureAtlasRegion.lua create mode 100644 spine-lua/TextureFilter.lua create mode 100644 spine-lua/TextureRegion.lua create mode 100644 spine-lua/TextureWrap.lua create mode 100644 spine-lua/TransformConstraint.lua create mode 100644 spine-lua/TransformConstraintData.lua create mode 100644 spine-lua/attachments/Attachment.lua create mode 100644 spine-lua/attachments/AttachmentType.lua create mode 100644 spine-lua/attachments/BoundingBoxAttachment.lua create mode 100644 spine-lua/attachments/MeshAttachment.lua create mode 100644 spine-lua/attachments/PathAttachment.lua create mode 100644 spine-lua/attachments/RegionAttachment.lua create mode 100644 spine-lua/attachments/VertexAttachment.lua diff --git a/examples/export/export.sh b/examples/export/export.sh index 2df12cab0..d1384dc33 100755 --- a/examples/export/export.sh +++ b/examples/export/export.sh @@ -23,6 +23,7 @@ rm -rf ../stretchyman/export/* rm -rf ../raptor/export/* rm -rf ../tank/export/* rm -rf ../vine/export/* +rm -rf ../test/export/* echo "" echo "Exporting..." @@ -93,6 +94,11 @@ echo "Exporting..." -i ../tank/images -o ../tank/export -n tank -p atlas-0.5.json \ -i ../tank/images -o ../tank/export -n tank-pma -p atlas-0.5-pma.json \ \ +-i ../test/test.spine -o ../test/export -e json.json \ +-i ../test/test.spine -o ../test/export -e binary.json \ +-i ../test/images -o ../test/export -n test -p atlas-0.5.json \ +-i ../test/images -o ../test/export -n test-pma -p atlas-0.5-pma.json \ +\ -i ../vine/vine.spine -o ../vine/export -e json.json \ -i ../vine/vine.spine -o ../vine/export -e binary.json \ -i ../vine/images -o ../vine/export -n vine -p atlas-1.0.json \ diff --git a/examples/export/runtimes.sh b/examples/export/runtimes.sh index 29443a423..0db4a1051 100755 --- a/examples/export/runtimes.sh +++ b/examples/export/runtimes.sh @@ -68,6 +68,36 @@ cp -f ../tank/export/tank.json ../../spine-cocos2dx/example/Resources/common/ cp -f ../tank/export/tank.atlas ../../spine-cocos2dx/example/Resources/common/ cp -f ../tank/export/tank.png ../../spine-cocos2dx/example/Resources/common/ +echo "spine-love" +rm -f ../../spine-love/data/* +cp -f ../goblins/export/goblins-mesh.json ../../spine-love/data +cp -f ../goblins/export/goblins.atlas ../../spine-love/data +cp -f ../goblins/export/goblins.png ../../spine-love/data + +cp -f ../raptor/export/raptor.json ../../spine-love/data +cp -f ../raptor/export/raptor.atlas ../../spine-love/data +cp -f ../raptor/export/raptor.png ../../spine-love/data + +cp -f ../spineboy/export/spineboy.json ../../spine-love/data +cp -f ../spineboy/export/spineboy.atlas ../../spine-love/data +cp -f ../spineboy/export/spineboy.png ../../spine-love/data + +cp -f ../tank/export/tank.json ../../spine-love/data +cp -f ../tank/export/tank.atlas ../../spine-love/data +cp -f ../tank/export/tank.png ../../spine-love/data + +cp -f ../vine/export/vine.json ../../spine-love/data +cp -f ../vine/export/vine.atlas ../../spine-love/data +cp -f ../vine/export/vine.png ../../spine-love/data + +cp -f ../stretchyman/export/stretchyman.json ../../spine-love/data +cp -f ../stretchyman/export/stretchyman.atlas ../../spine-love/data +cp -f ../stretchyman/export/stretchyman.png ../../spine-love/data + +cp -f ../test/export/test.json ../../spine-love/data +cp -f ../test/export/test.atlas ../../spine-love/data +cp -f ../test/export/test.png ../../spine-love/data + echo "spine-sfml" rm -f ../../spine-sfml/data/* cp -f ../goblins/export/goblins-mesh.json ../../spine-sfml/data/ diff --git a/examples/test/export/test-pma.atlas b/examples/test/export/test-pma.atlas new file mode 100644 index 000000000..01c4b7de1 --- /dev/null +++ b/examples/test/export/test-pma.atlas @@ -0,0 +1,20 @@ + +test-pma.png +size: 256,64 +format: RGBA8888 +filter: Linear,Linear +repeat: none +logo + rotate: false + xy: 193, 2 + size: 60, 60 + orig: 60, 60 + offset: 0, 0 + index: -1 +spine + rotate: false + xy: 2, 2 + size: 189, 60 + orig: 189, 60 + offset: 0, 0 + index: -1 diff --git a/examples/test/export/test-pma.png b/examples/test/export/test-pma.png new file mode 100644 index 0000000000000000000000000000000000000000..6611ff0c2eec967724d32fc2e7c23a5d20d9e77b GIT binary patch literal 10904 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 literal 0 HcmV?d00001 diff --git a/examples/test/export/test.atlas b/examples/test/export/test.atlas new file mode 100644 index 000000000..d4f7cb79c --- /dev/null +++ b/examples/test/export/test.atlas @@ -0,0 +1,20 @@ + +test.png +size: 256,64 +format: RGBA8888 +filter: Linear,Linear +repeat: none +logo + rotate: false + xy: 193, 2 + size: 60, 60 + orig: 60, 60 + offset: 0, 0 + index: -1 +spine + rotate: false + xy: 2, 2 + size: 189, 60 + orig: 189, 60 + offset: 0, 0 + index: -1 diff --git a/examples/test/export/test.json b/examples/test/export/test.json new file mode 100644 index 000000000..773d0b805 --- /dev/null +++ b/examples/test/export/test.json @@ -0,0 +1,278 @@ +{ +"skeleton": { "hash": "xbu5IFg+2tCx4+2MavNPurEogzA", "spine": "3.4.02", "width": 1333.78, "height": 1112.91, "images": "./images/" }, +"bones": [ + { "name": "root", "x": 28.68, "y": -105.71 }, + { "name": "attachment", "parent": "root", "x": -267.71, "y": -366.62 }, + { "name": "color", "parent": "root", "x": -298.29, "y": 44.1 }, + { "name": "draworder", "parent": "root", "x": 283.53, "y": -356.27 }, + { "name": "mesh", "parent": "root", "x": -320.74, "y": 413.7 }, + { "name": "meshweighted", "parent": "root", "rotation": -11.22, "x": -353.28, "y": 627.53 }, + { "name": "pathfollower", "parent": "root", "x": 177.52, "y": 56.62 }, + { "name": "rotate", "parent": "root", "x": -305, "y": 201 }, + { "name": "scale", "parent": "root", "x": 183.99, "y": -138 }, + { "name": "shear", "parent": "root", "x": -304, "y": -146 }, + { "name": "transformconstrainttarget", "parent": "root", "x": 604.27, "y": 420.7, "color": "abe323ff" }, + { "name": "transformconstrained", "parent": "root", "x": 169.6, "y": 420.7 }, + { "name": "translate", "parent": "root", "x": 190.99, "y": 201, "color": "abe323ff" } +], +"slots": [ + { "name": "images/spine", "bone": "translate", "attachment": "images/spine" }, + { "name": "images/spine2", "bone": "rotate", "attachment": "images/spine" }, + { "name": "images/spine3", "bone": "scale", "attachment": "images/spine" }, + { "name": "images/spine4", "bone": "shear", "attachment": "images/spine" }, + { "name": "images/spine5", "bone": "color", "attachment": "images/spine" }, + { "name": "path2", "bone": "root", "attachment": "path" }, + { "name": "images/spine6", "bone": "pathfollower", "attachment": "images/spine" }, + { "name": "images/spine7", "bone": "transformconstrained", "attachment": "images/spine" }, + { "name": "images/spine8", "bone": "transformconstrainttarget", "attachment": "images/spine" }, + { "name": "images/spine9", "bone": "mesh", "attachment": "images/spine" }, + { "name": "images/spine10", "bone": "attachment", "attachment": "images/logo" }, + { "name": "draworder2", "bone": "draworder", "attachment": "images/logo" }, + { "name": "draworder1", "bone": "draworder", "attachment": "images/spine" }, + { "name": "images/spine12", "bone": "meshweighted", "attachment": "linkedmesh" } +], +"transform": [ + { + "name": "transformconstraint", + "bones": [ "transformconstrained" ], + "target": "transformconstrainttarget", + "x": -400, + "rotateMix": 0.509, + "translateMix": 0.509, + "scaleMix": 0.509, + "shearMix": 0.509 + } +], +"path": [ + { + "name": "pathconstraint", + "bones": [ "pathfollower" ], + "target": "path2", + "rotation": 34.2 + } +], +"skins": { + "default": { + "draworder1": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "draworder2": { + "images/logo": { "path": "logo", "width": 120, "height": 120 } + }, + "images/spine": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine10": { + "images/logo": { "path": "logo", "width": 120, "height": 120 }, + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine12": { + "images/spine": { + "type": "mesh", + "path": "spine", + "uvs": [ 0, 0, 0.25, 0, 0.5, 0, 0.75, 0, 1, 0, 1, 0.25, 1, 0.5, 1, 0.75, 1, 1, 0.75, 1, 0.5, 1, 0.25, 1, 0, 1, 0, 0.75, 0, 0.5, 0, 0.25, 0.25, 0.25, 0.25, 0.5, 0.25, 0.75, 0.5, 0.25, 0.5, 0.5, 0.5, 0.75, 0.75, 0.25, 0.75, 0.5, 0.75, 0.75 ], + "triangles": [ 15, 0, 1, 16, 1, 2, 15, 1, 16, 19, 2, 3, 16, 2, 19, 22, 3, 4, 19, 3, 22, 22, 4, 5, 14, 15, 16, 17, 16, 19, 14, 16, 17, 20, 19, 22, 17, 19, 20, 23, 22, 5, 20, 22, 23, 23, 5, 6, 13, 14, 17, 18, 17, 20, 13, 17, 18, 21, 20, 23, 18, 20, 21, 24, 23, 6, 21, 23, 24, 24, 6, 7, 12, 13, 18, 11, 18, 21, 12, 18, 11, 10, 21, 24, 11, 21, 10, 9, 24, 7, 10, 24, 9, 9, 7, 8 ], + "vertices": [ 1, 5, -194.67, 21.29, 1, 1, 5, -102.08, 38.91, 1, 1, 5, -9.49, 56.54, 1, 1, 5, 83.08, 74.16, 1, 1, 5, 175.67, 91.79, 1, 1, 5, 181.28, 62.32, 1, 1, 5, 186.89, 32.84, 1, 1, 5, 192.5, 3.38, 1, 1, 5, 198.11, -26.09, 1, 1, 5, 105.52, -43.71, 1, 1, 5, 12.94, -61.33, 1, 1, 5, -79.64, -78.96, 1, 1, 5, -172.23, -96.58, 1, 1, 5, -177.84, -67.11, 1, 1, 5, -183.45, -37.64, 1, 1, 5, -189.06, -8.17, 1, 1, 5, -96.47, 9.45, 1, 1, 5, -90.86, -20.01, 1, 1, 5, -85.25, -49.48, 1, 1, 5, -3.88, 27.07, 1, 1, 5, 1.72, -2.39, 1, 1, 5, 7.33, -31.86, 1, 1, 5, 88.7, 44.69, 1, 1, 5, 94.31, 15.22, 1, 1, 5, 99.92, -14.24, 1 ], + "hull": 16, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 0 ], + "width": 377, + "height": 120 + }, + "linkedmesh": { "type": "linkedmesh", "path": "logo", "parent": "images/spine", "width": 120, "height": 120 } + }, + "images/spine2": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine3": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine4": { + "images/spine": { "path": "spine", "rotation": 0.15, "width": 377, "height": 120 } + }, + "images/spine5": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine6": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine7": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine8": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine9": { + "images/spine": { + "type": "mesh", + "path": "spine", + "uvs": [ 1, 0.50124, 1, 1, 0.72412, 1, 0.49981, 1, 0.28581, 1, 0, 1, 0, 0.50124, 0, 0, 0.49207, 0, 1, 0, 0.56941, 0.57414, 0.84014, 0.50124, 0.61841, 0.22584, 0.20589, 0.20154, 0.19558, 0.67134, 0.39152, 0.86574, 0.3941, 0.41214, 0.3941, 0.12864, 0.76021, 0.19344, 0.76537, 0.59034, 0.74474, 0.84144, 0.57716, 0.81714 ], + "triangles": [ 17, 7, 8, 18, 8, 9, 13, 7, 17, 12, 8, 18, 17, 8, 12, 16, 17, 12, 13, 17, 16, 6, 7, 13, 6, 13, 16, 18, 9, 0, 11, 18, 0, 10, 16, 12, 12, 18, 11, 10, 12, 11, 19, 10, 11, 14, 6, 16, 14, 16, 10, 21, 10, 19, 15, 14, 10, 20, 21, 19, 21, 15, 10, 5, 6, 14, 4, 5, 14, 15, 4, 14, 3, 15, 21, 4, 15, 3, 2, 21, 20, 3, 21, 2, 19, 11, 0, 0, 20, 19, 1, 20, 0, 2, 20, 1 ], + "vertices": [ 191.41, -1.12, 191.41, -60.97, 87.4, -60.97, 2.84, -60.97, -77.82, -60.97, -185.58, -60.97, -185.58, -1.12, -185.58, 59.02, -0.07, 59.02, 191.41, 59.02, 29.09, -9.85, 131.14, -1.12, 47.55, 31.92, -107.96, 34.84, -111.85, -21.53, -37.97, -44.86, -37, 9.57, -37, 43.59, 101.01, 35.81, 102.96, -11.81, 95.18, -41.93, 32, -39.02 ], + "hull": 10, + "edges": [ 10, 12, 12, 14, 14, 16, 16, 18, 2, 0, 0, 18, 6, 8, 8, 10, 2, 4, 4, 6 ], + "width": 377, + "height": 120 + } + }, + "path2": { + "path": { + "type": "path", + "closed": true, + "lengths": [ 128.85, 310.24, 465.06, 600.88, 773.97 ], + "vertexCount": 15, + "vertices": [ 258.07, -42.67, 291.94, -17.53, 326.41, 7.22, 391.41, 2.75, 398.05, 46.72, 399.83, 84.07, 274.03, 106.4, 236.7, 117.74, 199.37, 129.09, 116.55, 135.12, 84.41, 115.47, 50.34, 94.04, 56.53, 1.48, 89.01, -5.59, 122.89, -13.58 ] + } + } + } +}, +"animations": { + "animation": { + "slots": { + "images/spine5": { + "color": [ + { "time": 0, "color": "ffffffff" }, + { "time": 0.4333, "color": "ff0901ff" }, + { "time": 0.9, "color": "2dff00ff" }, + { "time": 1.3333, "color": "ffffffff" } + ] + }, + "images/spine10": { + "attachment": [ + { "time": 0, "name": "images/spine" }, + { "time": 0.6666, "name": "images/logo" }, + { "time": 1.3333, "name": "images/spine" } + ] + }, + "images/spine12": { + "attachment": [ + { "time": 0, "name": "images/spine" }, + { "time": 0.6666, "name": "linkedmesh" } + ] + } + }, + "bones": { + "translate": { + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 1, 0, 0, 1 ] + }, + { "time": 0.6666, "x": 96.99, "y": -151 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + }, + "scale": { + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.6666, "x": 1, "y": 2.34 }, + { "time": 1.3333, "x": 1, "y": 1 } + ] + }, + "rotate": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": -125.34 }, + { "time": 1.3333, "angle": 0 } + ] + }, + "shear": { + "shear": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 29.4, "y": 0 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + }, + "transformconstrainttarget": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": -74.6 }, + { "time": 1.3333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 176.22, "y": -170.34 }, + { "time": 1.3333, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.6666, "x": 2, "y": 2 }, + { "time": 1.3333, "x": 1, "y": 1 } + ], + "shear": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 23.4, "y": 0 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + } + }, + "transform": { + "transformconstraint": [ + { "time": 0, "rotateMix": 0.509, "translateMix": 0.509, "scaleMix": 0.509, "shearMix": 0.509 }, + { "time": 0.6666 }, + { "time": 1.3333, "rotateMix": 0.5, "translateMix": 0.5, "scaleMix": 0.5, "shearMix": 0.5 } + ] + }, + "paths": { + "pathconstraint": { + "position": [ + { "time": 0 }, + { "time": 1.3333, "position": 1 } + ], + "spacing": [ + { "time": 0, "spacing": 40.1 }, + { "time": 1.3333 } + ], + "mix": [ + { "time": 0.6666, "rotateMix": 0.473, "translateMix": 0.473 }, + { "time": 1.3333 } + ] + } + }, + "deform": { + "default": { + "images/spine9": { + "images/spine": [ + { "time": 0 }, + { + "time": 0.6666, + "vertices": [ 43.09784, 58.11693, 0, 0, 0, 0, -0.653, -57.46399, -50.93396, -47.01593, -43.098, -24.81398, -43.098, -24.81399, -1.0E-5, 1.0E-5, 0, 1.0E-5, 43.09784, 58.11695, 0, 0, 43.09784, 58.11693, 1.0E-5, -1.0E-5, 0, 0, -43.09797, -24.81399, 0, 1.0E-5, 0, 0, 0, 0, 43.09784, 58.11694, 43.09784, 58.11693 ] + }, + { "time": 1.3333 } + ] + }, + "images/spine12": { + "images/spine": [ + { "time": 0 }, + { + "time": 0.3333, + "offset": 4, + "vertices": [ -9.45232, 83.5133, -3.90008, 44.76635, -3.90008, 44.76635, -3.90008, 44.76635, 0, 0, 0, 0, 0, 0, 0, 0, 5.15667, -29.57763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.90008, 44.76635 ] + }, + { "time": 0.6666 }, + { + "time": 0.6679, + "vertices": [ -1.21159, -14.52716, -2.76092, -7.75683, -4.30999, -0.98669, 2.38385, 9.78289, -1.56903, 5.49316, -2.93444, 6.75128, -4.30011, 8.00933, -5.66552, 9.2677, -7.031, 10.52575, -3.07855, 14.81561, 4.30986, 0.9859, 5.85907, -5.78436, 7.40826, -12.55462, 5.25317, -13.04797, 3.09832, -13.54083, 0.94323, -14.03411, -0.60595, -7.26379, 1.54907, -6.77056, 3.70422, -6.27746, -2.15495, -0.49346, 0, -3.0E-4, 2.15495, 0.49273, 1.01812, 11.04132, -0.3471, 12.29895, -1.71313, 13.557 ] + }, + { + "time": 1.3333, + "vertices": [ -10.57342, 25.16797, -9.16716, 14.48486, -7.76074, 3.80212, 131.25482, 21.05285, 128.23181, -0.04534, 121.51611, 0.91668, 114.80023, 1.8789, 108.08459, 2.84124, 101.3689, 3.80316, 104.39154, 24.90191, -21.3623, 2.01171, -22.76855, 12.69433, -24.17505, 23.37719, -20.77471, 23.82476, -17.37414, 24.27276, -13.97393, 24.72009, -12.56768, 14.03753, -15.96789, 13.58978, -19.36809, 13.14215, -11.16095, 3.35455, -14.56134, 2.90704, -17.96167, 2.45922, 124.53894, 22.01538, 117.82336, 22.97705, 111.10718, 23.93933 ] + } + ] + } + } + }, + "drawOrder": [ + { "time": 0 }, + { + "time": 0.6666, + "offsets": [ + { "slot": "draworder2", "offset": 1 } + ] + }, + { "time": 1.3333 } + ] + } +} +} \ No newline at end of file diff --git a/examples/test/export/test.png b/examples/test/export/test.png new file mode 100644 index 0000000000000000000000000000000000000000..b84ab72518e79b55b8fa7365a5cb29b751f47d91 GIT binary patch literal 10768 zcmYkCWl)?wxQ5?d+={!q7k77eExHtnYtau~DDJKW7AP*owYZfQEe^#g?(Q7UuXAQH zndC=il1%dCzON@yn(7J|s3fQW0AMI7%4!1u=&cDzA|t-l*QVuN0Kh!2BrB!svvh2V z;-f3qd=fesN*8)$T-xH-aB9VfA}{?1f&D{2o6F1i0sgV^>a?CG=oi9`}FHUd+u_sy04n-@k7^x@Jd_2>9Miri}3Ft zbtSsh9jE_ax?4-M%OhJ^)0AVn!)`ab2TzYZ4=o4hiBA0IUP(_LYW(L#Hs1ymT5D(? zKTjl0h%K&khI*Rt42u2=jO7NdAmv8&YE|4Kb=CMu=;x}^MTb&qCxZD!i+COkd0%QqcQ!aH>P z^&U65$%9|z~tPrn9j|fd8G5vRQpC4H9!F0x^6P(h2Q8$i@3G$V|VLTo3cPt(%0Du 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 CG$f}@`eed0efN>I)X{yf9283N80hTYTf~}im zu%l^*NvqQcV`@jERx?yh75svIZ<|0IZIf!drhY`4u~9J%S~Uiv^qlwh;Vyz^=wH2W z?mg$+`#a~Jd)_&B-zKhJv2xaeoYIu^dU5s4l=K&he)8htm9_Jor42%mHFaicT6*@* zj)CkqCroA7)am7wMWyz->EXs&r?Z|w6E0WpkWatb#JLE;?%x=uwY7CHw5YzmsJN`s zUZp4yPt!koJ?)DMM%OSEJ1d;EiY3qHryVrS;TRpvmedxla@LmERR!^v9Oj&;@LRrat!XaO@M!hbzI=m`L8@Dl(tL!JPb zrF#@$!gNR{xL`y!(5cy`M>PVx&Io-1Ad`IpV2*4&dL|UI7}B!`$H2zvUO4UFnMjP|!vtka zMurd?eDaj0rxjWRVFG<4CM8ug98wJ{9&-`ePm~wMj7?29HZ}doYPN(eEt;bvIcXSK zO;Z`|Y(_>+Lj%J^67jX*JMz>vv-sBCeCZciHRAS}jrD7c5F=%23-TldR`mg>SbU{HfJ!WpC zD<*bu$E$bH1I8rxf!;iNySq(Vp4%ppPp^orNm=5RpG(>Cng7fde%3m;jtrW{cBY`Q zsRfTsEo7LQPE9Jz^LXV&ktNyM3*+Xz{BPuKgI^>l^j9zKLyB#P0$!Z~+`axS0c+78 zyw1f8c)6vquW)F0;^K+6Qrcq6KXbz27CY4L?5ngo$x5(7PigaaQH44?@K1xg4Dau_@@AhSS2Ni5J%5&_sK7^6UngC0vFL1Kv+ zq*&;Yz#9P*K@316KsLar2O0-lByc+5%s}ISiv^3=%)l`)5|}dsCvs(Xx|$1;k;-+D zVr?f+A?0Vu%}C|e?OvpwIhz_aig=W1g}L!K@JLY~sc@wuUzz~FRr<+Z#8I2oDhw7R z%ig{w8VdBY_pQ=u2V4;nCUzjDsenIWOrnulHS|H@B2VpMKuMMoVlk+9?SrCniT zy7xkvG3*pJtQ@}M9UHC-bkVPh6120~;855&l@N|snW4&YLB&8<0su=2<$V-#RPIR3c3z>;x{U)~tysi`g3Llqj{^(~V+cHOFEEVJL-#fbdzL64yo^ykIpq!=zuk+G zW{i@>%hDB7?x+&o32U1)q&R(V6K&trsIG~#a@**d+%}&y_j51R7bN>6-bMIjLwY%h z$JIWjsQztcpV#sp7m?>{JGfUbxh|a5tZ?V2+;NY) z?NRmkYt04HgWf!!*ZUm~nl3AULKq`G_D+XT*OcU2>-Mrzv3jDYNst~oc$9h{s{i5l z1HMdr>GAMl#*wGsNrY!2JVd)A{6Dbt$_0TxM&^}sBswfsXP=9EeuH29gzBUG@$+t!Q_w+j50+hIUGao>vR}B+s$Vqun!^8Fudzw z-$sg4Da@fAXjE+(K03QvW!l|7>Uu~K-wtvHPsr@sZiV8iBE$TlZ72Z+9L}{DLI-)a z3uK^&pkvE$DMVRA4%Y*4yoyH~*xGp*@OaY*omP@Y%T{&bG&arcu4huJW&62F^1@?< z^1P_U^0bly>BBd|d^Bpf+dexoZjEkhc89wS`ab|W5z1bG#fGk8LtUSqdq^MV1Koxs z{r`$|c;JVF5swPLqi~L?2FWt7lkPJ8#l5EGDz!#+4yP)1^pSs8Un5YuxiqUkjCC$N3G{>bbSWH~6DJb-52G zH1JluyStLF zjK1OSxpd1Na_vIrw>wYZkq>WOkk5l``!;tx_xci9Nc%n4xxd{aWcRqb&gGsJmR((= z6m>e0lBXRJK3c{|G4CA_N~QbmyG!r!buWD->V+hH7iDQ@eI>$Hk53&R~b*uF9=1k!Oxl39Qmnjr(IV`PP+aN4=9+z5fTom$iI4S+t zJpaReH>I+BJU=(=rqsOO#ZM?cPrr%n7xpE&Xy3cdLi;C#UYvbN=z60|z1gv>nNUW( Gss9UpY^dM> literal 0 HcmV?d00001 diff --git a/examples/test/images/logo.png b/examples/test/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b43595805a42d4d4da784cb5e3dfa7222e280b78 GIT binary patch literal 16849 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