瀏覽代碼

Changed Spine export format.

There are no longer separate animation files, they are now inside the skeleton file. This means there is just one file to manage, which is cleaner. Now that animations are stored in SkeletonData, they can be looked up by name which leads to cleaner runtime APIs.

cocos2d and cocos2d-x runtimes got a cleaner ObjC/C++ API.
NathanSweet 12 年之前
父節點
當前提交
dd27ee184c
共有 98 個文件被更改,包括 10041 次插入5034 次删除
  1. 285 0
      spine-c/data/goblins.atlas
  2. 301 3
      spine-c/data/goblins.json
  3. 二進制
      spine-c/data/goblins.png
  4. 0 98
      spine-c/data/spineboy-skeleton.json
  5. 0 278
      spine-c/data/spineboy-walk.json
  6. 2 2
      spine-c/data/spineboy.atlas
  7. 787 0
      spine-c/data/spineboy.json
  8. 2 2
      spine-c/example/main.c
  9. 8 8
      spine-c/include/spine/Animation.h
  10. 4 1
      spine-c/include/spine/AnimationState.h
  11. 4 1
      spine-c/include/spine/AnimationStateData.h
  12. 6 1
      spine-c/include/spine/SkeletonData.h
  13. 0 3
      spine-c/include/spine/SkeletonJson.h
  14. 2 1
      spine-c/src/spine/Animation.c
  15. 5 0
      spine-c/src/spine/AnimationState.c
  16. 12 2
      spine-c/src/spine/AnimationStateData.c
  17. 0 1
      spine-c/src/spine/Attachment.c
  18. 24 0
      spine-c/src/spine/SkeletonData.c
  19. 149 158
      spine-c/src/spine/SkeletonJson.c
  20. 1 1
      spine-c/src/spine/Skin.c
  21. 285 0
      spine-cocos2d-iphone/Resources/goblins.atlas
  22. 318 21
      spine-cocos2d-iphone/Resources/goblins.json
  23. 二進制
      spine-cocos2d-iphone/Resources/goblins.png
  24. 0 410
      spine-cocos2d-iphone/Resources/spineboy-jump.json
  25. 0 98
      spine-cocos2d-iphone/Resources/spineboy-skeleton.json
  26. 0 278
      spine-cocos2d-iphone/Resources/spineboy-walk.json
  27. 1 1
      spine-cocos2d-iphone/Resources/spineboy.atlas
  28. 787 0
      spine-cocos2d-iphone/Resources/spineboy.json
  29. 0 4
      spine-cocos2d-iphone/example/ExampleLayer.h
  30. 11 33
      spine-cocos2d-iphone/example/ExampleLayer.m
  31. 24 20
      spine-cocos2d-iphone/spine-cocos2d-iphone-mac.xcodeproj/project.pbxproj
  32. 14 0
      spine-cocos2d-iphone/src/spine/spine-cocos2d-iphone.h
  33. 49 0
      spine-cocos2d-iphone/src/spine/spine-cocos2d-iphone.m
  34. 1 1
      spine-cocos2dx/example/Classes/AppMacros.h
  35. 8 28
      spine-cocos2dx/example/Classes/ExampleLayer.cpp
  36. 0 5
      spine-cocos2dx/example/Classes/ExampleLayer.h
  37. 499 0
      spine-cocos2dx/example/Resources/common/goblins.json
  38. 0 410
      spine-cocos2dx/example/Resources/common/spineboy-jump.json
  39. 0 98
      spine-cocos2dx/example/Resources/common/spineboy-skeleton.json
  40. 0 278
      spine-cocos2dx/example/Resources/common/spineboy-walk.json
  41. 787 0
      spine-cocos2dx/example/Resources/common/spineboy.json
  42. 285 0
      spine-cocos2dx/example/Resources/ipad/goblins.atlas
  43. 二進制
      spine-cocos2dx/example/Resources/ipad/goblins.png
  44. 166 0
      spine-cocos2dx/example/Resources/ipad/spineboy.atlas
  45. 二進制
      spine-cocos2dx/example/Resources/ipad/spineboy.png
  46. 285 0
      spine-cocos2dx/example/Resources/ipadhd/goblins.atlas
  47. 二進制
      spine-cocos2dx/example/Resources/ipadhd/goblins.png
  48. 166 0
      spine-cocos2dx/example/Resources/ipadhd/spineboy.atlas
  49. 二進制
      spine-cocos2dx/example/Resources/ipadhd/spineboy.png
  50. 285 0
      spine-cocos2dx/example/Resources/iphone-retina/goblins.atlas
  51. 二進制
      spine-cocos2dx/example/Resources/iphone-retina/goblins.png
  52. 1 1
      spine-cocos2dx/example/Resources/iphone-retina/spineboy.atlas
  53. 285 0
      spine-cocos2dx/example/Resources/iphone/goblins.atlas
  54. 二進制
      spine-cocos2dx/example/Resources/iphone/goblins.png
  55. 1 1
      spine-cocos2dx/example/Resources/iphone/spineboy.atlas
  56. 11 13
      spine-cocos2dx/example/proj.win32/main.cpp
  57. 41 0
      spine-cocos2dx/src/spine/spine-cocos2dx.cpp
  58. 11 0
      spine-cocos2dx/src/spine/spine-cocos2dx.h
  59. 499 0
      spine-corona/data/goblins.json
  60. 0 101
      spine-corona/data/spineboy-skeleton.json
  61. 0 278
      spine-corona/data/spineboy-walk.json
  62. 787 0
      spine-corona/data/spineboy.json
  63. 2 2
      spine-corona/main.lua
  64. 2 1
      spine-corona/spine/Animation.lua
  65. 10 1
      spine-corona/spine/SkeletonData.lua
  66. 13 13
      spine-corona/spine/SkeletonJson.lua
  67. 5 9
      spine-libgdx/src/com/esotericsoftware/spine/Animation.java
  68. 7 0
      spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java
  69. 17 1
      spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java
  70. 3 3
      spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java
  71. 9 10
      spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java
  72. 23 0
      spine-libgdx/src/com/esotericsoftware/spine/SkeletonData.java
  73. 14 11
      spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java
  74. 8 12
      spine-libgdx/test/com/esotericsoftware/spine/AnimationStateTest.java
  75. 2 4
      spine-libgdx/test/com/esotericsoftware/spine/MixTest.java
  76. 3 4
      spine-libgdx/test/com/esotericsoftware/spine/SkeletonTest.java
  77. 二進制
      spine-libgdx/test/goblins-walk.anim
  78. 0 288
      spine-libgdx/test/goblins-walk.json
  79. 140 152
      spine-libgdx/test/goblins.atlas
  80. 499 0
      spine-libgdx/test/goblins.json
  81. 二進制
      spine-libgdx/test/goblins.png
  82. 二進制
      spine-libgdx/test/goblins.skel
  83. 二進制
      spine-libgdx/test/goblins2.png
  84. 二進制
      spine-libgdx/test/spineboy-jump.anim
  85. 0 410
      spine-libgdx/test/spineboy-jump.json
  86. 0 98
      spine-libgdx/test/spineboy-skeleton.json
  87. 二進制
      spine-libgdx/test/spineboy-walk.anim
  88. 0 278
      spine-libgdx/test/spineboy-walk.json
  89. 787 0
      spine-libgdx/test/spineboy.json
  90. 二進制
      spine-libgdx/test/spineboy.skel
  91. 0 296
      spine-sfml/data/goblins-walk.json
  92. 499 0
      spine-sfml/data/goblins.json
  93. 0 410
      spine-sfml/data/spineboy-jump.json
  94. 0 98
      spine-sfml/data/spineboy-skeleton.json
  95. 0 278
      spine-sfml/data/spineboy-walk.json
  96. 1 1
      spine-sfml/data/spineboy.atlas
  97. 787 0
      spine-sfml/data/spineboy.json
  98. 11 15
      spine-sfml/example/main.cpp

+ 285 - 0
spine-c/data/goblins.atlas

@@ -0,0 +1,285 @@
+
+goblins.png
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+spear
+  rotate: false
+  xy: 2, 142
+  size: 22, 368
+  orig: 22, 368
+  offset: 0, 0
+  index: -1
+goblingirl/head
+  rotate: false
+  xy: 26, 429
+  size: 103, 81
+  orig: 103, 81
+  offset: 0, 0
+  index: -1
+goblin/head
+  rotate: false
+  xy: 26, 361
+  size: 103, 66
+  orig: 103, 66
+  offset: 0, 0
+  index: -1
+goblin/torso
+  rotate: false
+  xy: 131, 414
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+goblingirl/torso
+  rotate: false
+  xy: 26, 263
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+dagger
+  rotate: false
+  xy: 26, 153
+  size: 26, 108
+  orig: 26, 108
+  offset: 0, 0
+  index: -1
+goblin/right-lower-leg
+  rotate: false
+  xy: 201, 434
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblingirl/right-lower-leg
+  rotate: false
+  xy: 54, 185
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblin/left-upper-leg
+  rotate: false
+  xy: 96, 286
+  size: 33, 73
+  orig: 33, 73
+  offset: 0, 0
+  index: -1
+goblin/pelvis
+  rotate: false
+  xy: 131, 369
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblingirl/pelvis
+  rotate: false
+  xy: 131, 324
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblin/right-foot
+  rotate: false
+  xy: 131, 289
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/left-lower-leg
+  rotate: false
+  xy: 2, 70
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblin/right-upper-leg
+  rotate: false
+  xy: 2, 5
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblingirl/left-lower-leg
+  rotate: false
+  xy: 195, 342
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/left-upper-leg
+  rotate: false
+  xy: 37, 81
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/right-upper-leg
+  rotate: false
+  xy: 38, 16
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblin/eyes-closed
+  rotate: false
+  xy: 38, 2
+  size: 34, 12
+  orig: 34, 12
+  offset: 0, 0
+  index: -1
+goblin/undies
+  rotate: false
+  xy: 54, 154
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1
+goblin/right-arm
+  rotate: false
+  xy: 72, 102
+  size: 23, 50
+  orig: 23, 50
+  offset: 0, 0
+  index: -1
+goblin/left-foot
+  rotate: false
+  xy: 131, 256
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-arm
+  rotate: false
+  xy: 196, 290
+  size: 28, 50
+  orig: 28, 50
+  offset: 0, 0
+  index: -1
+goblingirl/left-shoulder
+  rotate: false
+  xy: 226, 294
+  size: 28, 46
+  orig: 28, 46
+  offset: 0, 0
+  index: -1
+goblin/left-arm
+  rotate: false
+  xy: 198, 253
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblingirl/left-foot
+  rotate: false
+  xy: 92, 223
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-foot
+  rotate: false
+  xy: 92, 188
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/undie-straps
+  rotate: false
+  xy: 92, 167
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/left-arm
+  rotate: false
+  xy: 159, 219
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblin/right-shoulder
+  rotate: false
+  xy: 97, 120
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblingirl/right-shoulder
+  rotate: false
+  xy: 198, 206
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblin/left-hand
+  rotate: false
+  xy: 157, 176
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblin/neck
+  rotate: false
+  xy: 195, 163
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblingirl/undie-straps
+  rotate: false
+  xy: 97, 99
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/neck
+  rotate: false
+  xy: 138, 120
+  size: 35, 41
+  orig: 35, 41
+  offset: 0, 0
+  index: -1
+goblingirl/left-hand
+  rotate: false
+  xy: 175, 121
+  size: 35, 40
+  orig: 35, 40
+  offset: 0, 0
+  index: -1
+goblin/left-shoulder
+  rotate: false
+  xy: 212, 117
+  size: 29, 44
+  orig: 29, 44
+  offset: 0, 0
+  index: -1
+goblingirl/eyes-closed
+  rotate: false
+  xy: 154, 97
+  size: 37, 21
+  orig: 37, 21
+  offset: 0, 0
+  index: -1
+goblin/right-hand
+  rotate: false
+  xy: 193, 78
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/right-hand
+  rotate: false
+  xy: 74, 39
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/undies
+  rotate: false
+  xy: 74, 8
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1

+ 301 - 3
spine-sfml/data/goblins-skeleton.json → spine-c/data/goblins.json

@@ -22,7 +22,7 @@
 "slots": [
 "slots": [
 	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
 	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
 	{ "name": "left arm", "bone": "left arm", "attachment": "left arm" },
 	{ "name": "left arm", "bone": "left arm", "attachment": "left arm" },
-	{ "name": "left hand item", "bone": "left hand" },
+	{ "name": "left hand item", "bone": "left hand", "attachment": "spear" },
 	{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
 	{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
 	{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
 	{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
 	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
 	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
@@ -39,7 +39,7 @@
 	{ "name": "eyes", "bone": "head" },
 	{ "name": "eyes", "bone": "head" },
 	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" },
 	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" },
 	{ "name": "right arm", "bone": "right arm", "attachment": "right arm" },
 	{ "name": "right arm", "bone": "right arm", "attachment": "right arm" },
-	{ "name": "right hand item", "bone": "right hand" },
+	{ "name": "right hand item", "bone": "right hand", "attachment": "dagger" },
 	{ "name": "right hand", "bone": "right hand", "attachment": "right hand" }
 	{ "name": "right hand", "bone": "right hand", "attachment": "right hand" }
 ],
 ],
 "skins": {
 "skins": {
@@ -49,7 +49,7 @@
 			"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
 			"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
 		},
 		},
 		"right hand item": {
 		"right hand item": {
-			"dagger": { "x": 7.17, "y": -22.38, "rotation": -5.27, "width": 26, "height": 108 }
+			"dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 }
 		}
 		}
 	},
 	},
 	"goblin": {
 	"goblin": {
@@ -197,5 +197,303 @@
 			"eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 }
 			"eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 }
 		}
 		}
 	}
 	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2333, "angle": 9.51 },
+					{ "time": 0.3666, "angle": 30.74 },
+					{ "time": 0.5, "angle": 25.33 },
+					{ "time": 0.6333, "angle": 26.11 },
+					{ "time": 0.7333, "angle": -7.7 },
+					{ "time": 0.8666, "angle": -21.19 },
+					{ "time": 1, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.32, "y": 1.7 },
+					{ "time": 0.3666, "x": -0.06, "y": 2.42 },
+					{ "time": 1, "x": -1.32, "y": 1.7 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2333, "angle": 8.53 },
+					{ "time": 0.5, "angle": -16.93 },
+					{ "time": 0.6333, "angle": 1.89 },
+					{
+						"time": 0.7333,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 6.23, "y": 0 },
+					{ "time": 0.2333, "x": 2.14, "y": 2.4 },
+					{ "time": 0.5, "x": 2.44, "y": 4.8 },
+					{ "time": 1, "x": 6.23, "y": 0 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -22.98 },
+					{ "time": 0.1333, "angle": -63.5 },
+					{ "time": 0.2333, "angle": -73.76 },
+					{ "time": 0.5, "angle": 5.11 },
+					{ "time": 0.6333, "angle": -28.29 },
+					{ "time": 0.7333, "angle": 4.08 },
+					{ "time": 0.8666, "angle": 3.53 },
+					{ "time": 1, "angle": -22.98 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{ "time": 0.2333, "x": 2.55, "y": -0.47 },
+					{ "time": 0.5, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2333, "angle": -5.01 },
+					{ "time": 0.3666, "angle": 3.87 },
+					{ "time": 0.5, "angle": -3.87 },
+					{ "time": 0.6333, "angle": 2.78 },
+					{ "time": 0.7333, "angle": 1.68 },
+					{ "time": 0.8666, "angle": -8.54 },
+					{ "time": 1, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 5.29,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{ "time": 0.6333, "angle": 6.65 },
+					{ "time": 1, "angle": 5.29 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": 19.78,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 8.98 },
+					{ "time": 0.6333, "angle": 0.51 },
+					{ "time": 1, "angle": 8.98 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 6.25,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -11.78,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 6.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 1.15, "y": 0.23 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -21.23,
+						"curve": [ 0.295, 0, 0.755, 0.98 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -27.28,
+						"curve": [ 0.241, 0, 0.75, 0.97 ]
+					},
+					{ "time": 1, "angle": -21.23 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 28.37,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 60.09,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 28.37 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 0.818, 1 ]
+					},
+					{
+						"time": 0.3666,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 0.669, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": -15.75,
+						"curve": [ 0.235, 0.01, 0.795, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": -7.06,
+						"curve": [ 0.209, 0, 0.816, 0.98 ]
+					},
+					{ "time": 1, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.29, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2333, "angle": -1.91 },
+					{ "time": 0.3666, "angle": -6.45 },
+					{ "time": 0.5, "angle": -5.39 },
+					{ "time": 0.7333, "angle": -11.68 },
+					{ "time": 0.8666, "angle": 0.46 },
+					{ "time": 1, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -3.39,
+						"curve": [ 0.316, 0.01, 0.741, 0.98 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -45.53,
+						"curve": [ 0.229, 0, 0.738, 0.97 ]
+					},
+					{ "time": 0.2333, "angle": -4.83 },
+					{ "time": 0.5, "angle": -19.53 },
+					{ "time": 0.6333, "angle": -64.8 },
+					{
+						"time": 0.7333,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1, "angle": -3.39 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.5, "x": 0, "y": 0 },
+					{ "time": 0.6333, "x": 2.18, "y": 0.21 },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": -4.16 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.3666, "x": 0, "y": 6.78 },
+					{ "time": 0.5, "x": 0, "y": -6.13 },
+					{
+						"time": 0.6333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.8666, "x": 0, "y": 6.78 },
+					{ "time": 1, "x": 0, "y": -4.16 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{ "time": 0.5, "angle": 5.17 },
+					{ "time": 0.6333, "angle": 18.36 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.17 ]
+					},
+					{ "time": 0.1333, "angle": -0.2 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{
+						"time": 0.5,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.6666, "angle": 1.1 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			}
+		},
+		"slots": {
+			"eyes": {
+				"attachment": [
+					{ "time": 0.7, "name": "eyes closed" },
+					{ "time": 0.8, "name": null }
+				]
+			}
+		}
+	}
 }
 }
 }
 }

二進制
spine-c/data/goblins.png


+ 0 - 98
spine-c/data/spineboy-skeleton.json

@@ -1,98 +0,0 @@
-{
-"bones": [
-	{ "name": "root", "length": 0 },
-	{ "name": "hip", "parent": "root", "length": 0, "x": 0.64, "y": 114.41 },
-	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
-	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
-	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
-	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
-	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
-	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
-	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
-	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
-	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
-	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
-	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
-	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
-	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
-	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
-	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
-	{ "name": "pelvis", "parent": "hip", "length": 0, "x": 1.41, "y": -6.57 }
-],
-"slots": [
-	{ "name": "template", "bone": "root", "color": "ff898c86" },
-	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
-	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
-	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
-	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
-	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
-	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
-	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
-	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
-	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
-	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
-	{ "name": "torso", "bone": "torso", "attachment": "torso" },
-	{ "name": "neck", "bone": "neck", "attachment": "neck" },
-	{ "name": "head", "bone": "head", "attachment": "head" },
-	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
-	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
-	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
-	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
-],
-"skins": {
-	"default": {
-		"left shoulder": {
-			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
-		},
-		"left arm": {
-			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
-		},
-		"left hand": {
-			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
-		},
-		"left foot": {
-			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
-		},
-		"left lower leg": {
-			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
-		},
-		"left upper leg": {
-			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
-		},
-		"pelvis": {
-			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
-		},
-		"right foot": {
-			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
-		},
-		"right lower leg": {
-			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
-		},
-		"right upper leg": {
-			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
-		},
-		"torso": {
-			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
-		},
-		"neck": {
-			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
-		},
-		"head": {
-			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
-		},
-		"eyes": {
-			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
-			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
-		},
-		"right shoulder": {
-			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
-		},
-		"right arm": {
-			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
-		},
-		"right hand": {
-			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
-		}
-	}
-}
-}

+ 0 - 278
spine-c/data/spineboy-walk.json

@@ -1,278 +0,0 @@
-{
-"bones": {
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": -26.55 },
-			{ "time": 0.1333, "angle": -8.78 },
-			{ "time": 0.2666, "angle": 9.51 },
-			{ "time": 0.4, "angle": 30.74 },
-			{ "time": 0.5333, "angle": 25.33 },
-			{ "time": 0.6666, "angle": 26.11 },
-			{ "time": 0.8, "angle": -7.7 },
-			{ "time": 0.9333, "angle": -21.19 },
-			{ "time": 1.0666, "angle": -26.55 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3, "y": -2.25 },
-			{ "time": 0.4, "x": -2.18, "y": -2.25 },
-			{ "time": 1.0666, "x": -3, "y": -2.25 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 42.45 },
-			{ "time": 0.1333, "angle": 52.1 },
-			{ "time": 0.2666, "angle": 5.96 },
-			{ "time": 0.5333, "angle": -16.93 },
-			{ "time": 0.6666, "angle": 1.89 },
-			{
-				"time": 0.8,
-				"angle": 28.06,
-				"curve": [ 0.462, 0.11, 1, 1 ]
-			},
-			{
-				"time": 0.9333,
-				"angle": 58.68,
-				"curve": [ 0.5, 0.02, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": 42.45 }
-		],
-		"translate": [
-			{ "time": 0, "x": 8.11, "y": -2.36 },
-			{ "time": 0.1333, "x": 10.03, "y": -2.56 },
-			{ "time": 0.4, "x": 2.76, "y": -2.97 },
-			{ "time": 0.5333, "x": 2.76, "y": -2.81 },
-			{ "time": 0.9333, "x": 8.67, "y": -2.54 },
-			{ "time": 1.0666, "x": 8.11, "y": -2.36 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -10.21 },
-			{ "time": 0.1333, "angle": -55.64 },
-			{ "time": 0.2666, "angle": -68.12 },
-			{ "time": 0.5333, "angle": 5.11 },
-			{ "time": 0.6666, "angle": -28.29 },
-			{ "time": 0.8, "angle": 4.08 },
-			{ "time": 0.9333, "angle": 3.53 },
-			{ "time": 1.0666, "angle": -10.21 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": -3.69 },
-			{ "time": 0.1333, "angle": -10.42 },
-			{ "time": 0.2666, "angle": -17.14 },
-			{ "time": 0.4, "angle": -2.83 },
-			{ "time": 0.5333, "angle": -3.87 },
-			{ "time": 0.6666, "angle": 2.78 },
-			{ "time": 0.8, "angle": 1.68 },
-			{ "time": 0.9333, "angle": -8.54 },
-			{ "time": 1.0666, "angle": -3.69 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 20.89,
-				"curve": [ 0.264, 0, 0.75, 1 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 3.72,
-				"curve": [ 0.272, 0, 0.841, 1 ]
-			},
-			{ "time": 0.6666, "angle": -278.28 },
-			{ "time": 1.0666, "angle": 20.89 }
-		],
-		"translate": [
-			{ "time": 0, "x": -7.84, "y": 7.19 },
-			{ "time": 0.1333, "x": -6.36, "y": 6.42 },
-			{ "time": 0.6666, "x": -11.07, "y": 5.25 },
-			{ "time": 1.0666, "x": -7.84, "y": 7.19 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -4.02,
-				"curve": [ 0.267, 0, 0.804, 0.99 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": -13.99,
-				"curve": [ 0.341, 0, 1, 1 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": 36.54,
-				"curve": [ 0.307, 0, 0.787, 0.99 ]
-			},
-			{ "time": 1.0666, "angle": -4.02 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 22.92 },
-			{ "time": 0.4, "angle": -8.97 },
-			{ "time": 0.6666, "angle": 0.51 },
-			{ "time": 1.0666, "angle": 22.92 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{ "time": 0, "angle": -1.47 },
-			{ "time": 0.1333, "angle": 13.6 },
-			{ "time": 0.6666, "angle": 280.74 },
-			{ "time": 1.0666, "angle": -1.47 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.76, "y": 0.56 },
-			{ "time": 0.6666, "x": -2.47, "y": 8.14 },
-			{ "time": 1.0666, "x": -1.76, "y": 0.56 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 11.58,
-				"curve": [ 0.169, 0.37, 0.632, 1.55 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 28.13,
-				"curve": [ 0.692, 0, 0.692, 0.99 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": -27.42,
-				"curve": [ 0.117, 0.41, 0.738, 1.76 ]
-			},
-			{ "time": 0.8, "angle": -36.32 },
-			{ "time": 1.0666, "angle": 11.58 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{ "time": 0, "angle": -8.27 },
-			{ "time": 0.1333, "angle": 18.43 },
-			{ "time": 0.6666, "angle": 0.88 },
-			{ "time": 1.0666, "angle": -8.27 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -10.28 },
-			{
-				"time": 0.1333,
-				"angle": -15.38,
-				"curve": [ 0.545, 0, 1, 1 ]
-			},
-			{
-				"time": 0.4,
-				"angle": -9.78,
-				"curve": [ 0.58, 0.17, 1, 1 ]
-			},
-			{ "time": 0.6666, "angle": -15.75 },
-			{ "time": 0.9333, "angle": -7.06 },
-			{ "time": 1.0666, "angle": -10.28 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3.67, "y": 1.68 },
-			{ "time": 0.1333, "x": -3.67, "y": 0.68 },
-			{ "time": 0.4, "x": -3.67, "y": 1.97 },
-			{ "time": 0.6666, "x": -3.67, "y": -0.14 },
-			{ "time": 1.0666, "x": -3.67, "y": 1.68 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": -5.25 },
-			{ "time": 0.2666, "angle": -4.08 },
-			{ "time": 0.4, "angle": -6.45 },
-			{ "time": 0.5333, "angle": -5.39 },
-			{ "time": 0.8, "angle": -11.68 },
-			{ "time": 0.9333, "angle": 0.46 },
-			{ "time": 1.0666, "angle": -5.25 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -3.39 },
-			{ "time": 0.1333, "angle": -45.53 },
-			{ "time": 0.2666, "angle": -2.59 },
-			{ "time": 0.5333, "angle": -19.53 },
-			{ "time": 0.6666, "angle": -64.8 },
-			{
-				"time": 0.8,
-				"angle": -82.56,
-				"curve": [ 0.557, 0.18, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": -3.39 }
-		]
-	},
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 1.0666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0 },
-			{
-				"time": 0.1333,
-				"x": 0,
-				"y": -7.61,
-				"curve": [ 0.272, 0.86, 1, 1 ]
-			},
-			{ "time": 0.4, "x": 0, "y": 8.7 },
-			{ "time": 0.5333, "x": 0, "y": -0.41 },
-			{
-				"time": 0.6666,
-				"x": 0,
-				"y": -7.05,
-				"curve": [ 0.235, 0.89, 1, 1 ]
-			},
-			{ "time": 0.8, "x": 0, "y": 2.92 },
-			{ "time": 0.9333, "x": 0, "y": 6.78 },
-			{ "time": 1.0666, "x": 0, "y": 0 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 3.6 },
-			{ "time": 0.1333, "angle": 17.49 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{ "time": 0.5333, "angle": 5.17 },
-			{ "time": 0.6666, "angle": 18.36 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 3.6,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.1666, "angle": -0.2 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{
-				"time": 0.5333,
-				"angle": 5.17,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.7, "angle": 1.1 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	}
-}
-}

+ 2 - 2
spine-c/data/spineboy.atlas

@@ -1,7 +1,7 @@
 
 
-../data/spineboy.png
+spineboy.png
 format: RGBA8888
 format: RGBA8888
-filter: Nearest,Nearest
+filter: Linear,Linear
 repeat: none
 repeat: none
 head
 head
   rotate: false
   rotate: false

+ 787 - 0
spine-c/data/spineboy.json

@@ -0,0 +1,787 @@
+{
+"bones": [
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
+	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
+	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
+	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
+	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
+	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
+	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
+	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
+	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
+	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
+	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
+	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
+	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
+	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
+	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
+],
+"slots": [
+	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
+	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
+	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
+	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
+	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
+	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
+	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
+	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
+	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
+	{ "name": "torso", "bone": "torso", "attachment": "torso" },
+	{ "name": "neck", "bone": "neck", "attachment": "neck" },
+	{ "name": "head", "bone": "head", "attachment": "head" },
+	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
+	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
+	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
+],
+"skins": {
+	"default": {
+		"left shoulder": {
+			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
+		},
+		"left arm": {
+			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
+		},
+		"left hand": {
+			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
+		},
+		"left foot": {
+			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
+		},
+		"left lower leg": {
+			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
+		},
+		"left upper leg": {
+			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
+		},
+		"pelvis": {
+			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
+		},
+		"right foot": {
+			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
+		},
+		"right lower leg": {
+			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
+		},
+		"right upper leg": {
+			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
+		},
+		"torso": {
+			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
+		},
+		"neck": {
+			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
+		},
+		"head": {
+			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
+		},
+		"eyes": {
+			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
+			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
+		},
+		"right shoulder": {
+			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
+		},
+		"right arm": {
+			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
+		},
+		"right hand": {
+			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2666, "angle": 9.51 },
+					{ "time": 0.4, "angle": 30.74 },
+					{ "time": 0.5333, "angle": 25.33 },
+					{ "time": 0.6666, "angle": 26.11 },
+					{ "time": 0.8, "angle": -7.7 },
+					{ "time": 0.9333, "angle": -21.19 },
+					{ "time": 1.0666, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25 },
+					{ "time": 0.4, "x": -2.18, "y": -2.25 },
+					{ "time": 1.0666, "x": -3, "y": -2.25 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2666, "angle": 5.96 },
+					{ "time": 0.5333, "angle": -16.93 },
+					{ "time": 0.6666, "angle": 1.89 },
+					{
+						"time": 0.8,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.9333,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 8.11, "y": -2.36 },
+					{ "time": 0.1333, "x": 10.03, "y": -2.56 },
+					{ "time": 0.4, "x": 2.76, "y": -2.97 },
+					{ "time": 0.5333, "x": 2.76, "y": -2.81 },
+					{ "time": 0.9333, "x": 8.67, "y": -2.54 },
+					{ "time": 1.0666, "x": 8.11, "y": -2.36 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -10.21 },
+					{ "time": 0.1333, "angle": -55.64 },
+					{ "time": 0.2666, "angle": -68.12 },
+					{ "time": 0.5333, "angle": 5.11 },
+					{ "time": 0.6666, "angle": -28.29 },
+					{ "time": 0.8, "angle": 4.08 },
+					{ "time": 0.9333, "angle": 3.53 },
+					{ "time": 1.0666, "angle": -10.21 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2666, "angle": -17.14 },
+					{ "time": 0.4, "angle": -2.83 },
+					{ "time": 0.5333, "angle": -3.87 },
+					{ "time": 0.6666, "angle": 2.78 },
+					{ "time": 0.8, "angle": 1.68 },
+					{ "time": 0.9333, "angle": -8.54 },
+					{ "time": 1.0666, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 20.89,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 3.72,
+						"curve": [ 0.272, 0, 0.841, 1 ]
+					},
+					{ "time": 0.6666, "angle": -278.28 },
+					{ "time": 1.0666, "angle": 20.89 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19 },
+					{ "time": 0.1333, "x": -6.36, "y": 6.42 },
+					{ "time": 0.6666, "x": -11.07, "y": 5.25 },
+					{ "time": 1.0666, "x": -7.84, "y": 7.19 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -13.99,
+						"curve": [ 0.341, 0, 1, 1 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": 36.54,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1.0666, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92 },
+					{ "time": 0.4, "angle": -8.97 },
+					{ "time": 0.6666, "angle": 0.51 },
+					{ "time": 1.0666, "angle": 22.92 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{ "time": 0, "angle": -1.47 },
+					{ "time": 0.1333, "angle": 13.6 },
+					{ "time": 0.6666, "angle": 280.74 },
+					{ "time": 1.0666, "angle": -1.47 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56 },
+					{ "time": 0.6666, "x": -2.47, "y": 8.14 },
+					{ "time": 1.0666, "x": -1.76, "y": 0.56 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 11.58,
+						"curve": [ 0.169, 0.37, 0.632, 1.55 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 28.13,
+						"curve": [ 0.692, 0, 0.692, 0.99 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": -27.42,
+						"curve": [ 0.117, 0.41, 0.738, 1.76 ]
+					},
+					{ "time": 0.8, "angle": -36.32 },
+					{ "time": 1.0666, "angle": 11.58 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": -8.27 },
+					{ "time": 0.1333, "angle": 18.43 },
+					{ "time": 0.6666, "angle": 0.88 },
+					{ "time": 1.0666, "angle": -8.27 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 1, 1 ]
+					},
+					{
+						"time": 0.4,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 1, 1 ]
+					},
+					{ "time": 0.6666, "angle": -15.75 },
+					{ "time": 0.9333, "angle": -7.06 },
+					{ "time": 1.0666, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68 },
+					{ "time": 0.1333, "x": -3.67, "y": 0.68 },
+					{ "time": 0.4, "x": -3.67, "y": 1.97 },
+					{ "time": 0.6666, "x": -3.67, "y": -0.14 },
+					{ "time": 1.0666, "x": -3.67, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2666, "angle": -4.08 },
+					{ "time": 0.4, "angle": -6.45 },
+					{ "time": 0.5333, "angle": -5.39 },
+					{ "time": 0.8, "angle": -11.68 },
+					{ "time": 0.9333, "angle": 0.46 },
+					{ "time": 1.0666, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -3.39 },
+					{ "time": 0.1333, "angle": -45.53 },
+					{ "time": 0.2666, "angle": -2.59 },
+					{ "time": 0.5333, "angle": -19.53 },
+					{ "time": 0.6666, "angle": -64.8 },
+					{
+						"time": 0.8,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": -3.39 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1.0666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.61,
+						"curve": [ 0.272, 0.86, 1, 1 ]
+					},
+					{ "time": 0.4, "x": 0, "y": 8.7 },
+					{ "time": 0.5333, "x": 0, "y": -0.41 },
+					{
+						"time": 0.6666,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.235, 0.89, 1, 1 ]
+					},
+					{ "time": 0.8, "x": 0, "y": 2.92 },
+					{ "time": 0.9333, "x": 0, "y": 6.78 },
+					{ "time": 1.0666, "x": 0, "y": 0 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{ "time": 0.5333, "angle": 5.17 },
+					{ "time": 0.6666, "angle": 18.36 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.1666, "angle": -0.2 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{
+						"time": 0.5333,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.7, "angle": 1.1 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			}
+		}
+	},
+	"jump": {
+		"bones": {
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 0, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": -11.57, "y": -3 },
+					{ "time": 0.2333, "x": -16.2, "y": -19.43 },
+					{
+						"time": 0.3333,
+						"x": 7.66,
+						"y": -8.48,
+						"curve": [ 0.057, 0.06, 0.712, 1 ]
+					},
+					{ "time": 0.3666, "x": 15.38, "y": 5.01 },
+					{ "time": 0.4666, "x": -7.84, "y": 57.22 },
+					{
+						"time": 0.6,
+						"x": -10.81,
+						"y": 96.34,
+						"curve": [ 0.241, 0, 1, 1 ]
+					},
+					{ "time": 0.7333, "x": -7.01, "y": 54.7 },
+					{ "time": 0.8, "x": -10.58, "y": 32.2 },
+					{ "time": 0.9333, "x": -31.99, "y": 0.45 },
+					{ "time": 1.0666, "x": -12.48, "y": -29.47 },
+					{ "time": 1.3666, "x": -11.57, "y": -3 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 17.13 },
+					{ "time": 0.2333, "angle": 44.35 },
+					{ "time": 0.3333, "angle": 16.46 },
+					{ "time": 0.4, "angle": -9.88 },
+					{ "time": 0.4666, "angle": -11.42 },
+					{ "time": 0.5666, "angle": 23.46 },
+					{ "time": 0.7666, "angle": 71.82 },
+					{ "time": 0.9333, "angle": 65.53 },
+					{ "time": 1.0666, "angle": 51.01 },
+					{ "time": 1.3666, "angle": 17.13 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3, "y": -2.25 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -16.25 },
+					{ "time": 0.2333, "angle": -52.21 },
+					{ "time": 0.4, "angle": 15.04 },
+					{ "time": 0.4666, "angle": -8.95 },
+					{ "time": 0.5666, "angle": -39.53 },
+					{ "time": 0.7666, "angle": -27.27 },
+					{ "time": 0.9333, "angle": -3.52 },
+					{ "time": 1.0666, "angle": -61.92 },
+					{ "time": 1.3666, "angle": -16.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": 0.33 },
+					{ "time": 0.2333, "angle": 6.2 },
+					{ "time": 0.3333, "angle": 14.73 },
+					{ "time": 0.4, "angle": -15.54 },
+					{ "time": 0.4333, "angle": -21.2 },
+					{ "time": 0.5666, "angle": -7.55 },
+					{ "time": 0.7666, "angle": -0.67 },
+					{ "time": 0.9333, "angle": -0.58 },
+					{ "time": 1.0666, "angle": 14.64 },
+					{ "time": 1.3666, "angle": 0.33 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 25.97 },
+					{ "time": 0.2333, "angle": 46.43 },
+					{ "time": 0.3333, "angle": 22.61 },
+					{ "time": 0.4, "angle": 2.13 },
+					{
+						"time": 0.4666,
+						"angle": 0.04,
+						"curve": [ 0, 0, 0.637, 0.98 ]
+					},
+					{ "time": 0.6, "angle": 65.55 },
+					{ "time": 0.7666, "angle": 64.93 },
+					{ "time": 0.9333, "angle": 41.08 },
+					{ "time": 1.0666, "angle": 66.25 },
+					{ "time": 1.3666, "angle": 25.97 }
+				],
+				"translate": [
+					{ "time": 0, "x": 5.74, "y": 0.61 },
+					{ "time": 0.2333, "x": 4.79, "y": 1.79 },
+					{ "time": 0.3333, "x": 6.05, "y": -4.55 },
+					{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
+					{ "time": 1.0666, "x": 4.79, "y": 1.79 },
+					{ "time": 1.3666, "x": 5.74, "y": 0.61 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -27.46 },
+					{ "time": 0.2333, "angle": -64.03 },
+					{ "time": 0.4, "angle": -48.36 },
+					{ "time": 0.5666, "angle": -76.86 },
+					{ "time": 0.7666, "angle": -26.89 },
+					{ "time": 0.9, "angle": -18.97 },
+					{ "time": 0.9333, "angle": -14.18 },
+					{ "time": 1.0666, "angle": -80.45 },
+					{ "time": 1.3666, "angle": -27.46 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": 1.08 },
+					{ "time": 0.2333, "angle": 16.02 },
+					{ "time": 0.3, "angle": 12.94 },
+					{ "time": 0.3333, "angle": 15.16 },
+					{ "time": 0.4, "angle": -14.7 },
+					{ "time": 0.4333, "angle": -12.85 },
+					{ "time": 0.4666, "angle": -19.18 },
+					{ "time": 0.5666, "angle": -15.82 },
+					{ "time": 0.6, "angle": -3.59 },
+					{ "time": 0.7666, "angle": -3.56 },
+					{ "time": 0.9333, "angle": 1.86 },
+					{ "time": 1.0666, "angle": 16.02 },
+					{ "time": 1.3666, "angle": 1.08 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -13.35 },
+					{ "time": 0.2333, "angle": -48.95 },
+					{ "time": 0.4333, "angle": -35.77 },
+					{ "time": 0.6, "angle": -4.59 },
+					{ "time": 0.7666, "angle": 14.61 },
+					{ "time": 0.9333, "angle": 15.74 },
+					{ "time": 1.0666, "angle": -32.44 },
+					{ "time": 1.3666, "angle": -13.35 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3.67, "y": 1.68 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 12.78 },
+					{ "time": 0.2333, "angle": 16.46 },
+					{ "time": 0.4, "angle": 26.49 },
+					{ "time": 0.6, "angle": 15.51 },
+					{ "time": 0.7666, "angle": 1.34 },
+					{ "time": 0.9333, "angle": 2.35 },
+					{ "time": 1.0666, "angle": 6.08 },
+					{ "time": 1.3, "angle": 21.23 },
+					{ "time": 1.3666, "angle": 12.78 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{ "time": 0, "angle": 5.19 },
+					{ "time": 0.2333, "angle": 20.27 },
+					{ "time": 0.4, "angle": 15.27 },
+					{ "time": 0.6, "angle": -24.69 },
+					{ "time": 0.7666, "angle": -11.02 },
+					{ "time": 0.9333, "angle": -24.38 },
+					{ "time": 1.0666, "angle": 11.99 },
+					{ "time": 1.3, "angle": 4.86 },
+					{ "time": 1.3666, "angle": 5.19 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 0.05,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": 279.66,
+						"curve": [ 0.218, 0.67, 0.66, 0.99 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 62.27,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": 28.91 },
+					{ "time": 1.0666, "angle": -8.62 },
+					{ "time": 1.1666, "angle": -18.43 },
+					{ "time": 1.3666, "angle": 0.05 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 1.3666, "x": -1.76, "y": 0.56 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{ "time": 0, "angle": 11.58, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 11.58 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": 0.51 },
+					{ "time": 0.4333, "angle": 12.82 },
+					{ "time": 0.6, "angle": 47.55 },
+					{ "time": 0.9333, "angle": 12.82 },
+					{ "time": 1.1666, "angle": -6.5 },
+					{ "time": 1.3666, "angle": 0.51 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 43.82,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": -8.74,
+						"curve": [ 0.304, 0.58, 0.709, 0.97 ]
+					},
+					{
+						"time": 0.5333,
+						"angle": -208.02,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": -246.72 },
+					{ "time": 1.0666, "angle": -307.13 },
+					{ "time": 1.1666, "angle": 37.15 },
+					{ "time": 1.3666, "angle": 43.82 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 1.3666, "x": -7.84, "y": 7.19 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{ "time": 0, "angle": -4.02 },
+					{ "time": 0.6, "angle": 17.5 },
+					{ "time": 0.9333, "angle": -4.02 },
+					{ "time": 1.1666, "angle": -16.72 },
+					{ "time": 1.3666, "angle": -4.02 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 22.92 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"root": {
+				"rotate": [
+					{ "time": 0, "angle": 0 },
+					{ "time": 0.4333, "angle": -14.52 },
+					{ "time": 0.8, "angle": 9.86 },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			}
+		}
+	}
+}
+}

+ 2 - 2
spine-c/example/main.c

@@ -104,14 +104,14 @@ int main (void) {
 	printf("First page name: %s, extraData: %d\n", atlas->pages->name, ((ExampleAtlasPage*)atlas->pages)->extraData);
 	printf("First page name: %s, extraData: %d\n", atlas->pages->name, ((ExampleAtlasPage*)atlas->pages)->extraData);
 
 
 	SkeletonJson* json = SkeletonJson_create(atlas);
 	SkeletonJson* json = SkeletonJson_create(atlas);
-	SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "data/spineboy-skeleton.json");
+	SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "data/spineboy.json");
 	if (!skeletonData) printf("Error: %s\n", json->error);
 	if (!skeletonData) printf("Error: %s\n", json->error);
 	printf("Default skin name: %s\n", skeletonData->defaultSkin->name);
 	printf("Default skin name: %s\n", skeletonData->defaultSkin->name);
 
 
 	Skeleton* skeleton = Skeleton_create(skeletonData);
 	Skeleton* skeleton = Skeleton_create(skeletonData);
 	printf("Skeleton extraData: %d\n", ((ExampleSkeleton*)skeleton)->extraData);
 	printf("Skeleton extraData: %d\n", ((ExampleSkeleton*)skeleton)->extraData);
 
 
-	Animation* animation = SkeletonJson_readAnimationFile(json, "data/spineboy-walk.json", skeletonData);
+	Animation* animation = SkeletonData_findAnimation(skeletonData, "walk");
 	if (!animation) printf("Error: %s\n", json->error);
 	if (!animation) printf("Error: %s\n", json->error);
 	printf("Animation timelineCount: %d\n", animation->timelineCount);
 	printf("Animation timelineCount: %d\n", animation->timelineCount);
 
 

+ 8 - 8
spine-c/include/spine/Animation.h

@@ -26,27 +26,27 @@
 #ifndef SPINE_ANIMATION_H_
 #ifndef SPINE_ANIMATION_H_
 #define SPINE_ANIMATION_H_
 #define SPINE_ANIMATION_H_
 
 
-#include <spine/Skeleton.h>
-
 #ifdef __cplusplus
 #ifdef __cplusplus
 namespace spine {
 namespace spine {
 extern "C" {
 extern "C" {
 #endif
 #endif
 
 
 typedef struct Timeline Timeline;
 typedef struct Timeline Timeline;
+struct Skeleton;
 
 
 typedef struct {
 typedef struct {
+	const char* const name;
+	float duration;
+
 	int timelineCount;
 	int timelineCount;
 	Timeline** timelines;
 	Timeline** timelines;
-
-	float duration;
 } Animation;
 } Animation;
 
 
-Animation* Animation_create (int timelineCount);
+Animation* Animation_create (const char* name, int timelineCount);
 void Animation_dispose (Animation* self);
 void Animation_dispose (Animation* self);
 
 
-void Animation_apply (const Animation* self, Skeleton* skeleton, float time, int/*bool*/loop);
-void Animation_mix (const Animation* self, Skeleton* skeleton, float time, int/*bool*/loop, float alpha);
+void Animation_apply (const Animation* self, struct Skeleton* skeleton, float time, int/*bool*/loop);
+void Animation_mix (const Animation* self, struct Skeleton* skeleton, float time, int/*bool*/loop, float alpha);
 
 
 /**/
 /**/
 
 
@@ -55,7 +55,7 @@ struct Timeline {
 };
 };
 
 
 void Timeline_dispose (Timeline* self);
 void Timeline_dispose (Timeline* self);
-void Timeline_apply (const Timeline* self, Skeleton* skeleton, float time, float alpha);
+void Timeline_apply (const Timeline* self, struct Skeleton* skeleton, float time, float alpha);
 
 
 /**/
 /**/
 
 

+ 4 - 1
spine-c/include/spine/AnimationState.h

@@ -46,8 +46,11 @@ void AnimationState_dispose (AnimationState* self);
 
 
 void AnimationState_update (AnimationState* self, float delta);
 void AnimationState_update (AnimationState* self, float delta);
 
 
-void AnimationState_apply (AnimationState* self, Skeleton* skeleton);
+void AnimationState_apply (AnimationState* self, struct Skeleton* skeleton);
 
 
+/* @param animationName May be 0. */
+void AnimationState_setAnimationByName (AnimationState* self, const char* animationName, int/**/loop);
+/* @param animation May be 0. */
 void AnimationState_setAnimation (AnimationState* self, Animation* animation, int/**/loop);
 void AnimationState_setAnimation (AnimationState* self, Animation* animation, int/**/loop);
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus

+ 4 - 1
spine-c/include/spine/AnimationStateData.h

@@ -27,6 +27,7 @@
 #define SPINE_ANIMATIONSTATEDATA_H_
 #define SPINE_ANIMATIONSTATEDATA_H_
 
 
 #include <spine/Animation.h>
 #include <spine/Animation.h>
+#include <spine/SkeletonData.h>
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 namespace spine {
 namespace spine {
@@ -34,12 +35,14 @@ extern "C" {
 #endif
 #endif
 
 
 typedef struct {
 typedef struct {
+	SkeletonData* const skeletonData;
 	const void* const entries;
 	const void* const entries;
 } AnimationStateData;
 } AnimationStateData;
 
 
-AnimationStateData* AnimationStateData_create ();
+AnimationStateData* AnimationStateData_create (SkeletonData* skeletonData);
 void AnimationStateData_dispose (AnimationStateData* self);
 void AnimationStateData_dispose (AnimationStateData* self);
 
 
+void AnimationStateData_setMixByName (AnimationStateData* self, const char* fromName, const char* toName, float duration);
 void AnimationStateData_setMix (AnimationStateData* self, Animation* from, Animation* to, float duration);
 void AnimationStateData_setMix (AnimationStateData* self, Animation* from, Animation* to, float duration);
 /* Returns 0 if there is no mixing between the animations. */
 /* Returns 0 if there is no mixing between the animations. */
 float AnimationStateData_getMix (AnimationStateData* self, Animation* from, Animation* to);
 float AnimationStateData_getMix (AnimationStateData* self, Animation* from, Animation* to);

+ 6 - 1
spine-c/include/spine/SkeletonData.h

@@ -29,6 +29,7 @@
 #include <spine/BoneData.h>
 #include <spine/BoneData.h>
 #include <spine/SlotData.h>
 #include <spine/SlotData.h>
 #include <spine/Skin.h>
 #include <spine/Skin.h>
+#include <spine/Animation.h>
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 namespace spine {extern "C" {
 namespace spine {extern "C" {
@@ -43,8 +44,10 @@ typedef struct {
 
 
 	int skinCount;
 	int skinCount;
 	Skin** skins;
 	Skin** skins;
-
 	Skin* defaultSkin;
 	Skin* defaultSkin;
+
+	int animationCount;
+	Animation** animations;
 } SkeletonData;
 } SkeletonData;
 
 
 SkeletonData* SkeletonData_create ();
 SkeletonData* SkeletonData_create ();
@@ -58,6 +61,8 @@ int SkeletonData_findSlotIndex (const SkeletonData* self, const char* slotName);
 
 
 Skin* SkeletonData_findSkin (const SkeletonData* self, const char* skinName);
 Skin* SkeletonData_findSkin (const SkeletonData* self, const char* skinName);
 
 
+Animation* SkeletonData_findAnimation (const SkeletonData* self, const char* animationName);
+
 #ifdef __cplusplus
 #ifdef __cplusplus
 }}
 }}
 #endif
 #endif

+ 0 - 3
spine-c/include/spine/SkeletonJson.h

@@ -50,9 +50,6 @@ void SkeletonJson_dispose (SkeletonJson* self);
 SkeletonData* SkeletonJson_readSkeletonData (SkeletonJson* self, const char* json);
 SkeletonData* SkeletonJson_readSkeletonData (SkeletonJson* self, const char* json);
 SkeletonData* SkeletonJson_readSkeletonDataFile (SkeletonJson* self, const char* path);
 SkeletonData* SkeletonJson_readSkeletonDataFile (SkeletonJson* self, const char* path);
 
 
-Animation* SkeletonJson_readAnimation (SkeletonJson* self, const char* json, const SkeletonData *skeletonData);
-Animation* SkeletonJson_readAnimationFile (SkeletonJson* self, const char* path, const SkeletonData *skeletonData);
-
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }
 }
 }

+ 2 - 1
spine-c/src/spine/Animation.c

@@ -31,8 +31,9 @@
 namespace spine {
 namespace spine {
 #endif
 #endif
 
 
-Animation* Animation_create (int timelineCount) {
+Animation* Animation_create (const char* name, int timelineCount) {
 	Animation* self = NEW(Animation);
 	Animation* self = NEW(Animation);
+	MALLOC_STR(self->name, name);
 	self->timelineCount = timelineCount;
 	self->timelineCount = timelineCount;
 	self->timelines = MALLOC(Timeline*, timelineCount);
 	self->timelines = MALLOC(Timeline*, timelineCount);
 	return self;
 	return self;

+ 5 - 0
spine-c/src/spine/AnimationState.c

@@ -70,6 +70,11 @@ void AnimationState_apply (AnimationState* self, Skeleton* skeleton) {
 		Animation_apply(self->animation, skeleton, self->time, self->loop);
 		Animation_apply(self->animation, skeleton, self->time, self->loop);
 }
 }
 
 
+void AnimationState_setAnimationByName (AnimationState* self, const char* animationName, int/**/loop) {
+	Animation* animation = SkeletonData_findAnimation(self->data->skeletonData, animationName);
+	AnimationState_setAnimation(self, animation, loop);
+}
+
 void AnimationState_setAnimation (AnimationState* self, Animation* newAnimation, int/**/loop) {
 void AnimationState_setAnimation (AnimationState* self, Animation* newAnimation, int/**/loop) {
 	_Internal* internal = SUB_CAST(_Internal, self);
 	_Internal* internal = SUB_CAST(_Internal, self);
 	internal->previous = 0;
 	internal->previous = 0;

+ 12 - 2
spine-c/src/spine/AnimationStateData.c

@@ -69,8 +69,10 @@ void _FromEntry_dispose (_FromEntry* self) {
 
 
 /**/
 /**/
 
 
-AnimationStateData* AnimationStateData_create () {
-	return NEW(AnimationStateData);
+AnimationStateData* AnimationStateData_create (SkeletonData* skeletonData) {
+	AnimationStateData* self = NEW(AnimationStateData);
+	CONST_CAST(SkeletonData*, self->skeletonData) = skeletonData;
+	return self;
 }
 }
 
 
 void AnimationStateData_dispose (AnimationStateData* self) {
 void AnimationStateData_dispose (AnimationStateData* self) {
@@ -90,6 +92,14 @@ void AnimationStateData_dispose (AnimationStateData* self) {
 	FREE(self);
 	FREE(self);
 }
 }
 
 
+void AnimationStateData_setMixByName (AnimationStateData* self, const char* fromName, const char* toName, float duration) {
+	Animation* from = SkeletonData_findAnimation(self->skeletonData, fromName);
+	if (!from) return;
+	Animation* to = SkeletonData_findAnimation(self->skeletonData, toName);
+	if (!to) return;
+	AnimationStateData_setMix(self, from, to, duration);
+}
+
 void AnimationStateData_setMix (AnimationStateData* self, Animation* from, Animation* to, float duration) {
 void AnimationStateData_setMix (AnimationStateData* self, Animation* from, Animation* to, float duration) {
 	/* Find existing FromEntry. */
 	/* Find existing FromEntry. */
 	_FromEntry* fromEntry = (_FromEntry*)self->entries;
 	_FromEntry* fromEntry = (_FromEntry*)self->entries;

+ 0 - 1
spine-c/src/spine/Attachment.c

@@ -40,7 +40,6 @@ void _Attachment_init (Attachment* self, const char* name, AttachmentType type)
 void _Attachment_deinit (Attachment* self) {
 void _Attachment_deinit (Attachment* self) {
 	FREE(self->vtable);
 	FREE(self->vtable);
 	FREE(self->name);
 	FREE(self->name);
-	FREE(self);
 }
 }
 
 
 void Attachment_dispose (Attachment* self) {
 void Attachment_dispose (Attachment* self) {

+ 24 - 0
spine-c/src/spine/SkeletonData.c

@@ -36,6 +36,23 @@ SkeletonData* SkeletonData_create () {
 }
 }
 
 
 void SkeletonData_dispose (SkeletonData* self) {
 void SkeletonData_dispose (SkeletonData* self) {
+	int i;
+	for (i = 0; i < self->boneCount; ++i)
+		BoneData_dispose(self->bones[i]);
+	FREE(self->bones);
+
+	for (i = 0; i < self->slotCount; ++i)
+		SlotData_dispose(self->slots[i]);
+	FREE(self->slots);
+
+	for (i = 0; i < self->skinCount; ++i)
+		Skin_dispose(self->skins[i]);
+	FREE(self->skins);
+
+	for (i = 0; i < self->animationCount; ++i)
+		Animation_dispose(self->animations[i]);
+	FREE(self->animations);
+
 	FREE(self);
 	FREE(self);
 }
 }
 
 
@@ -74,6 +91,13 @@ Skin* SkeletonData_findSkin (const SkeletonData* self, const char* skinName) {
 	return 0;
 	return 0;
 }
 }
 
 
+Animation* SkeletonData_findAnimation (const SkeletonData* self, const char* animationName) {
+	int i;
+	for (i = 0; i < self->animationCount; ++i)
+		if (strcmp(self->animations[i]->name, animationName) == 0) return self->animations[i];
+	return 0;
+}
+
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }
 #endif
 #endif

+ 149 - 158
spine-c/src/spine/SkeletonJson.c

@@ -84,6 +84,146 @@ static float toColor (const char* value, int index) {
 	return color / (float)255;
 	return color / (float)255;
 }
 }
 
 
+static void readCurve (CurveTimeline* timeline, int frameIndex, Json* frame) {
+	Json* curve = Json_getItem(frame, "curve");
+	if (!curve) return;
+	if (curve->type == Json_String && strcmp(curve->valuestring, "stepped") == 0)
+		CurveTimeline_setStepped(timeline, frameIndex);
+	else if (curve->type == Json_Array) {
+		CurveTimeline_setCurve(timeline, frameIndex, Json_getItemAt(curve, 0)->valuefloat, Json_getItemAt(curve, 1)->valuefloat,
+				Json_getItemAt(curve, 2)->valuefloat, Json_getItemAt(curve, 3)->valuefloat);
+	}
+}
+
+static Animation* _SkeletonJson_readAnimation (SkeletonJson* self, Json* root, SkeletonData *skeletonData) {
+	Json* bones = Json_getItem(root, "bones");
+	int boneCount = Json_getSize(bones);
+
+	Json* slots = Json_getItem(root, "slots");
+	int slotCount = slots ? Json_getSize(slots) : 0;
+
+	int timelineCount = 0;
+	int i, ii, iii;
+	for (i = 0; i < boneCount; ++i)
+		timelineCount += Json_getSize(Json_getItemAt(bones, i));
+	for (i = 0; i < slotCount; ++i)
+		timelineCount += Json_getSize(Json_getItemAt(slots, i));
+	Animation* animation = Animation_create(root->name, timelineCount);
+	animation->timelineCount = 0;
+	skeletonData->animations[skeletonData->animationCount] = animation;
+	skeletonData->animationCount++;
+
+	for (i = 0; i < boneCount; ++i) {
+		Json* boneMap = Json_getItemAt(bones, i);
+
+		const char* boneName = boneMap->name;
+
+		int boneIndex = SkeletonData_findBoneIndex(skeletonData, boneName);
+		if (boneIndex == -1) {
+			Animation_dispose(animation);
+			_SkeletonJson_setError(self, root, "Bone not found: ", boneName);
+			return 0;
+		}
+
+		int timelineCount = Json_getSize(boneMap);
+		for (ii = 0; ii < timelineCount; ++ii) {
+			Json* timelineArray = Json_getItemAt(boneMap, ii);
+			int frameCount = Json_getSize(timelineArray);
+			const char* timelineType = timelineArray->name;
+
+			if (strcmp(timelineType, "rotate") == 0) {
+				RotateTimeline *timeline = RotateTimeline_create(frameCount);
+				timeline->boneIndex = boneIndex;
+				for (iii = 0; iii < frameCount; ++iii) {
+					Json* frame = Json_getItemAt(timelineArray, iii);
+					RotateTimeline_setFrame(timeline, iii, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "angle", 0));
+					readCurve(SUPER(timeline), iii, frame);
+				}
+				animation->timelines[animation->timelineCount++] = (Timeline*)timeline;
+				float duration = timeline->frames[frameCount * 2 - 2];
+				if (duration > animation->duration) animation->duration = duration;
+
+			} else {
+				int isScale = strcmp(timelineType, "scale") == 0;
+				if (isScale || strcmp(timelineType, "translate") == 0) {
+					TranslateTimeline *timeline = isScale ? ScaleTimeline_create(frameCount) : TranslateTimeline_create(frameCount);
+					float scale = isScale ? 1 : self->scale;
+					timeline->boneIndex = boneIndex;
+					for (iii = 0; iii < frameCount; ++iii) {
+						Json* frame = Json_getItemAt(timelineArray, iii);
+						TranslateTimeline_setFrame(timeline, iii, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "x", 0) * scale,
+								Json_getFloat(frame, "y", 0) * scale);
+						readCurve(SUPER(timeline), iii, frame);
+					}
+					animation->timelines[animation->timelineCount++] = (Timeline*)timeline;
+					float duration = timeline->frames[frameCount * 3 - 3];
+					if (duration > animation->duration) animation->duration = duration;
+				} else {
+					Animation_dispose(animation);
+					_SkeletonJson_setError(self, 0, "Invalid timeline type for a bone: ", timelineType);
+					return 0;
+				}
+			}
+		}
+	}
+
+	if (slots) {
+		for (i = 0; i < slotCount; ++i) {
+			Json* slotMap = Json_getItemAt(slots, i);
+			const char* slotName = slotMap->name;
+
+			int slotIndex = SkeletonData_findSlotIndex(skeletonData, slotName);
+			if (slotIndex == -1) {
+				Animation_dispose(animation);
+				_SkeletonJson_setError(self, root, "Slot not found: ", slotName);
+				return 0;
+			}
+
+			int timelineCount = Json_getSize(slotMap);
+			for (ii = 0; ii < timelineCount; ++ii) {
+				Json* timelineArray = Json_getItemAt(slotMap, ii);
+				int frameCount = Json_getSize(timelineArray);
+				const char* timelineType = timelineArray->name;
+
+				if (strcmp(timelineType, "color") == 0) {
+					ColorTimeline *timeline = ColorTimeline_create(frameCount);
+					timeline->slotIndex = slotIndex;
+					for (iii = 0; iii < frameCount; ++iii) {
+						Json* frame = Json_getItemAt(timelineArray, iii);
+						const char* s = Json_getString(frame, "color", 0);
+						ColorTimeline_setFrame(timeline, iii, Json_getFloat(frame, "time", 0), toColor(s, 0), toColor(s, 1),
+								toColor(s, 2), toColor(s, 3));
+						readCurve(SUPER(timeline), iii, frame);
+					}
+					animation->timelines[animation->timelineCount++] = (Timeline*)timeline;
+					float duration = timeline->frames[frameCount * 5 - 5];
+					if (duration > animation->duration) animation->duration = duration;
+
+				} else if (strcmp(timelineType, "attachment") == 0) {
+					AttachmentTimeline *timeline = AttachmentTimeline_create(frameCount);
+					timeline->slotIndex = slotIndex;
+					for (iii = 0; iii < frameCount; ++iii) {
+						Json* frame = Json_getItemAt(timelineArray, iii);
+						Json* name = Json_getItem(frame, "name");
+						AttachmentTimeline_setFrame(timeline, iii, Json_getFloat(frame, "time", 0),
+								name->type == Json_NULL ? 0 : name->valuestring);
+					}
+					animation->timelines[animation->timelineCount++] = (Timeline*)timeline;
+					float duration = timeline->frames[frameCount - 1];
+					if (duration > animation->duration) animation->duration = duration;
+
+				} else {
+					Animation_dispose(animation);
+					_SkeletonJson_setError(self, 0, "Invalid timeline type for a slot: ", timelineType);
+					return 0;
+				}
+			}
+		}
+	}
+
+	return animation;
+}
+
 SkeletonData* SkeletonJson_readSkeletonDataFile (SkeletonJson* self, const char* path) {
 SkeletonData* SkeletonJson_readSkeletonDataFile (SkeletonJson* self, const char* path) {
 	int length;
 	int length;
 	const char* json = _Util_readFile(path, &length);
 	const char* json = _Util_readFile(path, &length);
@@ -239,167 +379,18 @@ SkeletonData* SkeletonJson_readSkeletonData (SkeletonJson* self, const char* jso
 		}
 		}
 	}
 	}
 
 
-	Json_dispose(root);
-	return skeletonData;
-}
-
-Animation* SkeletonJson_readAnimationFile (SkeletonJson* self, const char* path, const SkeletonData *skeletonData) {
-	int length;
-	const char* json = _Util_readFile(path, &length);
-	if (!json) {
-		_SkeletonJson_setError(self, 0, "Unable to read animation file: ", path);
-		return 0;
-	}
-	Animation* animation = SkeletonJson_readAnimation(self, json, skeletonData);
-	FREE(json);
-	return animation;
-}
-
-static void readCurve (CurveTimeline* timeline, int frameIndex, Json* frame) {
-	Json* curve = Json_getItem(frame, "curve");
-	if (!curve) return;
-	if (curve->type == Json_String && strcmp(curve->valuestring, "stepped") == 0)
-		CurveTimeline_setStepped(timeline, frameIndex);
-	else if (curve->type == Json_Array) {
-		CurveTimeline_setCurve(timeline, frameIndex, Json_getItemAt(curve, 0)->valuefloat, Json_getItemAt(curve, 1)->valuefloat,
-				Json_getItemAt(curve, 2)->valuefloat, Json_getItemAt(curve, 3)->valuefloat);
-	}
-}
-
-Animation* SkeletonJson_readAnimation (SkeletonJson* self, const char* json, const SkeletonData *skeletonData) {
-	FREE(self->error);
-	CONST_CAST(char*, self->error) = 0;
-
-	Json* root = Json_create(json);
-	if (!root) {
-		_SkeletonJson_setError(self, 0, "Invalid animation JSON: ", Json_getError());
-		return 0;
-	}
-
-	Json* bones = Json_getItem(root, "bones");
-	int boneCount = Json_getSize(bones);
-
-	Json* slots = Json_getItem(root, "slots");
-	int slotCount = slots ? Json_getSize(slots) : 0;
-
-	int timelineCount = 0;
-	int i, ii, iii;
-	for (i = 0; i < boneCount; ++i)
-		timelineCount += Json_getSize(Json_getItemAt(bones, i));
-	for (i = 0; i < slotCount; ++i)
-		timelineCount += Json_getSize(Json_getItemAt(slots, i));
-	Animation* animation = Animation_create(timelineCount);
-	animation->timelineCount = 0;
-
-	for (i = 0; i < boneCount; ++i) {
-		Json* boneMap = Json_getItemAt(bones, i);
-
-		const char* boneName = boneMap->name;
-
-		int boneIndex = SkeletonData_findBoneIndex(skeletonData, boneName);
-		if (boneIndex == -1) {
-			Animation_dispose(animation);
-			_SkeletonJson_setError(self, root, "Bone not found: ", boneName);
-			return 0;
-		}
-
-		int timelineCount = Json_getSize(boneMap);
-		for (ii = 0; ii < timelineCount; ++ii) {
-			Json* timelineArray = Json_getItemAt(boneMap, ii);
-			int frameCount = Json_getSize(timelineArray);
-			const char* timelineType = timelineArray->name;
-
-			if (strcmp(timelineType, "rotate") == 0) {
-				RotateTimeline *timeline = RotateTimeline_create(frameCount);
-				timeline->boneIndex = boneIndex;
-				for (iii = 0; iii < frameCount; ++iii) {
-					Json* frame = Json_getItemAt(timelineArray, iii);
-					RotateTimeline_setFrame(timeline, iii, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "angle", 0));
-					readCurve(SUPER(timeline), iii, frame);
-				}
-				animation->timelines[animation->timelineCount++] = (Timeline*)timeline;
-				float duration = timeline->frames[frameCount * 2 - 2];
-				if (duration > animation->duration) animation->duration = duration;
-
-			} else {
-				int isScale = strcmp(timelineType, "scale") == 0;
-				if (isScale || strcmp(timelineType, "translate") == 0) {
-					TranslateTimeline *timeline = isScale ? ScaleTimeline_create(frameCount) : TranslateTimeline_create(frameCount);
-					float scale = isScale ? 1 : self->scale;
-					timeline->boneIndex = boneIndex;
-					for (iii = 0; iii < frameCount; ++iii) {
-						Json* frame = Json_getItemAt(timelineArray, iii);
-						TranslateTimeline_setFrame(timeline, iii, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "x", 0) * scale,
-								Json_getFloat(frame, "y", 0) * scale);
-						readCurve(SUPER(timeline), iii, frame);
-					}
-					animation->timelines[animation->timelineCount++] = (Timeline*)timeline;
-					float duration = timeline->frames[frameCount * 3 - 3];
-				if (duration > animation->duration) animation->duration = duration;
-				} else {
-					Animation_dispose(animation);
-					_SkeletonJson_setError(self, 0, "Invalid timeline type for a bone: ", timelineType);
-					return 0;
-				}
-			}
-		}
-	}
-
-	if (slots) {
-		for (i = 0; i < slotCount; ++i) {
-			Json* slotMap = Json_getItemAt(slots, i);
-			const char* slotName = slotMap->name;
-
-			int slotIndex = SkeletonData_findSlotIndex(skeletonData, slotName);
-			if (slotIndex == -1) {
-				Animation_dispose(animation);
-				_SkeletonJson_setError(self, root, "Slot not found: ", slotName);
-				return 0;
-			}
-
-			int timelineCount = Json_getSize(slotMap);
-			for (ii = 0; ii < timelineCount; ++ii) {
-				Json* timelineArray = Json_getItemAt(slotMap, ii);
-				int frameCount = Json_getSize(timelineArray);
-				const char* timelineType = timelineArray->name;
-
-				if (strcmp(timelineType, "color") == 0) {
-					ColorTimeline *timeline = ColorTimeline_create(frameCount);
-					timeline->slotIndex = slotIndex;
-					for (iii = 0; iii < frameCount; ++iii) {
-						Json* frame = Json_getItemAt(timelineArray, iii);
-						const char* s = Json_getString(frame, "color", 0);
-						ColorTimeline_setFrame(timeline, iii, Json_getFloat(frame, "time", 0), toColor(s, 0), toColor(s, 1),
-								toColor(s, 2), toColor(s, 3));
-						readCurve(SUPER(timeline), iii, frame);
-					}
-					animation->timelines[animation->timelineCount++] = (Timeline*)timeline;
-					float duration = timeline->frames[frameCount * 5 - 5];
-				if (duration > animation->duration) animation->duration = duration;
-
-				} else if (strcmp(timelineType, "attachment") == 0) {
-					AttachmentTimeline *timeline = AttachmentTimeline_create(frameCount);
-					timeline->slotIndex = slotIndex;
-					for (iii = 0; iii < frameCount; ++iii) {
-						Json* frame = Json_getItemAt(timelineArray, iii);
-						Json* name = Json_getItem(frame, "name");
-						AttachmentTimeline_setFrame(timeline, iii, Json_getFloat(frame, "time", 0),
-								name->type == Json_NULL ? 0 : name->valuestring);
-					}
-					animation->timelines[animation->timelineCount++] = (Timeline*)timeline;
-					float duration = timeline->frames[frameCount- 1];
-					if (duration > animation->duration) animation->duration = duration;
-
-				} else {
-					Animation_dispose(animation);
-					_SkeletonJson_setError(self, 0, "Invalid timeline type for a slot: ", timelineType);
-					return 0;
-				}
-			}
+	Json* animations = Json_getItem(root, "animations");
+	if (animations) {
+		int animationCount = Json_getSize(animations);
+		skeletonData->animations = MALLOC(Animation*, animationCount);
+		for (i = 0; i < animationCount; ++i) {
+			Json* animationMap = Json_getItemAt(animations, i);
+			_SkeletonJson_readAnimation(self, animationMap, skeletonData);
 		}
 		}
 	}
 	}
 
 
-	return animation;
+	Json_dispose(root);
+	return skeletonData;
 }
 }
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus

+ 1 - 1
spine-c/src/spine/Skin.c

@@ -76,7 +76,7 @@ void Skin_dispose (Skin* self) {
 	FREE(self->name);
 	FREE(self->name);
 	FREE(self);
 	FREE(self);
 }
 }
-
+#include <stdio.h>
 void Skin_addAttachment (Skin* self, int slotIndex, const char* name, Attachment* attachment) {
 void Skin_addAttachment (Skin* self, int slotIndex, const char* name, Attachment* attachment) {
 	_Entry* newEntry = _Entry_create(slotIndex, name, attachment);
 	_Entry* newEntry = _Entry_create(slotIndex, name, attachment);
 	newEntry->next = SUB_CAST(_Internal, self)->entries;
 	newEntry->next = SUB_CAST(_Internal, self)->entries;

+ 285 - 0
spine-cocos2d-iphone/Resources/goblins.atlas

@@ -0,0 +1,285 @@
+
+goblins.png
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+spear
+  rotate: false
+  xy: 2, 142
+  size: 22, 368
+  orig: 22, 368
+  offset: 0, 0
+  index: -1
+goblingirl/head
+  rotate: false
+  xy: 26, 429
+  size: 103, 81
+  orig: 103, 81
+  offset: 0, 0
+  index: -1
+goblin/head
+  rotate: false
+  xy: 26, 361
+  size: 103, 66
+  orig: 103, 66
+  offset: 0, 0
+  index: -1
+goblin/torso
+  rotate: false
+  xy: 131, 414
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+goblingirl/torso
+  rotate: false
+  xy: 26, 263
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+dagger
+  rotate: false
+  xy: 26, 153
+  size: 26, 108
+  orig: 26, 108
+  offset: 0, 0
+  index: -1
+goblin/right-lower-leg
+  rotate: false
+  xy: 201, 434
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblingirl/right-lower-leg
+  rotate: false
+  xy: 54, 185
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblin/left-upper-leg
+  rotate: false
+  xy: 96, 286
+  size: 33, 73
+  orig: 33, 73
+  offset: 0, 0
+  index: -1
+goblin/pelvis
+  rotate: false
+  xy: 131, 369
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblingirl/pelvis
+  rotate: false
+  xy: 131, 324
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblin/right-foot
+  rotate: false
+  xy: 131, 289
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/left-lower-leg
+  rotate: false
+  xy: 2, 70
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblin/right-upper-leg
+  rotate: false
+  xy: 2, 5
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblingirl/left-lower-leg
+  rotate: false
+  xy: 195, 342
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/left-upper-leg
+  rotate: false
+  xy: 37, 81
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/right-upper-leg
+  rotate: false
+  xy: 38, 16
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblin/eyes-closed
+  rotate: false
+  xy: 38, 2
+  size: 34, 12
+  orig: 34, 12
+  offset: 0, 0
+  index: -1
+goblin/undies
+  rotate: false
+  xy: 54, 154
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1
+goblin/right-arm
+  rotate: false
+  xy: 72, 102
+  size: 23, 50
+  orig: 23, 50
+  offset: 0, 0
+  index: -1
+goblin/left-foot
+  rotate: false
+  xy: 131, 256
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-arm
+  rotate: false
+  xy: 196, 290
+  size: 28, 50
+  orig: 28, 50
+  offset: 0, 0
+  index: -1
+goblingirl/left-shoulder
+  rotate: false
+  xy: 226, 294
+  size: 28, 46
+  orig: 28, 46
+  offset: 0, 0
+  index: -1
+goblin/left-arm
+  rotate: false
+  xy: 198, 253
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblingirl/left-foot
+  rotate: false
+  xy: 92, 223
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-foot
+  rotate: false
+  xy: 92, 188
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/undie-straps
+  rotate: false
+  xy: 92, 167
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/left-arm
+  rotate: false
+  xy: 159, 219
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblin/right-shoulder
+  rotate: false
+  xy: 97, 120
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblingirl/right-shoulder
+  rotate: false
+  xy: 198, 206
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblin/left-hand
+  rotate: false
+  xy: 157, 176
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblin/neck
+  rotate: false
+  xy: 195, 163
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblingirl/undie-straps
+  rotate: false
+  xy: 97, 99
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/neck
+  rotate: false
+  xy: 138, 120
+  size: 35, 41
+  orig: 35, 41
+  offset: 0, 0
+  index: -1
+goblingirl/left-hand
+  rotate: false
+  xy: 175, 121
+  size: 35, 40
+  orig: 35, 40
+  offset: 0, 0
+  index: -1
+goblin/left-shoulder
+  rotate: false
+  xy: 212, 117
+  size: 29, 44
+  orig: 29, 44
+  offset: 0, 0
+  index: -1
+goblingirl/eyes-closed
+  rotate: false
+  xy: 154, 97
+  size: 37, 21
+  orig: 37, 21
+  offset: 0, 0
+  index: -1
+goblin/right-hand
+  rotate: false
+  xy: 193, 78
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/right-hand
+  rotate: false
+  xy: 74, 39
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/undies
+  rotate: false
+  xy: 74, 8
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1

+ 318 - 21
spine-libgdx/test/goblins-skeleton.json → spine-cocos2d-iphone/Resources/goblins.json

@@ -1,7 +1,7 @@
 {
 {
 "bones": [
 "bones": [
-	{ "name": "root", "length": 0 },
-	{ "name": "hip", "parent": "root", "length": 0, "x": 0.64, "y": 114.41 },
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
 	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
 	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
 	{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
 	{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
 	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
 	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
@@ -17,12 +17,12 @@
 	{ "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 },
 	{ "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 },
 	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 },
 	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 },
 	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
 	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
-	{ "name": "pelvis", "parent": "hip", "length": 0, "x": 1.41, "y": -6.57 }
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
 ],
 ],
 "slots": [
 "slots": [
 	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
 	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
 	{ "name": "left arm", "bone": "left arm", "attachment": "left arm" },
 	{ "name": "left arm", "bone": "left arm", "attachment": "left arm" },
-	{ "name": "left hand item", "bone": "left hand", "attachment": "left hand item" },
+	{ "name": "left hand item", "bone": "left hand", "attachment": "spear" },
 	{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
 	{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
 	{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
 	{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
 	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
 	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
@@ -36,14 +36,22 @@
 	{ "name": "undies", "bone": "pelvis", "attachment": "undies" },
 	{ "name": "undies", "bone": "pelvis", "attachment": "undies" },
 	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" },
 	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" },
 	{ "name": "head", "bone": "head", "attachment": "head" },
 	{ "name": "head", "bone": "head", "attachment": "head" },
-	{ "name": "eyes", "bone": "head", "attachment": "eyes open" },
+	{ "name": "eyes", "bone": "head" },
 	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" },
 	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" },
 	{ "name": "right arm", "bone": "right arm", "attachment": "right arm" },
 	{ "name": "right arm", "bone": "right arm", "attachment": "right arm" },
-	{ "name": "right hand item 2", "bone": "right hand", "attachment": "right hand item 2" },
-	{ "name": "right hand", "bone": "right hand", "attachment": "right hand" },
-	{ "name": "right hand item", "bone": "right hand", "attachment": "right hand item" }
+	{ "name": "right hand item", "bone": "right hand", "attachment": "dagger" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right hand" }
 ],
 ],
 "skins": {
 "skins": {
+	"default": {
+		"left hand item": {
+			"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
+			"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
+		},
+		"right hand item": {
+			"dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 }
+		}
+	},
 	"goblin": {
 	"goblin": {
 		"neck": {
 		"neck": {
 			"neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.69, "width": 36, "height": 41 }
 			"neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.69, "width": 36, "height": 41 }
@@ -114,14 +122,11 @@
 		"left foot": {
 		"left foot": {
 			"left foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.74, "rotation": 3.32, "width": 65, "height": 31 }
 			"left foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.74, "rotation": 3.32, "width": 65, "height": 31 }
 		},
 		},
-		"right hand item": {
-			"right hand item": { "name": "goblin/shield", "x": -0.47, "y": 1.1, "rotation": 91.16, "width": 70, "height": 72 }
-		},
-		"left hand item": {
-			"left hand item": { "name": "goblin/spear", "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
-		},
 		"undie straps": {
 		"undie straps": {
 			"undie straps": { "name": "goblin/undie-straps", "x": -3.87, "y": 13.1, "scaleX": 1.089, "width": 55, "height": 19 }
 			"undie straps": { "name": "goblin/undie-straps", "x": -3.87, "y": 13.1, "scaleX": 1.089, "width": 55, "height": 19 }
+		},
+		"eyes": {
+			"eyes closed": { "name": "goblin/eyes-closed", "x": 32.21, "y": -21.27, "rotation": -88.92, "width": 34, "height": 12 }
 		}
 		}
 	},
 	},
 	"goblingirl": {
 	"goblingirl": {
@@ -188,14 +193,306 @@
 		"undies": {
 		"undies": {
 			"undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 }
 			"undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 }
 		},
 		},
-		"left hand item": {
-			"left hand item": { "name": "goblingirl/dagger", "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }
-		},
-		"right hand item 2": {
-			"right hand item 2": { "name": "goblingirl/dagger", "x": 7.17, "y": -22.38, "rotation": -5.27, "width": 26, "height": 108 }
+		"eyes": {
+			"eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2333, "angle": 9.51 },
+					{ "time": 0.3666, "angle": 30.74 },
+					{ "time": 0.5, "angle": 25.33 },
+					{ "time": 0.6333, "angle": 26.11 },
+					{ "time": 0.7333, "angle": -7.7 },
+					{ "time": 0.8666, "angle": -21.19 },
+					{ "time": 1, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.32, "y": 1.7 },
+					{ "time": 0.3666, "x": -0.06, "y": 2.42 },
+					{ "time": 1, "x": -1.32, "y": 1.7 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2333, "angle": 8.53 },
+					{ "time": 0.5, "angle": -16.93 },
+					{ "time": 0.6333, "angle": 1.89 },
+					{
+						"time": 0.7333,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 6.23, "y": 0 },
+					{ "time": 0.2333, "x": 2.14, "y": 2.4 },
+					{ "time": 0.5, "x": 2.44, "y": 4.8 },
+					{ "time": 1, "x": 6.23, "y": 0 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -22.98 },
+					{ "time": 0.1333, "angle": -63.5 },
+					{ "time": 0.2333, "angle": -73.76 },
+					{ "time": 0.5, "angle": 5.11 },
+					{ "time": 0.6333, "angle": -28.29 },
+					{ "time": 0.7333, "angle": 4.08 },
+					{ "time": 0.8666, "angle": 3.53 },
+					{ "time": 1, "angle": -22.98 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{ "time": 0.2333, "x": 2.55, "y": -0.47 },
+					{ "time": 0.5, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2333, "angle": -5.01 },
+					{ "time": 0.3666, "angle": 3.87 },
+					{ "time": 0.5, "angle": -3.87 },
+					{ "time": 0.6333, "angle": 2.78 },
+					{ "time": 0.7333, "angle": 1.68 },
+					{ "time": 0.8666, "angle": -8.54 },
+					{ "time": 1, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 5.29,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{ "time": 0.6333, "angle": 6.65 },
+					{ "time": 1, "angle": 5.29 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": 19.78,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 8.98 },
+					{ "time": 0.6333, "angle": 0.51 },
+					{ "time": 1, "angle": 8.98 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 6.25,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -11.78,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 6.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 1.15, "y": 0.23 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -21.23,
+						"curve": [ 0.295, 0, 0.755, 0.98 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -27.28,
+						"curve": [ 0.241, 0, 0.75, 0.97 ]
+					},
+					{ "time": 1, "angle": -21.23 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 28.37,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 60.09,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 28.37 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 0.818, 1 ]
+					},
+					{
+						"time": 0.3666,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 0.669, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": -15.75,
+						"curve": [ 0.235, 0.01, 0.795, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": -7.06,
+						"curve": [ 0.209, 0, 0.816, 0.98 ]
+					},
+					{ "time": 1, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.29, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2333, "angle": -1.91 },
+					{ "time": 0.3666, "angle": -6.45 },
+					{ "time": 0.5, "angle": -5.39 },
+					{ "time": 0.7333, "angle": -11.68 },
+					{ "time": 0.8666, "angle": 0.46 },
+					{ "time": 1, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -3.39,
+						"curve": [ 0.316, 0.01, 0.741, 0.98 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -45.53,
+						"curve": [ 0.229, 0, 0.738, 0.97 ]
+					},
+					{ "time": 0.2333, "angle": -4.83 },
+					{ "time": 0.5, "angle": -19.53 },
+					{ "time": 0.6333, "angle": -64.8 },
+					{
+						"time": 0.7333,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1, "angle": -3.39 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.5, "x": 0, "y": 0 },
+					{ "time": 0.6333, "x": 2.18, "y": 0.21 },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": -4.16 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.3666, "x": 0, "y": 6.78 },
+					{ "time": 0.5, "x": 0, "y": -6.13 },
+					{
+						"time": 0.6333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.8666, "x": 0, "y": 6.78 },
+					{ "time": 1, "x": 0, "y": -4.16 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{ "time": 0.5, "angle": 5.17 },
+					{ "time": 0.6333, "angle": 18.36 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.17 ]
+					},
+					{ "time": 0.1333, "angle": -0.2 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{
+						"time": 0.5,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.6666, "angle": 1.1 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			}
 		},
 		},
-		"right hand item": {
-			"right hand item": { "name": "goblingirl/dagger-tip", "x": 13.45, "y": 22.07, "rotation": -3.23, "width": 17, "height": 17 }
+		"slots": {
+			"eyes": {
+				"attachment": [
+					{ "time": 0.7, "name": "eyes closed" },
+					{ "time": 0.8, "name": null }
+				]
+			}
 		}
 		}
 	}
 	}
 }
 }

二進制
spine-cocos2d-iphone/Resources/goblins.png


+ 0 - 410
spine-cocos2d-iphone/Resources/spineboy-jump.json

@@ -1,410 +0,0 @@
-{
-"bones": {
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 0, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": -11.57, "y": -3 },
-			{ "time": 0.2333, "x": -16.2, "y": -19.43 },
-			{
-				"time": 0.3333,
-				"x": 7.66,
-				"y": -8.48,
-				"curve": [ 0.057, 0.06, 0.712, 1 ]
-			},
-			{ "time": 0.3666, "x": 15.38, "y": 5.01 },
-			{ "time": 0.4666, "x": -7.84, "y": 57.22 },
-			{
-				"time": 0.6,
-				"x": -10.81,
-				"y": 96.34,
-				"curve": [ 0.241, 0, 1, 1 ]
-			},
-			{ "time": 0.7333, "x": -7.01, "y": 54.7 },
-			{ "time": 0.8, "x": -10.58, "y": 32.2 },
-			{ "time": 0.9333, "x": -31.99, "y": 0.45 },
-			{ "time": 1.0666, "x": -12.48, "y": -29.47 },
-			{ "time": 1.3666, "x": -11.57, "y": -3 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 17.13 },
-			{ "time": 0.2333, "angle": 44.35 },
-			{ "time": 0.3333, "angle": 16.46 },
-			{ "time": 0.4, "angle": -9.88 },
-			{ "time": 0.4666, "angle": -11.42 },
-			{ "time": 0.5666, "angle": 23.46 },
-			{ "time": 0.7666, "angle": 71.82 },
-			{ "time": 0.9333, "angle": 65.53 },
-			{ "time": 1.0666, "angle": 51.01 },
-			{ "time": 1.3666, "angle": 17.13 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
-			{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
-			{ "time": 1.3666, "x": -3, "y": -2.25 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -16.25 },
-			{ "time": 0.2333, "angle": -52.21 },
-			{ "time": 0.4, "angle": 15.04 },
-			{ "time": 0.4666, "angle": -8.95 },
-			{ "time": 0.5666, "angle": -39.53 },
-			{ "time": 0.7666, "angle": -27.27 },
-			{ "time": 0.9333, "angle": -3.52 },
-			{ "time": 1.0666, "angle": -61.92 },
-			{ "time": 1.3666, "angle": -16.25 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": 0.33 },
-			{ "time": 0.2333, "angle": 6.2 },
-			{ "time": 0.3333, "angle": 14.73 },
-			{ "time": 0.4, "angle": -15.54 },
-			{ "time": 0.4333, "angle": -21.2 },
-			{ "time": 0.5666, "angle": -7.55 },
-			{ "time": 0.7666, "angle": -0.67 },
-			{ "time": 0.9333, "angle": -0.58 },
-			{ "time": 1.0666, "angle": 14.64 },
-			{ "time": 1.3666, "angle": 0.33 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 25.97 },
-			{ "time": 0.2333, "angle": 46.43 },
-			{ "time": 0.3333, "angle": 22.61 },
-			{ "time": 0.4, "angle": 2.13 },
-			{
-				"time": 0.4666,
-				"angle": 0.04,
-				"curve": [ 0, 0, 0.637, 0.98 ]
-			},
-			{ "time": 0.6, "angle": 65.55 },
-			{ "time": 0.7666, "angle": 64.93 },
-			{ "time": 0.9333, "angle": 41.08 },
-			{ "time": 1.0666, "angle": 66.25 },
-			{ "time": 1.3666, "angle": 25.97 }
-		],
-		"translate": [
-			{ "time": 0, "x": 5.74, "y": 0.61 },
-			{ "time": 0.2333, "x": 4.79, "y": 1.79 },
-			{ "time": 0.3333, "x": 6.05, "y": -4.55 },
-			{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
-			{ "time": 1.0666, "x": 4.79, "y": 1.79 },
-			{ "time": 1.3666, "x": 5.74, "y": 0.61 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -27.46 },
-			{ "time": 0.2333, "angle": -64.03 },
-			{ "time": 0.4, "angle": -48.36 },
-			{ "time": 0.5666, "angle": -76.86 },
-			{ "time": 0.7666, "angle": -26.89 },
-			{ "time": 0.9, "angle": -18.97 },
-			{ "time": 0.9333, "angle": -14.18 },
-			{ "time": 1.0666, "angle": -80.45 },
-			{ "time": 1.3666, "angle": -27.46 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": 1.08 },
-			{ "time": 0.2333, "angle": 16.02 },
-			{ "time": 0.3, "angle": 12.94 },
-			{ "time": 0.3333, "angle": 15.16 },
-			{ "time": 0.4, "angle": -14.7 },
-			{ "time": 0.4333, "angle": -12.85 },
-			{ "time": 0.4666, "angle": -19.18 },
-			{ "time": 0.5666, "angle": -15.82 },
-			{ "time": 0.6, "angle": -3.59 },
-			{ "time": 0.7666, "angle": -3.56 },
-			{ "time": 0.9333, "angle": 1.86 },
-			{ "time": 1.0666, "angle": 16.02 },
-			{ "time": 1.3666, "angle": 1.08 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -13.35 },
-			{ "time": 0.2333, "angle": -48.95 },
-			{ "time": 0.4333, "angle": -35.77 },
-			{ "time": 0.6, "angle": -4.59 },
-			{ "time": 0.7666, "angle": 14.61 },
-			{ "time": 0.9333, "angle": 15.74 },
-			{ "time": 1.0666, "angle": -32.44 },
-			{ "time": 1.3666, "angle": -13.35 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
-			{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
-			{ "time": 1.3666, "x": -3.67, "y": 1.68 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 12.78 },
-			{ "time": 0.2333, "angle": 16.46 },
-			{ "time": 0.4, "angle": 26.49 },
-			{ "time": 0.6, "angle": 15.51 },
-			{ "time": 0.7666, "angle": 1.34 },
-			{ "time": 0.9333, "angle": 2.35 },
-			{ "time": 1.0666, "angle": 6.08 },
-			{ "time": 1.3, "angle": 21.23 },
-			{ "time": 1.3666, "angle": 12.78 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{ "time": 0, "angle": 5.19 },
-			{ "time": 0.2333, "angle": 20.27 },
-			{ "time": 0.4, "angle": 15.27 },
-			{ "time": 0.6, "angle": -24.69 },
-			{ "time": 0.7666, "angle": -11.02 },
-			{ "time": 0.9333, "angle": -24.38 },
-			{ "time": 1.0666, "angle": 11.99 },
-			{ "time": 1.3, "angle": 4.86 },
-			{ "time": 1.3666, "angle": 5.19 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 0.05,
-				"curve": [ 0, 0, 0.62, 1 ]
-			},
-			{
-				"time": 0.2333,
-				"angle": 279.66,
-				"curve": [ 0.218, 0.67, 0.66, 0.99 ]
-			},
-			{
-				"time": 0.5,
-				"angle": 62.27,
-				"curve": [ 0.462, 0, 0.764, 0.58 ]
-			},
-			{ "time": 0.9333, "angle": 28.91 },
-			{ "time": 1.0666, "angle": -8.62 },
-			{ "time": 1.1666, "angle": -18.43 },
-			{ "time": 1.3666, "angle": 0.05 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
-			{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
-			{ "time": 1.3666, "x": -1.76, "y": 0.56 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{ "time": 0, "angle": 11.58, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 11.58 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{ "time": 0, "angle": 0.51 },
-			{ "time": 0.4333, "angle": 12.82 },
-			{ "time": 0.6, "angle": 47.55 },
-			{ "time": 0.9333, "angle": 12.82 },
-			{ "time": 1.1666, "angle": -6.5 },
-			{ "time": 1.3666, "angle": 0.51 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 43.82,
-				"curve": [ 0, 0, 0.62, 1 ]
-			},
-			{
-				"time": 0.2333,
-				"angle": -8.74,
-				"curve": [ 0.304, 0.58, 0.709, 0.97 ]
-			},
-			{
-				"time": 0.5333,
-				"angle": -208.02,
-				"curve": [ 0.462, 0, 0.764, 0.58 ]
-			},
-			{ "time": 0.9333, "angle": -246.72 },
-			{ "time": 1.0666, "angle": -307.13 },
-			{ "time": 1.1666, "angle": 37.15 },
-			{ "time": 1.3666, "angle": 43.82 }
-		],
-		"translate": [
-			{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
-			{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
-			{ "time": 1.3666, "x": -7.84, "y": 7.19 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{ "time": 0, "angle": -4.02 },
-			{ "time": 0.6, "angle": 17.5 },
-			{ "time": 0.9333, "angle": -4.02 },
-			{ "time": 1.1666, "angle": -16.72 },
-			{ "time": 1.3666, "angle": -4.02 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 22.92, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 22.92 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"root": {
-		"rotate": [
-			{ "time": 0, "angle": 0 },
-			{ "time": 0.4333, "angle": -14.52 },
-			{ "time": 0.8, "angle": 9.86 },
-			{ "time": 1.3666, "angle": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	}
-}
-}

+ 0 - 98
spine-cocos2d-iphone/Resources/spineboy-skeleton.json

@@ -1,98 +0,0 @@
-{
-"bones": [
-	{ "name": "root", "length": 0 },
-	{ "name": "hip", "parent": "root", "length": 0, "x": 0.64, "y": 114.41 },
-	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
-	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
-	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
-	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
-	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
-	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
-	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
-	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
-	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
-	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
-	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
-	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
-	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
-	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
-	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
-	{ "name": "pelvis", "parent": "hip", "length": 0, "x": 1.41, "y": -6.57 }
-],
-"slots": [
-	{ "name": "template", "bone": "root", "color": "ff898c86" },
-	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
-	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
-	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
-	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
-	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
-	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
-	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
-	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
-	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
-	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
-	{ "name": "torso", "bone": "torso", "attachment": "torso" },
-	{ "name": "neck", "bone": "neck", "attachment": "neck" },
-	{ "name": "head", "bone": "head", "attachment": "head" },
-	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
-	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
-	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
-	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
-],
-"skins": {
-	"default": {
-		"left shoulder": {
-			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
-		},
-		"left arm": {
-			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
-		},
-		"left hand": {
-			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
-		},
-		"left foot": {
-			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
-		},
-		"left lower leg": {
-			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
-		},
-		"left upper leg": {
-			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
-		},
-		"pelvis": {
-			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
-		},
-		"right foot": {
-			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
-		},
-		"right lower leg": {
-			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
-		},
-		"right upper leg": {
-			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
-		},
-		"torso": {
-			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
-		},
-		"neck": {
-			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
-		},
-		"head": {
-			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
-		},
-		"eyes": {
-			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
-			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
-		},
-		"right shoulder": {
-			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
-		},
-		"right arm": {
-			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
-		},
-		"right hand": {
-			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
-		}
-	}
-}
-}

+ 0 - 278
spine-cocos2d-iphone/Resources/spineboy-walk.json

@@ -1,278 +0,0 @@
-{
-"bones": {
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": -26.55 },
-			{ "time": 0.1333, "angle": -8.78 },
-			{ "time": 0.2666, "angle": 9.51 },
-			{ "time": 0.4, "angle": 30.74 },
-			{ "time": 0.5333, "angle": 25.33 },
-			{ "time": 0.6666, "angle": 26.11 },
-			{ "time": 0.8, "angle": -7.7 },
-			{ "time": 0.9333, "angle": -21.19 },
-			{ "time": 1.0666, "angle": -26.55 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3, "y": -2.25 },
-			{ "time": 0.4, "x": -2.18, "y": -2.25 },
-			{ "time": 1.0666, "x": -3, "y": -2.25 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 42.45 },
-			{ "time": 0.1333, "angle": 52.1 },
-			{ "time": 0.2666, "angle": 5.96 },
-			{ "time": 0.5333, "angle": -16.93 },
-			{ "time": 0.6666, "angle": 1.89 },
-			{
-				"time": 0.8,
-				"angle": 28.06,
-				"curve": [ 0.462, 0.11, 1, 1 ]
-			},
-			{
-				"time": 0.9333,
-				"angle": 58.68,
-				"curve": [ 0.5, 0.02, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": 42.45 }
-		],
-		"translate": [
-			{ "time": 0, "x": 8.11, "y": -2.36 },
-			{ "time": 0.1333, "x": 10.03, "y": -2.56 },
-			{ "time": 0.4, "x": 2.76, "y": -2.97 },
-			{ "time": 0.5333, "x": 2.76, "y": -2.81 },
-			{ "time": 0.9333, "x": 8.67, "y": -2.54 },
-			{ "time": 1.0666, "x": 8.11, "y": -2.36 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -10.21 },
-			{ "time": 0.1333, "angle": -55.64 },
-			{ "time": 0.2666, "angle": -68.12 },
-			{ "time": 0.5333, "angle": 5.11 },
-			{ "time": 0.6666, "angle": -28.29 },
-			{ "time": 0.8, "angle": 4.08 },
-			{ "time": 0.9333, "angle": 3.53 },
-			{ "time": 1.0666, "angle": -10.21 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": -3.69 },
-			{ "time": 0.1333, "angle": -10.42 },
-			{ "time": 0.2666, "angle": -17.14 },
-			{ "time": 0.4, "angle": -2.83 },
-			{ "time": 0.5333, "angle": -3.87 },
-			{ "time": 0.6666, "angle": 2.78 },
-			{ "time": 0.8, "angle": 1.68 },
-			{ "time": 0.9333, "angle": -8.54 },
-			{ "time": 1.0666, "angle": -3.69 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 20.89,
-				"curve": [ 0.264, 0, 0.75, 1 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 3.72,
-				"curve": [ 0.272, 0, 0.841, 1 ]
-			},
-			{ "time": 0.6666, "angle": -278.28 },
-			{ "time": 1.0666, "angle": 20.89 }
-		],
-		"translate": [
-			{ "time": 0, "x": -7.84, "y": 7.19 },
-			{ "time": 0.1333, "x": -6.36, "y": 6.42 },
-			{ "time": 0.6666, "x": -11.07, "y": 5.25 },
-			{ "time": 1.0666, "x": -7.84, "y": 7.19 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -4.02,
-				"curve": [ 0.267, 0, 0.804, 0.99 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": -13.99,
-				"curve": [ 0.341, 0, 1, 1 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": 36.54,
-				"curve": [ 0.307, 0, 0.787, 0.99 ]
-			},
-			{ "time": 1.0666, "angle": -4.02 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 22.92 },
-			{ "time": 0.4, "angle": -8.97 },
-			{ "time": 0.6666, "angle": 0.51 },
-			{ "time": 1.0666, "angle": 22.92 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{ "time": 0, "angle": -1.47 },
-			{ "time": 0.1333, "angle": 13.6 },
-			{ "time": 0.6666, "angle": 280.74 },
-			{ "time": 1.0666, "angle": -1.47 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.76, "y": 0.56 },
-			{ "time": 0.6666, "x": -2.47, "y": 8.14 },
-			{ "time": 1.0666, "x": -1.76, "y": 0.56 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 11.58,
-				"curve": [ 0.169, 0.37, 0.632, 1.55 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 28.13,
-				"curve": [ 0.692, 0, 0.692, 0.99 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": -27.42,
-				"curve": [ 0.117, 0.41, 0.738, 1.76 ]
-			},
-			{ "time": 0.8, "angle": -36.32 },
-			{ "time": 1.0666, "angle": 11.58 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{ "time": 0, "angle": -8.27 },
-			{ "time": 0.1333, "angle": 18.43 },
-			{ "time": 0.6666, "angle": 0.88 },
-			{ "time": 1.0666, "angle": -8.27 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -10.28 },
-			{
-				"time": 0.1333,
-				"angle": -15.38,
-				"curve": [ 0.545, 0, 1, 1 ]
-			},
-			{
-				"time": 0.4,
-				"angle": -9.78,
-				"curve": [ 0.58, 0.17, 1, 1 ]
-			},
-			{ "time": 0.6666, "angle": -15.75 },
-			{ "time": 0.9333, "angle": -7.06 },
-			{ "time": 1.0666, "angle": -10.28 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3.67, "y": 1.68 },
-			{ "time": 0.1333, "x": -3.67, "y": 0.68 },
-			{ "time": 0.4, "x": -3.67, "y": 1.97 },
-			{ "time": 0.6666, "x": -3.67, "y": -0.14 },
-			{ "time": 1.0666, "x": -3.67, "y": 1.68 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": -5.25 },
-			{ "time": 0.2666, "angle": -4.08 },
-			{ "time": 0.4, "angle": -6.45 },
-			{ "time": 0.5333, "angle": -5.39 },
-			{ "time": 0.8, "angle": -11.68 },
-			{ "time": 0.9333, "angle": 0.46 },
-			{ "time": 1.0666, "angle": -5.25 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -3.39 },
-			{ "time": 0.1333, "angle": -45.53 },
-			{ "time": 0.2666, "angle": -2.59 },
-			{ "time": 0.5333, "angle": -19.53 },
-			{ "time": 0.6666, "angle": -64.8 },
-			{
-				"time": 0.8,
-				"angle": -82.56,
-				"curve": [ 0.557, 0.18, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": -3.39 }
-		]
-	},
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 1.0666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0 },
-			{
-				"time": 0.1333,
-				"x": 0,
-				"y": -7.61,
-				"curve": [ 0.272, 0.86, 1, 1 ]
-			},
-			{ "time": 0.4, "x": 0, "y": 8.7 },
-			{ "time": 0.5333, "x": 0, "y": -0.41 },
-			{
-				"time": 0.6666,
-				"x": 0,
-				"y": -7.05,
-				"curve": [ 0.235, 0.89, 1, 1 ]
-			},
-			{ "time": 0.8, "x": 0, "y": 2.92 },
-			{ "time": 0.9333, "x": 0, "y": 6.78 },
-			{ "time": 1.0666, "x": 0, "y": 0 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 3.6 },
-			{ "time": 0.1333, "angle": 17.49 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{ "time": 0.5333, "angle": 5.17 },
-			{ "time": 0.6666, "angle": 18.36 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 3.6,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.1666, "angle": -0.2 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{
-				"time": 0.5333,
-				"angle": 5.17,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.7, "angle": 1.1 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	}
-}
-}

+ 1 - 1
spine-cocos2d-iphone/Resources/spineboy.atlas

@@ -1,7 +1,7 @@
 
 
 spineboy.png
 spineboy.png
 format: RGBA8888
 format: RGBA8888
-filter: Nearest,Nearest
+filter: Linear,Linear
 repeat: none
 repeat: none
 head
 head
   rotate: false
   rotate: false

+ 787 - 0
spine-cocos2d-iphone/Resources/spineboy.json

@@ -0,0 +1,787 @@
+{
+"bones": [
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
+	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
+	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
+	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
+	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
+	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
+	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
+	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
+	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
+	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
+	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
+	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
+	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
+	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
+	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
+],
+"slots": [
+	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
+	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
+	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
+	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
+	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
+	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
+	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
+	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
+	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
+	{ "name": "torso", "bone": "torso", "attachment": "torso" },
+	{ "name": "neck", "bone": "neck", "attachment": "neck" },
+	{ "name": "head", "bone": "head", "attachment": "head" },
+	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
+	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
+	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
+],
+"skins": {
+	"default": {
+		"left shoulder": {
+			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
+		},
+		"left arm": {
+			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
+		},
+		"left hand": {
+			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
+		},
+		"left foot": {
+			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
+		},
+		"left lower leg": {
+			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
+		},
+		"left upper leg": {
+			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
+		},
+		"pelvis": {
+			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
+		},
+		"right foot": {
+			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
+		},
+		"right lower leg": {
+			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
+		},
+		"right upper leg": {
+			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
+		},
+		"torso": {
+			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
+		},
+		"neck": {
+			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
+		},
+		"head": {
+			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
+		},
+		"eyes": {
+			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
+			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
+		},
+		"right shoulder": {
+			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
+		},
+		"right arm": {
+			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
+		},
+		"right hand": {
+			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2666, "angle": 9.51 },
+					{ "time": 0.4, "angle": 30.74 },
+					{ "time": 0.5333, "angle": 25.33 },
+					{ "time": 0.6666, "angle": 26.11 },
+					{ "time": 0.8, "angle": -7.7 },
+					{ "time": 0.9333, "angle": -21.19 },
+					{ "time": 1.0666, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25 },
+					{ "time": 0.4, "x": -2.18, "y": -2.25 },
+					{ "time": 1.0666, "x": -3, "y": -2.25 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2666, "angle": 5.96 },
+					{ "time": 0.5333, "angle": -16.93 },
+					{ "time": 0.6666, "angle": 1.89 },
+					{
+						"time": 0.8,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.9333,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 8.11, "y": -2.36 },
+					{ "time": 0.1333, "x": 10.03, "y": -2.56 },
+					{ "time": 0.4, "x": 2.76, "y": -2.97 },
+					{ "time": 0.5333, "x": 2.76, "y": -2.81 },
+					{ "time": 0.9333, "x": 8.67, "y": -2.54 },
+					{ "time": 1.0666, "x": 8.11, "y": -2.36 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -10.21 },
+					{ "time": 0.1333, "angle": -55.64 },
+					{ "time": 0.2666, "angle": -68.12 },
+					{ "time": 0.5333, "angle": 5.11 },
+					{ "time": 0.6666, "angle": -28.29 },
+					{ "time": 0.8, "angle": 4.08 },
+					{ "time": 0.9333, "angle": 3.53 },
+					{ "time": 1.0666, "angle": -10.21 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2666, "angle": -17.14 },
+					{ "time": 0.4, "angle": -2.83 },
+					{ "time": 0.5333, "angle": -3.87 },
+					{ "time": 0.6666, "angle": 2.78 },
+					{ "time": 0.8, "angle": 1.68 },
+					{ "time": 0.9333, "angle": -8.54 },
+					{ "time": 1.0666, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 20.89,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 3.72,
+						"curve": [ 0.272, 0, 0.841, 1 ]
+					},
+					{ "time": 0.6666, "angle": -278.28 },
+					{ "time": 1.0666, "angle": 20.89 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19 },
+					{ "time": 0.1333, "x": -6.36, "y": 6.42 },
+					{ "time": 0.6666, "x": -11.07, "y": 5.25 },
+					{ "time": 1.0666, "x": -7.84, "y": 7.19 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -13.99,
+						"curve": [ 0.341, 0, 1, 1 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": 36.54,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1.0666, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92 },
+					{ "time": 0.4, "angle": -8.97 },
+					{ "time": 0.6666, "angle": 0.51 },
+					{ "time": 1.0666, "angle": 22.92 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{ "time": 0, "angle": -1.47 },
+					{ "time": 0.1333, "angle": 13.6 },
+					{ "time": 0.6666, "angle": 280.74 },
+					{ "time": 1.0666, "angle": -1.47 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56 },
+					{ "time": 0.6666, "x": -2.47, "y": 8.14 },
+					{ "time": 1.0666, "x": -1.76, "y": 0.56 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 11.58,
+						"curve": [ 0.169, 0.37, 0.632, 1.55 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 28.13,
+						"curve": [ 0.692, 0, 0.692, 0.99 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": -27.42,
+						"curve": [ 0.117, 0.41, 0.738, 1.76 ]
+					},
+					{ "time": 0.8, "angle": -36.32 },
+					{ "time": 1.0666, "angle": 11.58 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": -8.27 },
+					{ "time": 0.1333, "angle": 18.43 },
+					{ "time": 0.6666, "angle": 0.88 },
+					{ "time": 1.0666, "angle": -8.27 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 1, 1 ]
+					},
+					{
+						"time": 0.4,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 1, 1 ]
+					},
+					{ "time": 0.6666, "angle": -15.75 },
+					{ "time": 0.9333, "angle": -7.06 },
+					{ "time": 1.0666, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68 },
+					{ "time": 0.1333, "x": -3.67, "y": 0.68 },
+					{ "time": 0.4, "x": -3.67, "y": 1.97 },
+					{ "time": 0.6666, "x": -3.67, "y": -0.14 },
+					{ "time": 1.0666, "x": -3.67, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2666, "angle": -4.08 },
+					{ "time": 0.4, "angle": -6.45 },
+					{ "time": 0.5333, "angle": -5.39 },
+					{ "time": 0.8, "angle": -11.68 },
+					{ "time": 0.9333, "angle": 0.46 },
+					{ "time": 1.0666, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -3.39 },
+					{ "time": 0.1333, "angle": -45.53 },
+					{ "time": 0.2666, "angle": -2.59 },
+					{ "time": 0.5333, "angle": -19.53 },
+					{ "time": 0.6666, "angle": -64.8 },
+					{
+						"time": 0.8,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": -3.39 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1.0666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.61,
+						"curve": [ 0.272, 0.86, 1, 1 ]
+					},
+					{ "time": 0.4, "x": 0, "y": 8.7 },
+					{ "time": 0.5333, "x": 0, "y": -0.41 },
+					{
+						"time": 0.6666,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.235, 0.89, 1, 1 ]
+					},
+					{ "time": 0.8, "x": 0, "y": 2.92 },
+					{ "time": 0.9333, "x": 0, "y": 6.78 },
+					{ "time": 1.0666, "x": 0, "y": 0 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{ "time": 0.5333, "angle": 5.17 },
+					{ "time": 0.6666, "angle": 18.36 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.1666, "angle": -0.2 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{
+						"time": 0.5333,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.7, "angle": 1.1 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			}
+		}
+	},
+	"jump": {
+		"bones": {
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 0, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": -11.57, "y": -3 },
+					{ "time": 0.2333, "x": -16.2, "y": -19.43 },
+					{
+						"time": 0.3333,
+						"x": 7.66,
+						"y": -8.48,
+						"curve": [ 0.057, 0.06, 0.712, 1 ]
+					},
+					{ "time": 0.3666, "x": 15.38, "y": 5.01 },
+					{ "time": 0.4666, "x": -7.84, "y": 57.22 },
+					{
+						"time": 0.6,
+						"x": -10.81,
+						"y": 96.34,
+						"curve": [ 0.241, 0, 1, 1 ]
+					},
+					{ "time": 0.7333, "x": -7.01, "y": 54.7 },
+					{ "time": 0.8, "x": -10.58, "y": 32.2 },
+					{ "time": 0.9333, "x": -31.99, "y": 0.45 },
+					{ "time": 1.0666, "x": -12.48, "y": -29.47 },
+					{ "time": 1.3666, "x": -11.57, "y": -3 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 17.13 },
+					{ "time": 0.2333, "angle": 44.35 },
+					{ "time": 0.3333, "angle": 16.46 },
+					{ "time": 0.4, "angle": -9.88 },
+					{ "time": 0.4666, "angle": -11.42 },
+					{ "time": 0.5666, "angle": 23.46 },
+					{ "time": 0.7666, "angle": 71.82 },
+					{ "time": 0.9333, "angle": 65.53 },
+					{ "time": 1.0666, "angle": 51.01 },
+					{ "time": 1.3666, "angle": 17.13 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3, "y": -2.25 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -16.25 },
+					{ "time": 0.2333, "angle": -52.21 },
+					{ "time": 0.4, "angle": 15.04 },
+					{ "time": 0.4666, "angle": -8.95 },
+					{ "time": 0.5666, "angle": -39.53 },
+					{ "time": 0.7666, "angle": -27.27 },
+					{ "time": 0.9333, "angle": -3.52 },
+					{ "time": 1.0666, "angle": -61.92 },
+					{ "time": 1.3666, "angle": -16.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": 0.33 },
+					{ "time": 0.2333, "angle": 6.2 },
+					{ "time": 0.3333, "angle": 14.73 },
+					{ "time": 0.4, "angle": -15.54 },
+					{ "time": 0.4333, "angle": -21.2 },
+					{ "time": 0.5666, "angle": -7.55 },
+					{ "time": 0.7666, "angle": -0.67 },
+					{ "time": 0.9333, "angle": -0.58 },
+					{ "time": 1.0666, "angle": 14.64 },
+					{ "time": 1.3666, "angle": 0.33 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 25.97 },
+					{ "time": 0.2333, "angle": 46.43 },
+					{ "time": 0.3333, "angle": 22.61 },
+					{ "time": 0.4, "angle": 2.13 },
+					{
+						"time": 0.4666,
+						"angle": 0.04,
+						"curve": [ 0, 0, 0.637, 0.98 ]
+					},
+					{ "time": 0.6, "angle": 65.55 },
+					{ "time": 0.7666, "angle": 64.93 },
+					{ "time": 0.9333, "angle": 41.08 },
+					{ "time": 1.0666, "angle": 66.25 },
+					{ "time": 1.3666, "angle": 25.97 }
+				],
+				"translate": [
+					{ "time": 0, "x": 5.74, "y": 0.61 },
+					{ "time": 0.2333, "x": 4.79, "y": 1.79 },
+					{ "time": 0.3333, "x": 6.05, "y": -4.55 },
+					{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
+					{ "time": 1.0666, "x": 4.79, "y": 1.79 },
+					{ "time": 1.3666, "x": 5.74, "y": 0.61 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -27.46 },
+					{ "time": 0.2333, "angle": -64.03 },
+					{ "time": 0.4, "angle": -48.36 },
+					{ "time": 0.5666, "angle": -76.86 },
+					{ "time": 0.7666, "angle": -26.89 },
+					{ "time": 0.9, "angle": -18.97 },
+					{ "time": 0.9333, "angle": -14.18 },
+					{ "time": 1.0666, "angle": -80.45 },
+					{ "time": 1.3666, "angle": -27.46 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": 1.08 },
+					{ "time": 0.2333, "angle": 16.02 },
+					{ "time": 0.3, "angle": 12.94 },
+					{ "time": 0.3333, "angle": 15.16 },
+					{ "time": 0.4, "angle": -14.7 },
+					{ "time": 0.4333, "angle": -12.85 },
+					{ "time": 0.4666, "angle": -19.18 },
+					{ "time": 0.5666, "angle": -15.82 },
+					{ "time": 0.6, "angle": -3.59 },
+					{ "time": 0.7666, "angle": -3.56 },
+					{ "time": 0.9333, "angle": 1.86 },
+					{ "time": 1.0666, "angle": 16.02 },
+					{ "time": 1.3666, "angle": 1.08 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -13.35 },
+					{ "time": 0.2333, "angle": -48.95 },
+					{ "time": 0.4333, "angle": -35.77 },
+					{ "time": 0.6, "angle": -4.59 },
+					{ "time": 0.7666, "angle": 14.61 },
+					{ "time": 0.9333, "angle": 15.74 },
+					{ "time": 1.0666, "angle": -32.44 },
+					{ "time": 1.3666, "angle": -13.35 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3.67, "y": 1.68 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 12.78 },
+					{ "time": 0.2333, "angle": 16.46 },
+					{ "time": 0.4, "angle": 26.49 },
+					{ "time": 0.6, "angle": 15.51 },
+					{ "time": 0.7666, "angle": 1.34 },
+					{ "time": 0.9333, "angle": 2.35 },
+					{ "time": 1.0666, "angle": 6.08 },
+					{ "time": 1.3, "angle": 21.23 },
+					{ "time": 1.3666, "angle": 12.78 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{ "time": 0, "angle": 5.19 },
+					{ "time": 0.2333, "angle": 20.27 },
+					{ "time": 0.4, "angle": 15.27 },
+					{ "time": 0.6, "angle": -24.69 },
+					{ "time": 0.7666, "angle": -11.02 },
+					{ "time": 0.9333, "angle": -24.38 },
+					{ "time": 1.0666, "angle": 11.99 },
+					{ "time": 1.3, "angle": 4.86 },
+					{ "time": 1.3666, "angle": 5.19 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 0.05,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": 279.66,
+						"curve": [ 0.218, 0.67, 0.66, 0.99 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 62.27,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": 28.91 },
+					{ "time": 1.0666, "angle": -8.62 },
+					{ "time": 1.1666, "angle": -18.43 },
+					{ "time": 1.3666, "angle": 0.05 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 1.3666, "x": -1.76, "y": 0.56 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{ "time": 0, "angle": 11.58, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 11.58 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": 0.51 },
+					{ "time": 0.4333, "angle": 12.82 },
+					{ "time": 0.6, "angle": 47.55 },
+					{ "time": 0.9333, "angle": 12.82 },
+					{ "time": 1.1666, "angle": -6.5 },
+					{ "time": 1.3666, "angle": 0.51 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 43.82,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": -8.74,
+						"curve": [ 0.304, 0.58, 0.709, 0.97 ]
+					},
+					{
+						"time": 0.5333,
+						"angle": -208.02,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": -246.72 },
+					{ "time": 1.0666, "angle": -307.13 },
+					{ "time": 1.1666, "angle": 37.15 },
+					{ "time": 1.3666, "angle": 43.82 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 1.3666, "x": -7.84, "y": 7.19 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{ "time": 0, "angle": -4.02 },
+					{ "time": 0.6, "angle": 17.5 },
+					{ "time": 0.9333, "angle": -4.02 },
+					{ "time": 1.1666, "angle": -16.72 },
+					{ "time": 1.3666, "angle": -4.02 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 22.92 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"root": {
+				"rotate": [
+					{ "time": 0, "angle": 0 },
+					{ "time": 0.4333, "angle": -14.52 },
+					{ "time": 0.8, "angle": 9.86 },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			}
+		}
+	}
+}
+}

+ 0 - 4
spine-cocos2d-iphone/example/ExampleLayer.h

@@ -3,10 +3,6 @@
 #import <spine/spine-cocos2d-iphone.h>
 #import <spine/spine-cocos2d-iphone.h>
 
 
 @interface ExampleLayer : CCLayer {
 @interface ExampleLayer : CCLayer {
-	Atlas *atlas;
-	SkeletonData *skeletonData;
-	Animation *walkAnimation;
-	Animation *jumpAnimation;
 	CCSkeleton* skeletonNode;
 	CCSkeleton* skeletonNode;
 }
 }
 
 

+ 11 - 33
spine-cocos2d-iphone/example/ExampleLayer.m

@@ -13,26 +13,13 @@
 	self = [super init];
 	self = [super init];
 	if (!self) return nil;
 	if (!self) return nil;
 
 
-	// Load atlas, skeleton, and animations.
-	atlas = Atlas_readAtlasFile("spineboy.atlas");
-	SkeletonJson* json = SkeletonJson_create(atlas);
-	json->scale = 0.75;
-	skeletonData = SkeletonJson_readSkeletonDataFile(json, "spineboy-skeleton.json");
-	walkAnimation = SkeletonJson_readAnimationFile(json, "spineboy-walk.json", skeletonData);
-	jumpAnimation = SkeletonJson_readAnimationFile(json, "spineboy-jump.json", skeletonData);
-	SkeletonJson_dispose(json);
-	
-	// Configure mixing.
-	AnimationStateData* stateData = AnimationStateData_create();
-	AnimationStateData_setMix(stateData, walkAnimation, jumpAnimation, 0.4f);
-	AnimationStateData_setMix(stateData, jumpAnimation, walkAnimation, 0.4f);
-
-	skeletonNode = [CCSkeleton create:skeletonData stateData:stateData];
-	Skeleton_setToBindPose(skeletonNode->skeleton);
-	AnimationState_setAnimation(skeletonNode->state, walkAnimation, true);
-	skeletonNode->timeScale = 0.15f;
+	skeletonNode = [CCSkeleton create:"spineboy.json" atlasFile:"spineboy.atlas"];
+	[skeletonNode setMix:"walk" to:"jump" duration:0.4f];
+	[skeletonNode setMix:"jump" to:"walk" duration:0.4f];
+	[skeletonNode setAnimation:"walk" loop:true];
+	skeletonNode->timeScale = 0.3f;
 	skeletonNode->debugBones = true;
 	skeletonNode->debugBones = true;
-	
+
 	CGSize windowSize = [[CCDirector sharedDirector] winSize];
 	CGSize windowSize = [[CCDirector sharedDirector] winSize];
 	[skeletonNode setPosition:ccp(windowSize.width / 2, 20)];
 	[skeletonNode setPosition:ccp(windowSize.width / 2, 20)];
 	[self addChild:skeletonNode];
 	[self addChild:skeletonNode];
@@ -43,20 +30,11 @@
 }
 }
 
 
 - (void) update:(ccTime)delta {
 - (void) update:(ccTime)delta {
-	if (skeletonNode->state->animation == walkAnimation) {
-		if (skeletonNode->state->time > 2) AnimationState_setAnimation(skeletonNode->state, jumpAnimation, false);
-	} else {
-		if (skeletonNode->state->time > 1) AnimationState_setAnimation(skeletonNode->state, walkAnimation, true);
-	}
-}
-
-- (void) dealloc {
-	Animation_dispose(walkAnimation);
-	Animation_dispose(jumpAnimation);
-	SkeletonData_dispose(skeletonData);
-	Atlas_dispose(atlas);
-
-	[super dealloc];
+    if (strcmp(skeletonNode->state->animation->name, "walk") == 0) {
+        if (skeletonNode->state->time > 2) [skeletonNode setAnimation:"jump" loop:false];
+    } else {
+        if (skeletonNode->state->time > 1) [skeletonNode setAnimation:"walk" loop:true];
+    }
 }
 }
 
 
 @end
 @end

+ 24 - 20
spine-cocos2d-iphone/spine-cocos2d-iphone-mac.xcodeproj/project.pbxproj

@@ -127,10 +127,6 @@
 		4319B84416FF9D3A00C1D7A9 /* LICENSE_cocos2d.txt in Resources */ = {isa = PBXBuildFile; fileRef = 4319B7C816FF9D3900C1D7A9 /* LICENSE_cocos2d.txt */; };
 		4319B84416FF9D3A00C1D7A9 /* LICENSE_cocos2d.txt in Resources */ = {isa = PBXBuildFile; fileRef = 4319B7C816FF9D3900C1D7A9 /* LICENSE_cocos2d.txt */; };
 		4319B84516FF9D3A00C1D7A9 /* LICENSE_CocosDenshion.txt in Resources */ = {isa = PBXBuildFile; fileRef = 4319B7C916FF9D3900C1D7A9 /* LICENSE_CocosDenshion.txt */; };
 		4319B84516FF9D3A00C1D7A9 /* LICENSE_CocosDenshion.txt in Resources */ = {isa = PBXBuildFile; fileRef = 4319B7C916FF9D3900C1D7A9 /* LICENSE_CocosDenshion.txt */; };
 		4319B84616FF9D3A00C1D7A9 /* LICENSE_Kazmath.txt in Resources */ = {isa = PBXBuildFile; fileRef = 4319B7CA16FF9D3900C1D7A9 /* LICENSE_Kazmath.txt */; };
 		4319B84616FF9D3A00C1D7A9 /* LICENSE_Kazmath.txt in Resources */ = {isa = PBXBuildFile; fileRef = 4319B7CA16FF9D3900C1D7A9 /* LICENSE_Kazmath.txt */; };
-		4319B84B16FF9D3A00C1D7A9 /* spineboy-skeleton.json in Resources */ = {isa = PBXBuildFile; fileRef = 4319B7D216FF9D3900C1D7A9 /* spineboy-skeleton.json */; };
-		4319B84C16FF9D3A00C1D7A9 /* spineboy-walk.json in Resources */ = {isa = PBXBuildFile; fileRef = 4319B7D316FF9D3900C1D7A9 /* spineboy-walk.json */; };
-		4319B84D16FF9D3A00C1D7A9 /* spineboy.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 4319B7D416FF9D3900C1D7A9 /* spineboy.atlas */; };
-		4319B84E16FF9D3A00C1D7A9 /* spineboy.png in Resources */ = {isa = PBXBuildFile; fileRef = 4319B7D516FF9D3900C1D7A9 /* spineboy.png */; };
 		43BFBE0F170A778A00ECBACB /* spine-cocos2d-iphone.m in Sources */ = {isa = PBXBuildFile; fileRef = 43BFBE0D170A778A00ECBACB /* spine-cocos2d-iphone.m */; };
 		43BFBE0F170A778A00ECBACB /* spine-cocos2d-iphone.m in Sources */ = {isa = PBXBuildFile; fileRef = 43BFBE0D170A778A00ECBACB /* spine-cocos2d-iphone.m */; };
 		43BFBE10170A804700ECBACB /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 43BFBDB3170A705100ECBACB /* Animation.c */; };
 		43BFBE10170A804700ECBACB /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 43BFBDB3170A705100ECBACB /* Animation.c */; };
 		43BFBE11170A804700ECBACB /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 43BFBDB4170A705100ECBACB /* AnimationState.c */; };
 		43BFBE11170A804700ECBACB /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 43BFBDB4170A705100ECBACB /* AnimationState.c */; };
@@ -155,7 +151,12 @@
 		43C32A1D170B1295004A9460 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A15170B1295004A9460 /* MainMenu.xib */; };
 		43C32A1D170B1295004A9460 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A15170B1295004A9460 /* MainMenu.xib */; };
 		43C32A1E170B1295004A9460 /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A17170B1295004A9460 /* icon.icns */; };
 		43C32A1E170B1295004A9460 /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A17170B1295004A9460 /* icon.icns */; };
 		43C32A20170B1295004A9460 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C32A19170B1295004A9460 /* main.m */; };
 		43C32A20170B1295004A9460 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C32A19170B1295004A9460 /* main.m */; };
-		43C32A26170B3442004A9460 /* spineboy-jump.json in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A25170B3442004A9460 /* spineboy-jump.json */; };
+		43C32A33170D0A4D004A9460 /* goblins.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A2D170D0A4D004A9460 /* goblins.atlas */; };
+		43C32A34170D0A4D004A9460 /* goblins.json in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A2E170D0A4D004A9460 /* goblins.json */; };
+		43C32A35170D0A4D004A9460 /* goblins.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A2F170D0A4D004A9460 /* goblins.png */; };
+		43C32A36170D0A4D004A9460 /* spineboy.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A30170D0A4D004A9460 /* spineboy.atlas */; };
+		43C32A37170D0A4D004A9460 /* spineboy.json in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A31170D0A4D004A9460 /* spineboy.json */; };
+		43C32A38170D0A4D004A9460 /* spineboy.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A32170D0A4D004A9460 /* spineboy.png */; };
 /* End PBXBuildFile section */
 /* End PBXBuildFile section */
 
 
 /* Begin PBXFileReference section */
 /* Begin PBXFileReference section */
@@ -416,10 +417,6 @@
 		4319B7C816FF9D3900C1D7A9 /* LICENSE_cocos2d.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE_cocos2d.txt; sourceTree = "<group>"; };
 		4319B7C816FF9D3900C1D7A9 /* LICENSE_cocos2d.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE_cocos2d.txt; sourceTree = "<group>"; };
 		4319B7C916FF9D3900C1D7A9 /* LICENSE_CocosDenshion.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE_CocosDenshion.txt; sourceTree = "<group>"; };
 		4319B7C916FF9D3900C1D7A9 /* LICENSE_CocosDenshion.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE_CocosDenshion.txt; sourceTree = "<group>"; };
 		4319B7CA16FF9D3900C1D7A9 /* LICENSE_Kazmath.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE_Kazmath.txt; sourceTree = "<group>"; };
 		4319B7CA16FF9D3900C1D7A9 /* LICENSE_Kazmath.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE_Kazmath.txt; sourceTree = "<group>"; };
-		4319B7D216FF9D3900C1D7A9 /* spineboy-skeleton.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "spineboy-skeleton.json"; sourceTree = "<group>"; };
-		4319B7D316FF9D3900C1D7A9 /* spineboy-walk.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "spineboy-walk.json"; sourceTree = "<group>"; };
-		4319B7D416FF9D3900C1D7A9 /* spineboy.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = spineboy.atlas; sourceTree = "<group>"; };
-		4319B7D516FF9D3900C1D7A9 /* spineboy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = spineboy.png; sourceTree = "<group>"; };
 		43BFBDA1170A703E00ECBACB /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animation.h; path = "../spine-c/include/spine/Animation.h"; sourceTree = "<group>"; };
 		43BFBDA1170A703E00ECBACB /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animation.h; path = "../spine-c/include/spine/Animation.h"; sourceTree = "<group>"; };
 		43BFBDA2170A703E00ECBACB /* AnimationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationState.h; path = "../spine-c/include/spine/AnimationState.h"; sourceTree = "<group>"; };
 		43BFBDA2170A703E00ECBACB /* AnimationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationState.h; path = "../spine-c/include/spine/AnimationState.h"; sourceTree = "<group>"; };
 		43BFBDA3170A703E00ECBACB /* AnimationStateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationStateData.h; path = "../spine-c/include/spine/AnimationStateData.h"; sourceTree = "<group>"; };
 		43BFBDA3170A703E00ECBACB /* AnimationStateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationStateData.h; path = "../spine-c/include/spine/AnimationStateData.h"; sourceTree = "<group>"; };
@@ -467,7 +464,12 @@
 		43C32A18170B1295004A9460 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Resources-mac/Info.plist"; sourceTree = "<group>"; };
 		43C32A18170B1295004A9460 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Resources-mac/Info.plist"; sourceTree = "<group>"; };
 		43C32A19170B1295004A9460 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "../Resources-mac/main.m"; sourceTree = "<group>"; };
 		43C32A19170B1295004A9460 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "../Resources-mac/main.m"; sourceTree = "<group>"; };
 		43C32A1A170B1295004A9460 /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Prefix.pch; path = "../Resources-mac/Prefix.pch"; sourceTree = "<group>"; };
 		43C32A1A170B1295004A9460 /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Prefix.pch; path = "../Resources-mac/Prefix.pch"; sourceTree = "<group>"; };
-		43C32A25170B3442004A9460 /* spineboy-jump.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "spineboy-jump.json"; sourceTree = "<group>"; };
+		43C32A2D170D0A4D004A9460 /* goblins.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = goblins.atlas; sourceTree = "<group>"; };
+		43C32A2E170D0A4D004A9460 /* goblins.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = goblins.json; sourceTree = "<group>"; };
+		43C32A2F170D0A4D004A9460 /* goblins.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = goblins.png; sourceTree = "<group>"; };
+		43C32A30170D0A4D004A9460 /* spineboy.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = spineboy.atlas; sourceTree = "<group>"; };
+		43C32A31170D0A4D004A9460 /* spineboy.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = spineboy.json; sourceTree = "<group>"; };
+		43C32A32170D0A4D004A9460 /* spineboy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = spineboy.png; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 /* End PBXFileReference section */
 
 
 /* Begin PBXFrameworksBuildPhase section */
 /* Begin PBXFrameworksBuildPhase section */
@@ -890,11 +892,12 @@
 		4319B7CB16FF9D3900C1D7A9 /* Resources */ = {
 		4319B7CB16FF9D3900C1D7A9 /* Resources */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
-				4319B7D216FF9D3900C1D7A9 /* spineboy-skeleton.json */,
-				4319B7D316FF9D3900C1D7A9 /* spineboy-walk.json */,
-				43C32A25170B3442004A9460 /* spineboy-jump.json */,
-				4319B7D416FF9D3900C1D7A9 /* spineboy.atlas */,
-				4319B7D516FF9D3900C1D7A9 /* spineboy.png */,
+				43C32A2D170D0A4D004A9460 /* goblins.atlas */,
+				43C32A2E170D0A4D004A9460 /* goblins.json */,
+				43C32A2F170D0A4D004A9460 /* goblins.png */,
+				43C32A30170D0A4D004A9460 /* spineboy.atlas */,
+				43C32A31170D0A4D004A9460 /* spineboy.json */,
+				43C32A32170D0A4D004A9460 /* spineboy.png */,
 			);
 			);
 			path = Resources;
 			path = Resources;
 			sourceTree = SOURCE_ROOT;
 			sourceTree = SOURCE_ROOT;
@@ -1032,14 +1035,15 @@
 				4319B84416FF9D3A00C1D7A9 /* LICENSE_cocos2d.txt in Resources */,
 				4319B84416FF9D3A00C1D7A9 /* LICENSE_cocos2d.txt in Resources */,
 				4319B84516FF9D3A00C1D7A9 /* LICENSE_CocosDenshion.txt in Resources */,
 				4319B84516FF9D3A00C1D7A9 /* LICENSE_CocosDenshion.txt in Resources */,
 				4319B84616FF9D3A00C1D7A9 /* LICENSE_Kazmath.txt in Resources */,
 				4319B84616FF9D3A00C1D7A9 /* LICENSE_Kazmath.txt in Resources */,
-				4319B84B16FF9D3A00C1D7A9 /* spineboy-skeleton.json in Resources */,
-				4319B84C16FF9D3A00C1D7A9 /* spineboy-walk.json in Resources */,
-				4319B84D16FF9D3A00C1D7A9 /* spineboy.atlas in Resources */,
-				4319B84E16FF9D3A00C1D7A9 /* spineboy.png in Resources */,
 				43C32A1C170B1295004A9460 /* InfoPlist.strings in Resources */,
 				43C32A1C170B1295004A9460 /* InfoPlist.strings in Resources */,
 				43C32A1D170B1295004A9460 /* MainMenu.xib in Resources */,
 				43C32A1D170B1295004A9460 /* MainMenu.xib in Resources */,
 				43C32A1E170B1295004A9460 /* icon.icns in Resources */,
 				43C32A1E170B1295004A9460 /* icon.icns in Resources */,
-				43C32A26170B3442004A9460 /* spineboy-jump.json in Resources */,
+				43C32A33170D0A4D004A9460 /* goblins.atlas in Resources */,
+				43C32A34170D0A4D004A9460 /* goblins.json in Resources */,
+				43C32A35170D0A4D004A9460 /* goblins.png in Resources */,
+				43C32A36170D0A4D004A9460 /* spineboy.atlas in Resources */,
+				43C32A37170D0A4D004A9460 /* spineboy.json in Resources */,
+				43C32A38170D0A4D004A9460 /* spineboy.png in Resources */,
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};

+ 14 - 0
spine-cocos2d-iphone/src/spine/spine-cocos2d-iphone.h

@@ -45,6 +45,11 @@ typedef struct {
 } Cocos2dSkeleton;
 } Cocos2dSkeleton;
 
 
 @interface CCSkeleton : CCNodeRGBA<CCBlendProtocol> {
 @interface CCSkeleton : CCNodeRGBA<CCBlendProtocol> {
+@private
+	bool ownsAtlas;
+	bool ownsSkeleton;
+	bool ownsStateData;
+
 @public
 @public
 	Skeleton* skeleton;
 	Skeleton* skeleton;
 	AnimationState* state;
 	AnimationState* state;
@@ -57,12 +62,21 @@ typedef struct {
     ccBlendFunc blendFunc;
     ccBlendFunc blendFunc;
 }
 }
 
 
++ (CCSkeleton*) create:(const char*)skeletonDataFile atlas:(Atlas*)atlas;
++ (CCSkeleton*) create:(const char*)skeletonDataFile atlas:(Atlas*)atlas scale:(float)scale;
+
++ (CCSkeleton*) create:(const char*)skeletonDataFile atlasFile:(const char*)atlasFile;
++ (CCSkeleton*) create:(const char*)skeletonDataFile atlasFile:(const char*)atlasFile scale:(float)scale;
+
 + (CCSkeleton*) create:(SkeletonData*)skeletonData;
 + (CCSkeleton*) create:(SkeletonData*)skeletonData;
 + (CCSkeleton*) create:(SkeletonData*)skeletonData stateData:(AnimationStateData*)stateData;
 + (CCSkeleton*) create:(SkeletonData*)skeletonData stateData:(AnimationStateData*)stateData;
 
 
 - init:(SkeletonData*)skeletonData;
 - init:(SkeletonData*)skeletonData;
 - init:(SkeletonData*)skeletonData stateData:(AnimationStateData*)stateData;
 - init:(SkeletonData*)skeletonData stateData:(AnimationStateData*)stateData;
 
 
+- (void) setMix:(const char*)fromName to:(const char*)toName duration:(float)duration;
+- (void) setAnimation:(const char*)animationName loop:(bool)loop;
+
 @end
 @end
 
 
 /**/
 /**/

+ 49 - 0
spine-cocos2d-iphone/src/spine/spine-cocos2d-iphone.m

@@ -68,6 +68,41 @@ Skeleton* _Cocos2dSkeleton_create (SkeletonData* data, CCSkeleton* node) {
 
 
 @implementation CCSkeleton
 @implementation CCSkeleton
 
 
++ (CCSkeleton*) create:(const char*)skeletonDataFile atlas:(Atlas*)atlas {
+	return [CCSkeleton create:skeletonDataFile atlas:atlas scale:1];
+}
+
++ (CCSkeleton*) create:(const char*)skeletonDataFile atlas:(Atlas*)atlas scale:(float)scale {
+	SkeletonJson* json = SkeletonJson_create(atlas);
+	json->scale = scale;
+	SkeletonData* skeletonData = SkeletonJson_readSkeletonDataFile(json, skeletonDataFile);
+	SkeletonJson_dispose(json);
+	CCSkeleton* node = skeletonData ? [CCSkeleton create:skeletonData] : 0;
+	node->ownsSkeleton = true;
+	return node;
+}
+
++ (CCSkeleton*) create:(const char*)skeletonDataFile atlasFile:(const char*)atlasFile {
+	return [CCSkeleton create:skeletonDataFile atlasFile:atlasFile scale:1];
+}
+
++ (CCSkeleton*) create:(const char*)skeletonDataFile atlasFile:(const char*)atlasFile scale:(float)scale {
+	Atlas* atlas = Atlas_readAtlasFile(atlasFile);
+	if (!atlas) return 0;
+	SkeletonJson* json = SkeletonJson_create(atlas);
+	json->scale = scale;
+	SkeletonData* skeletonData = SkeletonJson_readSkeletonDataFile(json, skeletonDataFile);
+	SkeletonJson_dispose(json);
+	if (!skeletonData) {
+		Atlas_dispose(atlas);
+		return 0;
+	}
+	CCSkeleton* node = [CCSkeleton create:skeletonData];
+	node->ownsSkeleton = true;
+	node->ownsAtlas = true;
+	return node;
+}
+
 + (CCSkeleton*) create:(SkeletonData*)skeletonData {
 + (CCSkeleton*) create:(SkeletonData*)skeletonData {
 	return [CCSkeleton create:skeletonData stateData:0];
 	return [CCSkeleton create:skeletonData stateData:0];
 }
 }
@@ -85,6 +120,11 @@ Skeleton* _Cocos2dSkeleton_create (SkeletonData* data, CCSkeleton* node) {
 	if (!self) return nil;
 	if (!self) return nil;
 
 
 	skeleton = _Cocos2dSkeleton_create(skeletonData, self);
 	skeleton = _Cocos2dSkeleton_create(skeletonData, self);
+
+	if (!stateData) {
+		stateData = AnimationStateData_create(skeletonData);
+		ownsStateData = true;
+	}
 	state = AnimationState_create(stateData);
 	state = AnimationState_create(stateData);
 
 
 	blendFunc.src = GL_ONE;
 	blendFunc.src = GL_ONE;
@@ -100,10 +140,19 @@ Skeleton* _Cocos2dSkeleton_create (SkeletonData* data, CCSkeleton* node) {
 
 
 - (void) dealloc {
 - (void) dealloc {
 	Skeleton_dispose(skeleton);
 	Skeleton_dispose(skeleton);
+	if (ownsStateData) AnimationStateData_dispose(state->data);
 	AnimationState_dispose(state);
 	AnimationState_dispose(state);
     [super dealloc];
     [super dealloc];
 }
 }
 
 
+- (void) setMix:(const char*)fromName to:(const char*)toName duration:(float)duration {
+	AnimationStateData_setMixByName(state->data, fromName, toName, duration);
+}
+
+- (void) setAnimation:(const char*)animationName loop:(bool)loop {
+	AnimationState_setAnimationByName(state, animationName, loop);
+}
+
 - (void) update:(ccTime)deltaTime {
 - (void) update:(ccTime)deltaTime {
 	Skeleton_update(skeleton, deltaTime);
 	Skeleton_update(skeleton, deltaTime);
 	AnimationState_update(state, deltaTime * timeScale);
 	AnimationState_update(state, deltaTime * timeScale);

+ 1 - 1
spine-cocos2dx/example/Classes/AppMacros.h

@@ -29,7 +29,7 @@
 #define DESIGN_RESOLUTION_2048X1536  3
 #define DESIGN_RESOLUTION_2048X1536  3
 
 
 /* If you want to switch design resolution, change next line */
 /* If you want to switch design resolution, change next line */
-#define TARGET_DESIGN_RESOLUTION_SIZE  DESIGN_RESOLUTION_480X320
+#define TARGET_DESIGN_RESOLUTION_SIZE  DESIGN_RESOLUTION_960x640
 
 
 typedef struct tagResource {
 typedef struct tagResource {
 	cocos2d::CCSize size;
 	cocos2d::CCSize size;

+ 8 - 28
spine-cocos2dx/example/Classes/ExampleLayer.cpp

@@ -1,6 +1,7 @@
 #include "ExampleLayer.h"
 #include "ExampleLayer.h"
 #include <iostream>
 #include <iostream>
 #include <fstream>
 #include <fstream>
+#include <string.h>
 
 
 using namespace cocos2d;
 using namespace cocos2d;
 using namespace spine;
 using namespace spine;
@@ -15,23 +16,10 @@ CCScene* ExampleLayer::scene () {
 bool ExampleLayer::init () {
 bool ExampleLayer::init () {
 	if (!CCLayer::init()) return false;
 	if (!CCLayer::init()) return false;
 
 
-    // Load atlas, skeleton, and animations.
-	atlas = Atlas_readAtlasFile("spineboy.atlas");
-	SkeletonJson* json = SkeletonJson_create(atlas);
-	json->scale = 0.75;
-	skeletonData = SkeletonJson_readSkeletonDataFile(json, "spineboy-skeleton.json");
-	walkAnimation = SkeletonJson_readAnimationFile(json, "spineboy-walk.json", skeletonData);
-	jumpAnimation = SkeletonJson_readAnimationFile(json, "spineboy-jump.json", skeletonData);
-	SkeletonJson_dispose(json);
-
-	// Configure mixing.
-	AnimationStateData* stateData = AnimationStateData_create();
-	AnimationStateData_setMix(stateData, walkAnimation, jumpAnimation, 0.4f);
-	AnimationStateData_setMix(stateData, jumpAnimation, walkAnimation, 0.4f);
-
-	skeletonNode = CCSkeleton::create(skeletonData, stateData);
-	Skeleton_setToBindPose(skeletonNode->skeleton);
-	AnimationState_setAnimation(skeletonNode->state, walkAnimation, true);
+	skeletonNode = CCSkeleton::create("spineboy.json", "spineboy.atlas");
+	skeletonNode->setMix("walk", "jump", 0.4f);
+	skeletonNode->setMix("jump", "walk", 0.4f);
+	skeletonNode->setAnimation("walk", true);
 	skeletonNode->timeScale = 0.3f;
 	skeletonNode->timeScale = 0.3f;
 	skeletonNode->debugBones = true;
 	skeletonNode->debugBones = true;
 
 
@@ -50,17 +38,9 @@ bool ExampleLayer::init () {
 }
 }
 
 
 void ExampleLayer::update (float deltaTime) {
 void ExampleLayer::update (float deltaTime) {
-    if (skeletonNode->state->animation == walkAnimation) {
-        if (skeletonNode->state->time > 2) AnimationState_setAnimation(skeletonNode->state, jumpAnimation, false);
+    if (strcmp(skeletonNode->state->animation->name, "walk") == 0) {
+        if (skeletonNode->state->time > 2) skeletonNode->setAnimation("jump", false);
     } else {
     } else {
-        if (skeletonNode->state->time > 1) AnimationState_setAnimation(skeletonNode->state, walkAnimation, true);
+        if (skeletonNode->state->time > 1) skeletonNode->setAnimation("walk", true);
     }
     }
 }
 }
-
-ExampleLayer::~ExampleLayer () {
-	SkeletonData_dispose(skeletonData);
-	Animation_dispose(walkAnimation);
-	Animation_dispose(jumpAnimation);
-	Atlas_dispose(atlas);
-}
-

+ 0 - 5
spine-cocos2dx/example/Classes/ExampleLayer.h

@@ -6,15 +6,10 @@
 
 
 class ExampleLayer: public cocos2d::CCLayer {
 class ExampleLayer: public cocos2d::CCLayer {
 private:
 private:
-	spine::Atlas *atlas;
-	spine::SkeletonData *skeletonData;
-	spine::Animation *walkAnimation;
-	spine::Animation *jumpAnimation;
 	spine::CCSkeleton* skeletonNode;
 	spine::CCSkeleton* skeletonNode;
 
 
 public:
 public:
 	static cocos2d::CCScene* scene ();
 	static cocos2d::CCScene* scene ();
-	~ExampleLayer ();
 
 
 	virtual bool init ();
 	virtual bool init ();
 	virtual void update (float deltaTime);
 	virtual void update (float deltaTime);

+ 499 - 0
spine-cocos2dx/example/Resources/common/goblins.json

@@ -0,0 +1,499 @@
+{
+"bones": [
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
+	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
+	{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
+	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
+	{ "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 },
+	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 },
+	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
+	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 },
+	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 },
+	{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 },
+	{ "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 },
+	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 },
+	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
+	{ "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 },
+	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
+],
+"slots": [
+	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
+	{ "name": "left arm", "bone": "left arm", "attachment": "left arm" },
+	{ "name": "left hand item", "bone": "left hand", "attachment": "spear" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
+	{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
+	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
+	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" },
+	{ "name": "neck", "bone": "neck", "attachment": "neck" },
+	{ "name": "torso", "bone": "torso", "attachment": "torso" },
+	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
+	{ "name": "right foot", "bone": "right foot", "attachment": "right foot" },
+	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" },
+	{ "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" },
+	{ "name": "undies", "bone": "pelvis", "attachment": "undies" },
+	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" },
+	{ "name": "head", "bone": "head", "attachment": "head" },
+	{ "name": "eyes", "bone": "head" },
+	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" },
+	{ "name": "right arm", "bone": "right arm", "attachment": "right arm" },
+	{ "name": "right hand item", "bone": "right hand", "attachment": "dagger" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right hand" }
+],
+"skins": {
+	"default": {
+		"left hand item": {
+			"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
+			"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
+		},
+		"right hand item": {
+			"dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 }
+		}
+	},
+	"goblin": {
+		"neck": {
+			"neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.69, "width": 36, "height": 41 }
+		},
+		"undies": {
+			"undies": { "name": "goblin/undies", "x": 6.3, "y": 0.12, "rotation": 0.91, "width": 36, "height": 29 }
+		},
+		"right hand": {
+			"right hand": { "name": "goblin/right-hand", "x": 7.88, "y": 2.78, "rotation": 91.96, "width": 36, "height": 37 }
+		},
+		"right arm": {
+			"right arm": { "name": "goblin/right-arm", "x": 16.44, "y": -1.04, "rotation": 94.32, "width": 23, "height": 50 }
+		},
+		"head": {
+			"head": { "name": "goblin/head", "x": 25.73, "y": 2.33, "rotation": -92.29, "width": 103, "height": 66 }
+		},
+		"left shoulder": {
+			"left shoulder": { "name": "goblin/left-shoulder", "x": 15.56, "y": -2.26, "rotation": 62.01, "width": 29, "height": 44 }
+		},
+		"left arm": {
+			"left arm": {
+				"name": "goblin/left-arm",
+				"x": 16.7,
+				"y": -1.69,
+				"scaleX": 1.057,
+				"scaleY": 1.057,
+				"rotation": 33.84,
+				"width": 37,
+				"height": 35
+			}
+		},
+		"left hand": {
+			"left hand": {
+				"name": "goblin/left-hand",
+				"x": 3.47,
+				"y": 3.41,
+				"scaleX": 0.892,
+				"scaleY": 0.892,
+				"rotation": 31.14,
+				"width": 36,
+				"height": 41
+			}
+		},
+		"right lower leg": {
+			"right lower leg": { "name": "goblin/right-lower-leg", "x": 25.68, "y": -3.15, "rotation": 111.83, "width": 36, "height": 76 }
+		},
+		"right upper leg": {
+			"right upper leg": { "name": "goblin/right-upper-leg", "x": 20.35, "y": 1.47, "rotation": 97.49, "width": 34, "height": 63 }
+		},
+		"pelvis": {
+			"pelvis": { "name": "goblin/pelvis", "x": -5.61, "y": 0.76, "width": 62, "height": 43 }
+		},
+		"left lower leg": {
+			"left lower leg": { "name": "goblin/left-lower-leg", "x": 23.58, "y": -2.06, "rotation": 105.75, "width": 33, "height": 70 }
+		},
+		"left upper leg": {
+			"left upper leg": { "name": "goblin/left-upper-leg", "x": 29.68, "y": -3.87, "rotation": 89.09, "width": 33, "height": 73 }
+		},
+		"torso": {
+			"torso": { "name": "goblin/torso", "x": 38.09, "y": -3.87, "rotation": -94.95, "width": 68, "height": 96 }
+		},
+		"right shoulder": {
+			"right shoulder": { "name": "goblin/right-shoulder", "x": 15.68, "y": -1.03, "rotation": 130.65, "width": 39, "height": 45 }
+		},
+		"right foot": {
+			"right foot": { "name": "goblin/right-foot", "x": 23.56, "y": 9.8, "rotation": 1.52, "width": 63, "height": 33 }
+		},
+		"left foot": {
+			"left foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.74, "rotation": 3.32, "width": 65, "height": 31 }
+		},
+		"undie straps": {
+			"undie straps": { "name": "goblin/undie-straps", "x": -3.87, "y": 13.1, "scaleX": 1.089, "width": 55, "height": 19 }
+		},
+		"eyes": {
+			"eyes closed": { "name": "goblin/eyes-closed", "x": 32.21, "y": -21.27, "rotation": -88.92, "width": 34, "height": 12 }
+		}
+	},
+	"goblingirl": {
+		"left upper leg": {
+			"left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 }
+		},
+		"left lower leg": {
+			"left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 }
+		},
+		"left foot": {
+			"left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 }
+		},
+		"right upper leg": {
+			"right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 }
+		},
+		"right lower leg": {
+			"right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 }
+		},
+		"right foot": {
+			"right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 }
+		},
+		"torso": {
+			"torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 }
+		},
+		"left shoulder": {
+			"left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 }
+		},
+		"left arm": {
+			"left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 }
+		},
+		"left hand": {
+			"left hand": {
+				"name": "goblingirl/left-hand",
+				"x": 4.34,
+				"y": 2.39,
+				"scaleX": 0.896,
+				"scaleY": 0.896,
+				"rotation": 30.34,
+				"width": 35,
+				"height": 40
+			}
+		},
+		"neck": {
+			"neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 }
+		},
+		"head": {
+			"head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 }
+		},
+		"right shoulder": {
+			"right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 }
+		},
+		"right arm": {
+			"right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 }
+		},
+		"right hand": {
+			"right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 }
+		},
+		"pelvis": {
+			"pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 }
+		},
+		"undie straps": {
+			"undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 }
+		},
+		"undies": {
+			"undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 }
+		},
+		"eyes": {
+			"eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2333, "angle": 9.51 },
+					{ "time": 0.3666, "angle": 30.74 },
+					{ "time": 0.5, "angle": 25.33 },
+					{ "time": 0.6333, "angle": 26.11 },
+					{ "time": 0.7333, "angle": -7.7 },
+					{ "time": 0.8666, "angle": -21.19 },
+					{ "time": 1, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.32, "y": 1.7 },
+					{ "time": 0.3666, "x": -0.06, "y": 2.42 },
+					{ "time": 1, "x": -1.32, "y": 1.7 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2333, "angle": 8.53 },
+					{ "time": 0.5, "angle": -16.93 },
+					{ "time": 0.6333, "angle": 1.89 },
+					{
+						"time": 0.7333,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 6.23, "y": 0 },
+					{ "time": 0.2333, "x": 2.14, "y": 2.4 },
+					{ "time": 0.5, "x": 2.44, "y": 4.8 },
+					{ "time": 1, "x": 6.23, "y": 0 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -22.98 },
+					{ "time": 0.1333, "angle": -63.5 },
+					{ "time": 0.2333, "angle": -73.76 },
+					{ "time": 0.5, "angle": 5.11 },
+					{ "time": 0.6333, "angle": -28.29 },
+					{ "time": 0.7333, "angle": 4.08 },
+					{ "time": 0.8666, "angle": 3.53 },
+					{ "time": 1, "angle": -22.98 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{ "time": 0.2333, "x": 2.55, "y": -0.47 },
+					{ "time": 0.5, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2333, "angle": -5.01 },
+					{ "time": 0.3666, "angle": 3.87 },
+					{ "time": 0.5, "angle": -3.87 },
+					{ "time": 0.6333, "angle": 2.78 },
+					{ "time": 0.7333, "angle": 1.68 },
+					{ "time": 0.8666, "angle": -8.54 },
+					{ "time": 1, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 5.29,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{ "time": 0.6333, "angle": 6.65 },
+					{ "time": 1, "angle": 5.29 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": 19.78,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 8.98 },
+					{ "time": 0.6333, "angle": 0.51 },
+					{ "time": 1, "angle": 8.98 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 6.25,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -11.78,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 6.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 1.15, "y": 0.23 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -21.23,
+						"curve": [ 0.295, 0, 0.755, 0.98 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -27.28,
+						"curve": [ 0.241, 0, 0.75, 0.97 ]
+					},
+					{ "time": 1, "angle": -21.23 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 28.37,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 60.09,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 28.37 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 0.818, 1 ]
+					},
+					{
+						"time": 0.3666,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 0.669, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": -15.75,
+						"curve": [ 0.235, 0.01, 0.795, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": -7.06,
+						"curve": [ 0.209, 0, 0.816, 0.98 ]
+					},
+					{ "time": 1, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.29, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2333, "angle": -1.91 },
+					{ "time": 0.3666, "angle": -6.45 },
+					{ "time": 0.5, "angle": -5.39 },
+					{ "time": 0.7333, "angle": -11.68 },
+					{ "time": 0.8666, "angle": 0.46 },
+					{ "time": 1, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -3.39,
+						"curve": [ 0.316, 0.01, 0.741, 0.98 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -45.53,
+						"curve": [ 0.229, 0, 0.738, 0.97 ]
+					},
+					{ "time": 0.2333, "angle": -4.83 },
+					{ "time": 0.5, "angle": -19.53 },
+					{ "time": 0.6333, "angle": -64.8 },
+					{
+						"time": 0.7333,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1, "angle": -3.39 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.5, "x": 0, "y": 0 },
+					{ "time": 0.6333, "x": 2.18, "y": 0.21 },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": -4.16 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.3666, "x": 0, "y": 6.78 },
+					{ "time": 0.5, "x": 0, "y": -6.13 },
+					{
+						"time": 0.6333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.8666, "x": 0, "y": 6.78 },
+					{ "time": 1, "x": 0, "y": -4.16 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{ "time": 0.5, "angle": 5.17 },
+					{ "time": 0.6333, "angle": 18.36 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.17 ]
+					},
+					{ "time": 0.1333, "angle": -0.2 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{
+						"time": 0.5,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.6666, "angle": 1.1 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			}
+		},
+		"slots": {
+			"eyes": {
+				"attachment": [
+					{ "time": 0.7, "name": "eyes closed" },
+					{ "time": 0.8, "name": null }
+				]
+			}
+		}
+	}
+}
+}

+ 0 - 410
spine-cocos2dx/example/Resources/common/spineboy-jump.json

@@ -1,410 +0,0 @@
-{
-"bones": {
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 0, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": -11.57, "y": -3 },
-			{ "time": 0.2333, "x": -16.2, "y": -19.43 },
-			{
-				"time": 0.3333,
-				"x": 7.66,
-				"y": -8.48,
-				"curve": [ 0.057, 0.06, 0.712, 1 ]
-			},
-			{ "time": 0.3666, "x": 15.38, "y": 5.01 },
-			{ "time": 0.4666, "x": -7.84, "y": 57.22 },
-			{
-				"time": 0.6,
-				"x": -10.81,
-				"y": 96.34,
-				"curve": [ 0.241, 0, 1, 1 ]
-			},
-			{ "time": 0.7333, "x": -7.01, "y": 54.7 },
-			{ "time": 0.8, "x": -10.58, "y": 32.2 },
-			{ "time": 0.9333, "x": -31.99, "y": 0.45 },
-			{ "time": 1.0666, "x": -12.48, "y": -29.47 },
-			{ "time": 1.3666, "x": -11.57, "y": -3 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 17.13 },
-			{ "time": 0.2333, "angle": 44.35 },
-			{ "time": 0.3333, "angle": 16.46 },
-			{ "time": 0.4, "angle": -9.88 },
-			{ "time": 0.4666, "angle": -11.42 },
-			{ "time": 0.5666, "angle": 23.46 },
-			{ "time": 0.7666, "angle": 71.82 },
-			{ "time": 0.9333, "angle": 65.53 },
-			{ "time": 1.0666, "angle": 51.01 },
-			{ "time": 1.3666, "angle": 17.13 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
-			{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
-			{ "time": 1.3666, "x": -3, "y": -2.25 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -16.25 },
-			{ "time": 0.2333, "angle": -52.21 },
-			{ "time": 0.4, "angle": 15.04 },
-			{ "time": 0.4666, "angle": -8.95 },
-			{ "time": 0.5666, "angle": -39.53 },
-			{ "time": 0.7666, "angle": -27.27 },
-			{ "time": 0.9333, "angle": -3.52 },
-			{ "time": 1.0666, "angle": -61.92 },
-			{ "time": 1.3666, "angle": -16.25 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": 0.33 },
-			{ "time": 0.2333, "angle": 6.2 },
-			{ "time": 0.3333, "angle": 14.73 },
-			{ "time": 0.4, "angle": -15.54 },
-			{ "time": 0.4333, "angle": -21.2 },
-			{ "time": 0.5666, "angle": -7.55 },
-			{ "time": 0.7666, "angle": -0.67 },
-			{ "time": 0.9333, "angle": -0.58 },
-			{ "time": 1.0666, "angle": 14.64 },
-			{ "time": 1.3666, "angle": 0.33 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 25.97 },
-			{ "time": 0.2333, "angle": 46.43 },
-			{ "time": 0.3333, "angle": 22.61 },
-			{ "time": 0.4, "angle": 2.13 },
-			{
-				"time": 0.4666,
-				"angle": 0.04,
-				"curve": [ 0, 0, 0.637, 0.98 ]
-			},
-			{ "time": 0.6, "angle": 65.55 },
-			{ "time": 0.7666, "angle": 64.93 },
-			{ "time": 0.9333, "angle": 41.08 },
-			{ "time": 1.0666, "angle": 66.25 },
-			{ "time": 1.3666, "angle": 25.97 }
-		],
-		"translate": [
-			{ "time": 0, "x": 5.74, "y": 0.61 },
-			{ "time": 0.2333, "x": 4.79, "y": 1.79 },
-			{ "time": 0.3333, "x": 6.05, "y": -4.55 },
-			{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
-			{ "time": 1.0666, "x": 4.79, "y": 1.79 },
-			{ "time": 1.3666, "x": 5.74, "y": 0.61 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -27.46 },
-			{ "time": 0.2333, "angle": -64.03 },
-			{ "time": 0.4, "angle": -48.36 },
-			{ "time": 0.5666, "angle": -76.86 },
-			{ "time": 0.7666, "angle": -26.89 },
-			{ "time": 0.9, "angle": -18.97 },
-			{ "time": 0.9333, "angle": -14.18 },
-			{ "time": 1.0666, "angle": -80.45 },
-			{ "time": 1.3666, "angle": -27.46 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": 1.08 },
-			{ "time": 0.2333, "angle": 16.02 },
-			{ "time": 0.3, "angle": 12.94 },
-			{ "time": 0.3333, "angle": 15.16 },
-			{ "time": 0.4, "angle": -14.7 },
-			{ "time": 0.4333, "angle": -12.85 },
-			{ "time": 0.4666, "angle": -19.18 },
-			{ "time": 0.5666, "angle": -15.82 },
-			{ "time": 0.6, "angle": -3.59 },
-			{ "time": 0.7666, "angle": -3.56 },
-			{ "time": 0.9333, "angle": 1.86 },
-			{ "time": 1.0666, "angle": 16.02 },
-			{ "time": 1.3666, "angle": 1.08 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -13.35 },
-			{ "time": 0.2333, "angle": -48.95 },
-			{ "time": 0.4333, "angle": -35.77 },
-			{ "time": 0.6, "angle": -4.59 },
-			{ "time": 0.7666, "angle": 14.61 },
-			{ "time": 0.9333, "angle": 15.74 },
-			{ "time": 1.0666, "angle": -32.44 },
-			{ "time": 1.3666, "angle": -13.35 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
-			{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
-			{ "time": 1.3666, "x": -3.67, "y": 1.68 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 12.78 },
-			{ "time": 0.2333, "angle": 16.46 },
-			{ "time": 0.4, "angle": 26.49 },
-			{ "time": 0.6, "angle": 15.51 },
-			{ "time": 0.7666, "angle": 1.34 },
-			{ "time": 0.9333, "angle": 2.35 },
-			{ "time": 1.0666, "angle": 6.08 },
-			{ "time": 1.3, "angle": 21.23 },
-			{ "time": 1.3666, "angle": 12.78 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{ "time": 0, "angle": 5.19 },
-			{ "time": 0.2333, "angle": 20.27 },
-			{ "time": 0.4, "angle": 15.27 },
-			{ "time": 0.6, "angle": -24.69 },
-			{ "time": 0.7666, "angle": -11.02 },
-			{ "time": 0.9333, "angle": -24.38 },
-			{ "time": 1.0666, "angle": 11.99 },
-			{ "time": 1.3, "angle": 4.86 },
-			{ "time": 1.3666, "angle": 5.19 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 0.05,
-				"curve": [ 0, 0, 0.62, 1 ]
-			},
-			{
-				"time": 0.2333,
-				"angle": 279.66,
-				"curve": [ 0.218, 0.67, 0.66, 0.99 ]
-			},
-			{
-				"time": 0.5,
-				"angle": 62.27,
-				"curve": [ 0.462, 0, 0.764, 0.58 ]
-			},
-			{ "time": 0.9333, "angle": 28.91 },
-			{ "time": 1.0666, "angle": -8.62 },
-			{ "time": 1.1666, "angle": -18.43 },
-			{ "time": 1.3666, "angle": 0.05 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
-			{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
-			{ "time": 1.3666, "x": -1.76, "y": 0.56 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{ "time": 0, "angle": 11.58, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 11.58 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{ "time": 0, "angle": 0.51 },
-			{ "time": 0.4333, "angle": 12.82 },
-			{ "time": 0.6, "angle": 47.55 },
-			{ "time": 0.9333, "angle": 12.82 },
-			{ "time": 1.1666, "angle": -6.5 },
-			{ "time": 1.3666, "angle": 0.51 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 43.82,
-				"curve": [ 0, 0, 0.62, 1 ]
-			},
-			{
-				"time": 0.2333,
-				"angle": -8.74,
-				"curve": [ 0.304, 0.58, 0.709, 0.97 ]
-			},
-			{
-				"time": 0.5333,
-				"angle": -208.02,
-				"curve": [ 0.462, 0, 0.764, 0.58 ]
-			},
-			{ "time": 0.9333, "angle": -246.72 },
-			{ "time": 1.0666, "angle": -307.13 },
-			{ "time": 1.1666, "angle": 37.15 },
-			{ "time": 1.3666, "angle": 43.82 }
-		],
-		"translate": [
-			{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
-			{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
-			{ "time": 1.3666, "x": -7.84, "y": 7.19 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{ "time": 0, "angle": -4.02 },
-			{ "time": 0.6, "angle": 17.5 },
-			{ "time": 0.9333, "angle": -4.02 },
-			{ "time": 1.1666, "angle": -16.72 },
-			{ "time": 1.3666, "angle": -4.02 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 22.92, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 22.92 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"root": {
-		"rotate": [
-			{ "time": 0, "angle": 0 },
-			{ "time": 0.4333, "angle": -14.52 },
-			{ "time": 0.8, "angle": 9.86 },
-			{ "time": 1.3666, "angle": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	}
-}
-}

+ 0 - 98
spine-cocos2dx/example/Resources/common/spineboy-skeleton.json

@@ -1,98 +0,0 @@
-{
-"bones": [
-	{ "name": "root", "length": 0 },
-	{ "name": "hip", "parent": "root", "length": 0, "x": 0.64, "y": 114.41 },
-	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
-	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
-	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
-	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
-	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
-	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
-	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
-	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
-	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
-	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
-	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
-	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
-	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
-	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
-	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
-	{ "name": "pelvis", "parent": "hip", "length": 0, "x": 1.41, "y": -6.57 }
-],
-"slots": [
-	{ "name": "template", "bone": "root", "color": "ff898c86" },
-	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
-	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
-	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
-	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
-	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
-	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
-	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
-	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
-	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
-	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
-	{ "name": "torso", "bone": "torso", "attachment": "torso" },
-	{ "name": "neck", "bone": "neck", "attachment": "neck" },
-	{ "name": "head", "bone": "head", "attachment": "head" },
-	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
-	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
-	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
-	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
-],
-"skins": {
-	"default": {
-		"left shoulder": {
-			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
-		},
-		"left arm": {
-			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
-		},
-		"left hand": {
-			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
-		},
-		"left foot": {
-			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
-		},
-		"left lower leg": {
-			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
-		},
-		"left upper leg": {
-			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
-		},
-		"pelvis": {
-			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
-		},
-		"right foot": {
-			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
-		},
-		"right lower leg": {
-			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
-		},
-		"right upper leg": {
-			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
-		},
-		"torso": {
-			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
-		},
-		"neck": {
-			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
-		},
-		"head": {
-			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
-		},
-		"eyes": {
-			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
-			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
-		},
-		"right shoulder": {
-			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
-		},
-		"right arm": {
-			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
-		},
-		"right hand": {
-			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
-		}
-	}
-}
-}

+ 0 - 278
spine-cocos2dx/example/Resources/common/spineboy-walk.json

@@ -1,278 +0,0 @@
-{
-"bones": {
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": -26.55 },
-			{ "time": 0.1333, "angle": -8.78 },
-			{ "time": 0.2666, "angle": 9.51 },
-			{ "time": 0.4, "angle": 30.74 },
-			{ "time": 0.5333, "angle": 25.33 },
-			{ "time": 0.6666, "angle": 26.11 },
-			{ "time": 0.8, "angle": -7.7 },
-			{ "time": 0.9333, "angle": -21.19 },
-			{ "time": 1.0666, "angle": -26.55 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3, "y": -2.25 },
-			{ "time": 0.4, "x": -2.18, "y": -2.25 },
-			{ "time": 1.0666, "x": -3, "y": -2.25 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 42.45 },
-			{ "time": 0.1333, "angle": 52.1 },
-			{ "time": 0.2666, "angle": 5.96 },
-			{ "time": 0.5333, "angle": -16.93 },
-			{ "time": 0.6666, "angle": 1.89 },
-			{
-				"time": 0.8,
-				"angle": 28.06,
-				"curve": [ 0.462, 0.11, 1, 1 ]
-			},
-			{
-				"time": 0.9333,
-				"angle": 58.68,
-				"curve": [ 0.5, 0.02, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": 42.45 }
-		],
-		"translate": [
-			{ "time": 0, "x": 8.11, "y": -2.36 },
-			{ "time": 0.1333, "x": 10.03, "y": -2.56 },
-			{ "time": 0.4, "x": 2.76, "y": -2.97 },
-			{ "time": 0.5333, "x": 2.76, "y": -2.81 },
-			{ "time": 0.9333, "x": 8.67, "y": -2.54 },
-			{ "time": 1.0666, "x": 8.11, "y": -2.36 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -10.21 },
-			{ "time": 0.1333, "angle": -55.64 },
-			{ "time": 0.2666, "angle": -68.12 },
-			{ "time": 0.5333, "angle": 5.11 },
-			{ "time": 0.6666, "angle": -28.29 },
-			{ "time": 0.8, "angle": 4.08 },
-			{ "time": 0.9333, "angle": 3.53 },
-			{ "time": 1.0666, "angle": -10.21 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": -3.69 },
-			{ "time": 0.1333, "angle": -10.42 },
-			{ "time": 0.2666, "angle": -17.14 },
-			{ "time": 0.4, "angle": -2.83 },
-			{ "time": 0.5333, "angle": -3.87 },
-			{ "time": 0.6666, "angle": 2.78 },
-			{ "time": 0.8, "angle": 1.68 },
-			{ "time": 0.9333, "angle": -8.54 },
-			{ "time": 1.0666, "angle": -3.69 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 20.89,
-				"curve": [ 0.264, 0, 0.75, 1 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 3.72,
-				"curve": [ 0.272, 0, 0.841, 1 ]
-			},
-			{ "time": 0.6666, "angle": -278.28 },
-			{ "time": 1.0666, "angle": 20.89 }
-		],
-		"translate": [
-			{ "time": 0, "x": -7.84, "y": 7.19 },
-			{ "time": 0.1333, "x": -6.36, "y": 6.42 },
-			{ "time": 0.6666, "x": -11.07, "y": 5.25 },
-			{ "time": 1.0666, "x": -7.84, "y": 7.19 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -4.02,
-				"curve": [ 0.267, 0, 0.804, 0.99 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": -13.99,
-				"curve": [ 0.341, 0, 1, 1 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": 36.54,
-				"curve": [ 0.307, 0, 0.787, 0.99 ]
-			},
-			{ "time": 1.0666, "angle": -4.02 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 22.92 },
-			{ "time": 0.4, "angle": -8.97 },
-			{ "time": 0.6666, "angle": 0.51 },
-			{ "time": 1.0666, "angle": 22.92 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{ "time": 0, "angle": -1.47 },
-			{ "time": 0.1333, "angle": 13.6 },
-			{ "time": 0.6666, "angle": 280.74 },
-			{ "time": 1.0666, "angle": -1.47 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.76, "y": 0.56 },
-			{ "time": 0.6666, "x": -2.47, "y": 8.14 },
-			{ "time": 1.0666, "x": -1.76, "y": 0.56 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 11.58,
-				"curve": [ 0.169, 0.37, 0.632, 1.55 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 28.13,
-				"curve": [ 0.692, 0, 0.692, 0.99 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": -27.42,
-				"curve": [ 0.117, 0.41, 0.738, 1.76 ]
-			},
-			{ "time": 0.8, "angle": -36.32 },
-			{ "time": 1.0666, "angle": 11.58 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{ "time": 0, "angle": -8.27 },
-			{ "time": 0.1333, "angle": 18.43 },
-			{ "time": 0.6666, "angle": 0.88 },
-			{ "time": 1.0666, "angle": -8.27 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -10.28 },
-			{
-				"time": 0.1333,
-				"angle": -15.38,
-				"curve": [ 0.545, 0, 1, 1 ]
-			},
-			{
-				"time": 0.4,
-				"angle": -9.78,
-				"curve": [ 0.58, 0.17, 1, 1 ]
-			},
-			{ "time": 0.6666, "angle": -15.75 },
-			{ "time": 0.9333, "angle": -7.06 },
-			{ "time": 1.0666, "angle": -10.28 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3.67, "y": 1.68 },
-			{ "time": 0.1333, "x": -3.67, "y": 0.68 },
-			{ "time": 0.4, "x": -3.67, "y": 1.97 },
-			{ "time": 0.6666, "x": -3.67, "y": -0.14 },
-			{ "time": 1.0666, "x": -3.67, "y": 1.68 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": -5.25 },
-			{ "time": 0.2666, "angle": -4.08 },
-			{ "time": 0.4, "angle": -6.45 },
-			{ "time": 0.5333, "angle": -5.39 },
-			{ "time": 0.8, "angle": -11.68 },
-			{ "time": 0.9333, "angle": 0.46 },
-			{ "time": 1.0666, "angle": -5.25 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -3.39 },
-			{ "time": 0.1333, "angle": -45.53 },
-			{ "time": 0.2666, "angle": -2.59 },
-			{ "time": 0.5333, "angle": -19.53 },
-			{ "time": 0.6666, "angle": -64.8 },
-			{
-				"time": 0.8,
-				"angle": -82.56,
-				"curve": [ 0.557, 0.18, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": -3.39 }
-		]
-	},
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 1.0666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0 },
-			{
-				"time": 0.1333,
-				"x": 0,
-				"y": -7.61,
-				"curve": [ 0.272, 0.86, 1, 1 ]
-			},
-			{ "time": 0.4, "x": 0, "y": 8.7 },
-			{ "time": 0.5333, "x": 0, "y": -0.41 },
-			{
-				"time": 0.6666,
-				"x": 0,
-				"y": -7.05,
-				"curve": [ 0.235, 0.89, 1, 1 ]
-			},
-			{ "time": 0.8, "x": 0, "y": 2.92 },
-			{ "time": 0.9333, "x": 0, "y": 6.78 },
-			{ "time": 1.0666, "x": 0, "y": 0 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 3.6 },
-			{ "time": 0.1333, "angle": 17.49 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{ "time": 0.5333, "angle": 5.17 },
-			{ "time": 0.6666, "angle": 18.36 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 3.6,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.1666, "angle": -0.2 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{
-				"time": 0.5333,
-				"angle": 5.17,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.7, "angle": 1.1 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	}
-}
-}

+ 787 - 0
spine-cocos2dx/example/Resources/common/spineboy.json

@@ -0,0 +1,787 @@
+{
+"bones": [
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
+	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
+	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
+	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
+	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
+	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
+	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
+	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
+	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
+	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
+	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
+	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
+	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
+	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
+	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
+],
+"slots": [
+	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
+	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
+	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
+	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
+	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
+	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
+	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
+	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
+	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
+	{ "name": "torso", "bone": "torso", "attachment": "torso" },
+	{ "name": "neck", "bone": "neck", "attachment": "neck" },
+	{ "name": "head", "bone": "head", "attachment": "head" },
+	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
+	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
+	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
+],
+"skins": {
+	"default": {
+		"left shoulder": {
+			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
+		},
+		"left arm": {
+			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
+		},
+		"left hand": {
+			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
+		},
+		"left foot": {
+			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
+		},
+		"left lower leg": {
+			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
+		},
+		"left upper leg": {
+			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
+		},
+		"pelvis": {
+			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
+		},
+		"right foot": {
+			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
+		},
+		"right lower leg": {
+			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
+		},
+		"right upper leg": {
+			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
+		},
+		"torso": {
+			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
+		},
+		"neck": {
+			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
+		},
+		"head": {
+			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
+		},
+		"eyes": {
+			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
+			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
+		},
+		"right shoulder": {
+			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
+		},
+		"right arm": {
+			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
+		},
+		"right hand": {
+			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2666, "angle": 9.51 },
+					{ "time": 0.4, "angle": 30.74 },
+					{ "time": 0.5333, "angle": 25.33 },
+					{ "time": 0.6666, "angle": 26.11 },
+					{ "time": 0.8, "angle": -7.7 },
+					{ "time": 0.9333, "angle": -21.19 },
+					{ "time": 1.0666, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25 },
+					{ "time": 0.4, "x": -2.18, "y": -2.25 },
+					{ "time": 1.0666, "x": -3, "y": -2.25 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2666, "angle": 5.96 },
+					{ "time": 0.5333, "angle": -16.93 },
+					{ "time": 0.6666, "angle": 1.89 },
+					{
+						"time": 0.8,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.9333,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 8.11, "y": -2.36 },
+					{ "time": 0.1333, "x": 10.03, "y": -2.56 },
+					{ "time": 0.4, "x": 2.76, "y": -2.97 },
+					{ "time": 0.5333, "x": 2.76, "y": -2.81 },
+					{ "time": 0.9333, "x": 8.67, "y": -2.54 },
+					{ "time": 1.0666, "x": 8.11, "y": -2.36 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -10.21 },
+					{ "time": 0.1333, "angle": -55.64 },
+					{ "time": 0.2666, "angle": -68.12 },
+					{ "time": 0.5333, "angle": 5.11 },
+					{ "time": 0.6666, "angle": -28.29 },
+					{ "time": 0.8, "angle": 4.08 },
+					{ "time": 0.9333, "angle": 3.53 },
+					{ "time": 1.0666, "angle": -10.21 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2666, "angle": -17.14 },
+					{ "time": 0.4, "angle": -2.83 },
+					{ "time": 0.5333, "angle": -3.87 },
+					{ "time": 0.6666, "angle": 2.78 },
+					{ "time": 0.8, "angle": 1.68 },
+					{ "time": 0.9333, "angle": -8.54 },
+					{ "time": 1.0666, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 20.89,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 3.72,
+						"curve": [ 0.272, 0, 0.841, 1 ]
+					},
+					{ "time": 0.6666, "angle": -278.28 },
+					{ "time": 1.0666, "angle": 20.89 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19 },
+					{ "time": 0.1333, "x": -6.36, "y": 6.42 },
+					{ "time": 0.6666, "x": -11.07, "y": 5.25 },
+					{ "time": 1.0666, "x": -7.84, "y": 7.19 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -13.99,
+						"curve": [ 0.341, 0, 1, 1 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": 36.54,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1.0666, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92 },
+					{ "time": 0.4, "angle": -8.97 },
+					{ "time": 0.6666, "angle": 0.51 },
+					{ "time": 1.0666, "angle": 22.92 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{ "time": 0, "angle": -1.47 },
+					{ "time": 0.1333, "angle": 13.6 },
+					{ "time": 0.6666, "angle": 280.74 },
+					{ "time": 1.0666, "angle": -1.47 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56 },
+					{ "time": 0.6666, "x": -2.47, "y": 8.14 },
+					{ "time": 1.0666, "x": -1.76, "y": 0.56 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 11.58,
+						"curve": [ 0.169, 0.37, 0.632, 1.55 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 28.13,
+						"curve": [ 0.692, 0, 0.692, 0.99 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": -27.42,
+						"curve": [ 0.117, 0.41, 0.738, 1.76 ]
+					},
+					{ "time": 0.8, "angle": -36.32 },
+					{ "time": 1.0666, "angle": 11.58 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": -8.27 },
+					{ "time": 0.1333, "angle": 18.43 },
+					{ "time": 0.6666, "angle": 0.88 },
+					{ "time": 1.0666, "angle": -8.27 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 1, 1 ]
+					},
+					{
+						"time": 0.4,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 1, 1 ]
+					},
+					{ "time": 0.6666, "angle": -15.75 },
+					{ "time": 0.9333, "angle": -7.06 },
+					{ "time": 1.0666, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68 },
+					{ "time": 0.1333, "x": -3.67, "y": 0.68 },
+					{ "time": 0.4, "x": -3.67, "y": 1.97 },
+					{ "time": 0.6666, "x": -3.67, "y": -0.14 },
+					{ "time": 1.0666, "x": -3.67, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2666, "angle": -4.08 },
+					{ "time": 0.4, "angle": -6.45 },
+					{ "time": 0.5333, "angle": -5.39 },
+					{ "time": 0.8, "angle": -11.68 },
+					{ "time": 0.9333, "angle": 0.46 },
+					{ "time": 1.0666, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -3.39 },
+					{ "time": 0.1333, "angle": -45.53 },
+					{ "time": 0.2666, "angle": -2.59 },
+					{ "time": 0.5333, "angle": -19.53 },
+					{ "time": 0.6666, "angle": -64.8 },
+					{
+						"time": 0.8,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": -3.39 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1.0666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.61,
+						"curve": [ 0.272, 0.86, 1, 1 ]
+					},
+					{ "time": 0.4, "x": 0, "y": 8.7 },
+					{ "time": 0.5333, "x": 0, "y": -0.41 },
+					{
+						"time": 0.6666,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.235, 0.89, 1, 1 ]
+					},
+					{ "time": 0.8, "x": 0, "y": 2.92 },
+					{ "time": 0.9333, "x": 0, "y": 6.78 },
+					{ "time": 1.0666, "x": 0, "y": 0 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{ "time": 0.5333, "angle": 5.17 },
+					{ "time": 0.6666, "angle": 18.36 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.1666, "angle": -0.2 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{
+						"time": 0.5333,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.7, "angle": 1.1 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			}
+		}
+	},
+	"jump": {
+		"bones": {
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 0, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": -11.57, "y": -3 },
+					{ "time": 0.2333, "x": -16.2, "y": -19.43 },
+					{
+						"time": 0.3333,
+						"x": 7.66,
+						"y": -8.48,
+						"curve": [ 0.057, 0.06, 0.712, 1 ]
+					},
+					{ "time": 0.3666, "x": 15.38, "y": 5.01 },
+					{ "time": 0.4666, "x": -7.84, "y": 57.22 },
+					{
+						"time": 0.6,
+						"x": -10.81,
+						"y": 96.34,
+						"curve": [ 0.241, 0, 1, 1 ]
+					},
+					{ "time": 0.7333, "x": -7.01, "y": 54.7 },
+					{ "time": 0.8, "x": -10.58, "y": 32.2 },
+					{ "time": 0.9333, "x": -31.99, "y": 0.45 },
+					{ "time": 1.0666, "x": -12.48, "y": -29.47 },
+					{ "time": 1.3666, "x": -11.57, "y": -3 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 17.13 },
+					{ "time": 0.2333, "angle": 44.35 },
+					{ "time": 0.3333, "angle": 16.46 },
+					{ "time": 0.4, "angle": -9.88 },
+					{ "time": 0.4666, "angle": -11.42 },
+					{ "time": 0.5666, "angle": 23.46 },
+					{ "time": 0.7666, "angle": 71.82 },
+					{ "time": 0.9333, "angle": 65.53 },
+					{ "time": 1.0666, "angle": 51.01 },
+					{ "time": 1.3666, "angle": 17.13 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3, "y": -2.25 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -16.25 },
+					{ "time": 0.2333, "angle": -52.21 },
+					{ "time": 0.4, "angle": 15.04 },
+					{ "time": 0.4666, "angle": -8.95 },
+					{ "time": 0.5666, "angle": -39.53 },
+					{ "time": 0.7666, "angle": -27.27 },
+					{ "time": 0.9333, "angle": -3.52 },
+					{ "time": 1.0666, "angle": -61.92 },
+					{ "time": 1.3666, "angle": -16.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": 0.33 },
+					{ "time": 0.2333, "angle": 6.2 },
+					{ "time": 0.3333, "angle": 14.73 },
+					{ "time": 0.4, "angle": -15.54 },
+					{ "time": 0.4333, "angle": -21.2 },
+					{ "time": 0.5666, "angle": -7.55 },
+					{ "time": 0.7666, "angle": -0.67 },
+					{ "time": 0.9333, "angle": -0.58 },
+					{ "time": 1.0666, "angle": 14.64 },
+					{ "time": 1.3666, "angle": 0.33 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 25.97 },
+					{ "time": 0.2333, "angle": 46.43 },
+					{ "time": 0.3333, "angle": 22.61 },
+					{ "time": 0.4, "angle": 2.13 },
+					{
+						"time": 0.4666,
+						"angle": 0.04,
+						"curve": [ 0, 0, 0.637, 0.98 ]
+					},
+					{ "time": 0.6, "angle": 65.55 },
+					{ "time": 0.7666, "angle": 64.93 },
+					{ "time": 0.9333, "angle": 41.08 },
+					{ "time": 1.0666, "angle": 66.25 },
+					{ "time": 1.3666, "angle": 25.97 }
+				],
+				"translate": [
+					{ "time": 0, "x": 5.74, "y": 0.61 },
+					{ "time": 0.2333, "x": 4.79, "y": 1.79 },
+					{ "time": 0.3333, "x": 6.05, "y": -4.55 },
+					{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
+					{ "time": 1.0666, "x": 4.79, "y": 1.79 },
+					{ "time": 1.3666, "x": 5.74, "y": 0.61 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -27.46 },
+					{ "time": 0.2333, "angle": -64.03 },
+					{ "time": 0.4, "angle": -48.36 },
+					{ "time": 0.5666, "angle": -76.86 },
+					{ "time": 0.7666, "angle": -26.89 },
+					{ "time": 0.9, "angle": -18.97 },
+					{ "time": 0.9333, "angle": -14.18 },
+					{ "time": 1.0666, "angle": -80.45 },
+					{ "time": 1.3666, "angle": -27.46 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": 1.08 },
+					{ "time": 0.2333, "angle": 16.02 },
+					{ "time": 0.3, "angle": 12.94 },
+					{ "time": 0.3333, "angle": 15.16 },
+					{ "time": 0.4, "angle": -14.7 },
+					{ "time": 0.4333, "angle": -12.85 },
+					{ "time": 0.4666, "angle": -19.18 },
+					{ "time": 0.5666, "angle": -15.82 },
+					{ "time": 0.6, "angle": -3.59 },
+					{ "time": 0.7666, "angle": -3.56 },
+					{ "time": 0.9333, "angle": 1.86 },
+					{ "time": 1.0666, "angle": 16.02 },
+					{ "time": 1.3666, "angle": 1.08 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -13.35 },
+					{ "time": 0.2333, "angle": -48.95 },
+					{ "time": 0.4333, "angle": -35.77 },
+					{ "time": 0.6, "angle": -4.59 },
+					{ "time": 0.7666, "angle": 14.61 },
+					{ "time": 0.9333, "angle": 15.74 },
+					{ "time": 1.0666, "angle": -32.44 },
+					{ "time": 1.3666, "angle": -13.35 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3.67, "y": 1.68 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 12.78 },
+					{ "time": 0.2333, "angle": 16.46 },
+					{ "time": 0.4, "angle": 26.49 },
+					{ "time": 0.6, "angle": 15.51 },
+					{ "time": 0.7666, "angle": 1.34 },
+					{ "time": 0.9333, "angle": 2.35 },
+					{ "time": 1.0666, "angle": 6.08 },
+					{ "time": 1.3, "angle": 21.23 },
+					{ "time": 1.3666, "angle": 12.78 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{ "time": 0, "angle": 5.19 },
+					{ "time": 0.2333, "angle": 20.27 },
+					{ "time": 0.4, "angle": 15.27 },
+					{ "time": 0.6, "angle": -24.69 },
+					{ "time": 0.7666, "angle": -11.02 },
+					{ "time": 0.9333, "angle": -24.38 },
+					{ "time": 1.0666, "angle": 11.99 },
+					{ "time": 1.3, "angle": 4.86 },
+					{ "time": 1.3666, "angle": 5.19 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 0.05,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": 279.66,
+						"curve": [ 0.218, 0.67, 0.66, 0.99 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 62.27,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": 28.91 },
+					{ "time": 1.0666, "angle": -8.62 },
+					{ "time": 1.1666, "angle": -18.43 },
+					{ "time": 1.3666, "angle": 0.05 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 1.3666, "x": -1.76, "y": 0.56 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{ "time": 0, "angle": 11.58, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 11.58 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": 0.51 },
+					{ "time": 0.4333, "angle": 12.82 },
+					{ "time": 0.6, "angle": 47.55 },
+					{ "time": 0.9333, "angle": 12.82 },
+					{ "time": 1.1666, "angle": -6.5 },
+					{ "time": 1.3666, "angle": 0.51 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 43.82,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": -8.74,
+						"curve": [ 0.304, 0.58, 0.709, 0.97 ]
+					},
+					{
+						"time": 0.5333,
+						"angle": -208.02,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": -246.72 },
+					{ "time": 1.0666, "angle": -307.13 },
+					{ "time": 1.1666, "angle": 37.15 },
+					{ "time": 1.3666, "angle": 43.82 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 1.3666, "x": -7.84, "y": 7.19 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{ "time": 0, "angle": -4.02 },
+					{ "time": 0.6, "angle": 17.5 },
+					{ "time": 0.9333, "angle": -4.02 },
+					{ "time": 1.1666, "angle": -16.72 },
+					{ "time": 1.3666, "angle": -4.02 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 22.92 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"root": {
+				"rotate": [
+					{ "time": 0, "angle": 0 },
+					{ "time": 0.4333, "angle": -14.52 },
+					{ "time": 0.8, "angle": 9.86 },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			}
+		}
+	}
+}
+}

+ 285 - 0
spine-cocos2dx/example/Resources/ipad/goblins.atlas

@@ -0,0 +1,285 @@
+
+goblins.png
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+spear
+  rotate: false
+  xy: 2, 142
+  size: 22, 368
+  orig: 22, 368
+  offset: 0, 0
+  index: -1
+goblingirl/head
+  rotate: false
+  xy: 26, 429
+  size: 103, 81
+  orig: 103, 81
+  offset: 0, 0
+  index: -1
+goblin/head
+  rotate: false
+  xy: 26, 361
+  size: 103, 66
+  orig: 103, 66
+  offset: 0, 0
+  index: -1
+goblin/torso
+  rotate: false
+  xy: 131, 414
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+goblingirl/torso
+  rotate: false
+  xy: 26, 263
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+dagger
+  rotate: false
+  xy: 26, 153
+  size: 26, 108
+  orig: 26, 108
+  offset: 0, 0
+  index: -1
+goblin/right-lower-leg
+  rotate: false
+  xy: 201, 434
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblingirl/right-lower-leg
+  rotate: false
+  xy: 54, 185
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblin/left-upper-leg
+  rotate: false
+  xy: 96, 286
+  size: 33, 73
+  orig: 33, 73
+  offset: 0, 0
+  index: -1
+goblin/pelvis
+  rotate: false
+  xy: 131, 369
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblingirl/pelvis
+  rotate: false
+  xy: 131, 324
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblin/right-foot
+  rotate: false
+  xy: 131, 289
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/left-lower-leg
+  rotate: false
+  xy: 2, 70
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblin/right-upper-leg
+  rotate: false
+  xy: 2, 5
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblingirl/left-lower-leg
+  rotate: false
+  xy: 195, 342
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/left-upper-leg
+  rotate: false
+  xy: 37, 81
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/right-upper-leg
+  rotate: false
+  xy: 38, 16
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblin/eyes-closed
+  rotate: false
+  xy: 38, 2
+  size: 34, 12
+  orig: 34, 12
+  offset: 0, 0
+  index: -1
+goblin/undies
+  rotate: false
+  xy: 54, 154
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1
+goblin/right-arm
+  rotate: false
+  xy: 72, 102
+  size: 23, 50
+  orig: 23, 50
+  offset: 0, 0
+  index: -1
+goblin/left-foot
+  rotate: false
+  xy: 131, 256
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-arm
+  rotate: false
+  xy: 196, 290
+  size: 28, 50
+  orig: 28, 50
+  offset: 0, 0
+  index: -1
+goblingirl/left-shoulder
+  rotate: false
+  xy: 226, 294
+  size: 28, 46
+  orig: 28, 46
+  offset: 0, 0
+  index: -1
+goblin/left-arm
+  rotate: false
+  xy: 198, 253
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblingirl/left-foot
+  rotate: false
+  xy: 92, 223
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-foot
+  rotate: false
+  xy: 92, 188
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/undie-straps
+  rotate: false
+  xy: 92, 167
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/left-arm
+  rotate: false
+  xy: 159, 219
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblin/right-shoulder
+  rotate: false
+  xy: 97, 120
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblingirl/right-shoulder
+  rotate: false
+  xy: 198, 206
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblin/left-hand
+  rotate: false
+  xy: 157, 176
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblin/neck
+  rotate: false
+  xy: 195, 163
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblingirl/undie-straps
+  rotate: false
+  xy: 97, 99
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/neck
+  rotate: false
+  xy: 138, 120
+  size: 35, 41
+  orig: 35, 41
+  offset: 0, 0
+  index: -1
+goblingirl/left-hand
+  rotate: false
+  xy: 175, 121
+  size: 35, 40
+  orig: 35, 40
+  offset: 0, 0
+  index: -1
+goblin/left-shoulder
+  rotate: false
+  xy: 212, 117
+  size: 29, 44
+  orig: 29, 44
+  offset: 0, 0
+  index: -1
+goblingirl/eyes-closed
+  rotate: false
+  xy: 154, 97
+  size: 37, 21
+  orig: 37, 21
+  offset: 0, 0
+  index: -1
+goblin/right-hand
+  rotate: false
+  xy: 193, 78
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/right-hand
+  rotate: false
+  xy: 74, 39
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/undies
+  rotate: false
+  xy: 74, 8
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1

二進制
spine-cocos2dx/example/Resources/ipad/goblins.png


+ 166 - 0
spine-cocos2dx/example/Resources/ipad/spineboy.atlas

@@ -0,0 +1,166 @@
+
+spineboy.png
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+head
+  rotate: false
+  xy: 1, 122
+  size: 121, 132
+  orig: 121, 132
+  offset: 0, 0
+  index: -1
+torso
+  rotate: false
+  xy: 1, 28
+  size: 68, 92
+  orig: 68, 92
+  offset: 0, 0
+  index: -1
+left-pant-bottom
+  rotate: false
+  xy: 1, 4
+  size: 44, 22
+  orig: 44, 22
+  offset: 0, 0
+  index: -1
+right-pant-bottom
+  rotate: false
+  xy: 47, 8
+  size: 46, 18
+  orig: 46, 18
+  offset: 0, 0
+  index: -1
+right-upper-leg
+  rotate: false
+  xy: 71, 50
+  size: 44, 70
+  orig: 44, 70
+  offset: 0, 0
+  index: -1
+pelvis
+  rotate: false
+  xy: 95, 1
+  size: 63, 47
+  orig: 63, 47
+  offset: 0, 0
+  index: -1
+left-upper-leg
+  rotate: false
+  xy: 117, 53
+  size: 33, 67
+  orig: 33, 67
+  offset: 0, 0
+  index: -1
+right-foot
+  rotate: false
+  xy: 160, 224
+  size: 67, 30
+  orig: 67, 30
+  offset: 0, 0
+  index: -1
+left-shoulder
+  rotate: false
+  xy: 124, 201
+  size: 34, 53
+  orig: 34, 53
+  offset: 0, 0
+  index: -1
+left-ankle
+  rotate: false
+  xy: 229, 222
+  size: 25, 32
+  orig: 25, 32
+  offset: 0, 0
+  index: -1
+left-foot
+  rotate: false
+  xy: 160, 192
+  size: 65, 30
+  orig: 65, 30
+  offset: 0, 0
+  index: -1
+neck
+  rotate: false
+  xy: 124, 171
+  size: 34, 28
+  orig: 34, 28
+  offset: 0, 0
+  index: -1
+right-arm
+  rotate: false
+  xy: 124, 124
+  size: 21, 45
+  orig: 21, 45
+  offset: 0, 0
+  index: -1
+right-ankle
+  rotate: false
+  xy: 227, 190
+  size: 25, 30
+  orig: 25, 30
+  offset: 0, 0
+  index: -1
+left-hand
+  rotate: false
+  xy: 147, 131
+  size: 35, 38
+  orig: 35, 38
+  offset: 0, 0
+  index: -1
+left-arm
+  rotate: false
+  xy: 184, 161
+  size: 35, 29
+  orig: 35, 29
+  offset: 0, 0
+  index: -1
+eyes-closed
+  rotate: false
+  xy: 221, 161
+  size: 34, 27
+  orig: 34, 27
+  offset: 0, 0
+  index: -1
+right-lower-leg
+  rotate: false
+  xy: 152, 65
+  size: 51, 64
+  orig: 51, 64
+  offset: 0, 0
+  index: -1
+right-foot-idle
+  rotate: false
+  xy: 184, 131
+  size: 53, 28
+  orig: 53, 28
+  offset: 0, 0
+  index: -1
+left-lower-leg
+  rotate: false
+  xy: 205, 65
+  size: 49, 64
+  orig: 49, 64
+  offset: 0, 0
+  index: -1
+right-shoulder
+  rotate: false
+  xy: 160, 12
+  size: 52, 51
+  orig: 52, 51
+  offset: 0, 0
+  index: -1
+eyes
+  rotate: false
+  xy: 214, 36
+  size: 34, 27
+  orig: 34, 27
+  offset: 0, 0
+  index: -1
+right-hand
+  rotate: false
+  xy: 214, 2
+  size: 32, 32
+  orig: 32, 32
+  offset: 0, 0
+  index: -1

二進制
spine-cocos2dx/example/Resources/ipad/spineboy.png


+ 285 - 0
spine-cocos2dx/example/Resources/ipadhd/goblins.atlas

@@ -0,0 +1,285 @@
+
+goblins.png
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+spear
+  rotate: false
+  xy: 2, 142
+  size: 22, 368
+  orig: 22, 368
+  offset: 0, 0
+  index: -1
+goblingirl/head
+  rotate: false
+  xy: 26, 429
+  size: 103, 81
+  orig: 103, 81
+  offset: 0, 0
+  index: -1
+goblin/head
+  rotate: false
+  xy: 26, 361
+  size: 103, 66
+  orig: 103, 66
+  offset: 0, 0
+  index: -1
+goblin/torso
+  rotate: false
+  xy: 131, 414
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+goblingirl/torso
+  rotate: false
+  xy: 26, 263
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+dagger
+  rotate: false
+  xy: 26, 153
+  size: 26, 108
+  orig: 26, 108
+  offset: 0, 0
+  index: -1
+goblin/right-lower-leg
+  rotate: false
+  xy: 201, 434
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblingirl/right-lower-leg
+  rotate: false
+  xy: 54, 185
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblin/left-upper-leg
+  rotate: false
+  xy: 96, 286
+  size: 33, 73
+  orig: 33, 73
+  offset: 0, 0
+  index: -1
+goblin/pelvis
+  rotate: false
+  xy: 131, 369
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblingirl/pelvis
+  rotate: false
+  xy: 131, 324
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblin/right-foot
+  rotate: false
+  xy: 131, 289
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/left-lower-leg
+  rotate: false
+  xy: 2, 70
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblin/right-upper-leg
+  rotate: false
+  xy: 2, 5
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblingirl/left-lower-leg
+  rotate: false
+  xy: 195, 342
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/left-upper-leg
+  rotate: false
+  xy: 37, 81
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/right-upper-leg
+  rotate: false
+  xy: 38, 16
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblin/eyes-closed
+  rotate: false
+  xy: 38, 2
+  size: 34, 12
+  orig: 34, 12
+  offset: 0, 0
+  index: -1
+goblin/undies
+  rotate: false
+  xy: 54, 154
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1
+goblin/right-arm
+  rotate: false
+  xy: 72, 102
+  size: 23, 50
+  orig: 23, 50
+  offset: 0, 0
+  index: -1
+goblin/left-foot
+  rotate: false
+  xy: 131, 256
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-arm
+  rotate: false
+  xy: 196, 290
+  size: 28, 50
+  orig: 28, 50
+  offset: 0, 0
+  index: -1
+goblingirl/left-shoulder
+  rotate: false
+  xy: 226, 294
+  size: 28, 46
+  orig: 28, 46
+  offset: 0, 0
+  index: -1
+goblin/left-arm
+  rotate: false
+  xy: 198, 253
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblingirl/left-foot
+  rotate: false
+  xy: 92, 223
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-foot
+  rotate: false
+  xy: 92, 188
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/undie-straps
+  rotate: false
+  xy: 92, 167
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/left-arm
+  rotate: false
+  xy: 159, 219
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblin/right-shoulder
+  rotate: false
+  xy: 97, 120
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblingirl/right-shoulder
+  rotate: false
+  xy: 198, 206
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblin/left-hand
+  rotate: false
+  xy: 157, 176
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblin/neck
+  rotate: false
+  xy: 195, 163
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblingirl/undie-straps
+  rotate: false
+  xy: 97, 99
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/neck
+  rotate: false
+  xy: 138, 120
+  size: 35, 41
+  orig: 35, 41
+  offset: 0, 0
+  index: -1
+goblingirl/left-hand
+  rotate: false
+  xy: 175, 121
+  size: 35, 40
+  orig: 35, 40
+  offset: 0, 0
+  index: -1
+goblin/left-shoulder
+  rotate: false
+  xy: 212, 117
+  size: 29, 44
+  orig: 29, 44
+  offset: 0, 0
+  index: -1
+goblingirl/eyes-closed
+  rotate: false
+  xy: 154, 97
+  size: 37, 21
+  orig: 37, 21
+  offset: 0, 0
+  index: -1
+goblin/right-hand
+  rotate: false
+  xy: 193, 78
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/right-hand
+  rotate: false
+  xy: 74, 39
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/undies
+  rotate: false
+  xy: 74, 8
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1

二進制
spine-cocos2dx/example/Resources/ipadhd/goblins.png


+ 166 - 0
spine-cocos2dx/example/Resources/ipadhd/spineboy.atlas

@@ -0,0 +1,166 @@
+
+spineboy.png
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+head
+  rotate: false
+  xy: 1, 122
+  size: 121, 132
+  orig: 121, 132
+  offset: 0, 0
+  index: -1
+torso
+  rotate: false
+  xy: 1, 28
+  size: 68, 92
+  orig: 68, 92
+  offset: 0, 0
+  index: -1
+left-pant-bottom
+  rotate: false
+  xy: 1, 4
+  size: 44, 22
+  orig: 44, 22
+  offset: 0, 0
+  index: -1
+right-pant-bottom
+  rotate: false
+  xy: 47, 8
+  size: 46, 18
+  orig: 46, 18
+  offset: 0, 0
+  index: -1
+right-upper-leg
+  rotate: false
+  xy: 71, 50
+  size: 44, 70
+  orig: 44, 70
+  offset: 0, 0
+  index: -1
+pelvis
+  rotate: false
+  xy: 95, 1
+  size: 63, 47
+  orig: 63, 47
+  offset: 0, 0
+  index: -1
+left-upper-leg
+  rotate: false
+  xy: 117, 53
+  size: 33, 67
+  orig: 33, 67
+  offset: 0, 0
+  index: -1
+right-foot
+  rotate: false
+  xy: 160, 224
+  size: 67, 30
+  orig: 67, 30
+  offset: 0, 0
+  index: -1
+left-shoulder
+  rotate: false
+  xy: 124, 201
+  size: 34, 53
+  orig: 34, 53
+  offset: 0, 0
+  index: -1
+left-ankle
+  rotate: false
+  xy: 229, 222
+  size: 25, 32
+  orig: 25, 32
+  offset: 0, 0
+  index: -1
+left-foot
+  rotate: false
+  xy: 160, 192
+  size: 65, 30
+  orig: 65, 30
+  offset: 0, 0
+  index: -1
+neck
+  rotate: false
+  xy: 124, 171
+  size: 34, 28
+  orig: 34, 28
+  offset: 0, 0
+  index: -1
+right-arm
+  rotate: false
+  xy: 124, 124
+  size: 21, 45
+  orig: 21, 45
+  offset: 0, 0
+  index: -1
+right-ankle
+  rotate: false
+  xy: 227, 190
+  size: 25, 30
+  orig: 25, 30
+  offset: 0, 0
+  index: -1
+left-hand
+  rotate: false
+  xy: 147, 131
+  size: 35, 38
+  orig: 35, 38
+  offset: 0, 0
+  index: -1
+left-arm
+  rotate: false
+  xy: 184, 161
+  size: 35, 29
+  orig: 35, 29
+  offset: 0, 0
+  index: -1
+eyes-closed
+  rotate: false
+  xy: 221, 161
+  size: 34, 27
+  orig: 34, 27
+  offset: 0, 0
+  index: -1
+right-lower-leg
+  rotate: false
+  xy: 152, 65
+  size: 51, 64
+  orig: 51, 64
+  offset: 0, 0
+  index: -1
+right-foot-idle
+  rotate: false
+  xy: 184, 131
+  size: 53, 28
+  orig: 53, 28
+  offset: 0, 0
+  index: -1
+left-lower-leg
+  rotate: false
+  xy: 205, 65
+  size: 49, 64
+  orig: 49, 64
+  offset: 0, 0
+  index: -1
+right-shoulder
+  rotate: false
+  xy: 160, 12
+  size: 52, 51
+  orig: 52, 51
+  offset: 0, 0
+  index: -1
+eyes
+  rotate: false
+  xy: 214, 36
+  size: 34, 27
+  orig: 34, 27
+  offset: 0, 0
+  index: -1
+right-hand
+  rotate: false
+  xy: 214, 2
+  size: 32, 32
+  orig: 32, 32
+  offset: 0, 0
+  index: -1

二進制
spine-cocos2dx/example/Resources/ipadhd/spineboy.png


+ 285 - 0
spine-cocos2dx/example/Resources/iphone-retina/goblins.atlas

@@ -0,0 +1,285 @@
+
+goblins.png
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+spear
+  rotate: false
+  xy: 2, 142
+  size: 22, 368
+  orig: 22, 368
+  offset: 0, 0
+  index: -1
+goblingirl/head
+  rotate: false
+  xy: 26, 429
+  size: 103, 81
+  orig: 103, 81
+  offset: 0, 0
+  index: -1
+goblin/head
+  rotate: false
+  xy: 26, 361
+  size: 103, 66
+  orig: 103, 66
+  offset: 0, 0
+  index: -1
+goblin/torso
+  rotate: false
+  xy: 131, 414
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+goblingirl/torso
+  rotate: false
+  xy: 26, 263
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+dagger
+  rotate: false
+  xy: 26, 153
+  size: 26, 108
+  orig: 26, 108
+  offset: 0, 0
+  index: -1
+goblin/right-lower-leg
+  rotate: false
+  xy: 201, 434
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblingirl/right-lower-leg
+  rotate: false
+  xy: 54, 185
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblin/left-upper-leg
+  rotate: false
+  xy: 96, 286
+  size: 33, 73
+  orig: 33, 73
+  offset: 0, 0
+  index: -1
+goblin/pelvis
+  rotate: false
+  xy: 131, 369
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblingirl/pelvis
+  rotate: false
+  xy: 131, 324
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblin/right-foot
+  rotate: false
+  xy: 131, 289
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/left-lower-leg
+  rotate: false
+  xy: 2, 70
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblin/right-upper-leg
+  rotate: false
+  xy: 2, 5
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblingirl/left-lower-leg
+  rotate: false
+  xy: 195, 342
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/left-upper-leg
+  rotate: false
+  xy: 37, 81
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/right-upper-leg
+  rotate: false
+  xy: 38, 16
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblin/eyes-closed
+  rotate: false
+  xy: 38, 2
+  size: 34, 12
+  orig: 34, 12
+  offset: 0, 0
+  index: -1
+goblin/undies
+  rotate: false
+  xy: 54, 154
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1
+goblin/right-arm
+  rotate: false
+  xy: 72, 102
+  size: 23, 50
+  orig: 23, 50
+  offset: 0, 0
+  index: -1
+goblin/left-foot
+  rotate: false
+  xy: 131, 256
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-arm
+  rotate: false
+  xy: 196, 290
+  size: 28, 50
+  orig: 28, 50
+  offset: 0, 0
+  index: -1
+goblingirl/left-shoulder
+  rotate: false
+  xy: 226, 294
+  size: 28, 46
+  orig: 28, 46
+  offset: 0, 0
+  index: -1
+goblin/left-arm
+  rotate: false
+  xy: 198, 253
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblingirl/left-foot
+  rotate: false
+  xy: 92, 223
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-foot
+  rotate: false
+  xy: 92, 188
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/undie-straps
+  rotate: false
+  xy: 92, 167
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/left-arm
+  rotate: false
+  xy: 159, 219
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblin/right-shoulder
+  rotate: false
+  xy: 97, 120
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblingirl/right-shoulder
+  rotate: false
+  xy: 198, 206
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblin/left-hand
+  rotate: false
+  xy: 157, 176
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblin/neck
+  rotate: false
+  xy: 195, 163
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblingirl/undie-straps
+  rotate: false
+  xy: 97, 99
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/neck
+  rotate: false
+  xy: 138, 120
+  size: 35, 41
+  orig: 35, 41
+  offset: 0, 0
+  index: -1
+goblingirl/left-hand
+  rotate: false
+  xy: 175, 121
+  size: 35, 40
+  orig: 35, 40
+  offset: 0, 0
+  index: -1
+goblin/left-shoulder
+  rotate: false
+  xy: 212, 117
+  size: 29, 44
+  orig: 29, 44
+  offset: 0, 0
+  index: -1
+goblingirl/eyes-closed
+  rotate: false
+  xy: 154, 97
+  size: 37, 21
+  orig: 37, 21
+  offset: 0, 0
+  index: -1
+goblin/right-hand
+  rotate: false
+  xy: 193, 78
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/right-hand
+  rotate: false
+  xy: 74, 39
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/undies
+  rotate: false
+  xy: 74, 8
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1

二進制
spine-cocos2dx/example/Resources/iphone-retina/goblins.png


+ 1 - 1
spine-cocos2dx/example/Resources/iphone-retina/spineboy.atlas

@@ -1,7 +1,7 @@
 
 
 spineboy.png
 spineboy.png
 format: RGBA8888
 format: RGBA8888
-filter: Nearest,Nearest
+filter: Linear,Linear
 repeat: none
 repeat: none
 head
 head
   rotate: false
   rotate: false

+ 285 - 0
spine-cocos2dx/example/Resources/iphone/goblins.atlas

@@ -0,0 +1,285 @@
+
+goblins.png
+format: RGBA8888
+filter: Linear,Linear
+repeat: none
+spear
+  rotate: false
+  xy: 2, 142
+  size: 22, 368
+  orig: 22, 368
+  offset: 0, 0
+  index: -1
+goblingirl/head
+  rotate: false
+  xy: 26, 429
+  size: 103, 81
+  orig: 103, 81
+  offset: 0, 0
+  index: -1
+goblin/head
+  rotate: false
+  xy: 26, 361
+  size: 103, 66
+  orig: 103, 66
+  offset: 0, 0
+  index: -1
+goblin/torso
+  rotate: false
+  xy: 131, 414
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+goblingirl/torso
+  rotate: false
+  xy: 26, 263
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+dagger
+  rotate: false
+  xy: 26, 153
+  size: 26, 108
+  orig: 26, 108
+  offset: 0, 0
+  index: -1
+goblin/right-lower-leg
+  rotate: false
+  xy: 201, 434
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblingirl/right-lower-leg
+  rotate: false
+  xy: 54, 185
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblin/left-upper-leg
+  rotate: false
+  xy: 96, 286
+  size: 33, 73
+  orig: 33, 73
+  offset: 0, 0
+  index: -1
+goblin/pelvis
+  rotate: false
+  xy: 131, 369
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblingirl/pelvis
+  rotate: false
+  xy: 131, 324
+  size: 62, 43
+  orig: 62, 43
+  offset: 0, 0
+  index: -1
+goblin/right-foot
+  rotate: false
+  xy: 131, 289
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/left-lower-leg
+  rotate: false
+  xy: 2, 70
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblin/right-upper-leg
+  rotate: false
+  xy: 2, 5
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblingirl/left-lower-leg
+  rotate: false
+  xy: 195, 342
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/left-upper-leg
+  rotate: false
+  xy: 37, 81
+  size: 33, 70
+  orig: 33, 70
+  offset: 0, 0
+  index: -1
+goblingirl/right-upper-leg
+  rotate: false
+  xy: 38, 16
+  size: 34, 63
+  orig: 34, 63
+  offset: 0, 0
+  index: -1
+goblin/eyes-closed
+  rotate: false
+  xy: 38, 2
+  size: 34, 12
+  orig: 34, 12
+  offset: 0, 0
+  index: -1
+goblin/undies
+  rotate: false
+  xy: 54, 154
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1
+goblin/right-arm
+  rotate: false
+  xy: 72, 102
+  size: 23, 50
+  orig: 23, 50
+  offset: 0, 0
+  index: -1
+goblin/left-foot
+  rotate: false
+  xy: 131, 256
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-arm
+  rotate: false
+  xy: 196, 290
+  size: 28, 50
+  orig: 28, 50
+  offset: 0, 0
+  index: -1
+goblingirl/left-shoulder
+  rotate: false
+  xy: 226, 294
+  size: 28, 46
+  orig: 28, 46
+  offset: 0, 0
+  index: -1
+goblin/left-arm
+  rotate: false
+  xy: 198, 253
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblingirl/left-foot
+  rotate: false
+  xy: 92, 223
+  size: 65, 31
+  orig: 65, 31
+  offset: 0, 0
+  index: -1
+goblingirl/right-foot
+  rotate: false
+  xy: 92, 188
+  size: 63, 33
+  orig: 63, 33
+  offset: 0, 0
+  index: -1
+goblin/undie-straps
+  rotate: false
+  xy: 92, 167
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/left-arm
+  rotate: false
+  xy: 159, 219
+  size: 37, 35
+  orig: 37, 35
+  offset: 0, 0
+  index: -1
+goblin/right-shoulder
+  rotate: false
+  xy: 97, 120
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblingirl/right-shoulder
+  rotate: false
+  xy: 198, 206
+  size: 39, 45
+  orig: 39, 45
+  offset: 0, 0
+  index: -1
+goblin/left-hand
+  rotate: false
+  xy: 157, 176
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblin/neck
+  rotate: false
+  xy: 195, 163
+  size: 36, 41
+  orig: 36, 41
+  offset: 0, 0
+  index: -1
+goblingirl/undie-straps
+  rotate: false
+  xy: 97, 99
+  size: 55, 19
+  orig: 55, 19
+  offset: 0, 0
+  index: -1
+goblingirl/neck
+  rotate: false
+  xy: 138, 120
+  size: 35, 41
+  orig: 35, 41
+  offset: 0, 0
+  index: -1
+goblingirl/left-hand
+  rotate: false
+  xy: 175, 121
+  size: 35, 40
+  orig: 35, 40
+  offset: 0, 0
+  index: -1
+goblin/left-shoulder
+  rotate: false
+  xy: 212, 117
+  size: 29, 44
+  orig: 29, 44
+  offset: 0, 0
+  index: -1
+goblingirl/eyes-closed
+  rotate: false
+  xy: 154, 97
+  size: 37, 21
+  orig: 37, 21
+  offset: 0, 0
+  index: -1
+goblin/right-hand
+  rotate: false
+  xy: 193, 78
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/right-hand
+  rotate: false
+  xy: 74, 39
+  size: 36, 37
+  orig: 36, 37
+  offset: 0, 0
+  index: -1
+goblingirl/undies
+  rotate: false
+  xy: 74, 8
+  size: 36, 29
+  orig: 36, 29
+  offset: 0, 0
+  index: -1

二進制
spine-cocos2dx/example/Resources/iphone/goblins.png


+ 1 - 1
spine-cocos2dx/example/Resources/iphone/spineboy.atlas

@@ -1,7 +1,7 @@
 
 
 spineboy.png
 spineboy.png
 format: RGBA8888
 format: RGBA8888
-filter: Nearest,Nearest
+filter: Linear,Linear
 repeat: none
 repeat: none
 head
 head
   rotate: false
   rotate: false

+ 11 - 13
spine-cocos2dx/example/proj.win32/main.cpp

@@ -5,19 +5,17 @@
 USING_NS_CC;
 USING_NS_CC;
 
 
 int APIENTRY _tWinMain(HINSTANCE hInstance,
 int APIENTRY _tWinMain(HINSTANCE hInstance,
-                       HINSTANCE hPrevInstance,
-                       LPTSTR    lpCmdLine,
-                       int       nCmdShow)
+					   HINSTANCE hPrevInstance,
+					   LPTSTR lpCmdLine,
+					   int nCmdShow)
 {
 {
-    UNREFERENCED_PARAMETER(hPrevInstance);
-    UNREFERENCED_PARAMETER(lpCmdLine);
+	UNREFERENCED_PARAMETER(hPrevInstance);
+	UNREFERENCED_PARAMETER(lpCmdLine);
 
 
-    // create the application instance
-    AppDelegate app;
-    CCEGLView* eglView = CCEGLView::sharedOpenGLView();
-    eglView->setViewName("SpineExample");
-    eglView->setFrameSize(480, 320);
-    // So we need to invoke 'setFrameZoomFactor' (only valid on desktop(win32, mac, linux)) to make the window smaller.
-   // eglView->setFrameZoomFactor(0.4f);
-    return CCApplication::sharedApplication()->run();
+	// create the application instance
+	AppDelegate app;
+	CCEGLView* eglView = CCEGLView::sharedOpenGLView();
+	eglView->setViewName("SpineExample");
+	eglView->setFrameSize(960, 640);
+	return CCApplication::sharedApplication()->run();
 }
 }

+ 41 - 0
spine-cocos2dx/src/spine/spine-cocos2dx.cpp

@@ -69,6 +69,33 @@ Skeleton* _Cocos2dxSkeleton_create (SkeletonData* data, CCSkeleton* node) {
 	return SUPER(self);
 	return SUPER(self);
 }
 }
 
 
+CCSkeleton* CCSkeleton::create (const char* skeletonDataFile, Atlas* atlas, float scale) {
+	SkeletonJson* json = SkeletonJson_create(atlas);
+	json->scale = scale;
+	SkeletonData* skeletonData = SkeletonJson_readSkeletonDataFile(json, skeletonDataFile);
+	SkeletonJson_dispose(json);
+	CCSkeleton* node = skeletonData ? create(skeletonData) : 0;
+	node->ownsSkeleton = true;
+	return node;
+}
+
+CCSkeleton* CCSkeleton::create (const char* skeletonDataFile, const char* atlasFile, float scale) {
+	Atlas* atlas = Atlas_readAtlasFile(atlasFile);
+	if (!atlas) return 0;
+	SkeletonJson* json = SkeletonJson_create(atlas);
+	json->scale = scale;
+	SkeletonData* skeletonData = SkeletonJson_readSkeletonDataFile(json, skeletonDataFile);
+	SkeletonJson_dispose(json);
+	if (!skeletonData) {
+		Atlas_dispose(atlas);
+		return 0;
+	}
+	CCSkeleton* node = create(skeletonData);
+	node->ownsSkeleton = true;
+	node->ownsAtlas = true;
+	return node;
+}
+
 CCSkeleton* CCSkeleton::create (SkeletonData* skeletonData, AnimationStateData* stateData) {
 CCSkeleton* CCSkeleton::create (SkeletonData* skeletonData, AnimationStateData* stateData) {
 	CCSkeleton* node = new CCSkeleton(skeletonData, stateData);
 	CCSkeleton* node = new CCSkeleton(skeletonData, stateData);
 	node->autorelease();
 	node->autorelease();
@@ -78,6 +105,11 @@ CCSkeleton* CCSkeleton::create (SkeletonData* skeletonData, AnimationStateData*
 CCSkeleton::CCSkeleton (SkeletonData *skeletonData, AnimationStateData *stateData) :
 CCSkeleton::CCSkeleton (SkeletonData *skeletonData, AnimationStateData *stateData) :
 				debugSlots(false), debugBones(false) {
 				debugSlots(false), debugBones(false) {
 	skeleton = _Cocos2dxSkeleton_create(skeletonData, this);
 	skeleton = _Cocos2dxSkeleton_create(skeletonData, this);
+
+	if (!stateData) {
+		stateData = AnimationStateData_create(skeletonData);
+		ownsStateData = true;
+	}
 	state = AnimationState_create(stateData);
 	state = AnimationState_create(stateData);
 
 
 	blendFunc.src = GL_ONE;
 	blendFunc.src = GL_ONE;
@@ -91,9 +123,18 @@ CCSkeleton::CCSkeleton (SkeletonData *skeletonData, AnimationStateData *stateDat
 
 
 CCSkeleton::~CCSkeleton () {
 CCSkeleton::~CCSkeleton () {
 	Skeleton_dispose(skeleton);
 	Skeleton_dispose(skeleton);
+	if (ownsStateData) AnimationStateData_dispose(state->data);
 	AnimationState_dispose(state);
 	AnimationState_dispose(state);
 }
 }
 
 
+void CCSkeleton::setMix (const char* fromName, const char* toName, float duration) {
+	AnimationStateData_setMixByName(state->data, fromName, toName, duration);
+}
+
+void CCSkeleton::setAnimation (const char* animationName, bool loop) {
+	AnimationState_setAnimationByName(state, animationName, loop);
+}
+
 void CCSkeleton::update (float deltaTime) {
 void CCSkeleton::update (float deltaTime) {
 	Skeleton_update(skeleton, deltaTime);
 	Skeleton_update(skeleton, deltaTime);
 	AnimationState_update(state, deltaTime * timeScale);
 	AnimationState_update(state, deltaTime * timeScale);

+ 11 - 0
spine-cocos2dx/src/spine/spine-cocos2dx.h

@@ -47,6 +47,11 @@ typedef struct {
 } Cocos2dxSkeleton;
 } Cocos2dxSkeleton;
 
 
 class CCSkeleton: public cocos2d::CCNodeRGBA, public cocos2d::CCBlendProtocol {
 class CCSkeleton: public cocos2d::CCNodeRGBA, public cocos2d::CCBlendProtocol {
+private:
+	bool ownsAtlas;
+	bool ownsSkeleton;
+	bool ownsStateData;
+
 public:
 public:
 	Skeleton* skeleton;
 	Skeleton* skeleton;
 	AnimationState* state;
 	AnimationState* state;
@@ -56,10 +61,16 @@ public:
 	cocos2d::CCTextureAtlas* atlas; // All region attachments for a skeleton must use the same texture.
 	cocos2d::CCTextureAtlas* atlas; // All region attachments for a skeleton must use the same texture.
 	unsigned int quadCount;
 	unsigned int quadCount;
 
 
+	static CCSkeleton* create (const char* skeletonDataFile, Atlas* atlas, float scale = 1);
+	static CCSkeleton* create (const char* skeletonDataFile, const char* atlasFile, float scale = 1);
 	static CCSkeleton* create (SkeletonData* skeletonData, AnimationStateData* stateData = 0);
 	static CCSkeleton* create (SkeletonData* skeletonData, AnimationStateData* stateData = 0);
+
 	CCSkeleton (SkeletonData* skeletonData, AnimationStateData* stateData = 0);
 	CCSkeleton (SkeletonData* skeletonData, AnimationStateData* stateData = 0);
 	virtual ~CCSkeleton ();
 	virtual ~CCSkeleton ();
 
 
+	void setMix (const char* fromName, const char* toName, float duration);
+	void setAnimation (const char* animationName, bool loop);
+
 	virtual void update (float deltaTime);
 	virtual void update (float deltaTime);
 	virtual void draw ();
 	virtual void draw ();
 
 

+ 499 - 0
spine-corona/data/goblins.json

@@ -0,0 +1,499 @@
+{
+"bones": [
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
+	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
+	{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
+	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
+	{ "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 },
+	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 },
+	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
+	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 },
+	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 },
+	{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 },
+	{ "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 },
+	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 },
+	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
+	{ "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 },
+	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
+],
+"slots": [
+	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
+	{ "name": "left arm", "bone": "left arm", "attachment": "left arm" },
+	{ "name": "left hand item", "bone": "left hand", "attachment": "spear" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
+	{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
+	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
+	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" },
+	{ "name": "neck", "bone": "neck", "attachment": "neck" },
+	{ "name": "torso", "bone": "torso", "attachment": "torso" },
+	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
+	{ "name": "right foot", "bone": "right foot", "attachment": "right foot" },
+	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" },
+	{ "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" },
+	{ "name": "undies", "bone": "pelvis", "attachment": "undies" },
+	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" },
+	{ "name": "head", "bone": "head", "attachment": "head" },
+	{ "name": "eyes", "bone": "head" },
+	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" },
+	{ "name": "right arm", "bone": "right arm", "attachment": "right arm" },
+	{ "name": "right hand item", "bone": "right hand", "attachment": "dagger" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right hand" }
+],
+"skins": {
+	"default": {
+		"left hand item": {
+			"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
+			"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
+		},
+		"right hand item": {
+			"dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 }
+		}
+	},
+	"goblin": {
+		"neck": {
+			"neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.69, "width": 36, "height": 41 }
+		},
+		"undies": {
+			"undies": { "name": "goblin/undies", "x": 6.3, "y": 0.12, "rotation": 0.91, "width": 36, "height": 29 }
+		},
+		"right hand": {
+			"right hand": { "name": "goblin/right-hand", "x": 7.88, "y": 2.78, "rotation": 91.96, "width": 36, "height": 37 }
+		},
+		"right arm": {
+			"right arm": { "name": "goblin/right-arm", "x": 16.44, "y": -1.04, "rotation": 94.32, "width": 23, "height": 50 }
+		},
+		"head": {
+			"head": { "name": "goblin/head", "x": 25.73, "y": 2.33, "rotation": -92.29, "width": 103, "height": 66 }
+		},
+		"left shoulder": {
+			"left shoulder": { "name": "goblin/left-shoulder", "x": 15.56, "y": -2.26, "rotation": 62.01, "width": 29, "height": 44 }
+		},
+		"left arm": {
+			"left arm": {
+				"name": "goblin/left-arm",
+				"x": 16.7,
+				"y": -1.69,
+				"scaleX": 1.057,
+				"scaleY": 1.057,
+				"rotation": 33.84,
+				"width": 37,
+				"height": 35
+			}
+		},
+		"left hand": {
+			"left hand": {
+				"name": "goblin/left-hand",
+				"x": 3.47,
+				"y": 3.41,
+				"scaleX": 0.892,
+				"scaleY": 0.892,
+				"rotation": 31.14,
+				"width": 36,
+				"height": 41
+			}
+		},
+		"right lower leg": {
+			"right lower leg": { "name": "goblin/right-lower-leg", "x": 25.68, "y": -3.15, "rotation": 111.83, "width": 36, "height": 76 }
+		},
+		"right upper leg": {
+			"right upper leg": { "name": "goblin/right-upper-leg", "x": 20.35, "y": 1.47, "rotation": 97.49, "width": 34, "height": 63 }
+		},
+		"pelvis": {
+			"pelvis": { "name": "goblin/pelvis", "x": -5.61, "y": 0.76, "width": 62, "height": 43 }
+		},
+		"left lower leg": {
+			"left lower leg": { "name": "goblin/left-lower-leg", "x": 23.58, "y": -2.06, "rotation": 105.75, "width": 33, "height": 70 }
+		},
+		"left upper leg": {
+			"left upper leg": { "name": "goblin/left-upper-leg", "x": 29.68, "y": -3.87, "rotation": 89.09, "width": 33, "height": 73 }
+		},
+		"torso": {
+			"torso": { "name": "goblin/torso", "x": 38.09, "y": -3.87, "rotation": -94.95, "width": 68, "height": 96 }
+		},
+		"right shoulder": {
+			"right shoulder": { "name": "goblin/right-shoulder", "x": 15.68, "y": -1.03, "rotation": 130.65, "width": 39, "height": 45 }
+		},
+		"right foot": {
+			"right foot": { "name": "goblin/right-foot", "x": 23.56, "y": 9.8, "rotation": 1.52, "width": 63, "height": 33 }
+		},
+		"left foot": {
+			"left foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.74, "rotation": 3.32, "width": 65, "height": 31 }
+		},
+		"undie straps": {
+			"undie straps": { "name": "goblin/undie-straps", "x": -3.87, "y": 13.1, "scaleX": 1.089, "width": 55, "height": 19 }
+		},
+		"eyes": {
+			"eyes closed": { "name": "goblin/eyes-closed", "x": 32.21, "y": -21.27, "rotation": -88.92, "width": 34, "height": 12 }
+		}
+	},
+	"goblingirl": {
+		"left upper leg": {
+			"left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 }
+		},
+		"left lower leg": {
+			"left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 }
+		},
+		"left foot": {
+			"left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 }
+		},
+		"right upper leg": {
+			"right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 }
+		},
+		"right lower leg": {
+			"right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 }
+		},
+		"right foot": {
+			"right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 }
+		},
+		"torso": {
+			"torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 }
+		},
+		"left shoulder": {
+			"left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 }
+		},
+		"left arm": {
+			"left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 }
+		},
+		"left hand": {
+			"left hand": {
+				"name": "goblingirl/left-hand",
+				"x": 4.34,
+				"y": 2.39,
+				"scaleX": 0.896,
+				"scaleY": 0.896,
+				"rotation": 30.34,
+				"width": 35,
+				"height": 40
+			}
+		},
+		"neck": {
+			"neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 }
+		},
+		"head": {
+			"head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 }
+		},
+		"right shoulder": {
+			"right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 }
+		},
+		"right arm": {
+			"right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 }
+		},
+		"right hand": {
+			"right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 }
+		},
+		"pelvis": {
+			"pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 }
+		},
+		"undie straps": {
+			"undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 }
+		},
+		"undies": {
+			"undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 }
+		},
+		"eyes": {
+			"eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2333, "angle": 9.51 },
+					{ "time": 0.3666, "angle": 30.74 },
+					{ "time": 0.5, "angle": 25.33 },
+					{ "time": 0.6333, "angle": 26.11 },
+					{ "time": 0.7333, "angle": -7.7 },
+					{ "time": 0.8666, "angle": -21.19 },
+					{ "time": 1, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.32, "y": 1.7 },
+					{ "time": 0.3666, "x": -0.06, "y": 2.42 },
+					{ "time": 1, "x": -1.32, "y": 1.7 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2333, "angle": 8.53 },
+					{ "time": 0.5, "angle": -16.93 },
+					{ "time": 0.6333, "angle": 1.89 },
+					{
+						"time": 0.7333,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 6.23, "y": 0 },
+					{ "time": 0.2333, "x": 2.14, "y": 2.4 },
+					{ "time": 0.5, "x": 2.44, "y": 4.8 },
+					{ "time": 1, "x": 6.23, "y": 0 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -22.98 },
+					{ "time": 0.1333, "angle": -63.5 },
+					{ "time": 0.2333, "angle": -73.76 },
+					{ "time": 0.5, "angle": 5.11 },
+					{ "time": 0.6333, "angle": -28.29 },
+					{ "time": 0.7333, "angle": 4.08 },
+					{ "time": 0.8666, "angle": 3.53 },
+					{ "time": 1, "angle": -22.98 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{ "time": 0.2333, "x": 2.55, "y": -0.47 },
+					{ "time": 0.5, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2333, "angle": -5.01 },
+					{ "time": 0.3666, "angle": 3.87 },
+					{ "time": 0.5, "angle": -3.87 },
+					{ "time": 0.6333, "angle": 2.78 },
+					{ "time": 0.7333, "angle": 1.68 },
+					{ "time": 0.8666, "angle": -8.54 },
+					{ "time": 1, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 5.29,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{ "time": 0.6333, "angle": 6.65 },
+					{ "time": 1, "angle": 5.29 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": 19.78,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 8.98 },
+					{ "time": 0.6333, "angle": 0.51 },
+					{ "time": 1, "angle": 8.98 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 6.25,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -11.78,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 6.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 1.15, "y": 0.23 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -21.23,
+						"curve": [ 0.295, 0, 0.755, 0.98 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -27.28,
+						"curve": [ 0.241, 0, 0.75, 0.97 ]
+					},
+					{ "time": 1, "angle": -21.23 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 28.37,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 60.09,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 28.37 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 0.818, 1 ]
+					},
+					{
+						"time": 0.3666,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 0.669, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": -15.75,
+						"curve": [ 0.235, 0.01, 0.795, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": -7.06,
+						"curve": [ 0.209, 0, 0.816, 0.98 ]
+					},
+					{ "time": 1, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.29, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2333, "angle": -1.91 },
+					{ "time": 0.3666, "angle": -6.45 },
+					{ "time": 0.5, "angle": -5.39 },
+					{ "time": 0.7333, "angle": -11.68 },
+					{ "time": 0.8666, "angle": 0.46 },
+					{ "time": 1, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -3.39,
+						"curve": [ 0.316, 0.01, 0.741, 0.98 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -45.53,
+						"curve": [ 0.229, 0, 0.738, 0.97 ]
+					},
+					{ "time": 0.2333, "angle": -4.83 },
+					{ "time": 0.5, "angle": -19.53 },
+					{ "time": 0.6333, "angle": -64.8 },
+					{
+						"time": 0.7333,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1, "angle": -3.39 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.5, "x": 0, "y": 0 },
+					{ "time": 0.6333, "x": 2.18, "y": 0.21 },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": -4.16 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.3666, "x": 0, "y": 6.78 },
+					{ "time": 0.5, "x": 0, "y": -6.13 },
+					{
+						"time": 0.6333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.8666, "x": 0, "y": 6.78 },
+					{ "time": 1, "x": 0, "y": -4.16 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{ "time": 0.5, "angle": 5.17 },
+					{ "time": 0.6333, "angle": 18.36 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.17 ]
+					},
+					{ "time": 0.1333, "angle": -0.2 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{
+						"time": 0.5,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.6666, "angle": 1.1 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			}
+		},
+		"slots": {
+			"eyes": {
+				"attachment": [
+					{ "time": 0.7, "name": "eyes closed" },
+					{ "time": 0.8, "name": null }
+				]
+			}
+		}
+	}
+}
+}

+ 0 - 101
spine-corona/data/spineboy-skeleton.json

@@ -1,101 +0,0 @@
-{
-"bones": [
-	{ "name": "root", "length": 0 },
-	{ "name": "hip", "parent": "root", "length": 0, "x": 0.64, "y": 114.41 },
-	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
-	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
-	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
-	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
-	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
-	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
-	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
-	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
-	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
-	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
-	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
-	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
-	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
-	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
-	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
-	{ "name": "pelvis", "parent": "hip", "length": 0, "x": 1.41, "y": -6.57 }
-],
-"slots": [
-	{ "name": "template", "bone": "root", "color": "ff898c86" },
-	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
-	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
-	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
-	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
-	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
-	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
-	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
-	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
-	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
-	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
-	{ "name": "torso", "bone": "torso", "attachment": "torso" },
-	{ "name": "neck", "bone": "neck", "attachment": "neck" },
-	{ "name": "head", "bone": "head", "attachment": "head" },
-	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
-	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
-	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
-	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
-],
-"skins": {
-	"default": {
-		"template": {
-			"spineboy": { "y": 167.82, "width": 145, "height": 341 }
-		},
-		"left shoulder": {
-			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
-		},
-		"left arm": {
-			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
-		},
-		"left hand": {
-			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
-		},
-		"left foot": {
-			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
-		},
-		"left lower leg": {
-			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
-		},
-		"left upper leg": {
-			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
-		},
-		"pelvis": {
-			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
-		},
-		"right foot": {
-			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
-		},
-		"right lower leg": {
-			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
-		},
-		"right upper leg": {
-			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
-		},
-		"torso": {
-			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
-		},
-		"neck": {
-			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
-		},
-		"head": {
-			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
-		},
-		"eyes": {
-			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
-			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
-		},
-		"right shoulder": {
-			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
-		},
-		"right arm": {
-			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
-		},
-		"right hand": {
-			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
-		}
-	}
-}
-}

+ 0 - 278
spine-corona/data/spineboy-walk.json

@@ -1,278 +0,0 @@
-{
-"bones": {
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": -26.55 },
-			{ "time": 0.1333, "angle": -8.78 },
-			{ "time": 0.2666, "angle": 9.51 },
-			{ "time": 0.4, "angle": 30.74 },
-			{ "time": 0.5333, "angle": 25.33 },
-			{ "time": 0.6666, "angle": 26.11 },
-			{ "time": 0.8, "angle": -7.7 },
-			{ "time": 0.9333, "angle": -21.19 },
-			{ "time": 1.0666, "angle": -26.55 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3, "y": -2.25 },
-			{ "time": 0.4, "x": -2.18, "y": -2.25 },
-			{ "time": 1.0666, "x": -3, "y": -2.25 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 42.45 },
-			{ "time": 0.1333, "angle": 52.1 },
-			{ "time": 0.2666, "angle": 5.96 },
-			{ "time": 0.5333, "angle": -16.93 },
-			{ "time": 0.6666, "angle": 1.89 },
-			{
-				"time": 0.8,
-				"angle": 28.06,
-				"curve": [ 0.462, 0.11, 1, 1 ]
-			},
-			{
-				"time": 0.9333,
-				"angle": 58.68,
-				"curve": [ 0.5, 0.02, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": 42.45 }
-		],
-		"translate": [
-			{ "time": 0, "x": 8.11, "y": -2.36 },
-			{ "time": 0.1333, "x": 10.03, "y": -2.56 },
-			{ "time": 0.4, "x": 2.76, "y": -2.97 },
-			{ "time": 0.5333, "x": 2.76, "y": -2.81 },
-			{ "time": 0.9333, "x": 8.67, "y": -2.54 },
-			{ "time": 1.0666, "x": 8.11, "y": -2.36 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -10.21 },
-			{ "time": 0.1333, "angle": -55.64 },
-			{ "time": 0.2666, "angle": -68.12 },
-			{ "time": 0.5333, "angle": 5.11 },
-			{ "time": 0.6666, "angle": -28.29 },
-			{ "time": 0.8, "angle": 4.08 },
-			{ "time": 0.9333, "angle": 3.53 },
-			{ "time": 1.0666, "angle": -10.21 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": -3.69 },
-			{ "time": 0.1333, "angle": -10.42 },
-			{ "time": 0.2666, "angle": -17.14 },
-			{ "time": 0.4, "angle": -2.83 },
-			{ "time": 0.5333, "angle": -3.87 },
-			{ "time": 0.6666, "angle": 2.78 },
-			{ "time": 0.8, "angle": 1.68 },
-			{ "time": 0.9333, "angle": -8.54 },
-			{ "time": 1.0666, "angle": -3.69 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 20.89,
-				"curve": [ 0.264, 0, 0.75, 1 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 3.72,
-				"curve": [ 0.272, 0, 0.841, 1 ]
-			},
-			{ "time": 0.6666, "angle": -278.28 },
-			{ "time": 1.0666, "angle": 20.89 }
-		],
-		"translate": [
-			{ "time": 0, "x": -7.84, "y": 7.19 },
-			{ "time": 0.1333, "x": -6.36, "y": 6.42 },
-			{ "time": 0.6666, "x": -11.07, "y": 5.25 },
-			{ "time": 1.0666, "x": -7.84, "y": 7.19 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -4.02,
-				"curve": [ 0.267, 0, 0.804, 0.99 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": -13.99,
-				"curve": [ 0.341, 0, 1, 1 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": 36.54,
-				"curve": [ 0.307, 0, 0.787, 0.99 ]
-			},
-			{ "time": 1.0666, "angle": -4.02 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 22.92 },
-			{ "time": 0.4, "angle": -8.97 },
-			{ "time": 0.6666, "angle": 0.51 },
-			{ "time": 1.0666, "angle": 22.92 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{ "time": 0, "angle": -1.47 },
-			{ "time": 0.1333, "angle": 13.6 },
-			{ "time": 0.6666, "angle": 280.74 },
-			{ "time": 1.0666, "angle": -1.47 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.76, "y": 0.56 },
-			{ "time": 0.6666, "x": -2.47, "y": 8.14 },
-			{ "time": 1.0666, "x": -1.76, "y": 0.56 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 11.58,
-				"curve": [ 0.169, 0.37, 0.632, 1.55 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 28.13,
-				"curve": [ 0.692, 0, 0.692, 0.99 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": -27.42,
-				"curve": [ 0.117, 0.41, 0.738, 1.76 ]
-			},
-			{ "time": 0.8, "angle": -36.32 },
-			{ "time": 1.0666, "angle": 11.58 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{ "time": 0, "angle": -8.27 },
-			{ "time": 0.1333, "angle": 18.43 },
-			{ "time": 0.6666, "angle": 0.88 },
-			{ "time": 1.0666, "angle": -8.27 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -10.28 },
-			{
-				"time": 0.1333,
-				"angle": -15.38,
-				"curve": [ 0.545, 0, 1, 1 ]
-			},
-			{
-				"time": 0.4,
-				"angle": -9.78,
-				"curve": [ 0.58, 0.17, 1, 1 ]
-			},
-			{ "time": 0.6666, "angle": -15.75 },
-			{ "time": 0.9333, "angle": -7.06 },
-			{ "time": 1.0666, "angle": -10.28 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3.67, "y": 1.68 },
-			{ "time": 0.1333, "x": -3.67, "y": 0.68 },
-			{ "time": 0.4, "x": -3.67, "y": 1.97 },
-			{ "time": 0.6666, "x": -3.67, "y": -0.14 },
-			{ "time": 1.0666, "x": -3.67, "y": 1.68 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": -5.25 },
-			{ "time": 0.2666, "angle": -4.08 },
-			{ "time": 0.4, "angle": -6.45 },
-			{ "time": 0.5333, "angle": -5.39 },
-			{ "time": 0.8, "angle": -11.68 },
-			{ "time": 0.9333, "angle": 0.46 },
-			{ "time": 1.0666, "angle": -5.25 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -3.39 },
-			{ "time": 0.1333, "angle": -45.53 },
-			{ "time": 0.2666, "angle": -2.59 },
-			{ "time": 0.5333, "angle": -19.53 },
-			{ "time": 0.6666, "angle": -64.8 },
-			{
-				"time": 0.8,
-				"angle": -82.56,
-				"curve": [ 0.557, 0.18, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": -3.39 }
-		]
-	},
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 1.0666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0 },
-			{
-				"time": 0.1333,
-				"x": 0,
-				"y": -7.61,
-				"curve": [ 0.272, 0.86, 1, 1 ]
-			},
-			{ "time": 0.4, "x": 0, "y": 8.7 },
-			{ "time": 0.5333, "x": 0, "y": -0.41 },
-			{
-				"time": 0.6666,
-				"x": 0,
-				"y": -7.05,
-				"curve": [ 0.235, 0.89, 1, 1 ]
-			},
-			{ "time": 0.8, "x": 0, "y": 2.92 },
-			{ "time": 0.9333, "x": 0, "y": 6.78 },
-			{ "time": 1.0666, "x": 0, "y": 0 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 3.6 },
-			{ "time": 0.1333, "angle": 17.49 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{ "time": 0.5333, "angle": 5.17 },
-			{ "time": 0.6666, "angle": 18.36 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 3.6,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.1666, "angle": -0.2 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{
-				"time": 0.5333,
-				"angle": 5.17,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.7, "angle": 1.1 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	}
-}
-}

+ 787 - 0
spine-corona/data/spineboy.json

@@ -0,0 +1,787 @@
+{
+"bones": [
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
+	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
+	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
+	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
+	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
+	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
+	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
+	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
+	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
+	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
+	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
+	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
+	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
+	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
+	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
+],
+"slots": [
+	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
+	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
+	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
+	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
+	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
+	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
+	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
+	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
+	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
+	{ "name": "torso", "bone": "torso", "attachment": "torso" },
+	{ "name": "neck", "bone": "neck", "attachment": "neck" },
+	{ "name": "head", "bone": "head", "attachment": "head" },
+	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
+	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
+	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
+],
+"skins": {
+	"default": {
+		"left shoulder": {
+			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
+		},
+		"left arm": {
+			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
+		},
+		"left hand": {
+			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
+		},
+		"left foot": {
+			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
+		},
+		"left lower leg": {
+			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
+		},
+		"left upper leg": {
+			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
+		},
+		"pelvis": {
+			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
+		},
+		"right foot": {
+			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
+		},
+		"right lower leg": {
+			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
+		},
+		"right upper leg": {
+			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
+		},
+		"torso": {
+			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
+		},
+		"neck": {
+			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
+		},
+		"head": {
+			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
+		},
+		"eyes": {
+			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
+			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
+		},
+		"right shoulder": {
+			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
+		},
+		"right arm": {
+			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
+		},
+		"right hand": {
+			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2666, "angle": 9.51 },
+					{ "time": 0.4, "angle": 30.74 },
+					{ "time": 0.5333, "angle": 25.33 },
+					{ "time": 0.6666, "angle": 26.11 },
+					{ "time": 0.8, "angle": -7.7 },
+					{ "time": 0.9333, "angle": -21.19 },
+					{ "time": 1.0666, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25 },
+					{ "time": 0.4, "x": -2.18, "y": -2.25 },
+					{ "time": 1.0666, "x": -3, "y": -2.25 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2666, "angle": 5.96 },
+					{ "time": 0.5333, "angle": -16.93 },
+					{ "time": 0.6666, "angle": 1.89 },
+					{
+						"time": 0.8,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.9333,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 8.11, "y": -2.36 },
+					{ "time": 0.1333, "x": 10.03, "y": -2.56 },
+					{ "time": 0.4, "x": 2.76, "y": -2.97 },
+					{ "time": 0.5333, "x": 2.76, "y": -2.81 },
+					{ "time": 0.9333, "x": 8.67, "y": -2.54 },
+					{ "time": 1.0666, "x": 8.11, "y": -2.36 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -10.21 },
+					{ "time": 0.1333, "angle": -55.64 },
+					{ "time": 0.2666, "angle": -68.12 },
+					{ "time": 0.5333, "angle": 5.11 },
+					{ "time": 0.6666, "angle": -28.29 },
+					{ "time": 0.8, "angle": 4.08 },
+					{ "time": 0.9333, "angle": 3.53 },
+					{ "time": 1.0666, "angle": -10.21 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2666, "angle": -17.14 },
+					{ "time": 0.4, "angle": -2.83 },
+					{ "time": 0.5333, "angle": -3.87 },
+					{ "time": 0.6666, "angle": 2.78 },
+					{ "time": 0.8, "angle": 1.68 },
+					{ "time": 0.9333, "angle": -8.54 },
+					{ "time": 1.0666, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 20.89,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 3.72,
+						"curve": [ 0.272, 0, 0.841, 1 ]
+					},
+					{ "time": 0.6666, "angle": -278.28 },
+					{ "time": 1.0666, "angle": 20.89 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19 },
+					{ "time": 0.1333, "x": -6.36, "y": 6.42 },
+					{ "time": 0.6666, "x": -11.07, "y": 5.25 },
+					{ "time": 1.0666, "x": -7.84, "y": 7.19 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -13.99,
+						"curve": [ 0.341, 0, 1, 1 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": 36.54,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1.0666, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92 },
+					{ "time": 0.4, "angle": -8.97 },
+					{ "time": 0.6666, "angle": 0.51 },
+					{ "time": 1.0666, "angle": 22.92 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{ "time": 0, "angle": -1.47 },
+					{ "time": 0.1333, "angle": 13.6 },
+					{ "time": 0.6666, "angle": 280.74 },
+					{ "time": 1.0666, "angle": -1.47 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56 },
+					{ "time": 0.6666, "x": -2.47, "y": 8.14 },
+					{ "time": 1.0666, "x": -1.76, "y": 0.56 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 11.58,
+						"curve": [ 0.169, 0.37, 0.632, 1.55 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 28.13,
+						"curve": [ 0.692, 0, 0.692, 0.99 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": -27.42,
+						"curve": [ 0.117, 0.41, 0.738, 1.76 ]
+					},
+					{ "time": 0.8, "angle": -36.32 },
+					{ "time": 1.0666, "angle": 11.58 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": -8.27 },
+					{ "time": 0.1333, "angle": 18.43 },
+					{ "time": 0.6666, "angle": 0.88 },
+					{ "time": 1.0666, "angle": -8.27 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 1, 1 ]
+					},
+					{
+						"time": 0.4,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 1, 1 ]
+					},
+					{ "time": 0.6666, "angle": -15.75 },
+					{ "time": 0.9333, "angle": -7.06 },
+					{ "time": 1.0666, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68 },
+					{ "time": 0.1333, "x": -3.67, "y": 0.68 },
+					{ "time": 0.4, "x": -3.67, "y": 1.97 },
+					{ "time": 0.6666, "x": -3.67, "y": -0.14 },
+					{ "time": 1.0666, "x": -3.67, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2666, "angle": -4.08 },
+					{ "time": 0.4, "angle": -6.45 },
+					{ "time": 0.5333, "angle": -5.39 },
+					{ "time": 0.8, "angle": -11.68 },
+					{ "time": 0.9333, "angle": 0.46 },
+					{ "time": 1.0666, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -3.39 },
+					{ "time": 0.1333, "angle": -45.53 },
+					{ "time": 0.2666, "angle": -2.59 },
+					{ "time": 0.5333, "angle": -19.53 },
+					{ "time": 0.6666, "angle": -64.8 },
+					{
+						"time": 0.8,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": -3.39 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1.0666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.61,
+						"curve": [ 0.272, 0.86, 1, 1 ]
+					},
+					{ "time": 0.4, "x": 0, "y": 8.7 },
+					{ "time": 0.5333, "x": 0, "y": -0.41 },
+					{
+						"time": 0.6666,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.235, 0.89, 1, 1 ]
+					},
+					{ "time": 0.8, "x": 0, "y": 2.92 },
+					{ "time": 0.9333, "x": 0, "y": 6.78 },
+					{ "time": 1.0666, "x": 0, "y": 0 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{ "time": 0.5333, "angle": 5.17 },
+					{ "time": 0.6666, "angle": 18.36 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.1666, "angle": -0.2 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{
+						"time": 0.5333,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.7, "angle": 1.1 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			}
+		}
+	},
+	"jump": {
+		"bones": {
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 0, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": -11.57, "y": -3 },
+					{ "time": 0.2333, "x": -16.2, "y": -19.43 },
+					{
+						"time": 0.3333,
+						"x": 7.66,
+						"y": -8.48,
+						"curve": [ 0.057, 0.06, 0.712, 1 ]
+					},
+					{ "time": 0.3666, "x": 15.38, "y": 5.01 },
+					{ "time": 0.4666, "x": -7.84, "y": 57.22 },
+					{
+						"time": 0.6,
+						"x": -10.81,
+						"y": 96.34,
+						"curve": [ 0.241, 0, 1, 1 ]
+					},
+					{ "time": 0.7333, "x": -7.01, "y": 54.7 },
+					{ "time": 0.8, "x": -10.58, "y": 32.2 },
+					{ "time": 0.9333, "x": -31.99, "y": 0.45 },
+					{ "time": 1.0666, "x": -12.48, "y": -29.47 },
+					{ "time": 1.3666, "x": -11.57, "y": -3 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 17.13 },
+					{ "time": 0.2333, "angle": 44.35 },
+					{ "time": 0.3333, "angle": 16.46 },
+					{ "time": 0.4, "angle": -9.88 },
+					{ "time": 0.4666, "angle": -11.42 },
+					{ "time": 0.5666, "angle": 23.46 },
+					{ "time": 0.7666, "angle": 71.82 },
+					{ "time": 0.9333, "angle": 65.53 },
+					{ "time": 1.0666, "angle": 51.01 },
+					{ "time": 1.3666, "angle": 17.13 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3, "y": -2.25 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -16.25 },
+					{ "time": 0.2333, "angle": -52.21 },
+					{ "time": 0.4, "angle": 15.04 },
+					{ "time": 0.4666, "angle": -8.95 },
+					{ "time": 0.5666, "angle": -39.53 },
+					{ "time": 0.7666, "angle": -27.27 },
+					{ "time": 0.9333, "angle": -3.52 },
+					{ "time": 1.0666, "angle": -61.92 },
+					{ "time": 1.3666, "angle": -16.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": 0.33 },
+					{ "time": 0.2333, "angle": 6.2 },
+					{ "time": 0.3333, "angle": 14.73 },
+					{ "time": 0.4, "angle": -15.54 },
+					{ "time": 0.4333, "angle": -21.2 },
+					{ "time": 0.5666, "angle": -7.55 },
+					{ "time": 0.7666, "angle": -0.67 },
+					{ "time": 0.9333, "angle": -0.58 },
+					{ "time": 1.0666, "angle": 14.64 },
+					{ "time": 1.3666, "angle": 0.33 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 25.97 },
+					{ "time": 0.2333, "angle": 46.43 },
+					{ "time": 0.3333, "angle": 22.61 },
+					{ "time": 0.4, "angle": 2.13 },
+					{
+						"time": 0.4666,
+						"angle": 0.04,
+						"curve": [ 0, 0, 0.637, 0.98 ]
+					},
+					{ "time": 0.6, "angle": 65.55 },
+					{ "time": 0.7666, "angle": 64.93 },
+					{ "time": 0.9333, "angle": 41.08 },
+					{ "time": 1.0666, "angle": 66.25 },
+					{ "time": 1.3666, "angle": 25.97 }
+				],
+				"translate": [
+					{ "time": 0, "x": 5.74, "y": 0.61 },
+					{ "time": 0.2333, "x": 4.79, "y": 1.79 },
+					{ "time": 0.3333, "x": 6.05, "y": -4.55 },
+					{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
+					{ "time": 1.0666, "x": 4.79, "y": 1.79 },
+					{ "time": 1.3666, "x": 5.74, "y": 0.61 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -27.46 },
+					{ "time": 0.2333, "angle": -64.03 },
+					{ "time": 0.4, "angle": -48.36 },
+					{ "time": 0.5666, "angle": -76.86 },
+					{ "time": 0.7666, "angle": -26.89 },
+					{ "time": 0.9, "angle": -18.97 },
+					{ "time": 0.9333, "angle": -14.18 },
+					{ "time": 1.0666, "angle": -80.45 },
+					{ "time": 1.3666, "angle": -27.46 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": 1.08 },
+					{ "time": 0.2333, "angle": 16.02 },
+					{ "time": 0.3, "angle": 12.94 },
+					{ "time": 0.3333, "angle": 15.16 },
+					{ "time": 0.4, "angle": -14.7 },
+					{ "time": 0.4333, "angle": -12.85 },
+					{ "time": 0.4666, "angle": -19.18 },
+					{ "time": 0.5666, "angle": -15.82 },
+					{ "time": 0.6, "angle": -3.59 },
+					{ "time": 0.7666, "angle": -3.56 },
+					{ "time": 0.9333, "angle": 1.86 },
+					{ "time": 1.0666, "angle": 16.02 },
+					{ "time": 1.3666, "angle": 1.08 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -13.35 },
+					{ "time": 0.2333, "angle": -48.95 },
+					{ "time": 0.4333, "angle": -35.77 },
+					{ "time": 0.6, "angle": -4.59 },
+					{ "time": 0.7666, "angle": 14.61 },
+					{ "time": 0.9333, "angle": 15.74 },
+					{ "time": 1.0666, "angle": -32.44 },
+					{ "time": 1.3666, "angle": -13.35 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3.67, "y": 1.68 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 12.78 },
+					{ "time": 0.2333, "angle": 16.46 },
+					{ "time": 0.4, "angle": 26.49 },
+					{ "time": 0.6, "angle": 15.51 },
+					{ "time": 0.7666, "angle": 1.34 },
+					{ "time": 0.9333, "angle": 2.35 },
+					{ "time": 1.0666, "angle": 6.08 },
+					{ "time": 1.3, "angle": 21.23 },
+					{ "time": 1.3666, "angle": 12.78 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{ "time": 0, "angle": 5.19 },
+					{ "time": 0.2333, "angle": 20.27 },
+					{ "time": 0.4, "angle": 15.27 },
+					{ "time": 0.6, "angle": -24.69 },
+					{ "time": 0.7666, "angle": -11.02 },
+					{ "time": 0.9333, "angle": -24.38 },
+					{ "time": 1.0666, "angle": 11.99 },
+					{ "time": 1.3, "angle": 4.86 },
+					{ "time": 1.3666, "angle": 5.19 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 0.05,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": 279.66,
+						"curve": [ 0.218, 0.67, 0.66, 0.99 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 62.27,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": 28.91 },
+					{ "time": 1.0666, "angle": -8.62 },
+					{ "time": 1.1666, "angle": -18.43 },
+					{ "time": 1.3666, "angle": 0.05 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 1.3666, "x": -1.76, "y": 0.56 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{ "time": 0, "angle": 11.58, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 11.58 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": 0.51 },
+					{ "time": 0.4333, "angle": 12.82 },
+					{ "time": 0.6, "angle": 47.55 },
+					{ "time": 0.9333, "angle": 12.82 },
+					{ "time": 1.1666, "angle": -6.5 },
+					{ "time": 1.3666, "angle": 0.51 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 43.82,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": -8.74,
+						"curve": [ 0.304, 0.58, 0.709, 0.97 ]
+					},
+					{
+						"time": 0.5333,
+						"angle": -208.02,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": -246.72 },
+					{ "time": 1.0666, "angle": -307.13 },
+					{ "time": 1.1666, "angle": 37.15 },
+					{ "time": 1.3666, "angle": 43.82 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 1.3666, "x": -7.84, "y": 7.19 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{ "time": 0, "angle": -4.02 },
+					{ "time": 0.6, "angle": 17.5 },
+					{ "time": 0.9333, "angle": -4.02 },
+					{ "time": 1.1666, "angle": -16.72 },
+					{ "time": 1.3666, "angle": -4.02 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 22.92 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"root": {
+				"rotate": [
+					{ "time": 0, "angle": 0 },
+					{ "time": 0.4333, "angle": -14.52 },
+					{ "time": 0.8, "angle": 9.86 },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			}
+		}
+	}
+}
+}

+ 2 - 2
spine-corona/main.lua

@@ -11,8 +11,8 @@ end
 
 
 local json = spine.SkeletonJson.new(attachmentLoader)
 local json = spine.SkeletonJson.new(attachmentLoader)
 json.scale = 1
 json.scale = 1
-local skeletonData = json:readSkeletonDataFile("data/spineboy-skeleton.json")
-local walkAnimation = json:readAnimationFile(skeletonData, "data/spineboy-walk.json")
+local skeletonData = json:readSkeletonDataFile("data/spineboy.json")
+local walkAnimation = skeletonData:findAnimation("walk")
 
 
 -- Optional second parameter can be the group for the Skeleton to use. Eg, could be an image group.
 -- Optional second parameter can be the group for the Skeleton to use. Eg, could be an image group.
 local skeleton = spine.Skeleton.new(skeletonData)
 local skeleton = spine.Skeleton.new(skeletonData)

+ 2 - 1
spine-corona/spine/Animation.lua

@@ -26,10 +26,11 @@
 local utils = require "spine.utils"
 local utils = require "spine.utils"
 
 
 local Animation = {}
 local Animation = {}
-function Animation.new (timelines, duration)
+function Animation.new (name, timelines, duration)
 	if not timelines then error("timelines cannot be nil", 2) end
 	if not timelines then error("timelines cannot be nil", 2) end
 
 
 	local self = {
 	local self = {
+		name = name,
 		timelines = timelines,
 		timelines = timelines,
 		duration = duration
 		duration = duration
 	}
 	}

+ 10 - 1
spine-corona/spine/SkeletonData.lua

@@ -31,7 +31,8 @@ function SkeletonData.new (attachmentLoader)
 		attachmentLoader = attachmentLoader,
 		attachmentLoader = attachmentLoader,
 		bones = {},
 		bones = {},
 		slots = {},
 		slots = {},
-		skins = {}
+		skins = {},
+		animations = {}
 	}
 	}
 
 
 	function self:findBone (boneName)
 	function self:findBone (boneName)
@@ -74,6 +75,14 @@ function SkeletonData.new (attachmentLoader)
 		return nil
 		return nil
 	end
 	end
 
 
+	function self:findAnimation (animationName)
+		if not animationName then error("animationName cannot be nil.", 2) end
+		for i,animation in ipairs(self.animations) do
+			if animation.name == animationName then return animation end
+		end
+		return nil
+	end
+
 	return self
 	return self
 end
 end
 return SkeletonData
 return SkeletonData

+ 13 - 13
spine-corona/spine/SkeletonJson.lua

@@ -52,6 +52,8 @@ function SkeletonJson.new (attachmentLoader)
 	end
 	end
 
 
 	local readAttachment
 	local readAttachment
+	local readAnimation
+	local readCurve
 
 
 	function self:readSkeletonData (jsonText)
 	function self:readSkeletonData (jsonText)
 		local skeletonData = SkeletonData.new(self.attachmentLoader)
 		local skeletonData = SkeletonData.new(self.attachmentLoader)
@@ -125,6 +127,13 @@ function SkeletonJson.new (attachmentLoader)
 			end
 			end
 		end
 		end
 
 
+		map = root["animations"]
+		if map then
+			for animationName,animationMap in pairs(map) do
+				readAnimation(animationName, animationMap, skeletonData)
+			end
+		end
+
 		return skeletonData
 		return skeletonData
 	end
 	end
 
 
@@ -145,20 +154,11 @@ function SkeletonJson.new (attachmentLoader)
 		return attachment
 		return attachment
 	end
 	end
 
 
-	function self:readAnimationFile (skeletonData, fileName, base)
-		return self:readAnimation(skeletonData, utils.readFile(fileName, base))
-	end
-
-	local readCurve
-	
-	function self:readAnimation (skeletonData, jsonText)
+	readAnimation = function (name, map, skeletonData)
 		local timelines = {}
 		local timelines = {}
 		local duration = 0
 		local duration = 0
 
 
-		local root = json.decode(jsonText)
-		if not root then error("Invalid JSON: " .. jsonText, 2) end
-
-		local bonesMap = root["bones"]
+		local bonesMap = map["bones"]
 		for boneName,timelineMap in pairs(bonesMap) do
 		for boneName,timelineMap in pairs(bonesMap) do
 			local boneIndex = skeletonData:findBoneIndex(boneName)
 			local boneIndex = skeletonData:findBoneIndex(boneName)
 			if boneIndex == -1 then error("Bone not found: " .. boneName) end
 			if boneIndex == -1 then error("Bone not found: " .. boneName) end
@@ -207,7 +207,7 @@ function SkeletonJson.new (attachmentLoader)
 			end
 			end
 		end
 		end
 
 
-		local slotsMap = root["slots"]
+		local slotsMap = map["slots"]
 		if slotsMap then
 		if slotsMap then
 			for slotName,timelineMap in pairs(slotsMap) do
 			for slotName,timelineMap in pairs(slotsMap) do
 				local slotIndex = skeletonData:findSlotIndex(slotName)
 				local slotIndex = skeletonData:findSlotIndex(slotName)
@@ -256,7 +256,7 @@ function SkeletonJson.new (attachmentLoader)
 			end
 			end
 		end
 		end
 
 
-		return Animation.new(timelines, duration)
+		table.insert(skeletonData.animations, Animation.new(name, timelines, duration))
 	end
 	end
 
 
 	readCurve = function (timeline, keyframeIndex, valueMap)
 	readCurve = function (timeline, keyframeIndex, valueMap)

+ 5 - 9
spine-libgdx/src/com/esotericsoftware/spine/Animation.java

@@ -30,12 +30,14 @@ import com.badlogic.gdx.math.MathUtils;
 import com.badlogic.gdx.utils.Array;
 import com.badlogic.gdx.utils.Array;
 
 
 public class Animation {
 public class Animation {
-	private String name;
+	final String name;
 	private final Array<Timeline> timelines;
 	private final Array<Timeline> timelines;
 	private float duration;
 	private float duration;
 
 
-	public Animation (Array<Timeline> timelines, float duration) {
+	public Animation (String name, Array<Timeline> timelines, float duration) {
+		if (name == null) throw new IllegalArgumentException("name cannot be null.");
 		if (timelines == null) throw new IllegalArgumentException("timelines cannot be null.");
 		if (timelines == null) throw new IllegalArgumentException("timelines cannot be null.");
+		this.name = name;
 		this.timelines = timelines;
 		this.timelines = timelines;
 		this.duration = duration;
 		this.duration = duration;
 	}
 	}
@@ -76,18 +78,12 @@ public class Animation {
 			timelines.get(i).apply(skeleton, time, alpha);
 			timelines.get(i).apply(skeleton, time, alpha);
 	}
 	}
 
 
-	/** @return May be null. */
 	public String getName () {
 	public String getName () {
 		return name;
 		return name;
 	}
 	}
 
 
-	/** @param name May be null. */
-	public void setName (String name) {
-		this.name = name;
-	}
-
 	public String toString () {
 	public String toString () {
-		return name != null ? name : super.toString();
+		return name;
 	}
 	}
 
 
 	/** @param target After the first and before the last entry. */
 	/** @param target After the first and before the last entry. */

+ 7 - 0
spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java

@@ -60,6 +60,13 @@ public class AnimationState {
 			current.apply(skeleton, currentTime, currentLoop);
 			current.apply(skeleton, currentTime, currentLoop);
 	}
 	}
 
 
+	/** @see #setAnimation(Animation, boolean) */
+	public void setAnimation (String animationName, boolean loop) {
+		Animation animation = data.getSkeletonData().findAnimation(animationName);
+		if (animation == null) throw new IllegalArgumentException("Animation not found: " + animationName);
+		setAnimation(animation, loop);
+	}
+
 	/** Set the current animation. The current animation time is set to 0.
 	/** Set the current animation. The current animation time is set to 0.
 	 * @param animation May be null. */
 	 * @param animation May be null. */
 	public void setAnimation (Animation animation, boolean loop) {
 	public void setAnimation (Animation animation, boolean loop) {

+ 17 - 1
spine-libgdx/src/com/esotericsoftware/spine/AnimationStateData.java

@@ -29,10 +29,26 @@ import com.badlogic.gdx.utils.ObjectMap;
 
 
 /** Stores mixing times between animations. */
 /** Stores mixing times between animations. */
 public class AnimationStateData {
 public class AnimationStateData {
+	private final SkeletonData skeletonData;
 	final ObjectMap<Key, Float> animationToMixTime = new ObjectMap();
 	final ObjectMap<Key, Float> animationToMixTime = new ObjectMap();
 	final Key tempKey = new Key();
 	final Key tempKey = new Key();
 
 
-	/** Set the mixing duration between two animations. */
+	public AnimationStateData (SkeletonData skeletonData) {
+		this.skeletonData = skeletonData;
+	}
+
+	public SkeletonData getSkeletonData () {
+		return skeletonData;
+	}
+
+	public void setMix (String fromName, String toName, float duration) {
+		Animation from = skeletonData.findAnimation(fromName);
+		if (from == null) throw new IllegalArgumentException("Animation not found: " + fromName);
+		Animation to = skeletonData.findAnimation(toName);
+		if (to == null) throw new IllegalArgumentException("Animation not found: " + toName);
+		setMix(from, to, duration);
+	}
+
 	public void setMix (Animation from, Animation to, float duration) {
 	public void setMix (Animation from, Animation to, float duration) {
 		if (from == null) throw new IllegalArgumentException("from cannot be null.");
 		if (from == null) throw new IllegalArgumentException("from cannot be null.");
 		if (to == null) throw new IllegalArgumentException("to cannot be null.");
 		if (to == null) throw new IllegalArgumentException("to cannot be null.");

+ 3 - 3
spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java

@@ -240,11 +240,11 @@ public class Skeleton {
 	/** @return May be null. */
 	/** @return May be null. */
 	public Attachment getAttachment (int slotIndex, String attachmentName) {
 	public Attachment getAttachment (int slotIndex, String attachmentName) {
 		if (attachmentName == null) throw new IllegalArgumentException("attachmentName cannot be null.");
 		if (attachmentName == null) throw new IllegalArgumentException("attachmentName cannot be null.");
-		if (skin != null) return skin.getAttachment(slotIndex, attachmentName);
-		if (data.defaultSkin != null) {
-			Attachment attachment = data.defaultSkin.getAttachment(slotIndex, attachmentName);
+		if (skin != null) {
+			Attachment attachment = skin.getAttachment(slotIndex, attachmentName);
 			if (attachment != null) return attachment;
 			if (attachment != null) return attachment;
 		}
 		}
+		if (data.defaultSkin != null) return data.defaultSkin.getAttachment(slotIndex, attachmentName);
 		return null;
 		return null;
 	}
 	}
 
 

+ 9 - 10
spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java

@@ -42,6 +42,7 @@ import com.badlogic.gdx.graphics.Color;
 import com.badlogic.gdx.graphics.g2d.TextureAtlas;
 import com.badlogic.gdx.graphics.g2d.TextureAtlas;
 import com.badlogic.gdx.utils.Array;
 import com.badlogic.gdx.utils.Array;
 import com.badlogic.gdx.utils.DataInput;
 import com.badlogic.gdx.utils.DataInput;
+import com.badlogic.gdx.utils.OrderedMap;
 import com.badlogic.gdx.utils.SerializationException;
 import com.badlogic.gdx.utils.SerializationException;
 
 
 import java.io.IOException;
 import java.io.IOException;
@@ -129,6 +130,10 @@ public class SkeletonBinary {
 			for (int i = 0, n = input.readInt(true); i < n; i++)
 			for (int i = 0, n = input.readInt(true); i < n; i++)
 				skeletonData.addSkin(readSkin(input, input.readString()));
 				skeletonData.addSkin(readSkin(input, input.readString()));
 
 
+			// Animations.
+			for (int i = 0, n = input.readInt(true); i < n; i++)
+				readAnimation(input.readString(), input, skeletonData);
+
 			input.close();
 			input.close();
 		} catch (IOException ex) {
 		} catch (IOException ex) {
 			throw new SerializationException("Error reading skeleton file.", ex);
 			throw new SerializationException("Error reading skeleton file.", ex);
@@ -183,19 +188,15 @@ public class SkeletonBinary {
 		return attachment;
 		return attachment;
 	}
 	}
 
 
-	public Animation readAnimation (FileHandle file, SkeletonData skeleton) {
-		if (file == null) throw new IllegalArgumentException("file cannot be null.");
-		if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null.");
-
+	private void readAnimation (String name, DataInput input, SkeletonData skeletonData) {
 		Array<Timeline> timelines = new Array();
 		Array<Timeline> timelines = new Array();
 		float duration = 0;
 		float duration = 0;
 
 
-		DataInput input = new DataInput(file.read(512));
 		try {
 		try {
 			int boneCount = input.readInt(true);
 			int boneCount = input.readInt(true);
 			for (int i = 0; i < boneCount; i++) {
 			for (int i = 0; i < boneCount; i++) {
 				String boneName = input.readString();
 				String boneName = input.readString();
-				int boneIndex = skeleton.findBoneIndex(boneName);
+				int boneIndex = skeletonData.findBoneIndex(boneName);
 				if (boneIndex == -1) throw new SerializationException("Bone not found: " + boneName);
 				if (boneIndex == -1) throw new SerializationException("Bone not found: " + boneName);
 				int itemCount = input.readInt(true);
 				int itemCount = input.readInt(true);
 				for (int ii = 0; ii < itemCount; ii++) {
 				for (int ii = 0; ii < itemCount; ii++) {
@@ -241,7 +242,7 @@ public class SkeletonBinary {
 			int slotCount = input.readInt(true);
 			int slotCount = input.readInt(true);
 			for (int i = 0; i < slotCount; i++) {
 			for (int i = 0; i < slotCount; i++) {
 				String slotName = input.readString();
 				String slotName = input.readString();
-				int slotIndex = skeleton.findSlotIndex(slotName);
+				int slotIndex = skeletonData.findSlotIndex(slotName);
 				int itemCount = input.readInt(true);
 				int itemCount = input.readInt(true);
 				for (int ii = 0; ii < itemCount; ii++) {
 				for (int ii = 0; ii < itemCount; ii++) {
 					int timelineType = input.readByte();
 					int timelineType = input.readByte();
@@ -278,9 +279,7 @@ public class SkeletonBinary {
 		}
 		}
 
 
 		timelines.shrink();
 		timelines.shrink();
-		Animation animation = new Animation(timelines, duration);
-		animation.setName(file.nameWithoutExtension());
-		return animation;
+		skeletonData.addAnimation(new Animation(name, timelines, duration));
 	}
 	}
 
 
 	private void readCurve (DataInput input, int keyframeIndex, CurveTimeline timeline) throws IOException {
 	private void readCurve (DataInput input, int keyframeIndex, CurveTimeline timeline) throws IOException {

+ 23 - 0
spine-libgdx/src/com/esotericsoftware/spine/SkeletonData.java

@@ -33,6 +33,7 @@ public class SkeletonData {
 	final Array<SlotData> slots = new Array(); // Bind pose draw order.
 	final Array<SlotData> slots = new Array(); // Bind pose draw order.
 	final Array<Skin> skins = new Array();
 	final Array<Skin> skins = new Array();
 	Skin defaultSkin;
 	Skin defaultSkin;
+	final Array<Animation> animations = new Array();
 
 
 	public void clear () {
 	public void clear () {
 		bones.clear();
 		bones.clear();
@@ -133,6 +134,28 @@ public class SkeletonData {
 		return skins;
 		return skins;
 	}
 	}
 
 
+	// --- Animations.
+
+	public void addAnimation (Animation animation) {
+		if (animation == null) throw new IllegalArgumentException("animation cannot be null.");
+		animations.add(animation);
+	}
+
+	public Array<Animation> getAnimations () {
+		return animations;
+	}
+
+	/** @return May be null. */
+	public Animation findAnimation (String animationName) {
+		if (animationName == null) throw new IllegalArgumentException("animationName cannot be null.");
+		Array<Animation> animations = this.animations;
+		for (int i = 0, n = animations.size; i < n; i++) {
+			Animation animation = animations.get(i);
+			if (animation.name.equals(animationName)) return animation;
+		}
+		return null;
+	}
+
 	// ---
 	// ---
 
 
 	/** @return May be null. */
 	/** @return May be null. */

+ 14 - 11
spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java

@@ -46,6 +46,8 @@ import com.badlogic.gdx.utils.ObjectMap.Entry;
 import com.badlogic.gdx.utils.OrderedMap;
 import com.badlogic.gdx.utils.OrderedMap;
 import com.badlogic.gdx.utils.SerializationException;
 import com.badlogic.gdx.utils.SerializationException;
 
 
+import java.io.StringWriter;
+
 public class SkeletonJson {
 public class SkeletonJson {
 	static public final String TIMELINE_SCALE = "scale";
 	static public final String TIMELINE_SCALE = "scale";
 	static public final String TIMELINE_ROTATE = "rotate";
 	static public final String TIMELINE_ROTATE = "rotate";
@@ -136,9 +138,17 @@ public class SkeletonJson {
 			}
 			}
 		}
 		}
 
 
+		// Animations.
+		OrderedMap<String, OrderedMap> animationMap = (OrderedMap)root.get("animations");
+		if (animationMap != null) {
+			for (Entry<String, OrderedMap> entry : animationMap.entries())
+				readAnimation(entry.key, entry.value, skeletonData);
+		}
+
 		skeletonData.bones.shrink();
 		skeletonData.bones.shrink();
 		skeletonData.slots.shrink();
 		skeletonData.slots.shrink();
 		skeletonData.skins.shrink();
 		skeletonData.skins.shrink();
+		skeletonData.animations.shrink();
 		return skeletonData;
 		return skeletonData;
 	}
 	}
 
 
@@ -180,12 +190,7 @@ public class SkeletonJson {
 		return (Float)value;
 		return (Float)value;
 	}
 	}
 
 
-	public Animation readAnimation (FileHandle file, SkeletonData skeletonData) {
-		if (file == null) throw new IllegalArgumentException("file cannot be null.");
-		if (skeletonData == null) throw new IllegalArgumentException("skeletonData cannot be null.");
-
-		OrderedMap<String, ?> map = json.fromJson(OrderedMap.class, file);
-
+	private void readAnimation (String name, OrderedMap<String, ?> map, SkeletonData skeletonData) {
 		Array<Timeline> timelines = new Array();
 		Array<Timeline> timelines = new Array();
 		float duration = 0;
 		float duration = 0;
 
 
@@ -228,8 +233,8 @@ public class SkeletonJson {
 					for (OrderedMap valueMap : values) {
 					for (OrderedMap valueMap : values) {
 						float time = (Float)valueMap.get("time");
 						float time = (Float)valueMap.get("time");
 						Float x = (Float)valueMap.get("x"), y = (Float)valueMap.get("y");
 						Float x = (Float)valueMap.get("x"), y = (Float)valueMap.get("y");
-						timeline.setFrame(keyframeIndex, time, x == null ? 0 : (x * timelineScale), y == null ? 0
-							: (y * timelineScale));
+						timeline
+							.setFrame(keyframeIndex, time, x == null ? 0 : (x * timelineScale), y == null ? 0 : (y * timelineScale));
 						readCurve(timeline, keyframeIndex, valueMap);
 						readCurve(timeline, keyframeIndex, valueMap);
 						keyframeIndex++;
 						keyframeIndex++;
 					}
 					}
@@ -285,9 +290,7 @@ public class SkeletonJson {
 		}
 		}
 
 
 		timelines.shrink();
 		timelines.shrink();
-		Animation animation = new Animation(timelines, duration);
-		animation.setName(file.nameWithoutExtension());
-		return animation;
+		skeletonData.addAnimation(new Animation(name, timelines, duration));
 	}
 	}
 
 
 	private void readCurve (CurveTimeline timeline, int keyframeIndex, OrderedMap valueMap) {
 	private void readCurve (CurveTimeline timeline, int keyframeIndex, OrderedMap valueMap) {

+ 8 - 12
spine-libgdx/test/com/esotericsoftware/spine/AnimationStateTest.java

@@ -39,8 +39,6 @@ public class AnimationStateTest extends ApplicationAdapter {
 
 
 	TextureAtlas atlas;
 	TextureAtlas atlas;
 	Skeleton skeleton;
 	Skeleton skeleton;
-	Animation walkAnimation;
-	Animation jumpAnimation;
 	Bone root;
 	Bone root;
 	AnimationState state;
 	AnimationState state;
 
 
@@ -51,16 +49,14 @@ public class AnimationStateTest extends ApplicationAdapter {
 		atlas = new TextureAtlas(Gdx.files.internal("spineboy.atlas"));
 		atlas = new TextureAtlas(Gdx.files.internal("spineboy.atlas"));
 		SkeletonJson json = new SkeletonJson(atlas);
 		SkeletonJson json = new SkeletonJson(atlas);
 		SkeletonData skeletonData = json.readSkeletonData(Gdx.files.internal("spineboy-skeleton.json"));
 		SkeletonData skeletonData = json.readSkeletonData(Gdx.files.internal("spineboy-skeleton.json"));
-		walkAnimation = json.readAnimation(Gdx.files.internal("spineboy-walk.json"), skeletonData);
-		jumpAnimation = json.readAnimation(Gdx.files.internal("spineboy-jump.json"), skeletonData);
 
 
 		// Define mixing between animations.
 		// Define mixing between animations.
-		AnimationStateData mixing = new AnimationStateData();
-		mixing.setMix(walkAnimation, jumpAnimation, 0.4f);
-		mixing.setMix(jumpAnimation, walkAnimation, 0.4f);
+		AnimationStateData stateData = new AnimationStateData(skeletonData);
+		stateData.setMix("walk", "jump", 0.4f);
+		stateData.setMix("jump", "walk", 0.4f);
 
 
-		state = new AnimationState(mixing);
-		state.setAnimation(walkAnimation, true);
+		state = new AnimationState(stateData);
+		state.setAnimation("walk", true);
 
 
 		skeleton = new Skeleton(skeletonData);
 		skeleton = new Skeleton(skeletonData);
 
 
@@ -78,11 +74,11 @@ public class AnimationStateTest extends ApplicationAdapter {
 		batch.begin();
 		batch.begin();
 
 
 		state.apply(skeleton);
 		state.apply(skeleton);
-		if (state.getAnimation() == walkAnimation) {
+		if (state.getAnimation().getName().equals("walk")) {
 			// After one second, change the current animation. Mixing is done by AnimationState for you.
 			// After one second, change the current animation. Mixing is done by AnimationState for you.
-			if (state.getTime() > 2) state.setAnimation(jumpAnimation, false);
+			if (state.getTime() > 2) state.setAnimation("jump", false);
 		} else {
 		} else {
-			if (state.getTime() > 1) state.setAnimation(walkAnimation, true);
+			if (state.getTime() > 1) state.setAnimation("walk", true);
 		}
 		}
 		skeleton.updateWorldTransform();
 		skeleton.updateWorldTransform();
 		skeleton.draw(batch);
 		skeleton.draw(batch);

+ 2 - 4
spine-libgdx/test/com/esotericsoftware/spine/MixTest.java

@@ -57,15 +57,13 @@ public class MixTest extends ApplicationAdapter {
 			SkeletonJson json = new SkeletonJson(atlas);
 			SkeletonJson json = new SkeletonJson(atlas);
 			// json.setScale(2);
 			// json.setScale(2);
 			skeletonData = json.readSkeletonData(Gdx.files.internal(name + "-skeleton.json"));
 			skeletonData = json.readSkeletonData(Gdx.files.internal(name + "-skeleton.json"));
-			walkAnimation = json.readAnimation(Gdx.files.internal(name + "-walk.json"), skeletonData);
-			jumpAnimation = json.readAnimation(Gdx.files.internal(name + "-jump.json"), skeletonData);
 		} else {
 		} else {
 			SkeletonBinary binary = new SkeletonBinary(atlas);
 			SkeletonBinary binary = new SkeletonBinary(atlas);
 			// binary.setScale(2);
 			// binary.setScale(2);
 			skeletonData = binary.readSkeletonData(Gdx.files.internal(name + ".skel"));
 			skeletonData = binary.readSkeletonData(Gdx.files.internal(name + ".skel"));
-			walkAnimation = binary.readAnimation(Gdx.files.internal(name + "-walk.anim"), skeletonData);
-			jumpAnimation = binary.readAnimation(Gdx.files.internal(name + "-jump.anim"), skeletonData);
 		}
 		}
+		walkAnimation = skeletonData.findAnimation("walk");
+		jumpAnimation = skeletonData.findAnimation("jump");
 
 
 		skeleton = new Skeleton(skeletonData);
 		skeleton = new Skeleton(skeletonData);
 		skeleton.setToBindPose();
 		skeleton.setToBindPose();

+ 3 - 4
spine-libgdx/test/com/esotericsoftware/spine/SkeletonTest.java

@@ -56,7 +56,7 @@ public class SkeletonTest extends ApplicationAdapter {
 		batch = new SpriteBatch();
 		batch = new SpriteBatch();
 		renderer = new ShapeRenderer();
 		renderer = new ShapeRenderer();
 
 
-		final String name = "goblins";
+		final String name = "goblins"; // "spineboy";
 
 
 		// A regular texture atlas would normally usually be used. This returns a white image for images not found in the atlas.
 		// A regular texture atlas would normally usually be used. This returns a white image for images not found in the atlas.
 		Pixmap pixmap = new Pixmap(32, 32, Format.RGBA8888);
 		Pixmap pixmap = new Pixmap(32, 32, Format.RGBA8888);
@@ -76,14 +76,13 @@ public class SkeletonTest extends ApplicationAdapter {
 		if (true) {
 		if (true) {
 			SkeletonJson json = new SkeletonJson(atlas);
 			SkeletonJson json = new SkeletonJson(atlas);
 			// json.setScale(2);
 			// json.setScale(2);
-			skeletonData = json.readSkeletonData(Gdx.files.internal(name + "-skeleton.json"));
-			animation = json.readAnimation(Gdx.files.internal(name + "-walk.json"), skeletonData);
+			skeletonData = json.readSkeletonData(Gdx.files.internal(name + ".json"));
 		} else {
 		} else {
 			SkeletonBinary binary = new SkeletonBinary(atlas);
 			SkeletonBinary binary = new SkeletonBinary(atlas);
 			// binary.setScale(2);
 			// binary.setScale(2);
 			skeletonData = binary.readSkeletonData(Gdx.files.internal(name + ".skel"));
 			skeletonData = binary.readSkeletonData(Gdx.files.internal(name + ".skel"));
-			animation = binary.readAnimation(Gdx.files.internal(name + "-walk.anim"), skeletonData);
 		}
 		}
+		animation = skeletonData.findAnimation("walk");
 
 
 		skeleton = new Skeleton(skeletonData);
 		skeleton = new Skeleton(skeletonData);
 		if (name.equals("goblins")) skeleton.setSkin("goblin");
 		if (name.equals("goblins")) skeleton.setSkin("goblin");

二進制
spine-libgdx/test/goblins-walk.anim


+ 0 - 288
spine-libgdx/test/goblins-walk.json

@@ -1,288 +0,0 @@
-{
-"bones": {
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": -26.55 },
-			{ "time": 0.1333, "angle": -8.78 },
-			{ "time": 0.2666, "angle": 9.51 },
-			{ "time": 0.4, "angle": 30.74 },
-			{ "time": 0.5333, "angle": 25.33 },
-			{ "time": 0.6666, "angle": 26.11 },
-			{ "time": 0.8, "angle": -7.7 },
-			{ "time": 0.9333, "angle": -21.19 },
-			{ "time": 1.0666, "angle": -26.55 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.32, "y": 1.7 },
-			{ "time": 0.4, "x": -0.06, "y": 2.42 },
-			{ "time": 1.0666, "x": -1.32, "y": 1.7 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 42.45 },
-			{ "time": 0.1333, "angle": 52.1 },
-			{ "time": 0.2666, "angle": 8.53 },
-			{ "time": 0.5333, "angle": -16.93 },
-			{ "time": 0.6666, "angle": 1.89 },
-			{
-				"time": 0.8,
-				"angle": 28.06,
-				"curve": [ 0.462, 0.11, 1, 1 ]
-			},
-			{
-				"time": 0.9333,
-				"angle": 58.68,
-				"curve": [ 0.5, 0.02, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": 42.45 }
-		],
-		"translate": [
-			{ "time": 0, "x": 6.23, "y": 0 },
-			{ "time": 0.2666, "x": 2.14, "y": 2.4 },
-			{ "time": 0.5333, "x": 2.44, "y": 4.8 },
-			{ "time": 1.0666, "x": 6.23, "y": 0 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -22.98 },
-			{ "time": 0.1333, "angle": -63.5 },
-			{ "time": 0.2666, "angle": -73.76 },
-			{ "time": 0.5333, "angle": 5.11 },
-			{ "time": 0.6666, "angle": -28.29 },
-			{ "time": 0.8, "angle": 4.08 },
-			{ "time": 0.9333, "angle": 3.53 },
-			{ "time": 1.0666, "angle": -22.98 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0 },
-			{ "time": 0.2666, "x": 2.55, "y": -0.47 },
-			{ "time": 0.5333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.0666, "x": 0, "y": 0 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": -3.69 },
-			{ "time": 0.1333, "angle": -10.42 },
-			{ "time": 0.2666, "angle": -5.01 },
-			{ "time": 0.4, "angle": 3.87 },
-			{ "time": 0.5333, "angle": -3.87 },
-			{ "time": 0.6666, "angle": 2.78 },
-			{ "time": 0.8, "angle": 1.68 },
-			{ "time": 0.9333, "angle": -8.54 },
-			{ "time": 1.0666, "angle": -3.69 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 5.29,
-				"curve": [ 0.264, 0, 0.75, 1 ]
-			},
-			{ "time": 0.6666, "angle": 6.65 },
-			{ "time": 1.0666, "angle": 5.29 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -4.02,
-				"curve": [ 0.267, 0, 0.804, 0.99 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": 19.78,
-				"curve": [ 0.307, 0, 0.787, 0.99 ]
-			},
-			{ "time": 1.0666, "angle": -4.02 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 8.98 },
-			{ "time": 0.6666, "angle": 0.51 },
-			{ "time": 1.0666, "angle": 8.98 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 6.25,
-				"curve": [ 0.339, 0, 0.683, 1 ]
-			},
-			{
-				"time": 0.5333,
-				"angle": -11.78,
-				"curve": [ 0.281, 0, 0.686, 0.99 ]
-			},
-			{ "time": 1.0666, "angle": 6.25 }
-		],
-		"translate": [
-			{ "time": 0, "x": 1.15, "y": 0.23 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -21.23,
-				"curve": [ 0.295, 0, 0.755, 0.98 ]
-			},
-			{
-				"time": 0.5333,
-				"angle": -27.28,
-				"curve": [ 0.241, 0, 0.75, 0.97 ]
-			},
-			{ "time": 1.0666, "angle": -21.23 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 28.37,
-				"curve": [ 0.339, 0, 0.683, 1 ]
-			},
-			{
-				"time": 0.5333,
-				"angle": 60.09,
-				"curve": [ 0.281, 0, 0.686, 0.99 ]
-			},
-			{ "time": 1.0666, "angle": 28.37 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -10.28 },
-			{
-				"time": 0.1333,
-				"angle": -15.38,
-				"curve": [ 0.545, 0, 0.818, 1 ]
-			},
-			{
-				"time": 0.4,
-				"angle": -9.78,
-				"curve": [ 0.58, 0.17, 0.669, 0.99 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": -15.75,
-				"curve": [ 0.235, 0.01, 0.795, 1 ]
-			},
-			{
-				"time": 0.9333,
-				"angle": -7.06,
-				"curve": [ 0.209, 0, 0.816, 0.98 ]
-			},
-			{ "time": 1.0666, "angle": -10.28 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.29, "y": 1.68 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": -5.25 },
-			{ "time": 0.2666, "angle": -1.91 },
-			{ "time": 0.4, "angle": -6.45 },
-			{ "time": 0.5333, "angle": -5.39 },
-			{ "time": 0.8, "angle": -11.68 },
-			{ "time": 0.9333, "angle": 0.46 },
-			{ "time": 1.0666, "angle": -5.25 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -3.39,
-				"curve": [ 0.316, 0.01, 0.741, 0.98 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": -45.53,
-				"curve": [ 0.229, 0, 0.738, 0.97 ]
-			},
-			{ "time": 0.2666, "angle": -4.83 },
-			{ "time": 0.5333, "angle": -19.53 },
-			{ "time": 0.6666, "angle": -64.8 },
-			{
-				"time": 0.8,
-				"angle": -82.56,
-				"curve": [ 0.557, 0.18, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": -3.39 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.5333, "x": 0, "y": 0 },
-			{ "time": 0.6666, "x": 2.18, "y": 0.21 },
-			{ "time": 1.0666, "x": 0, "y": 0 }
-		]
-	},
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 1.0666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": -4.16 },
-			{
-				"time": 0.1333,
-				"x": 0,
-				"y": -7.05,
-				"curve": [ 0.359, 0.47, 0.646, 0.74 ]
-			},
-			{ "time": 0.4, "x": 0, "y": 6.78 },
-			{ "time": 0.5333, "x": 0, "y": -6.13 },
-			{
-				"time": 0.6666,
-				"x": 0,
-				"y": -7.05,
-				"curve": [ 0.359, 0.47, 0.646, 0.74 ]
-			},
-			{ "time": 0.9333, "x": 0, "y": 6.78 },
-			{ "time": 1.0666, "x": 0, "y": -4.16 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 3.6 },
-			{ "time": 0.1333, "angle": 17.49 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{ "time": 0.5333, "angle": 5.17 },
-			{ "time": 0.6666, "angle": 18.36 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 3.6,
-				"curve": [ 0, 0, 0.704, 1.17 ]
-			},
-			{ "time": 0.1333, "angle": -0.2 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{
-				"time": 0.5333,
-				"angle": 5.17,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.7, "angle": 1.1 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	}
-}
-}

+ 140 - 152
spine-libgdx/test/goblins.atlas

@@ -3,295 +3,283 @@ goblins.png
 format: RGBA8888
 format: RGBA8888
 filter: Linear,Linear
 filter: Linear,Linear
 repeat: none
 repeat: none
-goblin/spear
+spear
   rotate: false
   rotate: false
-  xy: 1, 123
+  xy: 2, 142
   size: 22, 368
   size: 22, 368
   orig: 22, 368
   orig: 22, 368
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
+goblingirl/head
+  rotate: false
+  xy: 26, 429
+  size: 103, 81
+  orig: 103, 81
+  offset: 0, 0
+  index: -1
 goblin/head
 goblin/head
   rotate: false
   rotate: false
-  xy: 25, 425
+  xy: 26, 361
   size: 103, 66
   size: 103, 66
   orig: 103, 66
   orig: 103, 66
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
 goblin/torso
 goblin/torso
   rotate: false
   rotate: false
-  xy: 25, 327
+  xy: 131, 414
+  size: 68, 96
+  orig: 68, 96
+  offset: 0, 0
+  index: -1
+goblingirl/torso
+  rotate: false
+  xy: 26, 263
   size: 68, 96
   size: 68, 96
   orig: 68, 96
   orig: 68, 96
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblin/shield
+dagger
   rotate: false
   rotate: false
-  xy: 25, 253
-  size: 70, 72
-  orig: 70, 72
+  xy: 26, 153
+  size: 26, 108
+  orig: 26, 108
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
 goblin/right-lower-leg
 goblin/right-lower-leg
   rotate: false
   rotate: false
-  xy: 25, 175
+  xy: 201, 434
+  size: 36, 76
+  orig: 36, 76
+  offset: 0, 0
+  index: -1
+goblingirl/right-lower-leg
+  rotate: false
+  xy: 54, 185
   size: 36, 76
   size: 36, 76
   orig: 36, 76
   orig: 36, 76
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
 goblin/left-upper-leg
 goblin/left-upper-leg
   rotate: false
   rotate: false
-  xy: 95, 350
+  xy: 96, 286
   size: 33, 73
   size: 33, 73
   orig: 33, 73
   orig: 33, 73
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
 goblin/pelvis
 goblin/pelvis
   rotate: false
   rotate: false
-  xy: 130, 448
+  xy: 131, 369
   size: 62, 43
   size: 62, 43
   orig: 62, 43
   orig: 62, 43
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblin/left-lower-leg
-  rotate: false
-  xy: 130, 376
-  size: 33, 70
-  orig: 33, 70
-  offset: 0, 0
-  index: -1
-goblin/right-upper-leg
-  rotate: false
-  xy: 63, 188
-  size: 34, 63
-  orig: 34, 63
-  offset: 0, 0
-  index: -1
-goblin/right-shoulder
-  rotate: false
-  xy: 194, 446
-  size: 39, 45
-  orig: 39, 45
-  offset: 0, 0
-  index: -1
-goblin/left-hand
+goblingirl/pelvis
   rotate: false
   rotate: false
-  xy: 25, 132
-  size: 36, 41
-  orig: 36, 41
+  xy: 131, 324
+  size: 62, 43
+  orig: 62, 43
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblin/neck
+goblin/right-foot
   rotate: false
   rotate: false
-  xy: 63, 145
-  size: 36, 41
-  orig: 36, 41
+  xy: 131, 289
+  size: 63, 33
+  orig: 63, 33
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblin/right-arm
+goblin/left-lower-leg
   rotate: false
   rotate: false
-  xy: 165, 396
-  size: 23, 50
-  orig: 23, 50
+  xy: 2, 70
+  size: 33, 70
+  orig: 33, 70
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblin/left-foot
+goblin/right-upper-leg
   rotate: false
   rotate: false
-  xy: 190, 413
-  size: 65, 31
-  orig: 65, 31
+  xy: 2, 5
+  size: 34, 63
+  orig: 34, 63
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblin/right-foot
+goblingirl/left-lower-leg
   rotate: false
   rotate: false
-  xy: 190, 378
-  size: 63, 33
-  orig: 63, 33
+  xy: 195, 342
+  size: 33, 70
+  orig: 33, 70
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblin/left-shoulder
+goblingirl/left-upper-leg
   rotate: false
   rotate: false
-  xy: 1, 77
-  size: 29, 44
-  orig: 29, 44
+  xy: 37, 81
+  size: 33, 70
+  orig: 33, 70
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblin/right-hand
+goblingirl/right-upper-leg
   rotate: false
   rotate: false
-  xy: 1, 38
-  size: 36, 37
-  orig: 36, 37
+  xy: 38, 16
+  size: 34, 63
+  orig: 34, 63
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblin/left-arm
+goblin/eyes-closed
   rotate: false
   rotate: false
-  xy: 1, 1
-  size: 37, 35
-  orig: 37, 35
+  xy: 38, 2
+  size: 34, 12
+  orig: 34, 12
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
 goblin/undies
 goblin/undies
   rotate: false
   rotate: false
-  xy: 130, 345
+  xy: 54, 154
   size: 36, 29
   size: 36, 29
   orig: 36, 29
   orig: 36, 29
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblin/undie-straps
+goblin/right-arm
   rotate: false
   rotate: false
-  xy: 168, 357
-  size: 55, 19
-  orig: 55, 19
+  xy: 72, 102
+  size: 23, 50
+  orig: 23, 50
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-
-goblins2.png
-format: RGBA8888
-filter: Nearest,Nearest
-repeat: none
-goblingirl/goblingirl
+goblin/left-foot
   rotate: false
   rotate: false
-  xy: 1, 217
-  size: 148, 294
-  orig: 148, 294
+  xy: 131, 256
+  size: 65, 31
+  orig: 65, 31
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/head
+goblingirl/right-arm
   rotate: false
   rotate: false
-  xy: 1, 134
-  size: 103, 81
-  orig: 103, 81
+  xy: 196, 290
+  size: 28, 50
+  orig: 28, 50
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/torso
+goblingirl/left-shoulder
   rotate: false
   rotate: false
-  xy: 151, 415
-  size: 68, 96
-  orig: 68, 96
+  xy: 226, 294
+  size: 28, 46
+  orig: 28, 46
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/right-upper-leg
+goblin/left-arm
   rotate: false
   rotate: false
-  xy: 221, 448
-  size: 34, 63
-  orig: 34, 63
+  xy: 198, 253
+  size: 37, 35
+  orig: 37, 35
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/dagger
+goblingirl/left-foot
   rotate: false
   rotate: false
-  xy: 1, 24
-  size: 26, 108
-  orig: 26, 108
+  xy: 92, 223
+  size: 65, 31
+  orig: 65, 31
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/right-lower-leg
+goblingirl/right-foot
   rotate: false
   rotate: false
-  xy: 106, 139
-  size: 36, 76
-  orig: 36, 76
+  xy: 92, 188
+  size: 63, 33
+  orig: 63, 33
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/pelvis
+goblin/undie-straps
   rotate: false
   rotate: false
-  xy: 151, 370
-  size: 62, 43
-  orig: 62, 43
+  xy: 92, 167
+  size: 55, 19
+  orig: 55, 19
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/left-lower-leg
+goblingirl/left-arm
   rotate: false
   rotate: false
-  xy: 29, 62
-  size: 33, 70
-  orig: 33, 70
+  xy: 159, 219
+  size: 37, 35
+  orig: 37, 35
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/left-upper-leg
+goblin/right-shoulder
   rotate: false
   rotate: false
-  xy: 151, 298
-  size: 33, 70
-  orig: 33, 70
+  xy: 97, 120
+  size: 39, 45
+  orig: 39, 45
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
 goblingirl/right-shoulder
 goblingirl/right-shoulder
   rotate: false
   rotate: false
-  xy: 64, 87
+  xy: 198, 206
   size: 39, 45
   size: 39, 45
   orig: 39, 45
   orig: 39, 45
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/right-arm
-  rotate: false
-  xy: 151, 246
-  size: 28, 50
-  orig: 28, 50
-  offset: 0, 0
-  index: -1
-goblingirl/left-shoulder
+goblin/left-hand
   rotate: false
   rotate: false
-  xy: 186, 322
-  size: 28, 46
-  orig: 28, 46
+  xy: 157, 176
+  size: 36, 41
+  orig: 36, 41
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/left-hand
+goblin/neck
   rotate: false
   rotate: false
-  xy: 29, 20
-  size: 35, 40
-  orig: 35, 40
+  xy: 195, 163
+  size: 36, 41
+  orig: 36, 41
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
 goblingirl/undie-straps
 goblingirl/undie-straps
   rotate: false
   rotate: false
-  xy: 64, 66
+  xy: 97, 99
   size: 55, 19
   size: 55, 19
   orig: 55, 19
   orig: 55, 19
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/right-foot
+goblingirl/neck
   rotate: false
   rotate: false
-  xy: 66, 31
-  size: 63, 33
-  orig: 63, 33
+  xy: 138, 120
+  size: 35, 41
+  orig: 35, 41
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/left-arm
+goblingirl/left-hand
   rotate: false
   rotate: false
-  xy: 151, 209
-  size: 37, 35
-  orig: 37, 35
+  xy: 175, 121
+  size: 35, 40
+  orig: 35, 40
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/neck
+goblin/left-shoulder
   rotate: false
   rotate: false
-  xy: 144, 166
-  size: 35, 41
-  orig: 35, 41
+  xy: 212, 117
+  size: 29, 44
+  orig: 29, 44
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/left-foot
+goblingirl/eyes-closed
   rotate: false
   rotate: false
-  xy: 144, 133
-  size: 65, 31
-  orig: 65, 31
+  xy: 154, 97
+  size: 37, 21
+  orig: 37, 21
+  offset: 0, 0
+  index: -1
+goblin/right-hand
+  rotate: false
+  xy: 193, 78
+  size: 36, 37
+  orig: 36, 37
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
 goblingirl/right-hand
 goblingirl/right-hand
   rotate: false
   rotate: false
-  xy: 186, 283
+  xy: 74, 39
   size: 36, 37
   size: 36, 37
   orig: 36, 37
   orig: 36, 37
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
 goblingirl/undies
 goblingirl/undies
   rotate: false
   rotate: false
-  xy: 181, 252
+  xy: 74, 8
   size: 36, 29
   size: 36, 29
   orig: 36, 29
   orig: 36, 29
   offset: 0, 0
   offset: 0, 0
   index: -1
   index: -1
-goblingirl/dagger-tip
-  rotate: false
-  xy: 1, 1
-  size: 17, 17
-  orig: 17, 17
-  offset: 0, 0
-  index: -1

+ 499 - 0
spine-libgdx/test/goblins.json

@@ -0,0 +1,499 @@
+{
+"bones": [
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
+	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
+	{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
+	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
+	{ "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 },
+	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 },
+	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
+	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 },
+	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 },
+	{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 },
+	{ "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 },
+	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 },
+	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
+	{ "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 },
+	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
+],
+"slots": [
+	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
+	{ "name": "left arm", "bone": "left arm", "attachment": "left arm" },
+	{ "name": "left hand item", "bone": "left hand", "attachment": "spear" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
+	{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
+	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
+	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" },
+	{ "name": "neck", "bone": "neck", "attachment": "neck" },
+	{ "name": "torso", "bone": "torso", "attachment": "torso" },
+	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
+	{ "name": "right foot", "bone": "right foot", "attachment": "right foot" },
+	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" },
+	{ "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" },
+	{ "name": "undies", "bone": "pelvis", "attachment": "undies" },
+	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" },
+	{ "name": "head", "bone": "head", "attachment": "head" },
+	{ "name": "eyes", "bone": "head" },
+	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" },
+	{ "name": "right arm", "bone": "right arm", "attachment": "right arm" },
+	{ "name": "right hand item", "bone": "right hand", "attachment": "dagger" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right hand" }
+],
+"skins": {
+	"default": {
+		"left hand item": {
+			"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
+			"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
+		},
+		"right hand item": {
+			"dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 }
+		}
+	},
+	"goblin": {
+		"neck": {
+			"neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.69, "width": 36, "height": 41 }
+		},
+		"undies": {
+			"undies": { "name": "goblin/undies", "x": 6.3, "y": 0.12, "rotation": 0.91, "width": 36, "height": 29 }
+		},
+		"right hand": {
+			"right hand": { "name": "goblin/right-hand", "x": 7.88, "y": 2.78, "rotation": 91.96, "width": 36, "height": 37 }
+		},
+		"right arm": {
+			"right arm": { "name": "goblin/right-arm", "x": 16.44, "y": -1.04, "rotation": 94.32, "width": 23, "height": 50 }
+		},
+		"head": {
+			"head": { "name": "goblin/head", "x": 25.73, "y": 2.33, "rotation": -92.29, "width": 103, "height": 66 }
+		},
+		"left shoulder": {
+			"left shoulder": { "name": "goblin/left-shoulder", "x": 15.56, "y": -2.26, "rotation": 62.01, "width": 29, "height": 44 }
+		},
+		"left arm": {
+			"left arm": {
+				"name": "goblin/left-arm",
+				"x": 16.7,
+				"y": -1.69,
+				"scaleX": 1.057,
+				"scaleY": 1.057,
+				"rotation": 33.84,
+				"width": 37,
+				"height": 35
+			}
+		},
+		"left hand": {
+			"left hand": {
+				"name": "goblin/left-hand",
+				"x": 3.47,
+				"y": 3.41,
+				"scaleX": 0.892,
+				"scaleY": 0.892,
+				"rotation": 31.14,
+				"width": 36,
+				"height": 41
+			}
+		},
+		"right lower leg": {
+			"right lower leg": { "name": "goblin/right-lower-leg", "x": 25.68, "y": -3.15, "rotation": 111.83, "width": 36, "height": 76 }
+		},
+		"right upper leg": {
+			"right upper leg": { "name": "goblin/right-upper-leg", "x": 20.35, "y": 1.47, "rotation": 97.49, "width": 34, "height": 63 }
+		},
+		"pelvis": {
+			"pelvis": { "name": "goblin/pelvis", "x": -5.61, "y": 0.76, "width": 62, "height": 43 }
+		},
+		"left lower leg": {
+			"left lower leg": { "name": "goblin/left-lower-leg", "x": 23.58, "y": -2.06, "rotation": 105.75, "width": 33, "height": 70 }
+		},
+		"left upper leg": {
+			"left upper leg": { "name": "goblin/left-upper-leg", "x": 29.68, "y": -3.87, "rotation": 89.09, "width": 33, "height": 73 }
+		},
+		"torso": {
+			"torso": { "name": "goblin/torso", "x": 38.09, "y": -3.87, "rotation": -94.95, "width": 68, "height": 96 }
+		},
+		"right shoulder": {
+			"right shoulder": { "name": "goblin/right-shoulder", "x": 15.68, "y": -1.03, "rotation": 130.65, "width": 39, "height": 45 }
+		},
+		"right foot": {
+			"right foot": { "name": "goblin/right-foot", "x": 23.56, "y": 9.8, "rotation": 1.52, "width": 63, "height": 33 }
+		},
+		"left foot": {
+			"left foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.74, "rotation": 3.32, "width": 65, "height": 31 }
+		},
+		"undie straps": {
+			"undie straps": { "name": "goblin/undie-straps", "x": -3.87, "y": 13.1, "scaleX": 1.089, "width": 55, "height": 19 }
+		},
+		"eyes": {
+			"eyes closed": { "name": "goblin/eyes-closed", "x": 32.21, "y": -21.27, "rotation": -88.92, "width": 34, "height": 12 }
+		}
+	},
+	"goblingirl": {
+		"left upper leg": {
+			"left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 }
+		},
+		"left lower leg": {
+			"left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 }
+		},
+		"left foot": {
+			"left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 }
+		},
+		"right upper leg": {
+			"right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 }
+		},
+		"right lower leg": {
+			"right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 }
+		},
+		"right foot": {
+			"right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 }
+		},
+		"torso": {
+			"torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 }
+		},
+		"left shoulder": {
+			"left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 }
+		},
+		"left arm": {
+			"left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 }
+		},
+		"left hand": {
+			"left hand": {
+				"name": "goblingirl/left-hand",
+				"x": 4.34,
+				"y": 2.39,
+				"scaleX": 0.896,
+				"scaleY": 0.896,
+				"rotation": 30.34,
+				"width": 35,
+				"height": 40
+			}
+		},
+		"neck": {
+			"neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 }
+		},
+		"head": {
+			"head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 }
+		},
+		"right shoulder": {
+			"right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 }
+		},
+		"right arm": {
+			"right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 }
+		},
+		"right hand": {
+			"right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 }
+		},
+		"pelvis": {
+			"pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 }
+		},
+		"undie straps": {
+			"undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 }
+		},
+		"undies": {
+			"undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 }
+		},
+		"eyes": {
+			"eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2333, "angle": 9.51 },
+					{ "time": 0.3666, "angle": 30.74 },
+					{ "time": 0.5, "angle": 25.33 },
+					{ "time": 0.6333, "angle": 26.11 },
+					{ "time": 0.7333, "angle": -7.7 },
+					{ "time": 0.8666, "angle": -21.19 },
+					{ "time": 1, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.32, "y": 1.7 },
+					{ "time": 0.3666, "x": -0.06, "y": 2.42 },
+					{ "time": 1, "x": -1.32, "y": 1.7 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2333, "angle": 8.53 },
+					{ "time": 0.5, "angle": -16.93 },
+					{ "time": 0.6333, "angle": 1.89 },
+					{
+						"time": 0.7333,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 6.23, "y": 0 },
+					{ "time": 0.2333, "x": 2.14, "y": 2.4 },
+					{ "time": 0.5, "x": 2.44, "y": 4.8 },
+					{ "time": 1, "x": 6.23, "y": 0 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -22.98 },
+					{ "time": 0.1333, "angle": -63.5 },
+					{ "time": 0.2333, "angle": -73.76 },
+					{ "time": 0.5, "angle": 5.11 },
+					{ "time": 0.6333, "angle": -28.29 },
+					{ "time": 0.7333, "angle": 4.08 },
+					{ "time": 0.8666, "angle": 3.53 },
+					{ "time": 1, "angle": -22.98 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{ "time": 0.2333, "x": 2.55, "y": -0.47 },
+					{ "time": 0.5, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2333, "angle": -5.01 },
+					{ "time": 0.3666, "angle": 3.87 },
+					{ "time": 0.5, "angle": -3.87 },
+					{ "time": 0.6333, "angle": 2.78 },
+					{ "time": 0.7333, "angle": 1.68 },
+					{ "time": 0.8666, "angle": -8.54 },
+					{ "time": 1, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 5.29,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{ "time": 0.6333, "angle": 6.65 },
+					{ "time": 1, "angle": 5.29 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": 19.78,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 8.98 },
+					{ "time": 0.6333, "angle": 0.51 },
+					{ "time": 1, "angle": 8.98 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 6.25,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -11.78,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 6.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 1.15, "y": 0.23 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -21.23,
+						"curve": [ 0.295, 0, 0.755, 0.98 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -27.28,
+						"curve": [ 0.241, 0, 0.75, 0.97 ]
+					},
+					{ "time": 1, "angle": -21.23 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 28.37,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 60.09,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 28.37 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 0.818, 1 ]
+					},
+					{
+						"time": 0.3666,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 0.669, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": -15.75,
+						"curve": [ 0.235, 0.01, 0.795, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": -7.06,
+						"curve": [ 0.209, 0, 0.816, 0.98 ]
+					},
+					{ "time": 1, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.29, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2333, "angle": -1.91 },
+					{ "time": 0.3666, "angle": -6.45 },
+					{ "time": 0.5, "angle": -5.39 },
+					{ "time": 0.7333, "angle": -11.68 },
+					{ "time": 0.8666, "angle": 0.46 },
+					{ "time": 1, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -3.39,
+						"curve": [ 0.316, 0.01, 0.741, 0.98 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -45.53,
+						"curve": [ 0.229, 0, 0.738, 0.97 ]
+					},
+					{ "time": 0.2333, "angle": -4.83 },
+					{ "time": 0.5, "angle": -19.53 },
+					{ "time": 0.6333, "angle": -64.8 },
+					{
+						"time": 0.7333,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1, "angle": -3.39 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.5, "x": 0, "y": 0 },
+					{ "time": 0.6333, "x": 2.18, "y": 0.21 },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": -4.16 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.3666, "x": 0, "y": 6.78 },
+					{ "time": 0.5, "x": 0, "y": -6.13 },
+					{
+						"time": 0.6333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.8666, "x": 0, "y": 6.78 },
+					{ "time": 1, "x": 0, "y": -4.16 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{ "time": 0.5, "angle": 5.17 },
+					{ "time": 0.6333, "angle": 18.36 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.17 ]
+					},
+					{ "time": 0.1333, "angle": -0.2 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{
+						"time": 0.5,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.6666, "angle": 1.1 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			}
+		},
+		"slots": {
+			"eyes": {
+				"attachment": [
+					{ "time": 0.7, "name": "eyes closed" },
+					{ "time": 0.8, "name": null }
+				]
+			}
+		}
+	}
+}
+}

二進制
spine-libgdx/test/goblins.png


二進制
spine-libgdx/test/goblins.skel


二進制
spine-libgdx/test/goblins2.png


二進制
spine-libgdx/test/spineboy-jump.anim


+ 0 - 410
spine-libgdx/test/spineboy-jump.json

@@ -1,410 +0,0 @@
-{
-"bones": {
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 0, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": -11.57, "y": -3 },
-			{ "time": 0.2333, "x": -16.2, "y": -19.43 },
-			{
-				"time": 0.3333,
-				"x": 7.66,
-				"y": -8.48,
-				"curve": [ 0.057, 0.06, 0.712, 1 ]
-			},
-			{ "time": 0.3666, "x": 15.38, "y": 5.01 },
-			{ "time": 0.4666, "x": -7.84, "y": 57.22 },
-			{
-				"time": 0.6,
-				"x": -10.81,
-				"y": 96.34,
-				"curve": [ 0.241, 0, 1, 1 ]
-			},
-			{ "time": 0.7333, "x": -7.01, "y": 54.7 },
-			{ "time": 0.8, "x": -10.58, "y": 32.2 },
-			{ "time": 0.9333, "x": -31.99, "y": 0.45 },
-			{ "time": 1.0666, "x": -12.48, "y": -29.47 },
-			{ "time": 1.3666, "x": -11.57, "y": -3 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 17.13 },
-			{ "time": 0.2333, "angle": 44.35 },
-			{ "time": 0.3333, "angle": 16.46 },
-			{ "time": 0.4, "angle": -9.88 },
-			{ "time": 0.4666, "angle": -11.42 },
-			{ "time": 0.5666, "angle": 23.46 },
-			{ "time": 0.7666, "angle": 71.82 },
-			{ "time": 0.9333, "angle": 65.53 },
-			{ "time": 1.0666, "angle": 51.01 },
-			{ "time": 1.3666, "angle": 17.13 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
-			{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
-			{ "time": 1.3666, "x": -3, "y": -2.25 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -16.25 },
-			{ "time": 0.2333, "angle": -52.21 },
-			{ "time": 0.4, "angle": 15.04 },
-			{ "time": 0.4666, "angle": -8.95 },
-			{ "time": 0.5666, "angle": -39.53 },
-			{ "time": 0.7666, "angle": -27.27 },
-			{ "time": 0.9333, "angle": -3.52 },
-			{ "time": 1.0666, "angle": -61.92 },
-			{ "time": 1.3666, "angle": -16.25 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": 0.33 },
-			{ "time": 0.2333, "angle": 6.2 },
-			{ "time": 0.3333, "angle": 14.73 },
-			{ "time": 0.4, "angle": -15.54 },
-			{ "time": 0.4333, "angle": -21.2 },
-			{ "time": 0.5666, "angle": -7.55 },
-			{ "time": 0.7666, "angle": -0.67 },
-			{ "time": 0.9333, "angle": -0.58 },
-			{ "time": 1.0666, "angle": 14.64 },
-			{ "time": 1.3666, "angle": 0.33 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 25.97 },
-			{ "time": 0.2333, "angle": 46.43 },
-			{ "time": 0.3333, "angle": 22.61 },
-			{ "time": 0.4, "angle": 2.13 },
-			{
-				"time": 0.4666,
-				"angle": 0.04,
-				"curve": [ 0, 0, 0.637, 0.98 ]
-			},
-			{ "time": 0.6, "angle": 65.55 },
-			{ "time": 0.7666, "angle": 64.93 },
-			{ "time": 0.9333, "angle": 41.08 },
-			{ "time": 1.0666, "angle": 66.25 },
-			{ "time": 1.3666, "angle": 25.97 }
-		],
-		"translate": [
-			{ "time": 0, "x": 5.74, "y": 0.61 },
-			{ "time": 0.2333, "x": 4.79, "y": 1.79 },
-			{ "time": 0.3333, "x": 6.05, "y": -4.55 },
-			{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
-			{ "time": 1.0666, "x": 4.79, "y": 1.79 },
-			{ "time": 1.3666, "x": 5.74, "y": 0.61 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -27.46 },
-			{ "time": 0.2333, "angle": -64.03 },
-			{ "time": 0.4, "angle": -48.36 },
-			{ "time": 0.5666, "angle": -76.86 },
-			{ "time": 0.7666, "angle": -26.89 },
-			{ "time": 0.9, "angle": -18.97 },
-			{ "time": 0.9333, "angle": -14.18 },
-			{ "time": 1.0666, "angle": -80.45 },
-			{ "time": 1.3666, "angle": -27.46 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": 1.08 },
-			{ "time": 0.2333, "angle": 16.02 },
-			{ "time": 0.3, "angle": 12.94 },
-			{ "time": 0.3333, "angle": 15.16 },
-			{ "time": 0.4, "angle": -14.7 },
-			{ "time": 0.4333, "angle": -12.85 },
-			{ "time": 0.4666, "angle": -19.18 },
-			{ "time": 0.5666, "angle": -15.82 },
-			{ "time": 0.6, "angle": -3.59 },
-			{ "time": 0.7666, "angle": -3.56 },
-			{ "time": 0.9333, "angle": 1.86 },
-			{ "time": 1.0666, "angle": 16.02 },
-			{ "time": 1.3666, "angle": 1.08 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -13.35 },
-			{ "time": 0.2333, "angle": -48.95 },
-			{ "time": 0.4333, "angle": -35.77 },
-			{ "time": 0.6, "angle": -4.59 },
-			{ "time": 0.7666, "angle": 14.61 },
-			{ "time": 0.9333, "angle": 15.74 },
-			{ "time": 1.0666, "angle": -32.44 },
-			{ "time": 1.3666, "angle": -13.35 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
-			{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
-			{ "time": 1.3666, "x": -3.67, "y": 1.68 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 12.78 },
-			{ "time": 0.2333, "angle": 16.46 },
-			{ "time": 0.4, "angle": 26.49 },
-			{ "time": 0.6, "angle": 15.51 },
-			{ "time": 0.7666, "angle": 1.34 },
-			{ "time": 0.9333, "angle": 2.35 },
-			{ "time": 1.0666, "angle": 6.08 },
-			{ "time": 1.3, "angle": 21.23 },
-			{ "time": 1.3666, "angle": 12.78 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{ "time": 0, "angle": 5.19 },
-			{ "time": 0.2333, "angle": 20.27 },
-			{ "time": 0.4, "angle": 15.27 },
-			{ "time": 0.6, "angle": -24.69 },
-			{ "time": 0.7666, "angle": -11.02 },
-			{ "time": 0.9333, "angle": -24.38 },
-			{ "time": 1.0666, "angle": 11.99 },
-			{ "time": 1.3, "angle": 4.86 },
-			{ "time": 1.3666, "angle": 5.19 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 0.05,
-				"curve": [ 0, 0, 0.62, 1 ]
-			},
-			{
-				"time": 0.2333,
-				"angle": 279.66,
-				"curve": [ 0.218, 0.67, 0.66, 0.99 ]
-			},
-			{
-				"time": 0.5,
-				"angle": 62.27,
-				"curve": [ 0.462, 0, 0.764, 0.58 ]
-			},
-			{ "time": 0.9333, "angle": 28.91 },
-			{ "time": 1.0666, "angle": -8.62 },
-			{ "time": 1.1666, "angle": -18.43 },
-			{ "time": 1.3666, "angle": 0.05 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
-			{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
-			{ "time": 1.3666, "x": -1.76, "y": 0.56 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{ "time": 0, "angle": 11.58, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 11.58 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{ "time": 0, "angle": 0.51 },
-			{ "time": 0.4333, "angle": 12.82 },
-			{ "time": 0.6, "angle": 47.55 },
-			{ "time": 0.9333, "angle": 12.82 },
-			{ "time": 1.1666, "angle": -6.5 },
-			{ "time": 1.3666, "angle": 0.51 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 43.82,
-				"curve": [ 0, 0, 0.62, 1 ]
-			},
-			{
-				"time": 0.2333,
-				"angle": -8.74,
-				"curve": [ 0.304, 0.58, 0.709, 0.97 ]
-			},
-			{
-				"time": 0.5333,
-				"angle": -208.02,
-				"curve": [ 0.462, 0, 0.764, 0.58 ]
-			},
-			{ "time": 0.9333, "angle": -246.72 },
-			{ "time": 1.0666, "angle": -307.13 },
-			{ "time": 1.1666, "angle": 37.15 },
-			{ "time": 1.3666, "angle": 43.82 }
-		],
-		"translate": [
-			{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
-			{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
-			{ "time": 1.3666, "x": -7.84, "y": 7.19 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{ "time": 0, "angle": -4.02 },
-			{ "time": 0.6, "angle": 17.5 },
-			{ "time": 0.9333, "angle": -4.02 },
-			{ "time": 1.1666, "angle": -16.72 },
-			{ "time": 1.3666, "angle": -4.02 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 22.92, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 22.92 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"root": {
-		"rotate": [
-			{ "time": 0, "angle": 0 },
-			{ "time": 0.4333, "angle": -14.52 },
-			{ "time": 0.8, "angle": 9.86 },
-			{ "time": 1.3666, "angle": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	}
-}
-}

+ 0 - 98
spine-libgdx/test/spineboy-skeleton.json

@@ -1,98 +0,0 @@
-{
-"bones": [
-	{ "name": "root", "length": 0 },
-	{ "name": "hip", "parent": "root", "length": 0, "x": 0.64, "y": 114.41 },
-	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
-	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
-	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
-	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
-	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
-	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
-	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
-	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
-	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
-	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
-	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
-	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
-	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
-	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
-	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
-	{ "name": "pelvis", "parent": "hip", "length": 0, "x": 1.41, "y": -6.57 }
-],
-"slots": [
-	{ "name": "template", "bone": "root", "color": "ff898c86" },
-	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
-	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
-	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
-	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
-	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
-	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
-	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
-	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
-	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
-	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
-	{ "name": "torso", "bone": "torso", "attachment": "torso" },
-	{ "name": "neck", "bone": "neck", "attachment": "neck" },
-	{ "name": "head", "bone": "head", "attachment": "head" },
-	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
-	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
-	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
-	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
-],
-"skins": {
-	"default": {
-		"left shoulder": {
-			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
-		},
-		"left arm": {
-			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
-		},
-		"left hand": {
-			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
-		},
-		"left foot": {
-			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
-		},
-		"left lower leg": {
-			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
-		},
-		"left upper leg": {
-			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
-		},
-		"pelvis": {
-			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
-		},
-		"right foot": {
-			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
-		},
-		"right lower leg": {
-			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
-		},
-		"right upper leg": {
-			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
-		},
-		"torso": {
-			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
-		},
-		"neck": {
-			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
-		},
-		"head": {
-			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
-		},
-		"eyes": {
-			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
-			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
-		},
-		"right shoulder": {
-			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
-		},
-		"right arm": {
-			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
-		},
-		"right hand": {
-			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
-		}
-	}
-}
-}

二進制
spine-libgdx/test/spineboy-walk.anim


+ 0 - 278
spine-libgdx/test/spineboy-walk.json

@@ -1,278 +0,0 @@
-{
-"bones": {
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": -26.55 },
-			{ "time": 0.1333, "angle": -8.78 },
-			{ "time": 0.2666, "angle": 9.51 },
-			{ "time": 0.4, "angle": 30.74 },
-			{ "time": 0.5333, "angle": 25.33 },
-			{ "time": 0.6666, "angle": 26.11 },
-			{ "time": 0.8, "angle": -7.7 },
-			{ "time": 0.9333, "angle": -21.19 },
-			{ "time": 1.0666, "angle": -26.55 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3, "y": -2.25 },
-			{ "time": 0.4, "x": -2.18, "y": -2.25 },
-			{ "time": 1.0666, "x": -3, "y": -2.25 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 42.45 },
-			{ "time": 0.1333, "angle": 52.1 },
-			{ "time": 0.2666, "angle": 5.96 },
-			{ "time": 0.5333, "angle": -16.93 },
-			{ "time": 0.6666, "angle": 1.89 },
-			{
-				"time": 0.8,
-				"angle": 28.06,
-				"curve": [ 0.462, 0.11, 1, 1 ]
-			},
-			{
-				"time": 0.9333,
-				"angle": 58.68,
-				"curve": [ 0.5, 0.02, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": 42.45 }
-		],
-		"translate": [
-			{ "time": 0, "x": 8.11, "y": -2.36 },
-			{ "time": 0.1333, "x": 10.03, "y": -2.56 },
-			{ "time": 0.4, "x": 2.76, "y": -2.97 },
-			{ "time": 0.5333, "x": 2.76, "y": -2.81 },
-			{ "time": 0.9333, "x": 8.67, "y": -2.54 },
-			{ "time": 1.0666, "x": 8.11, "y": -2.36 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -10.21 },
-			{ "time": 0.1333, "angle": -55.64 },
-			{ "time": 0.2666, "angle": -68.12 },
-			{ "time": 0.5333, "angle": 5.11 },
-			{ "time": 0.6666, "angle": -28.29 },
-			{ "time": 0.8, "angle": 4.08 },
-			{ "time": 0.9333, "angle": 3.53 },
-			{ "time": 1.0666, "angle": -10.21 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": -3.69 },
-			{ "time": 0.1333, "angle": -10.42 },
-			{ "time": 0.2666, "angle": -17.14 },
-			{ "time": 0.4, "angle": -2.83 },
-			{ "time": 0.5333, "angle": -3.87 },
-			{ "time": 0.6666, "angle": 2.78 },
-			{ "time": 0.8, "angle": 1.68 },
-			{ "time": 0.9333, "angle": -8.54 },
-			{ "time": 1.0666, "angle": -3.69 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 20.89,
-				"curve": [ 0.264, 0, 0.75, 1 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 3.72,
-				"curve": [ 0.272, 0, 0.841, 1 ]
-			},
-			{ "time": 0.6666, "angle": -278.28 },
-			{ "time": 1.0666, "angle": 20.89 }
-		],
-		"translate": [
-			{ "time": 0, "x": -7.84, "y": 7.19 },
-			{ "time": 0.1333, "x": -6.36, "y": 6.42 },
-			{ "time": 0.6666, "x": -11.07, "y": 5.25 },
-			{ "time": 1.0666, "x": -7.84, "y": 7.19 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -4.02,
-				"curve": [ 0.267, 0, 0.804, 0.99 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": -13.99,
-				"curve": [ 0.341, 0, 1, 1 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": 36.54,
-				"curve": [ 0.307, 0, 0.787, 0.99 ]
-			},
-			{ "time": 1.0666, "angle": -4.02 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 22.92 },
-			{ "time": 0.4, "angle": -8.97 },
-			{ "time": 0.6666, "angle": 0.51 },
-			{ "time": 1.0666, "angle": 22.92 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{ "time": 0, "angle": -1.47 },
-			{ "time": 0.1333, "angle": 13.6 },
-			{ "time": 0.6666, "angle": 280.74 },
-			{ "time": 1.0666, "angle": -1.47 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.76, "y": 0.56 },
-			{ "time": 0.6666, "x": -2.47, "y": 8.14 },
-			{ "time": 1.0666, "x": -1.76, "y": 0.56 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 11.58,
-				"curve": [ 0.169, 0.37, 0.632, 1.55 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 28.13,
-				"curve": [ 0.692, 0, 0.692, 0.99 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": -27.42,
-				"curve": [ 0.117, 0.41, 0.738, 1.76 ]
-			},
-			{ "time": 0.8, "angle": -36.32 },
-			{ "time": 1.0666, "angle": 11.58 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{ "time": 0, "angle": -8.27 },
-			{ "time": 0.1333, "angle": 18.43 },
-			{ "time": 0.6666, "angle": 0.88 },
-			{ "time": 1.0666, "angle": -8.27 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -10.28 },
-			{
-				"time": 0.1333,
-				"angle": -15.38,
-				"curve": [ 0.545, 0, 1, 1 ]
-			},
-			{
-				"time": 0.4,
-				"angle": -9.78,
-				"curve": [ 0.58, 0.17, 1, 1 ]
-			},
-			{ "time": 0.6666, "angle": -15.75 },
-			{ "time": 0.9333, "angle": -7.06 },
-			{ "time": 1.0666, "angle": -10.28 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3.67, "y": 1.68 },
-			{ "time": 0.1333, "x": -3.67, "y": 0.68 },
-			{ "time": 0.4, "x": -3.67, "y": 1.97 },
-			{ "time": 0.6666, "x": -3.67, "y": -0.14 },
-			{ "time": 1.0666, "x": -3.67, "y": 1.68 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": -5.25 },
-			{ "time": 0.2666, "angle": -4.08 },
-			{ "time": 0.4, "angle": -6.45 },
-			{ "time": 0.5333, "angle": -5.39 },
-			{ "time": 0.8, "angle": -11.68 },
-			{ "time": 0.9333, "angle": 0.46 },
-			{ "time": 1.0666, "angle": -5.25 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -3.39 },
-			{ "time": 0.1333, "angle": -45.53 },
-			{ "time": 0.2666, "angle": -2.59 },
-			{ "time": 0.5333, "angle": -19.53 },
-			{ "time": 0.6666, "angle": -64.8 },
-			{
-				"time": 0.8,
-				"angle": -82.56,
-				"curve": [ 0.557, 0.18, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": -3.39 }
-		]
-	},
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 1.0666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0 },
-			{
-				"time": 0.1333,
-				"x": 0,
-				"y": -7.61,
-				"curve": [ 0.272, 0.86, 1, 1 ]
-			},
-			{ "time": 0.4, "x": 0, "y": 8.7 },
-			{ "time": 0.5333, "x": 0, "y": -0.41 },
-			{
-				"time": 0.6666,
-				"x": 0,
-				"y": -7.05,
-				"curve": [ 0.235, 0.89, 1, 1 ]
-			},
-			{ "time": 0.8, "x": 0, "y": 2.92 },
-			{ "time": 0.9333, "x": 0, "y": 6.78 },
-			{ "time": 1.0666, "x": 0, "y": 0 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 3.6 },
-			{ "time": 0.1333, "angle": 17.49 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{ "time": 0.5333, "angle": 5.17 },
-			{ "time": 0.6666, "angle": 18.36 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 3.6,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.1666, "angle": -0.2 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{
-				"time": 0.5333,
-				"angle": 5.17,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.7, "angle": 1.1 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	}
-}
-}

+ 787 - 0
spine-libgdx/test/spineboy.json

@@ -0,0 +1,787 @@
+{
+"bones": [
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
+	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
+	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
+	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
+	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
+	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
+	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
+	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
+	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
+	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
+	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
+	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
+	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
+	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
+	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
+],
+"slots": [
+	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
+	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
+	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
+	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
+	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
+	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
+	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
+	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
+	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
+	{ "name": "torso", "bone": "torso", "attachment": "torso" },
+	{ "name": "neck", "bone": "neck", "attachment": "neck" },
+	{ "name": "head", "bone": "head", "attachment": "head" },
+	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
+	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
+	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
+],
+"skins": {
+	"default": {
+		"left shoulder": {
+			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
+		},
+		"left arm": {
+			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
+		},
+		"left hand": {
+			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
+		},
+		"left foot": {
+			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
+		},
+		"left lower leg": {
+			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
+		},
+		"left upper leg": {
+			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
+		},
+		"pelvis": {
+			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
+		},
+		"right foot": {
+			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
+		},
+		"right lower leg": {
+			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
+		},
+		"right upper leg": {
+			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
+		},
+		"torso": {
+			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
+		},
+		"neck": {
+			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
+		},
+		"head": {
+			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
+		},
+		"eyes": {
+			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
+			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
+		},
+		"right shoulder": {
+			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
+		},
+		"right arm": {
+			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
+		},
+		"right hand": {
+			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2666, "angle": 9.51 },
+					{ "time": 0.4, "angle": 30.74 },
+					{ "time": 0.5333, "angle": 25.33 },
+					{ "time": 0.6666, "angle": 26.11 },
+					{ "time": 0.8, "angle": -7.7 },
+					{ "time": 0.9333, "angle": -21.19 },
+					{ "time": 1.0666, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25 },
+					{ "time": 0.4, "x": -2.18, "y": -2.25 },
+					{ "time": 1.0666, "x": -3, "y": -2.25 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2666, "angle": 5.96 },
+					{ "time": 0.5333, "angle": -16.93 },
+					{ "time": 0.6666, "angle": 1.89 },
+					{
+						"time": 0.8,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.9333,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 8.11, "y": -2.36 },
+					{ "time": 0.1333, "x": 10.03, "y": -2.56 },
+					{ "time": 0.4, "x": 2.76, "y": -2.97 },
+					{ "time": 0.5333, "x": 2.76, "y": -2.81 },
+					{ "time": 0.9333, "x": 8.67, "y": -2.54 },
+					{ "time": 1.0666, "x": 8.11, "y": -2.36 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -10.21 },
+					{ "time": 0.1333, "angle": -55.64 },
+					{ "time": 0.2666, "angle": -68.12 },
+					{ "time": 0.5333, "angle": 5.11 },
+					{ "time": 0.6666, "angle": -28.29 },
+					{ "time": 0.8, "angle": 4.08 },
+					{ "time": 0.9333, "angle": 3.53 },
+					{ "time": 1.0666, "angle": -10.21 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2666, "angle": -17.14 },
+					{ "time": 0.4, "angle": -2.83 },
+					{ "time": 0.5333, "angle": -3.87 },
+					{ "time": 0.6666, "angle": 2.78 },
+					{ "time": 0.8, "angle": 1.68 },
+					{ "time": 0.9333, "angle": -8.54 },
+					{ "time": 1.0666, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 20.89,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 3.72,
+						"curve": [ 0.272, 0, 0.841, 1 ]
+					},
+					{ "time": 0.6666, "angle": -278.28 },
+					{ "time": 1.0666, "angle": 20.89 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19 },
+					{ "time": 0.1333, "x": -6.36, "y": 6.42 },
+					{ "time": 0.6666, "x": -11.07, "y": 5.25 },
+					{ "time": 1.0666, "x": -7.84, "y": 7.19 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -13.99,
+						"curve": [ 0.341, 0, 1, 1 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": 36.54,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1.0666, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92 },
+					{ "time": 0.4, "angle": -8.97 },
+					{ "time": 0.6666, "angle": 0.51 },
+					{ "time": 1.0666, "angle": 22.92 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{ "time": 0, "angle": -1.47 },
+					{ "time": 0.1333, "angle": 13.6 },
+					{ "time": 0.6666, "angle": 280.74 },
+					{ "time": 1.0666, "angle": -1.47 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56 },
+					{ "time": 0.6666, "x": -2.47, "y": 8.14 },
+					{ "time": 1.0666, "x": -1.76, "y": 0.56 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 11.58,
+						"curve": [ 0.169, 0.37, 0.632, 1.55 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 28.13,
+						"curve": [ 0.692, 0, 0.692, 0.99 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": -27.42,
+						"curve": [ 0.117, 0.41, 0.738, 1.76 ]
+					},
+					{ "time": 0.8, "angle": -36.32 },
+					{ "time": 1.0666, "angle": 11.58 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": -8.27 },
+					{ "time": 0.1333, "angle": 18.43 },
+					{ "time": 0.6666, "angle": 0.88 },
+					{ "time": 1.0666, "angle": -8.27 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 1, 1 ]
+					},
+					{
+						"time": 0.4,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 1, 1 ]
+					},
+					{ "time": 0.6666, "angle": -15.75 },
+					{ "time": 0.9333, "angle": -7.06 },
+					{ "time": 1.0666, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68 },
+					{ "time": 0.1333, "x": -3.67, "y": 0.68 },
+					{ "time": 0.4, "x": -3.67, "y": 1.97 },
+					{ "time": 0.6666, "x": -3.67, "y": -0.14 },
+					{ "time": 1.0666, "x": -3.67, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2666, "angle": -4.08 },
+					{ "time": 0.4, "angle": -6.45 },
+					{ "time": 0.5333, "angle": -5.39 },
+					{ "time": 0.8, "angle": -11.68 },
+					{ "time": 0.9333, "angle": 0.46 },
+					{ "time": 1.0666, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -3.39 },
+					{ "time": 0.1333, "angle": -45.53 },
+					{ "time": 0.2666, "angle": -2.59 },
+					{ "time": 0.5333, "angle": -19.53 },
+					{ "time": 0.6666, "angle": -64.8 },
+					{
+						"time": 0.8,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": -3.39 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1.0666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.61,
+						"curve": [ 0.272, 0.86, 1, 1 ]
+					},
+					{ "time": 0.4, "x": 0, "y": 8.7 },
+					{ "time": 0.5333, "x": 0, "y": -0.41 },
+					{
+						"time": 0.6666,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.235, 0.89, 1, 1 ]
+					},
+					{ "time": 0.8, "x": 0, "y": 2.92 },
+					{ "time": 0.9333, "x": 0, "y": 6.78 },
+					{ "time": 1.0666, "x": 0, "y": 0 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{ "time": 0.5333, "angle": 5.17 },
+					{ "time": 0.6666, "angle": 18.36 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.1666, "angle": -0.2 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{
+						"time": 0.5333,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.7, "angle": 1.1 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			}
+		}
+	},
+	"jump": {
+		"bones": {
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 0, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": -11.57, "y": -3 },
+					{ "time": 0.2333, "x": -16.2, "y": -19.43 },
+					{
+						"time": 0.3333,
+						"x": 7.66,
+						"y": -8.48,
+						"curve": [ 0.057, 0.06, 0.712, 1 ]
+					},
+					{ "time": 0.3666, "x": 15.38, "y": 5.01 },
+					{ "time": 0.4666, "x": -7.84, "y": 57.22 },
+					{
+						"time": 0.6,
+						"x": -10.81,
+						"y": 96.34,
+						"curve": [ 0.241, 0, 1, 1 ]
+					},
+					{ "time": 0.7333, "x": -7.01, "y": 54.7 },
+					{ "time": 0.8, "x": -10.58, "y": 32.2 },
+					{ "time": 0.9333, "x": -31.99, "y": 0.45 },
+					{ "time": 1.0666, "x": -12.48, "y": -29.47 },
+					{ "time": 1.3666, "x": -11.57, "y": -3 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 17.13 },
+					{ "time": 0.2333, "angle": 44.35 },
+					{ "time": 0.3333, "angle": 16.46 },
+					{ "time": 0.4, "angle": -9.88 },
+					{ "time": 0.4666, "angle": -11.42 },
+					{ "time": 0.5666, "angle": 23.46 },
+					{ "time": 0.7666, "angle": 71.82 },
+					{ "time": 0.9333, "angle": 65.53 },
+					{ "time": 1.0666, "angle": 51.01 },
+					{ "time": 1.3666, "angle": 17.13 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3, "y": -2.25 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -16.25 },
+					{ "time": 0.2333, "angle": -52.21 },
+					{ "time": 0.4, "angle": 15.04 },
+					{ "time": 0.4666, "angle": -8.95 },
+					{ "time": 0.5666, "angle": -39.53 },
+					{ "time": 0.7666, "angle": -27.27 },
+					{ "time": 0.9333, "angle": -3.52 },
+					{ "time": 1.0666, "angle": -61.92 },
+					{ "time": 1.3666, "angle": -16.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": 0.33 },
+					{ "time": 0.2333, "angle": 6.2 },
+					{ "time": 0.3333, "angle": 14.73 },
+					{ "time": 0.4, "angle": -15.54 },
+					{ "time": 0.4333, "angle": -21.2 },
+					{ "time": 0.5666, "angle": -7.55 },
+					{ "time": 0.7666, "angle": -0.67 },
+					{ "time": 0.9333, "angle": -0.58 },
+					{ "time": 1.0666, "angle": 14.64 },
+					{ "time": 1.3666, "angle": 0.33 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 25.97 },
+					{ "time": 0.2333, "angle": 46.43 },
+					{ "time": 0.3333, "angle": 22.61 },
+					{ "time": 0.4, "angle": 2.13 },
+					{
+						"time": 0.4666,
+						"angle": 0.04,
+						"curve": [ 0, 0, 0.637, 0.98 ]
+					},
+					{ "time": 0.6, "angle": 65.55 },
+					{ "time": 0.7666, "angle": 64.93 },
+					{ "time": 0.9333, "angle": 41.08 },
+					{ "time": 1.0666, "angle": 66.25 },
+					{ "time": 1.3666, "angle": 25.97 }
+				],
+				"translate": [
+					{ "time": 0, "x": 5.74, "y": 0.61 },
+					{ "time": 0.2333, "x": 4.79, "y": 1.79 },
+					{ "time": 0.3333, "x": 6.05, "y": -4.55 },
+					{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
+					{ "time": 1.0666, "x": 4.79, "y": 1.79 },
+					{ "time": 1.3666, "x": 5.74, "y": 0.61 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -27.46 },
+					{ "time": 0.2333, "angle": -64.03 },
+					{ "time": 0.4, "angle": -48.36 },
+					{ "time": 0.5666, "angle": -76.86 },
+					{ "time": 0.7666, "angle": -26.89 },
+					{ "time": 0.9, "angle": -18.97 },
+					{ "time": 0.9333, "angle": -14.18 },
+					{ "time": 1.0666, "angle": -80.45 },
+					{ "time": 1.3666, "angle": -27.46 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": 1.08 },
+					{ "time": 0.2333, "angle": 16.02 },
+					{ "time": 0.3, "angle": 12.94 },
+					{ "time": 0.3333, "angle": 15.16 },
+					{ "time": 0.4, "angle": -14.7 },
+					{ "time": 0.4333, "angle": -12.85 },
+					{ "time": 0.4666, "angle": -19.18 },
+					{ "time": 0.5666, "angle": -15.82 },
+					{ "time": 0.6, "angle": -3.59 },
+					{ "time": 0.7666, "angle": -3.56 },
+					{ "time": 0.9333, "angle": 1.86 },
+					{ "time": 1.0666, "angle": 16.02 },
+					{ "time": 1.3666, "angle": 1.08 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -13.35 },
+					{ "time": 0.2333, "angle": -48.95 },
+					{ "time": 0.4333, "angle": -35.77 },
+					{ "time": 0.6, "angle": -4.59 },
+					{ "time": 0.7666, "angle": 14.61 },
+					{ "time": 0.9333, "angle": 15.74 },
+					{ "time": 1.0666, "angle": -32.44 },
+					{ "time": 1.3666, "angle": -13.35 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3.67, "y": 1.68 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 12.78 },
+					{ "time": 0.2333, "angle": 16.46 },
+					{ "time": 0.4, "angle": 26.49 },
+					{ "time": 0.6, "angle": 15.51 },
+					{ "time": 0.7666, "angle": 1.34 },
+					{ "time": 0.9333, "angle": 2.35 },
+					{ "time": 1.0666, "angle": 6.08 },
+					{ "time": 1.3, "angle": 21.23 },
+					{ "time": 1.3666, "angle": 12.78 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{ "time": 0, "angle": 5.19 },
+					{ "time": 0.2333, "angle": 20.27 },
+					{ "time": 0.4, "angle": 15.27 },
+					{ "time": 0.6, "angle": -24.69 },
+					{ "time": 0.7666, "angle": -11.02 },
+					{ "time": 0.9333, "angle": -24.38 },
+					{ "time": 1.0666, "angle": 11.99 },
+					{ "time": 1.3, "angle": 4.86 },
+					{ "time": 1.3666, "angle": 5.19 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 0.05,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": 279.66,
+						"curve": [ 0.218, 0.67, 0.66, 0.99 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 62.27,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": 28.91 },
+					{ "time": 1.0666, "angle": -8.62 },
+					{ "time": 1.1666, "angle": -18.43 },
+					{ "time": 1.3666, "angle": 0.05 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 1.3666, "x": -1.76, "y": 0.56 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{ "time": 0, "angle": 11.58, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 11.58 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": 0.51 },
+					{ "time": 0.4333, "angle": 12.82 },
+					{ "time": 0.6, "angle": 47.55 },
+					{ "time": 0.9333, "angle": 12.82 },
+					{ "time": 1.1666, "angle": -6.5 },
+					{ "time": 1.3666, "angle": 0.51 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 43.82,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": -8.74,
+						"curve": [ 0.304, 0.58, 0.709, 0.97 ]
+					},
+					{
+						"time": 0.5333,
+						"angle": -208.02,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": -246.72 },
+					{ "time": 1.0666, "angle": -307.13 },
+					{ "time": 1.1666, "angle": 37.15 },
+					{ "time": 1.3666, "angle": 43.82 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 1.3666, "x": -7.84, "y": 7.19 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{ "time": 0, "angle": -4.02 },
+					{ "time": 0.6, "angle": 17.5 },
+					{ "time": 0.9333, "angle": -4.02 },
+					{ "time": 1.1666, "angle": -16.72 },
+					{ "time": 1.3666, "angle": -4.02 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 22.92 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"root": {
+				"rotate": [
+					{ "time": 0, "angle": 0 },
+					{ "time": 0.4333, "angle": -14.52 },
+					{ "time": 0.8, "angle": 9.86 },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			}
+		}
+	}
+}
+}

二進制
spine-libgdx/test/spineboy.skel


+ 0 - 296
spine-sfml/data/goblins-walk.json

@@ -1,296 +0,0 @@
-{
-"bones": {
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": -26.55 },
-			{ "time": 0.2476, "angle": -8.78 },
-			{ "time": 0.4952, "angle": 9.51 },
-			{ "time": 0.7428, "angle": 30.74 },
-			{ "time": 0.9904, "angle": 25.33 },
-			{ "time": 1.238, "angle": 26.11 },
-			{ "time": 1.4857, "angle": -7.7 },
-			{ "time": 1.7333, "angle": -21.19 },
-			{ "time": 1.9809, "angle": -26.55 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.32, "y": 1.7 },
-			{ "time": 0.7428, "x": -0.06, "y": 2.42 },
-			{ "time": 1.9809, "x": -1.32, "y": 1.7 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 42.45 },
-			{ "time": 0.2476, "angle": 52.1 },
-			{ "time": 0.4952, "angle": 8.53 },
-			{ "time": 0.9904, "angle": -16.93 },
-			{ "time": 1.238, "angle": 1.89 },
-			{
-				"time": 1.4857,
-				"angle": 28.06,
-				"curve": [ 0.462, 0.11, 1, 1 ]
-			},
-			{
-				"time": 1.7333,
-				"angle": 58.68,
-				"curve": [ 0.5, 0.02, 1, 1 ]
-			},
-			{ "time": 1.9809, "angle": 42.45 }
-		],
-		"translate": [
-			{ "time": 0, "x": 6.23, "y": 0 },
-			{ "time": 0.4952, "x": 2.14, "y": 2.4 },
-			{ "time": 0.9904, "x": 2.44, "y": 4.8 },
-			{ "time": 1.9809, "x": 6.23, "y": 0 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -22.98 },
-			{ "time": 0.2476, "angle": -63.5 },
-			{ "time": 0.4952, "angle": -73.76 },
-			{ "time": 0.9904, "angle": 5.11 },
-			{ "time": 1.238, "angle": -28.29 },
-			{ "time": 1.4857, "angle": 4.08 },
-			{ "time": 1.7333, "angle": 3.53 },
-			{ "time": 1.9809, "angle": -22.98 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0 },
-			{ "time": 0.4952, "x": 2.55, "y": -0.47 },
-			{ "time": 0.9904, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.9809, "x": 0, "y": 0 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": -3.69 },
-			{ "time": 0.2476, "angle": -10.42 },
-			{ "time": 0.4952, "angle": -5.01 },
-			{ "time": 0.7428, "angle": 3.87 },
-			{ "time": 0.9904, "angle": -3.87 },
-			{ "time": 1.238, "angle": 2.78 },
-			{ "time": 1.4857, "angle": 1.68 },
-			{ "time": 1.7333, "angle": -8.54 },
-			{ "time": 1.9809, "angle": -3.69 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 5.29,
-				"curve": [ 0.264, 0, 0.75, 1 ]
-			},
-			{ "time": 1.238, "angle": 6.65 },
-			{ "time": 1.9809, "angle": 5.29 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -4.02,
-				"curve": [ 0.267, 0, 0.804, 0.99 ]
-			},
-			{
-				"time": 1.238,
-				"angle": 19.78,
-				"curve": [ 0.307, 0, 0.787, 0.99 ]
-			},
-			{ "time": 1.9809, "angle": -4.02 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 8.98 },
-			{ "time": 1.238, "angle": 0.51 },
-			{ "time": 1.9809, "angle": 8.98 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 6.25,
-				"curve": [ 0.339, 0, 0.683, 1 ]
-			},
-			{
-				"time": 0.9904,
-				"angle": -11.78,
-				"curve": [ 0.281, 0, 0.686, 0.99 ]
-			},
-			{ "time": 1.9809, "angle": 6.25 }
-		],
-		"translate": [
-			{ "time": 0, "x": 1.15, "y": 0.23 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -21.23,
-				"curve": [ 0.295, 0, 0.755, 0.98 ]
-			},
-			{
-				"time": 0.9904,
-				"angle": -27.28,
-				"curve": [ 0.241, 0, 0.75, 0.97 ]
-			},
-			{ "time": 1.9809, "angle": -21.23 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 28.37,
-				"curve": [ 0.339, 0, 0.683, 1 ]
-			},
-			{
-				"time": 0.9904,
-				"angle": 60.09,
-				"curve": [ 0.281, 0, 0.686, 0.99 ]
-			},
-			{ "time": 1.9809, "angle": 28.37 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -10.28 },
-			{
-				"time": 0.2476,
-				"angle": -15.38,
-				"curve": [ 0.545, 0, 0.818, 1 ]
-			},
-			{
-				"time": 0.7428,
-				"angle": -9.78,
-				"curve": [ 0.58, 0.17, 0.669, 0.99 ]
-			},
-			{
-				"time": 1.238,
-				"angle": -15.75,
-				"curve": [ 0.235, 0.01, 0.795, 1 ]
-			},
-			{
-				"time": 1.7333,
-				"angle": -7.06,
-				"curve": [ 0.209, 0, 0.816, 0.98 ]
-			},
-			{ "time": 1.9809, "angle": -10.28 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.29, "y": 1.68 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": -5.25 },
-			{ "time": 0.4952, "angle": -1.91 },
-			{ "time": 0.7428, "angle": -6.45 },
-			{ "time": 0.9904, "angle": -5.39 },
-			{ "time": 1.4857, "angle": -11.68 },
-			{ "time": 1.7333, "angle": 0.46 },
-			{ "time": 1.9809, "angle": -5.25 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -3.39,
-				"curve": [ 0.316, 0.01, 0.741, 0.98 ]
-			},
-			{
-				"time": 0.2476,
-				"angle": -45.53,
-				"curve": [ 0.229, 0, 0.738, 0.97 ]
-			},
-			{ "time": 0.4952, "angle": -4.83 },
-			{ "time": 0.9904, "angle": -19.53 },
-			{ "time": 1.238, "angle": -64.8 },
-			{
-				"time": 1.4857,
-				"angle": -82.56,
-				"curve": [ 0.557, 0.18, 1, 1 ]
-			},
-			{ "time": 1.9809, "angle": -3.39 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9904, "x": 0, "y": 0 },
-			{ "time": 1.238, "x": 2.18, "y": 0.21 },
-			{ "time": 1.9809, "x": 0, "y": 0 }
-		]
-	},
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 1.9809, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": -4.16 },
-			{
-				"time": 0.2476,
-				"x": 0,
-				"y": -7.05,
-				"curve": [ 0.359, 0.47, 0.646, 0.74 ]
-			},
-			{ "time": 0.7428, "x": 0, "y": 6.78 },
-			{ "time": 0.9904, "x": 0, "y": -6.13 },
-			{
-				"time": 1.238,
-				"x": 0,
-				"y": -7.05,
-				"curve": [ 0.359, 0.47, 0.646, 0.74 ]
-			},
-			{ "time": 1.7333, "x": 0, "y": 6.78 },
-			{ "time": 1.9809, "x": 0, "y": -4.16 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 3.6 },
-			{ "time": 0.2476, "angle": 17.49 },
-			{ "time": 0.4952, "angle": 6.1 },
-			{ "time": 0.7428, "angle": 3.45 },
-			{ "time": 0.9904, "angle": 5.17 },
-			{ "time": 1.238, "angle": 18.36 },
-			{ "time": 1.4857, "angle": 6.09 },
-			{ "time": 1.7333, "angle": 2.28 },
-			{ "time": 1.9809, "angle": 3.6 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 3.6,
-				"curve": [ 0, 0, 0.704, 1.17 ]
-			},
-			{ "time": 0.2476, "angle": -0.2 },
-			{ "time": 0.4952, "angle": 6.1 },
-			{ "time": 0.7428, "angle": 3.45 },
-			{
-				"time": 0.9904,
-				"angle": 5.17,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 1.3, "angle": 1.1 },
-			{ "time": 1.4857, "angle": 6.09 },
-			{ "time": 1.7333, "angle": 2.28 },
-			{ "time": 1.9809, "angle": 3.6 }
-		]
-	}
-},
-"slots": {
-	"eyes": {
-		"attachment": [
-			{ "time": 1.3666, "name": "eyes closed" },
-			{ "time": 1.5666, "name": null }
-		]
-	}
-}
-}

+ 499 - 0
spine-sfml/data/goblins.json

@@ -0,0 +1,499 @@
+{
+"bones": [
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
+	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
+	{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
+	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
+	{ "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 },
+	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 },
+	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
+	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 },
+	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 },
+	{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 },
+	{ "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 },
+	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 },
+	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
+	{ "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 },
+	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
+],
+"slots": [
+	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
+	{ "name": "left arm", "bone": "left arm", "attachment": "left arm" },
+	{ "name": "left hand item", "bone": "left hand", "attachment": "spear" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
+	{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
+	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
+	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" },
+	{ "name": "neck", "bone": "neck", "attachment": "neck" },
+	{ "name": "torso", "bone": "torso", "attachment": "torso" },
+	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
+	{ "name": "right foot", "bone": "right foot", "attachment": "right foot" },
+	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" },
+	{ "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" },
+	{ "name": "undies", "bone": "pelvis", "attachment": "undies" },
+	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" },
+	{ "name": "head", "bone": "head", "attachment": "head" },
+	{ "name": "eyes", "bone": "head" },
+	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" },
+	{ "name": "right arm", "bone": "right arm", "attachment": "right arm" },
+	{ "name": "right hand item", "bone": "right hand", "attachment": "dagger" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right hand" }
+],
+"skins": {
+	"default": {
+		"left hand item": {
+			"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
+			"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
+		},
+		"right hand item": {
+			"dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 }
+		}
+	},
+	"goblin": {
+		"neck": {
+			"neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.69, "width": 36, "height": 41 }
+		},
+		"undies": {
+			"undies": { "name": "goblin/undies", "x": 6.3, "y": 0.12, "rotation": 0.91, "width": 36, "height": 29 }
+		},
+		"right hand": {
+			"right hand": { "name": "goblin/right-hand", "x": 7.88, "y": 2.78, "rotation": 91.96, "width": 36, "height": 37 }
+		},
+		"right arm": {
+			"right arm": { "name": "goblin/right-arm", "x": 16.44, "y": -1.04, "rotation": 94.32, "width": 23, "height": 50 }
+		},
+		"head": {
+			"head": { "name": "goblin/head", "x": 25.73, "y": 2.33, "rotation": -92.29, "width": 103, "height": 66 }
+		},
+		"left shoulder": {
+			"left shoulder": { "name": "goblin/left-shoulder", "x": 15.56, "y": -2.26, "rotation": 62.01, "width": 29, "height": 44 }
+		},
+		"left arm": {
+			"left arm": {
+				"name": "goblin/left-arm",
+				"x": 16.7,
+				"y": -1.69,
+				"scaleX": 1.057,
+				"scaleY": 1.057,
+				"rotation": 33.84,
+				"width": 37,
+				"height": 35
+			}
+		},
+		"left hand": {
+			"left hand": {
+				"name": "goblin/left-hand",
+				"x": 3.47,
+				"y": 3.41,
+				"scaleX": 0.892,
+				"scaleY": 0.892,
+				"rotation": 31.14,
+				"width": 36,
+				"height": 41
+			}
+		},
+		"right lower leg": {
+			"right lower leg": { "name": "goblin/right-lower-leg", "x": 25.68, "y": -3.15, "rotation": 111.83, "width": 36, "height": 76 }
+		},
+		"right upper leg": {
+			"right upper leg": { "name": "goblin/right-upper-leg", "x": 20.35, "y": 1.47, "rotation": 97.49, "width": 34, "height": 63 }
+		},
+		"pelvis": {
+			"pelvis": { "name": "goblin/pelvis", "x": -5.61, "y": 0.76, "width": 62, "height": 43 }
+		},
+		"left lower leg": {
+			"left lower leg": { "name": "goblin/left-lower-leg", "x": 23.58, "y": -2.06, "rotation": 105.75, "width": 33, "height": 70 }
+		},
+		"left upper leg": {
+			"left upper leg": { "name": "goblin/left-upper-leg", "x": 29.68, "y": -3.87, "rotation": 89.09, "width": 33, "height": 73 }
+		},
+		"torso": {
+			"torso": { "name": "goblin/torso", "x": 38.09, "y": -3.87, "rotation": -94.95, "width": 68, "height": 96 }
+		},
+		"right shoulder": {
+			"right shoulder": { "name": "goblin/right-shoulder", "x": 15.68, "y": -1.03, "rotation": 130.65, "width": 39, "height": 45 }
+		},
+		"right foot": {
+			"right foot": { "name": "goblin/right-foot", "x": 23.56, "y": 9.8, "rotation": 1.52, "width": 63, "height": 33 }
+		},
+		"left foot": {
+			"left foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.74, "rotation": 3.32, "width": 65, "height": 31 }
+		},
+		"undie straps": {
+			"undie straps": { "name": "goblin/undie-straps", "x": -3.87, "y": 13.1, "scaleX": 1.089, "width": 55, "height": 19 }
+		},
+		"eyes": {
+			"eyes closed": { "name": "goblin/eyes-closed", "x": 32.21, "y": -21.27, "rotation": -88.92, "width": 34, "height": 12 }
+		}
+	},
+	"goblingirl": {
+		"left upper leg": {
+			"left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 }
+		},
+		"left lower leg": {
+			"left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 }
+		},
+		"left foot": {
+			"left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 }
+		},
+		"right upper leg": {
+			"right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 }
+		},
+		"right lower leg": {
+			"right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 }
+		},
+		"right foot": {
+			"right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 }
+		},
+		"torso": {
+			"torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 }
+		},
+		"left shoulder": {
+			"left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 }
+		},
+		"left arm": {
+			"left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 }
+		},
+		"left hand": {
+			"left hand": {
+				"name": "goblingirl/left-hand",
+				"x": 4.34,
+				"y": 2.39,
+				"scaleX": 0.896,
+				"scaleY": 0.896,
+				"rotation": 30.34,
+				"width": 35,
+				"height": 40
+			}
+		},
+		"neck": {
+			"neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 }
+		},
+		"head": {
+			"head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 }
+		},
+		"right shoulder": {
+			"right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 }
+		},
+		"right arm": {
+			"right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 }
+		},
+		"right hand": {
+			"right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 }
+		},
+		"pelvis": {
+			"pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 }
+		},
+		"undie straps": {
+			"undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 }
+		},
+		"undies": {
+			"undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 }
+		},
+		"eyes": {
+			"eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2333, "angle": 9.51 },
+					{ "time": 0.3666, "angle": 30.74 },
+					{ "time": 0.5, "angle": 25.33 },
+					{ "time": 0.6333, "angle": 26.11 },
+					{ "time": 0.7333, "angle": -7.7 },
+					{ "time": 0.8666, "angle": -21.19 },
+					{ "time": 1, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.32, "y": 1.7 },
+					{ "time": 0.3666, "x": -0.06, "y": 2.42 },
+					{ "time": 1, "x": -1.32, "y": 1.7 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2333, "angle": 8.53 },
+					{ "time": 0.5, "angle": -16.93 },
+					{ "time": 0.6333, "angle": 1.89 },
+					{
+						"time": 0.7333,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 6.23, "y": 0 },
+					{ "time": 0.2333, "x": 2.14, "y": 2.4 },
+					{ "time": 0.5, "x": 2.44, "y": 4.8 },
+					{ "time": 1, "x": 6.23, "y": 0 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -22.98 },
+					{ "time": 0.1333, "angle": -63.5 },
+					{ "time": 0.2333, "angle": -73.76 },
+					{ "time": 0.5, "angle": 5.11 },
+					{ "time": 0.6333, "angle": -28.29 },
+					{ "time": 0.7333, "angle": 4.08 },
+					{ "time": 0.8666, "angle": 3.53 },
+					{ "time": 1, "angle": -22.98 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{ "time": 0.2333, "x": 2.55, "y": -0.47 },
+					{ "time": 0.5, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2333, "angle": -5.01 },
+					{ "time": 0.3666, "angle": 3.87 },
+					{ "time": 0.5, "angle": -3.87 },
+					{ "time": 0.6333, "angle": 2.78 },
+					{ "time": 0.7333, "angle": 1.68 },
+					{ "time": 0.8666, "angle": -8.54 },
+					{ "time": 1, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 5.29,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{ "time": 0.6333, "angle": 6.65 },
+					{ "time": 1, "angle": 5.29 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": 19.78,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 8.98 },
+					{ "time": 0.6333, "angle": 0.51 },
+					{ "time": 1, "angle": 8.98 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 6.25,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -11.78,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 6.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 1.15, "y": 0.23 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -21.23,
+						"curve": [ 0.295, 0, 0.755, 0.98 ]
+					},
+					{
+						"time": 0.5,
+						"angle": -27.28,
+						"curve": [ 0.241, 0, 0.75, 0.97 ]
+					},
+					{ "time": 1, "angle": -21.23 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 28.37,
+						"curve": [ 0.339, 0, 0.683, 1 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 60.09,
+						"curve": [ 0.281, 0, 0.686, 0.99 ]
+					},
+					{ "time": 1, "angle": 28.37 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 0.818, 1 ]
+					},
+					{
+						"time": 0.3666,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 0.669, 0.99 ]
+					},
+					{
+						"time": 0.6333,
+						"angle": -15.75,
+						"curve": [ 0.235, 0.01, 0.795, 1 ]
+					},
+					{
+						"time": 0.8666,
+						"angle": -7.06,
+						"curve": [ 0.209, 0, 0.816, 0.98 ]
+					},
+					{ "time": 1, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.29, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2333, "angle": -1.91 },
+					{ "time": 0.3666, "angle": -6.45 },
+					{ "time": 0.5, "angle": -5.39 },
+					{ "time": 0.7333, "angle": -11.68 },
+					{ "time": 0.8666, "angle": 0.46 },
+					{ "time": 1, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -3.39,
+						"curve": [ 0.316, 0.01, 0.741, 0.98 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -45.53,
+						"curve": [ 0.229, 0, 0.738, 0.97 ]
+					},
+					{ "time": 0.2333, "angle": -4.83 },
+					{ "time": 0.5, "angle": -19.53 },
+					{ "time": 0.6333, "angle": -64.8 },
+					{
+						"time": 0.7333,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1, "angle": -3.39 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.5, "x": 0, "y": 0 },
+					{ "time": 0.6333, "x": 2.18, "y": 0.21 },
+					{ "time": 1, "x": 0, "y": 0 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": -4.16 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.3666, "x": 0, "y": 6.78 },
+					{ "time": 0.5, "x": 0, "y": -6.13 },
+					{
+						"time": 0.6333,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.359, 0.47, 0.646, 0.74 ]
+					},
+					{ "time": 0.8666, "x": 0, "y": 6.78 },
+					{ "time": 1, "x": 0, "y": -4.16 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{ "time": 0.5, "angle": 5.17 },
+					{ "time": 0.6333, "angle": 18.36 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.17 ]
+					},
+					{ "time": 0.1333, "angle": -0.2 },
+					{ "time": 0.2333, "angle": 6.1 },
+					{ "time": 0.3666, "angle": 3.45 },
+					{
+						"time": 0.5,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.6666, "angle": 1.1 },
+					{ "time": 0.7333, "angle": 6.09 },
+					{ "time": 0.8666, "angle": 2.28 },
+					{ "time": 1, "angle": 3.6 }
+				]
+			}
+		},
+		"slots": {
+			"eyes": {
+				"attachment": [
+					{ "time": 0.7, "name": "eyes closed" },
+					{ "time": 0.8, "name": null }
+				]
+			}
+		}
+	}
+}
+}

+ 0 - 410
spine-sfml/data/spineboy-jump.json

@@ -1,410 +0,0 @@
-{
-"bones": {
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 0, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": -11.57, "y": -3 },
-			{ "time": 0.2333, "x": -16.2, "y": -19.43 },
-			{
-				"time": 0.3333,
-				"x": 7.66,
-				"y": -8.48,
-				"curve": [ 0.057, 0.06, 0.712, 1 ]
-			},
-			{ "time": 0.3666, "x": 15.38, "y": 5.01 },
-			{ "time": 0.4666, "x": -7.84, "y": 57.22 },
-			{
-				"time": 0.6,
-				"x": -10.81,
-				"y": 96.34,
-				"curve": [ 0.241, 0, 1, 1 ]
-			},
-			{ "time": 0.7333, "x": -7.01, "y": 54.7 },
-			{ "time": 0.8, "x": -10.58, "y": 32.2 },
-			{ "time": 0.9333, "x": -31.99, "y": 0.45 },
-			{ "time": 1.0666, "x": -12.48, "y": -29.47 },
-			{ "time": 1.3666, "x": -11.57, "y": -3 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 17.13 },
-			{ "time": 0.2333, "angle": 44.35 },
-			{ "time": 0.3333, "angle": 16.46 },
-			{ "time": 0.4, "angle": -9.88 },
-			{ "time": 0.4666, "angle": -11.42 },
-			{ "time": 0.5666, "angle": 23.46 },
-			{ "time": 0.7666, "angle": 71.82 },
-			{ "time": 0.9333, "angle": 65.53 },
-			{ "time": 1.0666, "angle": 51.01 },
-			{ "time": 1.3666, "angle": 17.13 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
-			{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
-			{ "time": 1.3666, "x": -3, "y": -2.25 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -16.25 },
-			{ "time": 0.2333, "angle": -52.21 },
-			{ "time": 0.4, "angle": 15.04 },
-			{ "time": 0.4666, "angle": -8.95 },
-			{ "time": 0.5666, "angle": -39.53 },
-			{ "time": 0.7666, "angle": -27.27 },
-			{ "time": 0.9333, "angle": -3.52 },
-			{ "time": 1.0666, "angle": -61.92 },
-			{ "time": 1.3666, "angle": -16.25 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": 0.33 },
-			{ "time": 0.2333, "angle": 6.2 },
-			{ "time": 0.3333, "angle": 14.73 },
-			{ "time": 0.4, "angle": -15.54 },
-			{ "time": 0.4333, "angle": -21.2 },
-			{ "time": 0.5666, "angle": -7.55 },
-			{ "time": 0.7666, "angle": -0.67 },
-			{ "time": 0.9333, "angle": -0.58 },
-			{ "time": 1.0666, "angle": 14.64 },
-			{ "time": 1.3666, "angle": 0.33 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 25.97 },
-			{ "time": 0.2333, "angle": 46.43 },
-			{ "time": 0.3333, "angle": 22.61 },
-			{ "time": 0.4, "angle": 2.13 },
-			{
-				"time": 0.4666,
-				"angle": 0.04,
-				"curve": [ 0, 0, 0.637, 0.98 ]
-			},
-			{ "time": 0.6, "angle": 65.55 },
-			{ "time": 0.7666, "angle": 64.93 },
-			{ "time": 0.9333, "angle": 41.08 },
-			{ "time": 1.0666, "angle": 66.25 },
-			{ "time": 1.3666, "angle": 25.97 }
-		],
-		"translate": [
-			{ "time": 0, "x": 5.74, "y": 0.61 },
-			{ "time": 0.2333, "x": 4.79, "y": 1.79 },
-			{ "time": 0.3333, "x": 6.05, "y": -4.55 },
-			{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
-			{ "time": 1.0666, "x": 4.79, "y": 1.79 },
-			{ "time": 1.3666, "x": 5.74, "y": 0.61 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -27.46 },
-			{ "time": 0.2333, "angle": -64.03 },
-			{ "time": 0.4, "angle": -48.36 },
-			{ "time": 0.5666, "angle": -76.86 },
-			{ "time": 0.7666, "angle": -26.89 },
-			{ "time": 0.9, "angle": -18.97 },
-			{ "time": 0.9333, "angle": -14.18 },
-			{ "time": 1.0666, "angle": -80.45 },
-			{ "time": 1.3666, "angle": -27.46 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": 1.08 },
-			{ "time": 0.2333, "angle": 16.02 },
-			{ "time": 0.3, "angle": 12.94 },
-			{ "time": 0.3333, "angle": 15.16 },
-			{ "time": 0.4, "angle": -14.7 },
-			{ "time": 0.4333, "angle": -12.85 },
-			{ "time": 0.4666, "angle": -19.18 },
-			{ "time": 0.5666, "angle": -15.82 },
-			{ "time": 0.6, "angle": -3.59 },
-			{ "time": 0.7666, "angle": -3.56 },
-			{ "time": 0.9333, "angle": 1.86 },
-			{ "time": 1.0666, "angle": 16.02 },
-			{ "time": 1.3666, "angle": 1.08 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -13.35 },
-			{ "time": 0.2333, "angle": -48.95 },
-			{ "time": 0.4333, "angle": -35.77 },
-			{ "time": 0.6, "angle": -4.59 },
-			{ "time": 0.7666, "angle": 14.61 },
-			{ "time": 0.9333, "angle": 15.74 },
-			{ "time": 1.0666, "angle": -32.44 },
-			{ "time": 1.3666, "angle": -13.35 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
-			{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
-			{ "time": 1.3666, "x": -3.67, "y": 1.68 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 12.78 },
-			{ "time": 0.2333, "angle": 16.46 },
-			{ "time": 0.4, "angle": 26.49 },
-			{ "time": 0.6, "angle": 15.51 },
-			{ "time": 0.7666, "angle": 1.34 },
-			{ "time": 0.9333, "angle": 2.35 },
-			{ "time": 1.0666, "angle": 6.08 },
-			{ "time": 1.3, "angle": 21.23 },
-			{ "time": 1.3666, "angle": 12.78 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{ "time": 0, "angle": 5.19 },
-			{ "time": 0.2333, "angle": 20.27 },
-			{ "time": 0.4, "angle": 15.27 },
-			{ "time": 0.6, "angle": -24.69 },
-			{ "time": 0.7666, "angle": -11.02 },
-			{ "time": 0.9333, "angle": -24.38 },
-			{ "time": 1.0666, "angle": 11.99 },
-			{ "time": 1.3, "angle": 4.86 },
-			{ "time": 1.3666, "angle": 5.19 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 0.05,
-				"curve": [ 0, 0, 0.62, 1 ]
-			},
-			{
-				"time": 0.2333,
-				"angle": 279.66,
-				"curve": [ 0.218, 0.67, 0.66, 0.99 ]
-			},
-			{
-				"time": 0.5,
-				"angle": 62.27,
-				"curve": [ 0.462, 0, 0.764, 0.58 ]
-			},
-			{ "time": 0.9333, "angle": 28.91 },
-			{ "time": 1.0666, "angle": -8.62 },
-			{ "time": 1.1666, "angle": -18.43 },
-			{ "time": 1.3666, "angle": 0.05 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
-			{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
-			{ "time": 1.3666, "x": -1.76, "y": 0.56 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{ "time": 0, "angle": 11.58, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 11.58 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{ "time": 0, "angle": 0.51 },
-			{ "time": 0.4333, "angle": 12.82 },
-			{ "time": 0.6, "angle": 47.55 },
-			{ "time": 0.9333, "angle": 12.82 },
-			{ "time": 1.1666, "angle": -6.5 },
-			{ "time": 1.3666, "angle": 0.51 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 43.82,
-				"curve": [ 0, 0, 0.62, 1 ]
-			},
-			{
-				"time": 0.2333,
-				"angle": -8.74,
-				"curve": [ 0.304, 0.58, 0.709, 0.97 ]
-			},
-			{
-				"time": 0.5333,
-				"angle": -208.02,
-				"curve": [ 0.462, 0, 0.764, 0.58 ]
-			},
-			{ "time": 0.9333, "angle": -246.72 },
-			{ "time": 1.0666, "angle": -307.13 },
-			{ "time": 1.1666, "angle": 37.15 },
-			{ "time": 1.3666, "angle": 43.82 }
-		],
-		"translate": [
-			{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
-			{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
-			{ "time": 1.3666, "x": -7.84, "y": 7.19 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{ "time": 0, "angle": -4.02 },
-			{ "time": 0.6, "angle": 17.5 },
-			{ "time": 0.9333, "angle": -4.02 },
-			{ "time": 1.1666, "angle": -16.72 },
-			{ "time": 1.3666, "angle": -4.02 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 22.92, "curve": "stepped" },
-			{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
-			{ "time": 1.3666, "angle": 22.92 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-			{ "time": 1.3666, "x": 0, "y": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	},
-	"root": {
-		"rotate": [
-			{ "time": 0, "angle": 0 },
-			{ "time": 0.4333, "angle": -14.52 },
-			{ "time": 0.8, "angle": 9.86 },
-			{ "time": 1.3666, "angle": 0 }
-		],
-		"scale": [
-			{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-			{ "time": 1.3666, "x": 1, "y": 1 }
-		]
-	}
-}
-}

+ 0 - 98
spine-sfml/data/spineboy-skeleton.json

@@ -1,98 +0,0 @@
-{
-"bones": [
-	{ "name": "root", "length": 0 },
-	{ "name": "hip", "parent": "root", "length": 0, "x": 0.64, "y": 114.41 },
-	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
-	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
-	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
-	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
-	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
-	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
-	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
-	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
-	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
-	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
-	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
-	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
-	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
-	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
-	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
-	{ "name": "pelvis", "parent": "hip", "length": 0, "x": 1.41, "y": -6.57 }
-],
-"slots": [
-	{ "name": "template", "bone": "root", "color": "ff898c86" },
-	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
-	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
-	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
-	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
-	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
-	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
-	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
-	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
-	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
-	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
-	{ "name": "torso", "bone": "torso", "attachment": "torso" },
-	{ "name": "neck", "bone": "neck", "attachment": "neck" },
-	{ "name": "head", "bone": "head", "attachment": "head" },
-	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
-	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
-	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
-	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
-],
-"skins": {
-	"default": {
-		"left shoulder": {
-			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
-		},
-		"left arm": {
-			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
-		},
-		"left hand": {
-			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
-		},
-		"left foot": {
-			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
-		},
-		"left lower leg": {
-			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
-		},
-		"left upper leg": {
-			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
-		},
-		"pelvis": {
-			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
-		},
-		"right foot": {
-			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
-		},
-		"right lower leg": {
-			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
-		},
-		"right upper leg": {
-			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
-		},
-		"torso": {
-			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
-		},
-		"neck": {
-			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
-		},
-		"head": {
-			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
-		},
-		"eyes": {
-			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
-			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
-		},
-		"right shoulder": {
-			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
-		},
-		"right arm": {
-			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
-		},
-		"right hand": {
-			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
-		}
-	}
-}
-}

+ 0 - 278
spine-sfml/data/spineboy-walk.json

@@ -1,278 +0,0 @@
-{
-"bones": {
-	"left upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": -26.55 },
-			{ "time": 0.1333, "angle": -8.78 },
-			{ "time": 0.2666, "angle": 9.51 },
-			{ "time": 0.4, "angle": 30.74 },
-			{ "time": 0.5333, "angle": 25.33 },
-			{ "time": 0.6666, "angle": 26.11 },
-			{ "time": 0.8, "angle": -7.7 },
-			{ "time": 0.9333, "angle": -21.19 },
-			{ "time": 1.0666, "angle": -26.55 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3, "y": -2.25 },
-			{ "time": 0.4, "x": -2.18, "y": -2.25 },
-			{ "time": 1.0666, "x": -3, "y": -2.25 }
-		]
-	},
-	"right upper leg": {
-		"rotate": [
-			{ "time": 0, "angle": 42.45 },
-			{ "time": 0.1333, "angle": 52.1 },
-			{ "time": 0.2666, "angle": 5.96 },
-			{ "time": 0.5333, "angle": -16.93 },
-			{ "time": 0.6666, "angle": 1.89 },
-			{
-				"time": 0.8,
-				"angle": 28.06,
-				"curve": [ 0.462, 0.11, 1, 1 ]
-			},
-			{
-				"time": 0.9333,
-				"angle": 58.68,
-				"curve": [ 0.5, 0.02, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": 42.45 }
-		],
-		"translate": [
-			{ "time": 0, "x": 8.11, "y": -2.36 },
-			{ "time": 0.1333, "x": 10.03, "y": -2.56 },
-			{ "time": 0.4, "x": 2.76, "y": -2.97 },
-			{ "time": 0.5333, "x": 2.76, "y": -2.81 },
-			{ "time": 0.9333, "x": 8.67, "y": -2.54 },
-			{ "time": 1.0666, "x": 8.11, "y": -2.36 }
-		]
-	},
-	"left lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -10.21 },
-			{ "time": 0.1333, "angle": -55.64 },
-			{ "time": 0.2666, "angle": -68.12 },
-			{ "time": 0.5333, "angle": 5.11 },
-			{ "time": 0.6666, "angle": -28.29 },
-			{ "time": 0.8, "angle": 4.08 },
-			{ "time": 0.9333, "angle": 3.53 },
-			{ "time": 1.0666, "angle": -10.21 }
-		]
-	},
-	"left foot": {
-		"rotate": [
-			{ "time": 0, "angle": -3.69 },
-			{ "time": 0.1333, "angle": -10.42 },
-			{ "time": 0.2666, "angle": -17.14 },
-			{ "time": 0.4, "angle": -2.83 },
-			{ "time": 0.5333, "angle": -3.87 },
-			{ "time": 0.6666, "angle": 2.78 },
-			{ "time": 0.8, "angle": 1.68 },
-			{ "time": 0.9333, "angle": -8.54 },
-			{ "time": 1.0666, "angle": -3.69 }
-		]
-	},
-	"right shoulder": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 20.89,
-				"curve": [ 0.264, 0, 0.75, 1 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 3.72,
-				"curve": [ 0.272, 0, 0.841, 1 ]
-			},
-			{ "time": 0.6666, "angle": -278.28 },
-			{ "time": 1.0666, "angle": 20.89 }
-		],
-		"translate": [
-			{ "time": 0, "x": -7.84, "y": 7.19 },
-			{ "time": 0.1333, "x": -6.36, "y": 6.42 },
-			{ "time": 0.6666, "x": -11.07, "y": 5.25 },
-			{ "time": 1.0666, "x": -7.84, "y": 7.19 }
-		]
-	},
-	"right arm": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": -4.02,
-				"curve": [ 0.267, 0, 0.804, 0.99 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": -13.99,
-				"curve": [ 0.341, 0, 1, 1 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": 36.54,
-				"curve": [ 0.307, 0, 0.787, 0.99 ]
-			},
-			{ "time": 1.0666, "angle": -4.02 }
-		]
-	},
-	"right hand": {
-		"rotate": [
-			{ "time": 0, "angle": 22.92 },
-			{ "time": 0.4, "angle": -8.97 },
-			{ "time": 0.6666, "angle": 0.51 },
-			{ "time": 1.0666, "angle": 22.92 }
-		]
-	},
-	"left shoulder": {
-		"rotate": [
-			{ "time": 0, "angle": -1.47 },
-			{ "time": 0.1333, "angle": 13.6 },
-			{ "time": 0.6666, "angle": 280.74 },
-			{ "time": 1.0666, "angle": -1.47 }
-		],
-		"translate": [
-			{ "time": 0, "x": -1.76, "y": 0.56 },
-			{ "time": 0.6666, "x": -2.47, "y": 8.14 },
-			{ "time": 1.0666, "x": -1.76, "y": 0.56 }
-		]
-	},
-	"left hand": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 11.58,
-				"curve": [ 0.169, 0.37, 0.632, 1.55 ]
-			},
-			{
-				"time": 0.1333,
-				"angle": 28.13,
-				"curve": [ 0.692, 0, 0.692, 0.99 ]
-			},
-			{
-				"time": 0.6666,
-				"angle": -27.42,
-				"curve": [ 0.117, 0.41, 0.738, 1.76 ]
-			},
-			{ "time": 0.8, "angle": -36.32 },
-			{ "time": 1.0666, "angle": 11.58 }
-		]
-	},
-	"left arm": {
-		"rotate": [
-			{ "time": 0, "angle": -8.27 },
-			{ "time": 0.1333, "angle": 18.43 },
-			{ "time": 0.6666, "angle": 0.88 },
-			{ "time": 1.0666, "angle": -8.27 }
-		]
-	},
-	"torso": {
-		"rotate": [
-			{ "time": 0, "angle": -10.28 },
-			{
-				"time": 0.1333,
-				"angle": -15.38,
-				"curve": [ 0.545, 0, 1, 1 ]
-			},
-			{
-				"time": 0.4,
-				"angle": -9.78,
-				"curve": [ 0.58, 0.17, 1, 1 ]
-			},
-			{ "time": 0.6666, "angle": -15.75 },
-			{ "time": 0.9333, "angle": -7.06 },
-			{ "time": 1.0666, "angle": -10.28 }
-		],
-		"translate": [
-			{ "time": 0, "x": -3.67, "y": 1.68 },
-			{ "time": 0.1333, "x": -3.67, "y": 0.68 },
-			{ "time": 0.4, "x": -3.67, "y": 1.97 },
-			{ "time": 0.6666, "x": -3.67, "y": -0.14 },
-			{ "time": 1.0666, "x": -3.67, "y": 1.68 }
-		]
-	},
-	"right foot": {
-		"rotate": [
-			{ "time": 0, "angle": -5.25 },
-			{ "time": 0.2666, "angle": -4.08 },
-			{ "time": 0.4, "angle": -6.45 },
-			{ "time": 0.5333, "angle": -5.39 },
-			{ "time": 0.8, "angle": -11.68 },
-			{ "time": 0.9333, "angle": 0.46 },
-			{ "time": 1.0666, "angle": -5.25 }
-		]
-	},
-	"right lower leg": {
-		"rotate": [
-			{ "time": 0, "angle": -3.39 },
-			{ "time": 0.1333, "angle": -45.53 },
-			{ "time": 0.2666, "angle": -2.59 },
-			{ "time": 0.5333, "angle": -19.53 },
-			{ "time": 0.6666, "angle": -64.8 },
-			{
-				"time": 0.8,
-				"angle": -82.56,
-				"curve": [ 0.557, 0.18, 1, 1 ]
-			},
-			{ "time": 1.0666, "angle": -3.39 }
-		]
-	},
-	"hip": {
-		"rotate": [
-			{ "time": 0, "angle": 0, "curve": "stepped" },
-			{ "time": 1.0666, "angle": 0 }
-		],
-		"translate": [
-			{ "time": 0, "x": 0, "y": 0 },
-			{
-				"time": 0.1333,
-				"x": 0,
-				"y": -7.61,
-				"curve": [ 0.272, 0.86, 1, 1 ]
-			},
-			{ "time": 0.4, "x": 0, "y": 8.7 },
-			{ "time": 0.5333, "x": 0, "y": -0.41 },
-			{
-				"time": 0.6666,
-				"x": 0,
-				"y": -7.05,
-				"curve": [ 0.235, 0.89, 1, 1 ]
-			},
-			{ "time": 0.8, "x": 0, "y": 2.92 },
-			{ "time": 0.9333, "x": 0, "y": 6.78 },
-			{ "time": 1.0666, "x": 0, "y": 0 }
-		]
-	},
-	"neck": {
-		"rotate": [
-			{ "time": 0, "angle": 3.6 },
-			{ "time": 0.1333, "angle": 17.49 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{ "time": 0.5333, "angle": 5.17 },
-			{ "time": 0.6666, "angle": 18.36 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	},
-	"head": {
-		"rotate": [
-			{
-				"time": 0,
-				"angle": 3.6,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.1666, "angle": -0.2 },
-			{ "time": 0.2666, "angle": 6.1 },
-			{ "time": 0.4, "angle": 3.45 },
-			{
-				"time": 0.5333,
-				"angle": 5.17,
-				"curve": [ 0, 0, 0.704, 1.61 ]
-			},
-			{ "time": 0.7, "angle": 1.1 },
-			{ "time": 0.8, "angle": 6.09 },
-			{ "time": 0.9333, "angle": 2.28 },
-			{ "time": 1.0666, "angle": 3.6 }
-		]
-	}
-}
-}

+ 1 - 1
spine-sfml/data/spineboy.atlas

@@ -1,7 +1,7 @@
 
 
 spineboy.png
 spineboy.png
 format: RGBA8888
 format: RGBA8888
-filter: Nearest,Nearest
+filter: Linear,Linear
 repeat: none
 repeat: none
 head
 head
   rotate: false
   rotate: false

+ 787 - 0
spine-sfml/data/spineboy.json

@@ -0,0 +1,787 @@
+{
+"bones": [
+	{ "name": "root" },
+	{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
+	{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
+	{ "name": "left lower leg", "parent": "left upper leg", "length": 56.45, "x": 51.78, "y": 3.46, "rotation": -16.65 },
+	{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 64.02, "y": -8.67, "rotation": 102.43 },
+	{ "name": "right upper leg", "parent": "hip", "length": 45.76, "x": -18.27, "rotation": -101.13 },
+	{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 50.21, "y": 0.6, "rotation": -10.7 },
+	{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
+	{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 94.95 },
+	{ "name": "neck", "parent": "torso", "length": 18.38, "x": 83.64, "y": -1.78, "rotation": 0.9 },
+	{ "name": "head", "parent": "neck", "length": 68.28, "x": 19.09, "y": 6.97, "rotation": -8.94 },
+	{ "name": "right shoulder", "parent": "torso", "length": 49.95, "x": 81.9, "y": 6.79, "rotation": 130.6 },
+	{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 49.95, "y": -0.12, "rotation": 40.12 },
+	{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
+	{ "name": "left shoulder", "parent": "torso", "length": 44.19, "x": 78.96, "y": -15.75, "rotation": -156.96 },
+	{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 44.19, "y": -0.01, "rotation": 28.16 },
+	{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
+	{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
+],
+"slots": [
+	{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left-shoulder" },
+	{ "name": "left arm", "bone": "left arm", "attachment": "left-arm" },
+	{ "name": "left hand", "bone": "left hand", "attachment": "left-hand" },
+	{ "name": "left foot", "bone": "left foot", "attachment": "left-foot" },
+	{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left-lower-leg" },
+	{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left-upper-leg" },
+	{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
+	{ "name": "right foot", "bone": "right foot", "attachment": "right-foot" },
+	{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right-lower-leg" },
+	{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right-upper-leg" },
+	{ "name": "torso", "bone": "torso", "attachment": "torso" },
+	{ "name": "neck", "bone": "neck", "attachment": "neck" },
+	{ "name": "head", "bone": "head", "attachment": "head" },
+	{ "name": "eyes", "bone": "head", "attachment": "eyes" },
+	{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right-shoulder" },
+	{ "name": "right arm", "bone": "right arm", "attachment": "right-arm" },
+	{ "name": "right hand", "bone": "right hand", "attachment": "right-hand" }
+],
+"skins": {
+	"default": {
+		"left shoulder": {
+			"left-shoulder": { "x": 23.74, "y": 0.11, "rotation": 62.01, "width": 34, "height": 53 }
+		},
+		"left arm": {
+			"left-arm": { "x": 15.11, "y": -0.44, "rotation": 33.84, "width": 35, "height": 29 }
+		},
+		"left hand": {
+			"left-hand": { "x": 0.75, "y": 1.86, "rotation": 31.14, "width": 35, "height": 38 }
+		},
+		"left foot": {
+			"left-foot": { "x": 24.35, "y": 8.88, "rotation": 3.32, "width": 65, "height": 30 }
+		},
+		"left lower leg": {
+			"left-lower-leg": { "x": 24.55, "y": -1.92, "rotation": 105.75, "width": 49, "height": 64 }
+		},
+		"left upper leg": {
+			"left-upper-leg": { "x": 26.12, "y": -1.85, "rotation": 89.09, "width": 33, "height": 67 }
+		},
+		"pelvis": {
+			"pelvis": { "x": -4.83, "y": 10.62, "width": 63, "height": 47 }
+		},
+		"right foot": {
+			"right-foot": { "x": 19.02, "y": 8.47, "rotation": 1.52, "width": 67, "height": 30 }
+		},
+		"right lower leg": {
+			"right-lower-leg": { "x": 23.28, "y": -2.59, "rotation": 111.83, "width": 51, "height": 64 }
+		},
+		"right upper leg": {
+			"right-upper-leg": { "x": 23.03, "y": 0.25, "rotation": 101.13, "width": 44, "height": 70 }
+		},
+		"torso": {
+			"torso": { "x": 44.57, "y": -7.08, "rotation": -94.95, "width": 68, "height": 92 }
+		},
+		"neck": {
+			"neck": { "x": 9.42, "y": -3.66, "rotation": -100.15, "width": 34, "height": 28 }
+		},
+		"head": {
+			"head": { "x": 53.94, "y": -5.75, "rotation": -86.9, "width": 121, "height": 132 }
+		},
+		"eyes": {
+			"eyes": { "x": 28.94, "y": -32.92, "rotation": -86.9, "width": 34, "height": 27 },
+			"eyes-closed": { "x": 28.77, "y": -32.86, "rotation": -86.9, "width": 34, "height": 27 }
+		},
+		"right shoulder": {
+			"right-shoulder": { "x": 25.86, "y": 0.03, "rotation": 134.44, "width": 52, "height": 51 }
+		},
+		"right arm": {
+			"right-arm": { "x": 18.34, "y": -2.64, "rotation": 94.32, "width": 21, "height": 45 }
+		},
+		"right hand": {
+			"right-hand": { "x": 6.82, "y": 1.25, "rotation": 91.96, "width": 32, "height": 32 }
+		}
+	}
+},
+"animations": {
+	"walk": {
+		"bones": {
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": -26.55 },
+					{ "time": 0.1333, "angle": -8.78 },
+					{ "time": 0.2666, "angle": 9.51 },
+					{ "time": 0.4, "angle": 30.74 },
+					{ "time": 0.5333, "angle": 25.33 },
+					{ "time": 0.6666, "angle": 26.11 },
+					{ "time": 0.8, "angle": -7.7 },
+					{ "time": 0.9333, "angle": -21.19 },
+					{ "time": 1.0666, "angle": -26.55 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25 },
+					{ "time": 0.4, "x": -2.18, "y": -2.25 },
+					{ "time": 1.0666, "x": -3, "y": -2.25 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 42.45 },
+					{ "time": 0.1333, "angle": 52.1 },
+					{ "time": 0.2666, "angle": 5.96 },
+					{ "time": 0.5333, "angle": -16.93 },
+					{ "time": 0.6666, "angle": 1.89 },
+					{
+						"time": 0.8,
+						"angle": 28.06,
+						"curve": [ 0.462, 0.11, 1, 1 ]
+					},
+					{
+						"time": 0.9333,
+						"angle": 58.68,
+						"curve": [ 0.5, 0.02, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": 42.45 }
+				],
+				"translate": [
+					{ "time": 0, "x": 8.11, "y": -2.36 },
+					{ "time": 0.1333, "x": 10.03, "y": -2.56 },
+					{ "time": 0.4, "x": 2.76, "y": -2.97 },
+					{ "time": 0.5333, "x": 2.76, "y": -2.81 },
+					{ "time": 0.9333, "x": 8.67, "y": -2.54 },
+					{ "time": 1.0666, "x": 8.11, "y": -2.36 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -10.21 },
+					{ "time": 0.1333, "angle": -55.64 },
+					{ "time": 0.2666, "angle": -68.12 },
+					{ "time": 0.5333, "angle": 5.11 },
+					{ "time": 0.6666, "angle": -28.29 },
+					{ "time": 0.8, "angle": 4.08 },
+					{ "time": 0.9333, "angle": 3.53 },
+					{ "time": 1.0666, "angle": -10.21 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": -3.69 },
+					{ "time": 0.1333, "angle": -10.42 },
+					{ "time": 0.2666, "angle": -17.14 },
+					{ "time": 0.4, "angle": -2.83 },
+					{ "time": 0.5333, "angle": -3.87 },
+					{ "time": 0.6666, "angle": 2.78 },
+					{ "time": 0.8, "angle": 1.68 },
+					{ "time": 0.9333, "angle": -8.54 },
+					{ "time": 1.0666, "angle": -3.69 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 20.89,
+						"curve": [ 0.264, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 3.72,
+						"curve": [ 0.272, 0, 0.841, 1 ]
+					},
+					{ "time": 0.6666, "angle": -278.28 },
+					{ "time": 1.0666, "angle": 20.89 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19 },
+					{ "time": 0.1333, "x": -6.36, "y": 6.42 },
+					{ "time": 0.6666, "x": -11.07, "y": 5.25 },
+					{ "time": 1.0666, "x": -7.84, "y": 7.19 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -4.02,
+						"curve": [ 0.267, 0, 0.804, 0.99 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": -13.99,
+						"curve": [ 0.341, 0, 1, 1 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": 36.54,
+						"curve": [ 0.307, 0, 0.787, 0.99 ]
+					},
+					{ "time": 1.0666, "angle": -4.02 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92 },
+					{ "time": 0.4, "angle": -8.97 },
+					{ "time": 0.6666, "angle": 0.51 },
+					{ "time": 1.0666, "angle": 22.92 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{ "time": 0, "angle": -1.47 },
+					{ "time": 0.1333, "angle": 13.6 },
+					{ "time": 0.6666, "angle": 280.74 },
+					{ "time": 1.0666, "angle": -1.47 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56 },
+					{ "time": 0.6666, "x": -2.47, "y": 8.14 },
+					{ "time": 1.0666, "x": -1.76, "y": 0.56 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 11.58,
+						"curve": [ 0.169, 0.37, 0.632, 1.55 ]
+					},
+					{
+						"time": 0.1333,
+						"angle": 28.13,
+						"curve": [ 0.692, 0, 0.692, 0.99 ]
+					},
+					{
+						"time": 0.6666,
+						"angle": -27.42,
+						"curve": [ 0.117, 0.41, 0.738, 1.76 ]
+					},
+					{ "time": 0.8, "angle": -36.32 },
+					{ "time": 1.0666, "angle": 11.58 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": -8.27 },
+					{ "time": 0.1333, "angle": 18.43 },
+					{ "time": 0.6666, "angle": 0.88 },
+					{ "time": 1.0666, "angle": -8.27 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -10.28 },
+					{
+						"time": 0.1333,
+						"angle": -15.38,
+						"curve": [ 0.545, 0, 1, 1 ]
+					},
+					{
+						"time": 0.4,
+						"angle": -9.78,
+						"curve": [ 0.58, 0.17, 1, 1 ]
+					},
+					{ "time": 0.6666, "angle": -15.75 },
+					{ "time": 0.9333, "angle": -7.06 },
+					{ "time": 1.0666, "angle": -10.28 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68 },
+					{ "time": 0.1333, "x": -3.67, "y": 0.68 },
+					{ "time": 0.4, "x": -3.67, "y": 1.97 },
+					{ "time": 0.6666, "x": -3.67, "y": -0.14 },
+					{ "time": 1.0666, "x": -3.67, "y": 1.68 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": -5.25 },
+					{ "time": 0.2666, "angle": -4.08 },
+					{ "time": 0.4, "angle": -6.45 },
+					{ "time": 0.5333, "angle": -5.39 },
+					{ "time": 0.8, "angle": -11.68 },
+					{ "time": 0.9333, "angle": 0.46 },
+					{ "time": 1.0666, "angle": -5.25 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -3.39 },
+					{ "time": 0.1333, "angle": -45.53 },
+					{ "time": 0.2666, "angle": -2.59 },
+					{ "time": 0.5333, "angle": -19.53 },
+					{ "time": 0.6666, "angle": -64.8 },
+					{
+						"time": 0.8,
+						"angle": -82.56,
+						"curve": [ 0.557, 0.18, 1, 1 ]
+					},
+					{ "time": 1.0666, "angle": -3.39 }
+				]
+			},
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 1.0666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0 },
+					{
+						"time": 0.1333,
+						"x": 0,
+						"y": -7.61,
+						"curve": [ 0.272, 0.86, 1, 1 ]
+					},
+					{ "time": 0.4, "x": 0, "y": 8.7 },
+					{ "time": 0.5333, "x": 0, "y": -0.41 },
+					{
+						"time": 0.6666,
+						"x": 0,
+						"y": -7.05,
+						"curve": [ 0.235, 0.89, 1, 1 ]
+					},
+					{ "time": 0.8, "x": 0, "y": 2.92 },
+					{ "time": 0.9333, "x": 0, "y": 6.78 },
+					{ "time": 1.0666, "x": 0, "y": 0 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 3.6 },
+					{ "time": 0.1333, "angle": 17.49 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{ "time": 0.5333, "angle": 5.17 },
+					{ "time": 0.6666, "angle": 18.36 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 3.6,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.1666, "angle": -0.2 },
+					{ "time": 0.2666, "angle": 6.1 },
+					{ "time": 0.4, "angle": 3.45 },
+					{
+						"time": 0.5333,
+						"angle": 5.17,
+						"curve": [ 0, 0, 0.704, 1.61 ]
+					},
+					{ "time": 0.7, "angle": 1.1 },
+					{ "time": 0.8, "angle": 6.09 },
+					{ "time": 0.9333, "angle": 2.28 },
+					{ "time": 1.0666, "angle": 3.6 }
+				]
+			}
+		}
+	},
+	"jump": {
+		"bones": {
+			"hip": {
+				"rotate": [
+					{ "time": 0, "angle": 0, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 0, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"translate": [
+					{ "time": 0, "x": -11.57, "y": -3 },
+					{ "time": 0.2333, "x": -16.2, "y": -19.43 },
+					{
+						"time": 0.3333,
+						"x": 7.66,
+						"y": -8.48,
+						"curve": [ 0.057, 0.06, 0.712, 1 ]
+					},
+					{ "time": 0.3666, "x": 15.38, "y": 5.01 },
+					{ "time": 0.4666, "x": -7.84, "y": 57.22 },
+					{
+						"time": 0.6,
+						"x": -10.81,
+						"y": 96.34,
+						"curve": [ 0.241, 0, 1, 1 ]
+					},
+					{ "time": 0.7333, "x": -7.01, "y": 54.7 },
+					{ "time": 0.8, "x": -10.58, "y": 32.2 },
+					{ "time": 0.9333, "x": -31.99, "y": 0.45 },
+					{ "time": 1.0666, "x": -12.48, "y": -29.47 },
+					{ "time": 1.3666, "x": -11.57, "y": -3 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 17.13 },
+					{ "time": 0.2333, "angle": 44.35 },
+					{ "time": 0.3333, "angle": 16.46 },
+					{ "time": 0.4, "angle": -9.88 },
+					{ "time": 0.4666, "angle": -11.42 },
+					{ "time": 0.5666, "angle": 23.46 },
+					{ "time": 0.7666, "angle": 71.82 },
+					{ "time": 0.9333, "angle": 65.53 },
+					{ "time": 1.0666, "angle": 51.01 },
+					{ "time": 1.3666, "angle": 17.13 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3, "y": -2.25, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3, "y": -2.25 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -16.25 },
+					{ "time": 0.2333, "angle": -52.21 },
+					{ "time": 0.4, "angle": 15.04 },
+					{ "time": 0.4666, "angle": -8.95 },
+					{ "time": 0.5666, "angle": -39.53 },
+					{ "time": 0.7666, "angle": -27.27 },
+					{ "time": 0.9333, "angle": -3.52 },
+					{ "time": 1.0666, "angle": -61.92 },
+					{ "time": 1.3666, "angle": -16.25 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left foot": {
+				"rotate": [
+					{ "time": 0, "angle": 0.33 },
+					{ "time": 0.2333, "angle": 6.2 },
+					{ "time": 0.3333, "angle": 14.73 },
+					{ "time": 0.4, "angle": -15.54 },
+					{ "time": 0.4333, "angle": -21.2 },
+					{ "time": 0.5666, "angle": -7.55 },
+					{ "time": 0.7666, "angle": -0.67 },
+					{ "time": 0.9333, "angle": -0.58 },
+					{ "time": 1.0666, "angle": 14.64 },
+					{ "time": 1.3666, "angle": 0.33 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right upper leg": {
+				"rotate": [
+					{ "time": 0, "angle": 25.97 },
+					{ "time": 0.2333, "angle": 46.43 },
+					{ "time": 0.3333, "angle": 22.61 },
+					{ "time": 0.4, "angle": 2.13 },
+					{
+						"time": 0.4666,
+						"angle": 0.04,
+						"curve": [ 0, 0, 0.637, 0.98 ]
+					},
+					{ "time": 0.6, "angle": 65.55 },
+					{ "time": 0.7666, "angle": 64.93 },
+					{ "time": 0.9333, "angle": 41.08 },
+					{ "time": 1.0666, "angle": 66.25 },
+					{ "time": 1.3666, "angle": 25.97 }
+				],
+				"translate": [
+					{ "time": 0, "x": 5.74, "y": 0.61 },
+					{ "time": 0.2333, "x": 4.79, "y": 1.79 },
+					{ "time": 0.3333, "x": 6.05, "y": -4.55 },
+					{ "time": 0.9333, "x": 4.79, "y": 1.79, "curve": "stepped" },
+					{ "time": 1.0666, "x": 4.79, "y": 1.79 },
+					{ "time": 1.3666, "x": 5.74, "y": 0.61 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right lower leg": {
+				"rotate": [
+					{ "time": 0, "angle": -27.46 },
+					{ "time": 0.2333, "angle": -64.03 },
+					{ "time": 0.4, "angle": -48.36 },
+					{ "time": 0.5666, "angle": -76.86 },
+					{ "time": 0.7666, "angle": -26.89 },
+					{ "time": 0.9, "angle": -18.97 },
+					{ "time": 0.9333, "angle": -14.18 },
+					{ "time": 1.0666, "angle": -80.45 },
+					{ "time": 1.3666, "angle": -27.46 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right foot": {
+				"rotate": [
+					{ "time": 0, "angle": 1.08 },
+					{ "time": 0.2333, "angle": 16.02 },
+					{ "time": 0.3, "angle": 12.94 },
+					{ "time": 0.3333, "angle": 15.16 },
+					{ "time": 0.4, "angle": -14.7 },
+					{ "time": 0.4333, "angle": -12.85 },
+					{ "time": 0.4666, "angle": -19.18 },
+					{ "time": 0.5666, "angle": -15.82 },
+					{ "time": 0.6, "angle": -3.59 },
+					{ "time": 0.7666, "angle": -3.56 },
+					{ "time": 0.9333, "angle": 1.86 },
+					{ "time": 1.0666, "angle": 16.02 },
+					{ "time": 1.3666, "angle": 1.08 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -13.35 },
+					{ "time": 0.2333, "angle": -48.95 },
+					{ "time": 0.4333, "angle": -35.77 },
+					{ "time": 0.6, "angle": -4.59 },
+					{ "time": 0.7666, "angle": 14.61 },
+					{ "time": 0.9333, "angle": 15.74 },
+					{ "time": 1.0666, "angle": -32.44 },
+					{ "time": 1.3666, "angle": -13.35 }
+				],
+				"translate": [
+					{ "time": 0, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 0.9333, "x": -3.67, "y": 1.68, "curve": "stepped" },
+					{ "time": 1.3666, "x": -3.67, "y": 1.68 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 12.78 },
+					{ "time": 0.2333, "angle": 16.46 },
+					{ "time": 0.4, "angle": 26.49 },
+					{ "time": 0.6, "angle": 15.51 },
+					{ "time": 0.7666, "angle": 1.34 },
+					{ "time": 0.9333, "angle": 2.35 },
+					{ "time": 1.0666, "angle": 6.08 },
+					{ "time": 1.3, "angle": 21.23 },
+					{ "time": 1.3666, "angle": 12.78 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{ "time": 0, "angle": 5.19 },
+					{ "time": 0.2333, "angle": 20.27 },
+					{ "time": 0.4, "angle": 15.27 },
+					{ "time": 0.6, "angle": -24.69 },
+					{ "time": 0.7666, "angle": -11.02 },
+					{ "time": 0.9333, "angle": -24.38 },
+					{ "time": 1.0666, "angle": 11.99 },
+					{ "time": 1.3, "angle": 4.86 },
+					{ "time": 1.3666, "angle": 5.19 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 0.05,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": 279.66,
+						"curve": [ 0.218, 0.67, 0.66, 0.99 ]
+					},
+					{
+						"time": 0.5,
+						"angle": 62.27,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": 28.91 },
+					{ "time": 1.0666, "angle": -8.62 },
+					{ "time": 1.1666, "angle": -18.43 },
+					{ "time": 1.3666, "angle": 0.05 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 0.9333, "x": -1.76, "y": 0.56, "curve": "stepped" },
+					{ "time": 1.3666, "x": -1.76, "y": 0.56 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left hand": {
+				"rotate": [
+					{ "time": 0, "angle": 11.58, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 11.58, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 11.58 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"left arm": {
+				"rotate": [
+					{ "time": 0, "angle": 0.51 },
+					{ "time": 0.4333, "angle": 12.82 },
+					{ "time": 0.6, "angle": 47.55 },
+					{ "time": 0.9333, "angle": 12.82 },
+					{ "time": 1.1666, "angle": -6.5 },
+					{ "time": 1.3666, "angle": 0.51 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right shoulder": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 43.82,
+						"curve": [ 0, 0, 0.62, 1 ]
+					},
+					{
+						"time": 0.2333,
+						"angle": -8.74,
+						"curve": [ 0.304, 0.58, 0.709, 0.97 ]
+					},
+					{
+						"time": 0.5333,
+						"angle": -208.02,
+						"curve": [ 0.462, 0, 0.764, 0.58 ]
+					},
+					{ "time": 0.9333, "angle": -246.72 },
+					{ "time": 1.0666, "angle": -307.13 },
+					{ "time": 1.1666, "angle": 37.15 },
+					{ "time": 1.3666, "angle": 43.82 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 0.9333, "x": -7.84, "y": 7.19, "curve": "stepped" },
+					{ "time": 1.3666, "x": -7.84, "y": 7.19 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right arm": {
+				"rotate": [
+					{ "time": 0, "angle": -4.02 },
+					{ "time": 0.6, "angle": 17.5 },
+					{ "time": 0.9333, "angle": -4.02 },
+					{ "time": 1.1666, "angle": -16.72 },
+					{ "time": 1.3666, "angle": -4.02 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"right hand": {
+				"rotate": [
+					{ "time": 0, "angle": 22.92, "curve": "stepped" },
+					{ "time": 0.9333, "angle": 22.92, "curve": "stepped" },
+					{ "time": 1.3666, "angle": 22.92 }
+				],
+				"translate": [
+					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
+					{ "time": 1.3666, "x": 0, "y": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 0.9333, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			},
+			"root": {
+				"rotate": [
+					{ "time": 0, "angle": 0 },
+					{ "time": 0.4333, "angle": -14.52 },
+					{ "time": 0.8, "angle": 9.86 },
+					{ "time": 1.3666, "angle": 0 }
+				],
+				"scale": [
+					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
+					{ "time": 1.3666, "x": 1, "y": 1 }
+				]
+			}
+		}
+	}
+}
+}

+ 11 - 15
spine-sfml/example/main.cpp

@@ -24,6 +24,7 @@
  ******************************************************************************/
  ******************************************************************************/
 
 
 #include <iostream>
 #include <iostream>
+#include <string.h>
 #include <spine/spine-sfml.h>
 #include <spine/spine-sfml.h>
 #include <SFML/Graphics.hpp>
 #include <SFML/Graphics.hpp>
 
 
@@ -35,15 +36,13 @@ void spineboy () {
 	// Load atlas, skeleton, and animations.
 	// Load atlas, skeleton, and animations.
 	Atlas* atlas = Atlas_readAtlasFile("../data/spineboy.atlas");
 	Atlas* atlas = Atlas_readAtlasFile("../data/spineboy.atlas");
 	SkeletonJson* json = SkeletonJson_create(atlas);
 	SkeletonJson* json = SkeletonJson_create(atlas);
-	SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "../data/spineboy-skeleton.json");
-	Animation* walkAnimation = SkeletonJson_readAnimationFile(json, "../data/spineboy-walk.json", skeletonData);
-	Animation* jumpAnimation = SkeletonJson_readAnimationFile(json, "../data/spineboy-jump.json", skeletonData);
+	SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "../data/spineboy.json");
 	SkeletonJson_dispose(json);
 	SkeletonJson_dispose(json);
 
 
 	// Configure mixing.
 	// Configure mixing.
-	AnimationStateData* stateData = AnimationStateData_create();
-	AnimationStateData_setMix(stateData, walkAnimation, jumpAnimation, 0.4f);
-	AnimationStateData_setMix(stateData, jumpAnimation, walkAnimation, 0.4f);
+	AnimationStateData* stateData = AnimationStateData_create(skeletonData);
+	AnimationStateData_setMixByName(stateData, "walk", "jump", 0.4f);
+	AnimationStateData_setMixByName(stateData, "jump", "walk", 0.4f);
 
 
 	SkeletonDrawable* drawable = new SkeletonDrawable(skeletonData, stateData);
 	SkeletonDrawable* drawable = new SkeletonDrawable(skeletonData, stateData);
 	drawable->timeScale = 0.5f;
 	drawable->timeScale = 0.5f;
@@ -57,7 +56,7 @@ void spineboy () {
 	Skeleton_getRootBone(skeleton)->y = 420;
 	Skeleton_getRootBone(skeleton)->y = 420;
 	Skeleton_updateWorldTransform(skeleton);
 	Skeleton_updateWorldTransform(skeleton);
 
 
-	AnimationState_setAnimation(drawable->state, walkAnimation, true);
+	AnimationState_setAnimationByName(drawable->state, "walk", true);
 
 
 	sf::RenderWindow window(sf::VideoMode(640, 480), "Spine SFML");
 	sf::RenderWindow window(sf::VideoMode(640, 480), "Spine SFML");
 	window.setFramerateLimit(60);
 	window.setFramerateLimit(60);
@@ -70,10 +69,10 @@ void spineboy () {
 		float delta = deltaClock.getElapsedTime().asSeconds();
 		float delta = deltaClock.getElapsedTime().asSeconds();
 		deltaClock.restart();
 		deltaClock.restart();
 
 
-		if (drawable->state->animation == walkAnimation) {
-			if (drawable->state->time > 2) AnimationState_setAnimation(drawable->state, jumpAnimation, false);
+		if (strcmp(drawable->state->animation->name, "walk") == 0) {
+			if (drawable->state->time > 2) AnimationState_setAnimationByName(drawable->state, "jump", false);
 		} else {
 		} else {
-			if (drawable->state->time > 1) AnimationState_setAnimation(drawable->state, walkAnimation, true);
+			if (drawable->state->time > 1) AnimationState_setAnimationByName(drawable->state, "walk", true);
 		}
 		}
 
 
 		drawable->update(delta);
 		drawable->update(delta);
@@ -83,8 +82,6 @@ void spineboy () {
 		window.display();
 		window.display();
 	}
 	}
 
 
-	Animation_dispose(walkAnimation);
-	Animation_dispose(jumpAnimation);
 	SkeletonData_dispose(skeletonData);
 	SkeletonData_dispose(skeletonData);
 	Atlas_dispose(atlas);
 	Atlas_dispose(atlas);
 }
 }
@@ -93,8 +90,8 @@ void goblins () {
 	// Load atlas, skeleton, and animations.
 	// Load atlas, skeleton, and animations.
 	Atlas* atlas = Atlas_readAtlasFile("../data/goblins.atlas");
 	Atlas* atlas = Atlas_readAtlasFile("../data/goblins.atlas");
 	SkeletonJson* json = SkeletonJson_create(atlas);
 	SkeletonJson* json = SkeletonJson_create(atlas);
-	SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "../data/goblins-skeleton.json");
-	Animation* walkAnimation = SkeletonJson_readAnimationFile(json, "../data/goblins-walk.json", skeletonData);
+	SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "../data/goblins.json");
+	Animation* walkAnimation = SkeletonData_findAnimation(skeletonData, "walk");
 	SkeletonJson_dispose(json);
 	SkeletonJson_dispose(json);
 
 
 	SkeletonDrawable* drawable = new SkeletonDrawable(skeletonData);
 	SkeletonDrawable* drawable = new SkeletonDrawable(skeletonData);
@@ -131,7 +128,6 @@ void goblins () {
 		window.display();
 		window.display();
 	}
 	}
 
 
-	Animation_dispose(walkAnimation);
 	SkeletonData_dispose(skeletonData);
 	SkeletonData_dispose(skeletonData);
 	Atlas_dispose(atlas);
 	Atlas_dispose(atlas);
 }
 }