Jelajahi Sumber

Updated spine-c, spine-sfml, spine-cocos2d-objc and spine-cocos2dx to 3.2.01

- Updated spine-c to 3.2.01, adding shearing and transform constraints plus various bug fixes
- Introduced CMake based system to generated IDE projects for spine-sfml, and download dependencies for all other runtimes
- Updated all spine-c based runtime READMEs with new usage and example instructions
- Moved spine-cocos2d-iphone v2 and spine-cocos2dx v2 to separate branches. These will no longer be updated
- Renamed spine-cocos2d-iphone to spine-cocos2d-iphone

Removed cocos2d-ios v2 Spine runtime. See branch cocos2d-ios-v2 for legacy apps

Moved cocos2d-ios v3 Spine runtime to top-level sphine-cocos2d-iphone directory

Added Visual Studio support to CMake build

Added Linux support for spine-sfml. Do apt-get install sfml-dev as a prerequisit, makes everyone's life easier

Refactored Mac OS X framework detection and linking, added SFML_STATIC define for Win32 build

Removed spine-cocos2dx v2 runtime. See cocos2dx-v2 branch on Github

Moved spine-cocos2dx v3 runtime to root of spine-cocos2dx

spine-c, spine-cocos2d-iphone, spine-cocos2dx, spine-sfml updated to 3.2.00

* Added CMake build for spine-c and spine-sfml
* Removed spine-cocos2dx v2 and spine-cocos2d-iphone v2. See the cocos2dx-v2 and cocos2d-ios-v2 branches if you need these runtimes still
* Added transform constraint rotate, scale, and shear offsets and mixes
* Added spTransformConstraintTimeline
* Added bone shearing
* Added spShearTimeline
* Changed spSkeleton_updateCache
* Changed JSON format, see http://esotericsoftware.com/spine-json-format

Ported 1be89d1c5766fedb91f080a23bffaef6609b86c3 to spine-c

Cleaned up spine-c, removed IDE specific files and unnecessary data/ folder. Use CMake to import into your most beloved IDE

Added spine-cocos2d-iphone to CMake, only downloads cocos2d-objc dependency. Use Xcode project in spine-cocos2d-iphone/ to run examples

Added -std=c98 -pedantic -Wall to spine-c CMake file, fixed up all warnings, fixed up .gitignore

Fixed warnings, replaced calls to stdlib cos/sin/atan2 with macros

New cocos2dx example project, for Windows, Linux and Mac OS X. Doesn't work on Windows/Linux yet

Fixed spine-cocos2dx Visual Studio projects

Reworked cocos2dx dependency resolution

Fixed up src/header paths in CMake files. Dependencies are only downloaded if you build a specific runtime example

Updated spine-sfml README with instructions for Windows

Updated spine-sfml README with instructions for Linux and Mac OS X

Fixed README formatting

More formatting, sorry, can't preview markdown...

More README changes

Renamed spine-cocos2d-iphone to spine-cocos2d-objc, fixed up Xcode project and README

Updated spine-cocos2d-objc README

Added context when exceptions are thrown during attachment and animation parsing.

Added JsonRollback, a tool for converting newer JSON so it can be loaded by an older Spine version.

[Unity] Update BoneFollower

Added coverting linkedmesh to weightedlinkedmesh.

[LUA] AnimationState trackCount bugfixes (#466)

* resolved conflict

* made trackCount keep count, not maximum track index.

Prettier with varargs.

Updated .gitignore to exclude cocos2dx dependencies

Fixed up READMEs of spine-c based runtimes with proper version info. Fixed cocos2d-x CMake build to delete outdated Spine runtime shipped by cocos2d-x
John 9 tahun lalu
induk
melakukan
b9bd66b36b
100 mengubah file dengan 745 tambahan dan 7381 penghapusan
  1. 13 14
      .gitignore
  2. 23 0
      CMakeLists.txt
  3. 9 0
      spine-c/CMakeLists.txt
  4. 0 50
      spine-c/Makefile
  5. 1 1
      spine-c/README.md
  6. 0 2419
      spine-c/data/spineboy.json
  7. TEMPAT SAMPAH
      spine-c/data/spineboy.png
  8. 45 2
      spine-c/include/spine/Animation.h
  9. 2 2
      spine-c/include/spine/Bone.h
  10. 1 3
      spine-c/include/spine/BoneData.h
  11. 11 4
      spine-c/include/spine/TransformConstraint.h
  12. 11 4
      spine-c/include/spine/TransformConstraintData.h
  13. 5 0
      spine-c/include/spine/extension.h
  14. 0 20
      spine-c/spine-c.sln
  15. 0 140
      spine-c/spine-c.vcxproj
  16. 0 195
      spine-c/spine-c.vcxproj.filters
  17. 204 97
      spine-c/src/spine/Animation.c
  18. 16 19
      spine-c/src/spine/Bone.c
  19. 172 166
      spine-c/src/spine/IkConstraint.c
  20. 7 6
      spine-c/src/spine/Skeleton.c
  21. 50 15
      spine-c/src/spine/SkeletonJson.c
  22. 53 5
      spine-c/src/spine/TransformConstraint.c
  23. 0 34
      spine-cocos2d-iphone/2/README.md
  24. 0 20
      spine-cocos2d-iphone/2/Resources-ios/AppDelegate.h
  25. 0 162
      spine-cocos2d-iphone/2/Resources-ios/AppDelegate.m
  26. 0 9
      spine-cocos2d-iphone/2/Resources-ios/main.m
  27. 0 14
      spine-cocos2d-iphone/2/Resources-mac/AppDelegate.h
  28. 0 38
      spine-cocos2d-iphone/2/Resources-mac/AppDelegate.m
  29. 0 0
      spine-cocos2d-iphone/2/cocos2d/Place cocos2d here.txt
  30. 0 41
      spine-cocos2d-iphone/2/example/GoblinsExample.h
  31. 0 80
      spine-cocos2d-iphone/2/example/GoblinsExample.m
  32. 0 41
      spine-cocos2d-iphone/2/example/SpineboyExample.h
  33. 0 105
      spine-cocos2d-iphone/2/example/SpineboyExample.m
  34. 0 831
      spine-cocos2d-iphone/2/spine-cocos2d-iphone-ios.xcodeproj/project.pbxproj
  35. 0 759
      spine-cocos2d-iphone/2/spine-cocos2d-iphone-mac.xcodeproj/project.pbxproj
  36. 0 52
      spine-cocos2d-iphone/2/src/spine/PolygonBatch.h
  37. 0 107
      spine-cocos2d-iphone/2/src/spine/PolygonBatch.m
  38. 0 256
      spine-cocos2d-iphone/2/src/spine/SkeletonAnimation.m
  39. 0 93
      spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.h
  40. 0 370
      spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.m
  41. 0 49
      spine-cocos2d-iphone/2/src/spine/spine-cocos2d-iphone.m
  42. 0 34
      spine-cocos2d-iphone/3/README.md
  43. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/[email protected]
  44. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/Default-Landscape~ipad.png
  45. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/Default.png
  46. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/[email protected]
  47. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/Icon-72.png
  48. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/Icon-Small-50.png
  49. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/Icon-Small.png
  50. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/[email protected]
  51. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/Icon.png
  52. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/[email protected]
  53. 0 11
      spine-cocos2d-iphone/3/Resources-ios/Prefix.pch
  54. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-ios/iTunesArtwork
  55. 0 2
      spine-cocos2d-iphone/3/Resources-mac/English.lproj/InfoPlist.strings
  56. 0 896
      spine-cocos2d-iphone/3/Resources-mac/English.lproj/MainMenu.xib
  57. 0 4
      spine-cocos2d-iphone/3/Resources-mac/Prefix.pch
  58. TEMPAT SAMPAH
      spine-cocos2d-iphone/3/Resources-mac/icon.icns
  59. 0 8
      spine-cocos2d-iphone/3/Resources-mac/main.m
  60. 0 7
      spine-cocos2d-iphone/3/spine-cocos2d-iphone-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  61. 0 88
      spine-cocos2d-iphone/3/src/spine/SkeletonAnimation.h
  62. 0 35
      spine-cocos2d-iphone/3/src/spine/spine-cocos2d-iphone.h
  63. 5 0
      spine-cocos2d-objc/CMakeLists.txt
  64. 0 0
      spine-cocos2d-objc/LICENSE
  65. 44 0
      spine-cocos2d-objc/README.md
  66. 0 0
      spine-cocos2d-objc/Resources-ios/AppDelegate.h
  67. 0 0
      spine-cocos2d-objc/Resources-ios/AppDelegate.m
  68. 0 0
      spine-cocos2d-objc/Resources-ios/[email protected]
  69. 0 0
      spine-cocos2d-objc/Resources-ios/Default-Landscape~ipad.png
  70. 0 0
      spine-cocos2d-objc/Resources-ios/Default.png
  71. 0 0
      spine-cocos2d-objc/Resources-ios/[email protected]
  72. 0 0
      spine-cocos2d-objc/Resources-ios/Icon-72.png
  73. 0 0
      spine-cocos2d-objc/Resources-ios/Icon-Small-50.png
  74. 0 0
      spine-cocos2d-objc/Resources-ios/Icon-Small.png
  75. 0 0
      spine-cocos2d-objc/Resources-ios/[email protected]
  76. 0 0
      spine-cocos2d-objc/Resources-ios/Icon.png
  77. 0 0
      spine-cocos2d-objc/Resources-ios/[email protected]
  78. 0 0
      spine-cocos2d-objc/Resources-ios/Info.plist
  79. 0 0
      spine-cocos2d-objc/Resources-ios/Prefix.pch
  80. 0 0
      spine-cocos2d-objc/Resources-ios/iTunesArtwork
  81. 0 0
      spine-cocos2d-objc/Resources-ios/main.m
  82. 0 0
      spine-cocos2d-objc/Resources-mac/AppDelegate.h
  83. 0 0
      spine-cocos2d-objc/Resources-mac/AppDelegate.m
  84. 0 0
      spine-cocos2d-objc/Resources-mac/English.lproj/InfoPlist.strings
  85. 0 0
      spine-cocos2d-objc/Resources-mac/English.lproj/MainMenu.xib
  86. 0 0
      spine-cocos2d-objc/Resources-mac/Info.plist
  87. 0 0
      spine-cocos2d-objc/Resources-mac/Prefix.pch
  88. 0 0
      spine-cocos2d-objc/Resources-mac/icon.icns
  89. 0 0
      spine-cocos2d-objc/Resources-mac/main.m
  90. 0 0
      spine-cocos2d-objc/Resources/goblins-mesh.atlas
  91. 0 0
      spine-cocos2d-objc/Resources/goblins-mesh.json
  92. 0 0
      spine-cocos2d-objc/Resources/goblins-mesh.png
  93. 0 0
      spine-cocos2d-objc/Resources/spineboy.atlas
  94. 0 0
      spine-cocos2d-objc/Resources/spineboy.json
  95. 0 0
      spine-cocos2d-objc/Resources/spineboy.png
  96. 1 1
      spine-cocos2d-objc/example/GoblinsExample.h
  97. 0 0
      spine-cocos2d-objc/example/GoblinsExample.m
  98. 1 1
      spine-cocos2d-objc/example/SpineboyExample.h
  99. 0 0
      spine-cocos2d-objc/example/SpineboyExample.m
  100. 71 71
      spine-cocos2d-objc/spine-cocos2d-objc.xcodeproj/project.pbxproj

+ 13 - 14
.gitignore

@@ -12,31 +12,30 @@ target
 *.user
 *.user
 .DS_Store
 .DS_Store
 
 
+.idea/
+build/
+
 spine-c/Debug/*
 spine-c/Debug/*
-spine-c/dist
-spine-c/obj
 
 
 spine-cpp/Debug/*
 spine-cpp/Debug/*
 
 
 spine-sfml/Debug/*
 spine-sfml/Debug/*
 spine-sfml/SFML
 spine-sfml/SFML
+spine-sfml/dependencies
 
 
 spine-libgdx/spine-libgdx/bin/*
 spine-libgdx/spine-libgdx/bin/*
 spine-libgdx/spine-libgdx-tests/bin/*
 spine-libgdx/spine-libgdx-tests/bin/*
 spine-libgdx/spine-skeletonviewer/bin/*
 spine-libgdx/spine-skeletonviewer/bin/*
 
 
-spine-cocos2dx/2/cocos2dx/
-!spine-cocos2dx/2/cocos2dx/Place cocos2dx here.txt
-spine-cocos2dx/2/example/proj.win32/Debug
-spine-cocos2dx/3/cocos2dx/
-!spine-cocos2dx/3/cocos2dx/Place cocos2dx here.txt
-spine-cocos2dx/3/example/proj.win32/Debug
-xcuserdata
-
-spine-cocos2d-iphone/2/cocos2d/*
-!spine-cocos2d-iphone/2/cocos2d/Place cocos2d here.txt
-spine-cocos2d-iphone/3/cocos2d/*
-!spine-cocos2d-iphone/3/cocos2d/Place cocos2d here.txt
+spine-cocos2dx/dependencies
+spine-cocos2dx/example/cocos2dx.zip
+spine-cocos2dx/example/__MACOSX
+spine-cocos2dx/example/cocos2d
+spine-cocos2dx/example/proj.win32/spine-cocos2d-x.VC.opendb
+xcuserdata/
+
+spine-cocos2d-iphone/cocos2d/*
+spine-cocos2d-iphone/spine-cocos2d-iphone-ios.xcodeproj/project.xcworkspace/xcshareddata/
 
 
 spine-csharp/bin
 spine-csharp/bin
 spine-csharp/obj
 spine-csharp/obj

+ 23 - 0
CMakeLists.txt

@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 2.8.9)
+project(spine)
+
+set(CMAKE_INSTALL_PREFIX "./")
+set(CMAKE_VERBOSE_MAKEFILE ON)
+set(SPINE_SFML FALSE CACHE BOOL FALSE)
+set(SPINE_COCOS2D_OBJC FALSE CACHE BOOL FALSE)
+set(SPINE_COCOS2D_X FALSE CACHE BOOL FALSE)
+
+if((${SPINE_SFML}) OR (${CMAKE_CURRENT_BINARY_DIR} MATCHES "spine-sfml"))
+	add_subdirectory(spine-c)
+	add_subdirectory(spine-sfml)
+endif()
+
+if((${SPINE_COCOS2D_OBJC}) OR (${CMAKE_CURRENT_BINARY_DIR} MATCHES "spine-cocos2d-objc"))
+	if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+		add_subdirectory(spine-cocos2d-objc)
+	endif()
+endif()
+
+if((${SPINE_COCOS2D_X}) OR (${CMAKE_CURRENT_BINARY_DIR} MATCHES "spine-cocos2dx"))
+	add_subdirectory(spine-cocos2dx)
+endif()

+ 9 - 0
spine-c/CMakeLists.txt

@@ -0,0 +1,9 @@
+include_directories(include)
+file(GLOB INCLUDES "include/**/*.h")
+file(GLOB SOURCES "src/**/*.c" "src/**/*.cpp")
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=c89 -pedantic")
+add_library(spine-c STATIC ${SOURCES} ${INCLUDES})
+target_include_directories(spine-c PUBLIC include)
+install(TARGETS spine-c DESTINATION dist/lib)
+install(FILES ${INCLUDES} DESTINATION dist/include)

+ 0 - 50
spine-c/Makefile

@@ -1,50 +0,0 @@
-LIBS = -lm
-CFLAGS = -Wall -I./include/
-
-SRC=$(wildcard src/spine/*.c)
-OBJ_FILES := $(addprefix obj/,$(notdir $(SRC:.c=.o)))
-STATIC_OBJ_FILES := $(addprefix obj/,$(notdir $(SRC:.c=-s.o)))
-DEBUG_OBJ_FILES := $(addprefix obj/,$(notdir $(SRC:.c=-d.o)))
-
-default:
-	@echo
-	@echo "- Options are (debug|release)-dynamic and release-static."
-	@echo "- Ex: release-static"
-	@echo
-
-release-dynamic: $(OBJ_FILES)
-	@mkdir -p dist
-	gcc -s -shared -Wl,-soname,libspine.so -o dist/libspine.so $(OBJ_FILES)
-	@echo
-	@echo - /dist/libspine.so
-	@echo
-
-debug-dynamic: $(DEBUG_OBJ_FILES)
-	@mkdir -p dist
-	gcc -g3 -shared -Wl,-soname,libspine.so -o dist/libspine-d.so $(DEBUG_OBJ_FILES)
-	@echo
-	@echo - /dist/libspine-d.so
-	@echo
-
-obj/%.o: src/spine/%.c
-	@mkdir -p obj
-	gcc -fPIC -c -o $@ $< $(CFLAGS) $(LIBS)
-
-obj/%-d.o: src/spine/%.c
-	@mkdir -p obj
-	gcc -fPIC -c -o $@ $< $(CFLAGS)
-
-release-static: $(STATIC_OBJ_FILES)
-	@mkdir -p dist
-	ar rcs dist/libspine-s.a $(STATIC_OBJ_FILES)
-	@echo
-	@echo - /dist/libspine-s.a
-	@echo
-
-obj/%-s.o: src/spine/%.c
-	@mkdir -p obj
-	gcc -c -o $@ $< $(CFLAGS) $(LIBS)
-
-clean:
-	rm -rf obj/*
-	rm -rf dist/*

+ 1 - 1
spine-c/README.md

@@ -12,7 +12,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
 
 
 ## Spine version
 ## Spine version
 
 
-spine-c works with data exported from Spine 3.1.08. Updating spine-c to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress.
+spine-c works with data exported from Spine version 3.2.01.
 
 
 spine-c supports all Spine features.
 spine-c supports all Spine features.
 
 

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

@@ -1,2419 +0,0 @@
-{
-"bones": [
-	{ "name": "hip", "y": 247.47 },
-	{ "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" },
-	{ "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" },
-	{ "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" },
-	{
-		"name": "front_shin",
-		"parent": "front_thigh",
-		"length": 128.76,
-		"x": 78.69,
-		"y": 1.6,
-		"rotation": -2.21,
-		"inheritScale": false,
-		"color": "00ff04ff"
-	},
-	{ "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" },
-	{ "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" },
-	{ "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" },
-	{ "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" },
-	{
-		"name": "front_bracer",
-		"parent": "front_upper_arm",
-		"length": 40.57,
-		"x": 68.8,
-		"y": -0.68,
-		"rotation": 18.29,
-		"color": "00ff04ff"
-	},
-	{ "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" },
-	{ "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" },
-	{ "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" },
-	{ "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" },
-	{ "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" },
-	{ "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" },
-	{ "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" }
-],
-"slots": [
-	{ "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" },
-	{ "name": "rear_bracer", "bone": "rear_bracer", "attachment": "rear_bracer" },
-	{ "name": "gun", "bone": "gun", "attachment": "gun" },
-	{ "name": "rear_foot", "bone": "rear_foot", "attachment": "rear_foot" },
-	{ "name": "rear_thigh", "bone": "rear_thigh", "attachment": "rear_thigh" },
-	{ "name": "rear_shin", "bone": "rear_shin", "attachment": "rear_shin" },
-	{ "name": "neck", "bone": "neck", "attachment": "neck" },
-	{ "name": "torso", "bone": "torso", "attachment": "torso" },
-	{ "name": "front_upper_arm", "bone": "front_upper_arm", "attachment": "front_upper_arm" },
-	{ "name": "head", "bone": "head", "attachment": "head" },
-	{ "name": "eye", "bone": "head", "attachment": "eye_indifferent" },
-	{ "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" },
-	{ "name": "front_foot", "bone": "front_foot", "attachment": "front_foot" },
-	{ "name": "front_shin", "bone": "front_shin", "attachment": "front_shin" },
-	{ "name": "mouth", "bone": "head", "attachment": "mouth_smile" },
-	{ "name": "goggles", "bone": "head", "attachment": "goggles" },
-	{ "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" },
-	{ "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" },
-	{ "name": "muzzle", "bone": "gunTip", "additive": true },
-	{ "name": "head-bb", "bone": "head" }
-],
-"skins": {
-	"default": {
-		"eye": {
-			"eye_indifferent": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 },
-			"eye_surprised": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 }
-		},
-		"front_bracer": {
-			"front_bracer": { "x": 12.03, "y": -1.67, "rotation": 79.59, "width": 58, "height": 80 }
-		},
-		"front_fist": {
-			"front_fist_closed": { "x": 35.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 },
-			"front_fist_open": { "x": 39.56, "y": 7.76, "rotation": 67.16, "width": 86, "height": 87 }
-		},
-		"front_foot": {
-			"front_foot": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 126, "height": 69 },
-			"front_foot_bend1": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 128, "height": 70 },
-			"front_foot_bend2": { "x": 16.07, "y": 13.83, "rotation": 18.68, "width": 108, "height": 93 }
-		},
-		"front_shin": {
-			"front_shin": { "x": 55.11, "y": -3.54, "rotation": 96.59, "width": 82, "height": 184 }
-		},
-		"front_thigh": {
-			"front_thigh": { "x": 42.47, "y": 4.44, "rotation": 84.86, "width": 48, "height": 112 }
-		},
-		"front_upper_arm": {
-			"front_upper_arm": { "x": 28.3, "y": 7.37, "rotation": 97.89, "width": 54, "height": 97 }
-		},
-		"goggles": {
-			"goggles": { "x": 97.07, "y": 6.54, "rotation": -70.63, "width": 261, "height": 166 }
-		},
-		"gun": {
-			"gun": { "x": 77.3, "y": 16.4, "rotation": 60.82, "width": 210, "height": 203 }
-		},
-		"head": {
-			"head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 }
-		},
-		"head-bb": {
-			"head": {
-				"type": "boundingbox",
-				"vertices": [ -19.143097, -70.30209, 40.80313, -118.074234, 257.77155, -115.61827, 285.16193, 57.18005, 120.77191, 164.95125, -5.067627, 76.94907 ]
-			}
-		},
-		"mouth": {
-			"mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 },
-			"mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 },
-			"mouth_smile": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }
-		},
-		"muzzle": {
-			"muzzle": { "x": 18.25, "y": 5.44, "rotation": 0.15, "width": 462, "height": 400 }
-		},
-		"neck": {
-			"neck": { "x": 9.76, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 }
-		},
-		"rear_bracer": {
-			"rear_bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 }
-		},
-		"rear_foot": {
-			"rear_foot": { "x": 31.51, "y": 3.57, "rotation": 23.07, "width": 113, "height": 60 },
-			"rear_foot_bend1": { "x": 34.39, "y": 4.8, "rotation": 23.07, "width": 117, "height": 66 },
-			"rear_foot_bend2": { "x": 30.38, "y": 12.62, "rotation": 23.07, "width": 103, "height": 83 }
-		},
-		"rear_shin": {
-			"rear_shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 }
-		},
-		"rear_thigh": {
-			"rear_thigh": { "x": 33.1, "y": -4.11, "rotation": 72.54, "width": 65, "height": 104 }
-		},
-		"rear_upper_arm": {
-			"rear_upper_arm": { "x": 21.12, "y": 4.08, "rotation": 89.32, "width": 47, "height": 87 }
-		},
-		"torso": {
-			"torso": { "x": 63.61, "y": 7.12, "rotation": -94.53, "width": 98, "height": 180 }
-		}
-	}
-},
-"events": {
-	"footstep": {},
-	"headAttach": { "int": 3, "float": 4 },
-	"headBehind": { "int": 5, "float": 6, "string": "setup" },
-	"headPop": { "int": 1, "float": 2 }
-},
-"animations": {
-	"death": {
-		"slots": {
-			"eye": {
-				"attachment": [
-					{ "time": 0, "name": "eye_surprised" },
-					{ "time": 0.4666, "name": "eye_indifferent" },
-					{ "time": 2.2333, "name": "eye_surprised" },
-					{ "time": 4.5333, "name": "eye_indifferent" }
-				]
-			},
-			"front_fist": {
-				"attachment": [
-					{ "time": 0, "name": "front_fist_open" }
-				]
-			},
-			"mouth": {
-				"attachment": [
-					{ "time": 0, "name": "mouth_oooo" },
-					{ "time": 2.2333, "name": "mouth_grind" },
-					{ "time": 4.5333, "name": "mouth_oooo" }
-				]
-			}
-		},
-		"bones": {
-			"head": {
-				"rotate": [
-					{ "time": 0, "angle": -2.82 },
-					{ "time": 0.1333, "angle": -28.74 },
-					{ "time": 0.2333, "angle": 11.42 },
-					{ "time": 0.3333, "angle": -50.24 },
-					{ "time": 0.4, "angle": -72.66, "curve": "stepped" },
-					{ "time": 0.4333, "angle": -72.66 },
-					{ "time": 0.5, "angle": -20.24 },
-					{ "time": 0.5666, "angle": -85.28, "curve": "stepped" },
-					{ "time": 0.9333, "angle": -85.28, "curve": "stepped" },
-					{ "time": 2.2333, "angle": -85.28 },
-					{ "time": 2.5, "angle": -51.96, "curve": "stepped" },
-					{ "time": 4.5333, "angle": -51.96 },
-					{ "time": 4.6666, "angle": -85.28 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"neck": {
-				"rotate": [
-					{ "time": 0, "angle": -2.82 },
-					{ "time": 0.1333, "angle": 12.35 },
-					{ "time": 0.2333, "angle": 29.89 },
-					{ "time": 0.3, "angle": 70.36 },
-					{ "time": 0.4, "angle": -10.22, "curve": "stepped" },
-					{ "time": 0.4333, "angle": -10.22 },
-					{ "time": 0.5, "angle": 2.92 },
-					{ "time": 0.5666, "angle": 47.94, "curve": "stepped" },
-					{ "time": 2.2333, "angle": 47.94 },
-					{ "time": 2.5, "angle": 18.5, "curve": "stepped" },
-					{ "time": 4.5333, "angle": 18.5 },
-					{ "time": 4.6666, "angle": 47.94 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"torso": {
-				"rotate": [
-					{ "time": 0, "angle": -8.61 },
-					{ "time": 0.1333, "angle": 28.19 },
-					{ "time": 0.2666, "angle": -280.19 },
-					{ "time": 0.4, "angle": -237.22, "curve": "stepped" },
-					{ "time": 0.4333, "angle": -237.22 },
-					{ "time": 0.5, "angle": 76.03, "curve": "stepped" },
-					{ "time": 0.8, "angle": 76.03, "curve": "stepped" },
-					{ "time": 0.9333, "angle": 76.03, "curve": "stepped" },
-					{ "time": 2.2333, "angle": 76.03 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 2.2333, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_upper_arm": {
-				"rotate": [
-					{ "time": 0, "angle": -38.85 },
-					{ "time": 0.1333, "angle": -299.58 },
-					{ "time": 0.2666, "angle": -244.74 },
-					{ "time": 0.4, "angle": -292.35 },
-					{ "time": 0.4333, "angle": -315.84 },
-					{ "time": 0.5, "angle": -347.94 },
-					{ "time": 0.7, "angle": -347.33, "curve": "stepped" },
-					{ "time": 2.2333, "angle": -347.33 },
-					{ "time": 2.7, "angle": -290.68 },
-					{ "time": 2.7666, "angle": -285.1 },
-					{ "time": 4.6666, "angle": -290.68 },
-					{ "time": 4.8, "angle": 8.61 },
-					{ "time": 4.8666, "angle": 10.94 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_upper_arm": {
-				"rotate": [
-					{ "time": 0, "angle": -44.69 },
-					{ "time": 0.1333, "angle": 112.26 },
-					{ "time": 0.2666, "angle": 129.07 },
-					{ "time": 0.4, "angle": 134.94, "curve": "stepped" },
-					{ "time": 0.4333, "angle": 134.94 },
-					{ "time": 0.5666, "angle": 172.6, "curve": "stepped" },
-					{ "time": 0.9333, "angle": 172.6, "curve": "stepped" },
-					{ "time": 2.2333, "angle": 172.6 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": 21.88 },
-					{ "time": 0.1333, "angle": 11.48 },
-					{ "time": 0.2666, "angle": -18.81 },
-					{ "time": 0.4, "angle": -18.92 },
-					{ "time": 0.4333, "angle": -18.28 },
-					{ "time": 0.5, "angle": 60.61 },
-					{ "time": 0.7, "angle": -18.87, "curve": "stepped" },
-					{ "time": 2.2333, "angle": -18.87 },
-					{ "time": 2.7, "angle": -1.95, "curve": "stepped" },
-					{ "time": 4.6666, "angle": -1.95 },
-					{ "time": 4.8, "angle": 34.55 },
-					{ "time": 4.9333, "angle": -18.74 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_fist": {
-				"rotate": [
-					{ "time": 0, "angle": -2.33 },
-					{ "time": 0.2666, "angle": 26.34 },
-					{ "time": 0.7, "angle": -6.07, "curve": "stepped" },
-					{ "time": 2.2333, "angle": -6.07 },
-					{ "time": 2.7, "angle": 5.72, "curve": "stepped" },
-					{ "time": 4.6666, "angle": 5.72 },
-					{ "time": 4.8666, "angle": -6.52 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": 10.36 },
-					{ "time": 0.1333, "angle": -23.12 },
-					{ "time": 0.2666, "angle": -23.11 },
-					{ "time": 0.4, "angle": -23.16, "curve": "stepped" },
-					{ "time": 0.4333, "angle": -23.16 },
-					{ "time": 0.5666, "angle": -23.2, "curve": "stepped" },
-					{ "time": 0.9333, "angle": -23.2, "curve": "stepped" },
-					{ "time": 2.2333, "angle": -23.2 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"gun": {
-				"rotate": [
-					{ "time": 0, "angle": -2.78 },
-					{ "time": 0.1333, "angle": -24.58 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"hip": {
-				"rotate": [
-					{ "time": 0, "angle": 0, "curve": "stepped" },
-					{ "time": 0.9333, "angle": 0, "curve": "stepped" },
-					{ "time": 2.2333, "angle": 0 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 },
-					{ "time": 0.2, "x": 50.34, "y": 151.73 },
-					{ "time": 0.4, "x": 5.16, "y": -119.64, "curve": "stepped" },
-					{ "time": 0.4333, "x": 5.16, "y": -119.64 },
-					{ "time": 0.5, "x": 50.34, "y": -205.18, "curve": "stepped" },
-					{ "time": 0.8, "x": 50.34, "y": -205.18, "curve": "stepped" },
-					{ "time": 0.9333, "x": 50.34, "y": -205.18, "curve": "stepped" },
-					{ "time": 2.2333, "x": 50.34, "y": -205.18 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_thigh": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.1333, "angle": 8.47 },
-					{ "time": 0.2666, "angle": 115.95 },
-					{ "time": 0.4, "angle": 180.66, "curve": "stepped" },
-					{ "time": 0.4333, "angle": 180.66 },
-					{ "time": 0.5, "angle": 155.22 },
-					{ "time": 0.6, "angle": 97.73 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_shin": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.1333, "angle": -27.37 },
-					{ "time": 0.2666, "angle": -35.1 },
-					{ "time": 0.4, "angle": -37.72, "curve": "stepped" },
-					{ "time": 0.4333, "angle": -37.72 },
-					{ "time": 0.5, "angle": -40.06 },
-					{ "time": 0.6, "angle": 2.76 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_thigh": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.1333, "angle": 70.45 },
-					{ "time": 0.2666, "angle": 155.34 },
-					{ "time": 0.4, "angle": 214.31, "curve": "stepped" },
-					{ "time": 0.4333, "angle": 214.31 },
-					{ "time": 0.5, "angle": 169.67 },
-					{ "time": 0.8, "angle": 83.27 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_shin": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.1333, "angle": 18.93 },
-					{ "time": 0.2666, "angle": -21.04 },
-					{ "time": 0.4, "angle": -29.93, "curve": "stepped" },
-					{ "time": 0.4333, "angle": -29.93 },
-					{ "time": 0.5, "angle": -16.79 },
-					{ "time": 0.8, "angle": 7.77 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_foot": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.1333, "angle": -11.62 },
-					{ "time": 0.4, "angle": -45.59, "curve": "stepped" },
-					{ "time": 0.4333, "angle": -45.59 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_foot": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.4, "angle": -48.75, "curve": "stepped" },
-					{ "time": 0.4333, "angle": -48.75 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"gunTip": {
-				"rotate": [
-					{ "time": 0, "angle": 0 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			}
-		}
-	},
-	"hit": {
-		"slots": {
-			"front_fist": {
-				"attachment": [
-					{ "time": 0.1666, "name": "front_fist_open" }
-				]
-			},
-			"mouth": {
-				"attachment": [
-					{ "time": 0, "name": "mouth_grind" },
-					{ "time": 0.3333, "name": "mouth_smile" }
-				]
-			}
-		},
-		"bones": {
-			"torso": {
-				"rotate": [
-					{ "time": 0, "angle": 56.42 },
-					{ "time": 0.3333, "angle": 8.89 }
-				]
-			},
-			"neck": {
-				"rotate": [
-					{ "time": 0, "angle": 35.38 },
-					{ "time": 0.2333, "angle": 24.94 }
-				]
-			},
-			"head": {
-				"rotate": [
-					{ "time": 0, "angle": 10.21 },
-					{ "time": 0.3333, "angle": -41.3 }
-				]
-			},
-			"front_upper_arm": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": -310.92,
-						"curve": [ 0.38, 0.53, 0.744, 1 ]
-					},
-					{ "time": 0.3333, "angle": -112.59 }
-				],
-				"translate": [
-					{ "time": 0, "x": 7.23, "y": -13.13 }
-				]
-			},
-			"front_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": 36.99 },
-					{ "time": 0.3333, "angle": -28.64 }
-				]
-			},
-			"front_fist": {
-				"rotate": [
-					{ "time": 0, "angle": 13.59 },
-					{ "time": 0.3333, "angle": 7.55 }
-				]
-			},
-			"rear_upper_arm": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 271.02,
-						"curve": [ 0.342, 0.36, 0.68, 0.71 ]
-					},
-					{ "time": 0.3333, "angle": -15.84 }
-				],
-				"translate": [
-					{ "time": 0.3333, "x": -0.09, "y": -0.46 }
-				]
-			},
-			"rear_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.3333, "angle": 40.03 }
-				]
-			},
-			"gun": {
-				"rotate": [
-					{ "time": 0, "angle": 14.98 },
-					{ "time": 0.3333, "angle": 39.75 }
-				]
-			},
-			"hip": {
-				"translate": [
-					{ "time": 0, "x": -75.54, "y": -78.03 },
-					{ "time": 0.2333, "x": -36.48, "y": 12.42 },
-					{ "time": 0.3333, "x": -36.48, "y": -2.99 }
-				]
-			},
-			"front_thigh": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 90.94,
-						"curve": [ 0.227, 0.26, 0.432, 1 ]
-					},
-					{ "time": 0.3333, "angle": 32.02 }
-				],
-				"translate": [
-					{ "time": 0, "x": 7.21, "y": -4 }
-				]
-			},
-			"rear_thigh": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 40.51,
-						"curve": [ 0.295, 0.3, 0.59, 0.99 ]
-					},
-					{ "time": 0.3333, "angle": 90.76 }
-				],
-				"translate": [
-					{ "time": 0, "x": -1.96, "y": -0.32 }
-				]
-			},
-			"front_shin": {
-				"rotate": [
-					{ "time": 0, "angle": -96.62 },
-					{ "time": 0.3333, "angle": -15.13 }
-				]
-			},
-			"rear_shin": {
-				"rotate": [
-					{ "time": 0, "angle": 7.99 },
-					{ "time": 0.3333, "angle": -67.54 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_foot": {
-				"rotate": [
-					{ "time": 0, "angle": 5.4 },
-					{ "time": 0.3333, "angle": -16.26 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_foot": {
-				"rotate": [
-					{ "time": 0, "angle": 2.67 },
-					{ "time": 0.3333, "angle": -10.31 }
-				]
-			}
-		}
-	},
-	"idle": {
-		"slots": {
-			"front_fist": {
-				"attachment": [
-					{ "time": 0, "name": "front_fist_open" },
-					{ "time": 1.6666, "name": "front_fist_open" }
-				]
-			},
-			"mouth": {
-				"attachment": [
-					{ "time": 0, "name": "mouth_smile" },
-					{ "time": 1.6666, "name": "mouth_smile" }
-				]
-			}
-		},
-		"bones": {
-			"torso": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": -5.61,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.8333,
-						"angle": -9.65,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{ "time": 1.6666, "angle": -5.61 }
-				],
-				"translate": [
-					{ "time": 0, "x": -6.49, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"front_upper_arm": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": -59.85,
-						"curve": [ 0.492, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": -54.31,
-						"curve": [ 0.324, 0.11, 0.75, 1 ]
-					},
-					{ "time": 1.6666, "angle": -59.85 }
-				],
-				"translate": [
-					{ "time": 0, "x": -7.12, "y": -8.23 },
-					{ "time": 0.6666, "x": -6.32, "y": -8.3 },
-					{ "time": 1.6666, "x": -7.12, "y": -8.23 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"rear_upper_arm": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 62.41,
-						"curve": [ 0.504, 0.02, 0.75, 1 ]
-					},
-					{
-						"time": 0.7333,
-						"angle": 43.83,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{ "time": 1.6666, "angle": 62.41 }
-				],
-				"translate": [
-					{ "time": 0, "x": -1.83, "y": -16.78 },
-					{ "time": 0.6666, "x": 0.34, "y": -15.23 },
-					{ "time": 1.6666, "x": -1.83, "y": -16.78 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"neck": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.6666, "angle": 2.39 },
-					{ "time": 1.6666, "angle": 0 }
-				],
-				"translate": [
-					{ "time": 0, "x": -1.88, "y": -4.76, "curve": "stepped" },
-					{ "time": 1.6666, "x": -1.88, "y": -4.76 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"front_thigh": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 0.64,
-						"curve": [ 0.235, 0, 0.558, 0.99 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": -4.34,
-						"curve": [ 0.594, 0, 0.653, 1 ]
-					},
-					{ "time": 1.6666, "angle": 0.64 }
-				],
-				"translate": [
-					{ "time": 0, "x": -13.39, "y": 6.69, "curve": "stepped" },
-					{ "time": 1.6666, "x": -13.39, "y": 6.69 }
-				],
-				"scale": [
-					{
-						"time": 0,
-						"x": 0.896,
-						"y": 1,
-						"curve": [ 0.235, 0, 0.558, 0.99 ]
-					},
-					{
-						"time": 0.6666,
-						"x": 0.825,
-						"y": 1,
-						"curve": [ 0.594, 0, 0.653, 1 ]
-					},
-					{ "time": 1.6666, "x": 0.896, "y": 1 }
-				]
-			},
-			"front_shin": {
-				"rotate": [
-					{ "time": 0, "angle": -19.28, "curve": "stepped" },
-					{ "time": 1.6666, "angle": -19.28 }
-				],
-				"scale": [
-					{
-						"time": 0,
-						"x": 1,
-						"y": 1,
-						"curve": [ 0.235, 0, 0.558, 0.99 ]
-					},
-					{
-						"time": 0.6666,
-						"x": 0.994,
-						"y": 1,
-						"curve": [ 0.594, 0, 0.653, 1 ]
-					},
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"rear_thigh": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 30.5,
-						"curve": [ 0.235, 0, 0.558, 0.99 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": 40.15,
-						"curve": [ 0.594, 0, 0.653, 1 ]
-					},
-					{ "time": 1.6666, "angle": 30.5 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"rear_shin": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": -23.83,
-						"curve": [ 0.235, 0, 0.558, 0.99 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": -43.77,
-						"curve": [ 0.594, 0, 0.653, 1 ]
-					},
-					{ "time": 1.6666, "angle": -23.83 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"front_foot": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 5.13,
-						"curve": [ 0.235, 0, 0.558, 0.99 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": 10.04,
-						"curve": [ 0.594, 0, 0.653, 1 ]
-					},
-					{ "time": 1.6666, "angle": 5.13 }
-				],
-				"scale": [
-					{ "time": 0, "x": 0.755, "y": 1.309, "curve": "stepped" },
-					{ "time": 1.6666, "x": 0.755, "y": 1.309 }
-				]
-			},
-			"hip": {
-				"translate": [
-					{
-						"time": 0,
-						"x": -6.63,
-						"y": -23.01,
-						"curve": [ 0.235, 0, 0.558, 0.99 ]
-					},
-					{
-						"time": 0.6666,
-						"x": 6.27,
-						"y": -35,
-						"curve": [ 0.594, 0, 0.653, 1 ]
-					},
-					{ "time": 1.6666, "x": -6.63, "y": -23.01 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"rear_foot": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": -7.34,
-						"curve": [ 0.235, 0, 0.558, 0.99 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": 3.85,
-						"curve": [ 0.594, 0, 0.653, 1 ]
-					},
-					{ "time": 1.6666, "angle": -7.34 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"rear_bracer": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": -17.16,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": 12.52,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{ "time": 1.6666, "angle": -17.16 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"head": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": -5.51,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": -3.12,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{ "time": 1.6666, "angle": -5.51 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"front_bracer": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 45.46,
-						"curve": [ 0.492, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": 41.33,
-						"curve": [ 0.32, 0.1, 0.736, 0.91 ]
-					},
-					{ "time": 1.6666, "angle": 45.46 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"gun": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 0,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": -15.59,
-						"curve": [ 0.732, 0, 0.769, 0.99 ]
-					},
-					{ "time": 1.6666, "angle": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			},
-			"front_fist": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": -6.84,
-						"curve": [ 0.492, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": -14.63,
-						"curve": [ 0.324, 0.11, 0.75, 1 ]
-					},
-					{ "time": 1.6666, "angle": -6.84 }
-				],
-				"scale": [
-					{
-						"time": 0,
-						"x": 1,
-						"y": 1,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.6666,
-						"x": 0.689,
-						"y": 1.1,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{ "time": 1.6666, "x": 1, "y": 1 }
-				]
-			}
-		}
-	},
-	"jump": {
-		"slots": {
-			"front_fist": {
-				"attachment": [
-					{ "time": 0, "name": "front_fist_open" },
-					{ "time": 0.2, "name": "front_fist_closed" },
-					{ "time": 0.6666, "name": "front_fist_open" }
-				]
-			},
-			"mouth": {
-				"attachment": [
-					{ "time": 0, "name": "mouth_grind" }
-				]
-			},
-			"torso": {
-				"attachment": [
-					{ "time": 0, "name": "torso" }
-				]
-			}
-		},
-		"bones": {
-			"front_thigh": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 91.53,
-						"curve": [ 0.278, 0.46, 0.763, 1 ]
-					},
-					{
-						"time": 0.2,
-						"angle": -35.83,
-						"curve": [ 0.761, 0, 0.75, 1 ]
-					},
-					{ "time": 0.4333, "angle": 127.74 },
-					{
-						"time": 0.7333,
-						"angle": 48.18,
-						"curve": [ 0.227, 0.26, 0.432, 1 ]
-					},
-					{ "time": 0.8333, "angle": 25.35 },
-					{ "time": 0.9333, "angle": 45.37 },
-					{ "time": 1.0333, "angle": 38.12 },
-					{ "time": 1.1333, "angle": 25.35 },
-					{ "time": 1.3333, "angle": 91.53 }
-				],
-				"translate": [
-					{ "time": 0, "x": -2.56, "y": 5.77 },
-					{ "time": 0.4333, "x": 8.3, "y": 7.98 },
-					{ "time": 0.7333, "x": 7.21, "y": -4 },
-					{ "time": 1.3333, "x": -2.56, "y": 5.77 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"torso": {
-				"rotate": [
-					{ "time": 0, "angle": -42.63 },
-					{ "time": 0.2, "angle": -5.74 },
-					{ "time": 0.4333, "angle": -50.76 },
-					{ "time": 0.7333, "angle": 1.89 },
-					{ "time": 0.8333, "angle": 11.58 },
-					{ "time": 0.9666, "angle": -1.89 },
-					{ "time": 1.1333, "angle": 11.58 },
-					{ "time": 1.3333, "angle": -42.63 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_thigh": {
-				"rotate": [
-					{ "time": 0, "angle": -26.32 },
-					{ "time": 0.2, "angle": 121.44 },
-					{ "time": 0.4333, "angle": 70.54 },
-					{
-						"time": 0.7333,
-						"angle": 79.89,
-						"curve": [ 0.295, 0.3, 0.59, 0.99 ]
-					},
-					{ "time": 0.8333, "angle": 99.12 },
-					{ "time": 0.9333, "angle": 74.05 },
-					{ "time": 1.0333, "angle": 98.04 },
-					{ "time": 1.1333, "angle": 99.12 },
-					{ "time": 1.3333, "angle": -26.32 }
-				],
-				"translate": [
-					{ "time": 0, "x": -0.56, "y": -0.32 },
-					{ "time": 0.4333, "x": -8.5, "y": 10.58 },
-					{ "time": 0.7333, "x": -1.96, "y": -0.32 },
-					{ "time": 1.3333, "x": -0.56, "y": -0.32 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_shin": {
-				"rotate": [
-					{ "time": 0, "angle": -78.69 },
-					{ "time": 0.4333, "angle": -55.56 },
-					{ "time": 0.7333, "angle": -62.84 },
-					{ "time": 0.8333, "angle": -80.74 },
-					{ "time": 0.9333, "angle": -41.12 },
-					{ "time": 1.0333, "angle": -77.4 },
-					{ "time": 1.1333, "angle": -80.74 },
-					{ "time": 1.3333, "angle": -78.69 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.7333, "x": 1, "y": 1 }
-				]
-			},
-			"front_upper_arm": {
-				"rotate": [
-					{ "time": 0, "angle": -22.61 },
-					{ "time": 0.2, "angle": -246.68 },
-					{
-						"time": 0.6,
-						"angle": 11.28,
-						"curve": [ 0.246, 0, 0.633, 0.53 ]
-					},
-					{
-						"time": 0.7333,
-						"angle": -57.45,
-						"curve": [ 0.38, 0.53, 0.744, 1 ]
-					},
-					{ "time": 0.8666, "angle": -112.59 },
-					{ "time": 0.9333, "angle": -102.17 },
-					{ "time": 1.0333, "angle": -108.61 },
-					{ "time": 1.1333, "angle": -112.59 },
-					{ "time": 1.3333, "angle": -22.61 }
-				],
-				"translate": [
-					{ "time": 0, "x": 6.08, "y": 7.15 },
-					{ "time": 0.2, "x": 7.23, "y": -13.13, "curve": "stepped" },
-					{ "time": 0.7333, "x": 7.23, "y": -13.13 },
-					{ "time": 1.3333, "x": 6.08, "y": 7.15 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": 66.46 },
-					{ "time": 0.2, "angle": 42.39 },
-					{ "time": 0.4333, "angle": 26.06 },
-					{ "time": 0.7333, "angle": 13.28 },
-					{ "time": 0.8666, "angle": -28.64 },
-					{ "time": 0.9333, "angle": -22.31 },
-					{ "time": 1.0333, "angle": -35.39 },
-					{ "time": 1.1333, "angle": -28.64 },
-					{ "time": 1.3333, "angle": 66.46 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_fist": {
-				"rotate": [
-					{ "time": 0, "angle": -28.43 },
-					{ "time": 0.4333, "angle": -45.6 },
-					{ "time": 0.7333, "angle": -53.66 },
-					{ "time": 0.8666, "angle": 7.55 },
-					{ "time": 0.9333, "angle": 31.15 },
-					{ "time": 1.0333, "angle": -32.58 },
-					{ "time": 1.1333, "angle": 7.55 },
-					{ "time": 1.3333, "angle": -28.43 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_upper_arm": {
-				"rotate": [
-					{ "time": 0, "angle": 39.68 },
-					{ "time": 0.2, "angle": 276.57 },
-					{ "time": 0.3, "angle": 17.73 },
-					{ "time": 0.4333, "angle": 83.38 },
-					{
-						"time": 0.6,
-						"angle": -4.71,
-						"curve": [ 0.246, 0, 0.633, 0.53 ]
-					},
-					{
-						"time": 0.7333,
-						"angle": -69.63,
-						"curve": [ 0.342, 0.36, 0.68, 0.71 ]
-					},
-					{
-						"time": 0.7666,
-						"angle": 321.47,
-						"curve": [ 0.333, 0.33, 0.667, 0.66 ]
-					},
-					{
-						"time": 0.8,
-						"angle": 33.7,
-						"curve": [ 0.358, 0.64, 0.693, 1 ]
-					},
-					{ "time": 0.8666, "angle": 34.56 },
-					{ "time": 1.0333, "angle": 71.96 },
-					{ "time": 1.1333, "angle": 34.56 },
-					{ "time": 1.3333, "angle": 39.68 }
-				],
-				"translate": [
-					{ "time": 0, "x": -3.1, "y": -4.86 },
-					{ "time": 0.2, "x": 23.33, "y": 49.07 },
-					{ "time": 0.4333, "x": 20.78, "y": 40.21 },
-					{ "time": 1.3333, "x": -3.1, "y": -4.86 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": 29.66 },
-					{ "time": 0.2, "angle": 45.06 },
-					{ "time": 0.4333, "angle": -4.34 },
-					{ "time": 0.7666, "angle": 61.68 },
-					{ "time": 0.8, "angle": 82.59 },
-					{ "time": 0.8666, "angle": 80.06 },
-					{ "time": 1.0333, "angle": 57.56 },
-					{ "time": 1.1333, "angle": 80.06 },
-					{ "time": 1.3333, "angle": 29.66 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"neck": {
-				"rotate": [
-					{ "time": 0, "angle": 24.9 },
-					{ "time": 0.2, "angle": 16.31 },
-					{ "time": 0.4333, "angle": 7.44 },
-					{ "time": 0.7333, "angle": -20.35 },
-					{ "time": 0.8333, "angle": -0.69, "curve": "stepped" },
-					{ "time": 1.1333, "angle": -0.69 },
-					{ "time": 1.3333, "angle": 24.9 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"head": {
-				"rotate": [
-					{ "time": 0, "angle": 24.92 },
-					{ "time": 0.2, "angle": 10.36 },
-					{ "time": 0.4333, "angle": 28.65 },
-					{ "time": 0.7333, "angle": -2.65 },
-					{ "time": 0.8333, "angle": -28.94, "curve": "stepped" },
-					{ "time": 1.1333, "angle": -28.94 },
-					{ "time": 1.3333, "angle": 24.92 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"hip": {
-				"rotate": [
-					{ "time": 0, "angle": 0 }
-				],
-				"translate": [
-					{
-						"time": 0,
-						"x": -34.51,
-						"y": -78.62,
-						"curve": [ 0.232, 1, 0.75, 1 ]
-					},
-					{
-						"time": 0.2,
-						"x": -34.51,
-						"y": 182.5,
-						"curve": [ 0.232, 0.48, 0.598, 0.79 ]
-					},
-					{
-						"time": 0.7666,
-						"x": -34.51,
-						"y": 596.22,
-						"curve": [ 0.329, 0.17, 0.66, 0.21 ]
-					},
-					{ "time": 1.1333, "x": -34.51, "y": 2.49 },
-					{ "time": 1.3333, "x": -34.51, "y": -78.62 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_shin": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": -90.62,
-						"curve": [ 0.416, 0.54, 0.743, 1 ]
-					},
-					{
-						"time": 0.2,
-						"angle": -10.52,
-						"curve": [ 0.644, 0, 0.75, 1 ]
-					},
-					{ "time": 0.4333, "angle": -127.72 },
-					{ "time": 0.7333, "angle": -19.91 },
-					{ "time": 0.8333, "angle": -5.16 },
-					{ "time": 0.9333, "angle": -35.06 },
-					{ "time": 1.0333, "angle": -43.97 },
-					{ "time": 1.1333, "angle": -5.16 },
-					{ "time": 1.3333, "angle": -90.62 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"front_foot": {
-				"rotate": [
-					{ "time": 0, "angle": -0.79 },
-					{ "time": 0.0333, "angle": 16.27 },
-					{ "time": 0.0666, "angle": 23.52 },
-					{ "time": 0.1, "angle": 21.02 },
-					{ "time": 0.1333, "angle": 10.92 },
-					{ "time": 0.2, "angle": -38.45 },
-					{ "time": 0.4333, "angle": 6.62 },
-					{ "time": 0.7333, "angle": -11.51 },
-					{ "time": 1.0333, "angle": -22.91 },
-					{ "time": 1.3333, "angle": -0.79 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"rear_foot": {
-				"rotate": [
-					{ "time": 0, "angle": -12.77 },
-					{ "time": 0.2, "angle": 17.05 },
-					{ "time": 0.4333, "angle": 19.45 },
-					{ "time": 0.7333, "angle": 2.67 },
-					{ "time": 1.0333, "angle": -28.49 },
-					{ "time": 1.3333, "angle": -12.77 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			},
-			"gun": {
-				"rotate": [
-					{ "time": 0, "angle": 6.18 },
-					{ "time": 0.2, "angle": 30.81 },
-					{ "time": 0.4333, "angle": 13.25 },
-					{ "time": 0.7333, "angle": 14.98 },
-					{ "time": 0.7666, "angle": 25.64 },
-					{ "time": 0.8, "angle": 20.62 },
-					{ "time": 0.8666, "angle": 64.52 },
-					{ "time": 1.0333, "angle": 8.59 },
-					{ "time": 1.1333, "angle": 64.52 },
-					{ "time": 1.3333, "angle": 6.18 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 }
-				]
-			}
-		}
-	},
-	"run": {
-		"slots": {
-			"front_fist": {
-				"attachment": [
-					{ "time": 0, "name": "front_fist_closed" }
-				]
-			},
-			"mouth": {
-				"attachment": [
-					{ "time": 0, "name": "mouth_grind" }
-				]
-			},
-			"torso": {
-				"attachment": [
-					{ "time": 0, "name": "torso" }
-				]
-			}
-		},
-		"bones": {
-			"front_thigh": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 42.05,
-						"curve": [ 0.195, 0.86, 0.75, 1 ]
-					},
-					{ "time": 0.0666, "angle": 46.07 },
-					{ "time": 0.1333, "angle": -20.28 },
-					{ "time": 0.2, "angle": -27.23 },
-					{ "time": 0.2666, "angle": -47.16 },
-					{ "time": 0.3333, "angle": -39.79 },
-					{ "time": 0.4, "angle": -25.86 },
-					{ "time": 0.4666, "angle": 14.35 },
-					{ "time": 0.5333, "angle": 55.62 },
-					{ "time": 0.6, "angle": 69.65 },
-					{ "time": 0.6666, "angle": 86.4 },
-					{ "time": 0.7333, "angle": 65.87 },
-					{ "time": 0.8, "angle": 42.05 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 },
-					{ "time": 0.0333, "x": -5.79, "y": 11.15 },
-					{ "time": 0.0666, "x": -5.13, "y": 11.55 },
-					{ "time": 0.1333, "x": -7.7, "y": 8.98 },
-					{ "time": 0.5333, "x": -1.26, "y": 3.83 },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"torso": {
-				"rotate": [
-					{ "time": 0, "angle": -39.7 },
-					{ "time": 0.2, "angle": -57.29 },
-					{ "time": 0.4, "angle": -39.7 },
-					{ "time": 0.6, "angle": -57.29 },
-					{ "time": 0.8, "angle": -39.7 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.4, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"rear_thigh": {
-				"rotate": [
-					{ "time": 0, "angle": -56.59 },
-					{ "time": 0.0666, "angle": -21.57 },
-					{ "time": 0.1333, "angle": 27.95 },
-					{ "time": 0.2, "angle": 42.42 },
-					{ "time": 0.2666, "angle": 62.37 },
-					{ "time": 0.3333, "angle": 45.42 },
-					{ "time": 0.4, "angle": 15.67 },
-					{ "time": 0.4666, "angle": 28.22 },
-					{ "time": 0.5333, "angle": -38.62 },
-					{ "time": 0.6, "angle": -53.26 },
-					{ "time": 0.6666, "angle": -79.31 },
-					{ "time": 0.7333, "angle": -86.47 },
-					{ "time": 0.8, "angle": -56.59 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 },
-					{ "time": 0.4, "x": -6.76, "y": -3.86 },
-					{ "time": 0.4333, "x": -15.85, "y": 7.28 },
-					{ "time": 0.4666, "x": -13.04, "y": 4.04 },
-					{ "time": 0.5, "x": -10.24, "y": 7.11 },
-					{ "time": 0.5333, "x": -9.01, "y": -5.15 },
-					{ "time": 0.6666, "x": -23.18, "y": -2.57 },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"rear_shin": {
-				"rotate": [
-					{ "time": 0, "angle": -74 },
-					{ "time": 0.0666, "angle": -83.38 },
-					{ "time": 0.1333, "angle": -106.69 },
-					{ "time": 0.2, "angle": -66.01 },
-					{ "time": 0.2666, "angle": -55.22 },
-					{ "time": 0.3333, "angle": -24.8 },
-					{
-						"time": 0.4,
-						"angle": 18.44,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{ "time": 0.4666, "angle": -56.65 },
-					{
-						"time": 0.5333,
-						"angle": -11.94,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{ "time": 0.6666, "angle": -41.26 },
-					{ "time": 0.7333, "angle": -43.6 },
-					{ "time": 0.8, "angle": -74 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"front_upper_arm": {
-				"rotate": [
-					{ "time": 0, "angle": -89.36 },
-					{ "time": 0.0666, "angle": -95.67 },
-					{ "time": 0.1333, "angle": -22 },
-					{ "time": 0.2, "angle": -316.04 },
-					{ "time": 0.2666, "angle": -274.94 },
-					{ "time": 0.3333, "angle": -273.74 },
-					{ "time": 0.4, "angle": -272.09 },
-					{ "time": 0.4666, "angle": -264.89 },
-					{ "time": 0.5333, "angle": -320.09 },
-					{ "time": 0.6, "angle": -50.83 },
-					{ "time": 0.6666, "angle": -81.72 },
-					{ "time": 0.7333, "angle": -83.92 },
-					{ "time": 0.8, "angle": -89.36 }
-				],
-				"translate": [
-					{ "time": 0, "x": 6.24, "y": 10.05 },
-					{ "time": 0.2666, "x": 4.95, "y": -13.13 },
-					{ "time": 0.6, "x": -2.43, "y": 1.94 },
-					{ "time": 0.8, "x": 6.24, "y": 10.05 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"front_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": 33.43 },
-					{ "time": 0.0666, "angle": 20.53 },
-					{ "time": 0.1333, "angle": 15.26 },
-					{ "time": 0.2, "angle": 19.28 },
-					{ "time": 0.2666, "angle": 22.62 },
-					{ "time": 0.3333, "angle": 37.29 },
-					{ "time": 0.4, "angle": 41.53 },
-					{ "time": 0.4666, "angle": 31.73 },
-					{ "time": 0.5333, "angle": 67.45 },
-					{ "time": 0.6666, "angle": 39.77 },
-					{ "time": 0.7333, "angle": 30.95 },
-					{ "time": 0.8, "angle": 33.43 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"front_fist": {
-				"rotate": [
-					{ "time": 0, "angle": -19.75 },
-					{ "time": 0.0666, "angle": -37.11 },
-					{ "time": 0.1333, "angle": -50.79 },
-					{ "time": 0.2666, "angle": -12.69 },
-					{ "time": 0.3333, "angle": 3.01 },
-					{ "time": 0.4333, "angle": 12.05 },
-					{ "time": 0.5333, "angle": 13.25 },
-					{ "time": 0.8, "angle": -19.75 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"rear_upper_arm": {
-				"rotate": [
-					{ "time": 0, "angle": 68.68 },
-					{ "time": 0.0666, "angle": 73.89 },
-					{ "time": 0.1333, "angle": -9.64 },
-					{ "time": 0.2, "angle": 284.27 },
-					{ "time": 0.2666, "angle": 283.29 },
-					{ "time": 0.3333, "angle": 278.28 },
-					{ "time": 0.4, "angle": 271.02 },
-					{ "time": 0.4666, "angle": 263.2 },
-					{ "time": 0.5333, "angle": 314.25 },
-					{ "time": 0.6, "angle": 16.83 },
-					{ "time": 0.6666, "angle": 70.35 },
-					{ "time": 0.7333, "angle": 73.53 },
-					{ "time": 0.8, "angle": 68.68 }
-				],
-				"translate": [
-					{ "time": 0, "x": -2.57, "y": -8.89 },
-					{ "time": 0.1333, "x": -4.68, "y": 7.2 },
-					{ "time": 0.2, "x": 21.73, "y": 51.17 },
-					{ "time": 0.6, "x": 4.33, "y": 2.05 },
-					{ "time": 0.8, "x": -2.57, "y": -8.89 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"rear_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": 31.04 },
-					{ "time": 0.0666, "angle": 28.28 },
-					{ "time": 0.1333, "angle": 49.36 },
-					{ "time": 0.2, "angle": 59.37 },
-					{ "time": 0.2666, "angle": 8.56 },
-					{ "time": 0.3333, "angle": 9.38 },
-					{ "time": 0.4, "angle": 11.51 },
-					{ "time": 0.4666, "angle": 7.22 },
-					{ "time": 0.5333, "angle": -18.44 },
-					{ "time": 0.6, "angle": 11.44 },
-					{ "time": 0.6666, "angle": 9.99 },
-					{ "time": 0.7333, "angle": 8.28 },
-					{ "time": 0.8, "angle": 31.04 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"neck": {
-				"rotate": [
-					{ "time": 0, "angle": 11.03 },
-					{ "time": 0.2, "angle": 13.58 },
-					{ "time": 0.4, "angle": 11.03 },
-					{ "time": 0.6, "angle": 13.58 },
-					{ "time": 0.8, "angle": 11.03 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.4, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"head": {
-				"rotate": [
-					{ "time": 0, "angle": 11.03 },
-					{ "time": 0.1, "angle": 12.34 },
-					{ "time": 0.2, "angle": 25.55 },
-					{ "time": 0.4, "angle": 11.03 },
-					{ "time": 0.5, "angle": 12.34 },
-					{ "time": 0.6, "angle": 25.55 },
-					{ "time": 0.8, "angle": 11.03 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.4, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"hip": {
-				"rotate": [
-					{ "time": 0, "angle": 0, "curve": "stepped" },
-					{ "time": 0.8, "angle": 0 }
-				],
-				"translate": [
-					{ "time": 0, "x": -62.47, "y": -23.1 },
-					{
-						"time": 0.0666,
-						"x": -62.47,
-						"y": -38.51,
-						"curve": [ 0.244, 0.04, 0.75, 1 ]
-					},
-					{
-						"time": 0.2666,
-						"x": -62.47,
-						"y": 22.28,
-						"curve": [ 0.17, 0.52, 0.75, 1 ]
-					},
-					{ "time": 0.4, "x": -62.47, "y": -23.1 },
-					{ "time": 0.4333, "x": -62.47, "y": -24.59 },
-					{
-						"time": 0.4666,
-						"x": -62.47,
-						"y": -43.29,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{ "time": 0.6666, "x": -62.47, "y": 22.28 },
-					{ "time": 0.8, "x": -62.47, "y": -23.1 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"front_shin": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": 0,
-						"curve": [ 0.481, 0.01, 0.75, 1 ]
-					},
-					{ "time": 0.0666, "angle": -64.42 },
-					{
-						"time": 0.1333,
-						"angle": -20.59,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{ "time": 0.2666, "angle": -62.51 },
-					{ "time": 0.3333, "angle": -79.74 },
-					{ "time": 0.4, "angle": -78.28 },
-					{
-						"time": 0.4666,
-						"angle": -118.96,
-						"curve": [ 0.93, 0, 0.952, 0.95 ]
-					},
-					{ "time": 0.6, "angle": -88.95 },
-					{ "time": 0.6666, "angle": -79.09 },
-					{ "time": 0.7333, "angle": -47.77 },
-					{ "time": 0.8, "angle": 0 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"front_foot": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{
-						"time": 0.0333,
-						"angle": -21.13,
-						"curve": [ 0.121, 0.23, 0.75, 1 ]
-					},
-					{ "time": 0.0666, "angle": 17.64 },
-					{ "time": 0.1, "angle": 29.92 },
-					{ "time": 0.1333, "angle": 16.44 },
-					{ "time": 0.2, "angle": -29.22 },
-					{ "time": 0.2666, "angle": -1.61 },
-					{ "time": 0.3333, "angle": -10.22 },
-					{ "time": 0.4666, "angle": -15.99 },
-					{ "time": 0.6, "angle": 9.03 },
-					{ "time": 0.7333, "angle": 17.32 },
-					{ "time": 0.8, "angle": 0 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"rear_foot": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.0666, "angle": -12.04 },
-					{ "time": 0.1333, "angle": -0.87 },
-					{ "time": 0.2, "angle": 25.81 },
-					{ "time": 0.2666, "angle": 4.71 },
-					{
-						"time": 0.4,
-						"angle": 18.09,
-						"curve": [ 0.281, 0.73, 0.75, 1 ]
-					},
-					{ "time": 0.4333, "angle": -1.7 },
-					{ "time": 0.4666, "angle": 27.12 },
-					{ "time": 0.5, "angle": 38.83 },
-					{ "time": 0.5333, "angle": 30.76 },
-					{ "time": 0.5666, "angle": -20.49 },
-					{ "time": 0.6, "angle": -30.8 },
-					{ "time": 0.6666, "angle": -1.31 },
-					{ "time": 0.8, "angle": 0 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"gun": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.1333, "angle": 24.72 },
-					{ "time": 0.5, "angle": -11.87 },
-					{ "time": 0.8, "angle": 0 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			}
-		},
-		"events": [
-			{ "time": 0, "name": "footstep" },
-			{ "time": 0.4, "name": "footstep", "int": 1 }
-		]
-	},
-	"shoot": {
-		"slots": {
-			"front_fist": {
-				"attachment": [
-					{ "time": 0.1333, "name": "front_fist_closed" },
-					{ "time": 0.4, "name": "front_fist_open" }
-				]
-			},
-			"mouth": {
-				"attachment": [
-					{ "time": 0.1333, "name": "mouth_grind" }
-				]
-			},
-			"muzzle": {
-				"attachment": [
-					{ "time": 0.1333, "name": "muzzle" },
-					{ "time": 0.2666, "name": null }
-				],
-				"color": [
-					{
-						"time": 0.1333,
-						"color": "ffffff00",
-						"curve": [ 0.118, 0.99, 0.75, 1 ]
-					},
-					{
-						"time": 0.1666,
-						"color": "ffffffff",
-						"curve": [ 0.821, 0, 0.909, 0.89 ]
-					},
-					{ "time": 0.2666, "color": "ffffff00" }
-				]
-			}
-		},
-		"bones": {
-			"front_fist": {
-				"scale": [
-					{ "time": 0.1333, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.4, "x": 1, "y": 1 }
-				]
-			},
-			"gunTip": {
-				"translate": [
-					{ "time": 0.1333, "x": 0, "y": 0 },
-					{ "time": 0.2, "x": 20.93, "y": 1.57 }
-				],
-				"scale": [
-					{ "time": 0.1333, "x": 1, "y": 1 },
-					{ "time": 0.2, "x": 1.247, "y": 1.516 }
-				]
-			},
-			"gun": {
-				"rotate": [
-					{ "time": 0, "angle": 1.9 }
-				],
-				"translate": [
-					{
-						"time": 0,
-						"x": 7.95,
-						"y": 5.84,
-						"curve": [ 0, 0.3, 0.678, 1 ]
-					},
-					{ "time": 0.3, "x": -9.3, "y": -1.41 },
-					{ "time": 0.4, "x": 0, "y": 0 }
-				]
-			},
-			"rear_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": -30.47 }
-				],
-				"translate": [
-					{
-						"time": 0,
-						"x": 0,
-						"y": 0,
-						"curve": [ 0, 0.3, 0.678, 1 ]
-					},
-					{ "time": 0.3, "x": -5.99, "y": -3.71 },
-					{ "time": 0.4, "x": 0, "y": 0 }
-				]
-			},
-			"rear_upper_arm": {
-				"rotate": [
-					{ "time": 0, "angle": 62.3 }
-				],
-				"translate": [
-					{
-						"time": 0,
-						"x": 0,
-						"y": 0,
-						"curve": [ 0, 0.3, 0.678, 1 ]
-					},
-					{ "time": 0.3, "x": 2.81, "y": 11.41 },
-					{ "time": 0.4, "x": 0, "y": 0 }
-				]
-			}
-		}
-	},
-	"test": {
-		"slots": {
-			"front_foot": {
-				"color": [
-					{ "time": 0.6666, "color": "ffffffff" },
-					{ "time": 1.3333, "color": "ff0700ff" }
-				]
-			},
-			"gun": {
-				"color": [
-					{ "time": 0, "color": "ffffffff", "curve": "stepped" },
-					{ "time": 0.6666, "color": "ffffffff" },
-					{ "time": 1.3333, "color": "32ff00ff" }
-				]
-			},
-			"rear_foot": {
-				"color": [
-					{ "time": 0.6666, "color": "ffffffff" },
-					{ "time": 1.3333, "color": "ff0700ff" }
-				]
-			}
-		},
-		"bones": {
-			"head": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.3333, "angle": -20.72 },
-					{ "time": 0.6666, "angle": -32.41 },
-					{ "time": 1, "angle": -5.3 },
-					{ "time": 1.3333, "angle": 24.96 },
-					{ "time": 1.6666, "angle": 15.61 },
-					{ "time": 2, "angle": 0 }
-				],
-				"translate": [
-					{
-						"time": 0,
-						"x": 0,
-						"y": 0,
-						"curve": [ 0.172, 0.37, 0.574, 0.73 ]
-					},
-					{
-						"time": 0.1666,
-						"x": 144.19,
-						"y": -77.59,
-						"curve": [ 0.372, 0.61, 0.765, 1 ]
-					},
-					{
-						"time": 0.3333,
-						"x": 217.61,
-						"y": -192.63,
-						"curve": [ 0.282, 0, 0.624, 0.31 ]
-					},
-					{
-						"time": 0.5,
-						"x": 181.21,
-						"y": -365.66,
-						"curve": [ 0.313, 0.21, 0.654, 0.54 ]
-					},
-					{
-						"time": 0.6666,
-						"x": 20.09,
-						"y": -500.4,
-						"curve": [ 0.147, 0.27, 0.75, 1 ]
-					},
-					{ "time": 0.8333, "x": -194.24, "y": -341.84 },
-					{ "time": 1, "x": -307.93, "y": -114 },
-					{
-						"time": 1.1666,
-						"x": -330.38,
-						"y": 121.42,
-						"curve": [ 0.25, 0, 0.764, 0.48 ]
-					},
-					{
-						"time": 1.3333,
-						"x": -240.42,
-						"y": 335.66,
-						"curve": [ 0.229, 0.37, 0.58, 0.73 ]
-					},
-					{
-						"time": 1.5,
-						"x": -56.12,
-						"y": 288.06,
-						"curve": [ 0.296, 0.6, 0.641, 1 ]
-					},
-					{
-						"time": 1.6666,
-						"x": 87.63,
-						"y": 191.33,
-						"curve": [ 0.238, 0, 0.626, 0.39 ]
-					},
-					{
-						"time": 1.8333,
-						"x": 60.62,
-						"y": 95.14,
-						"curve": [ 0.41, 0.26, 0.803, 0.62 ]
-					},
-					{ "time": 2, "x": 0, "y": 0 }
-				]
-			}
-		},
-		"draworder": [
-			{
-				"time": 0.6666,
-				"offsets": [
-					{ "slot": "head", "offset": -9 },
-					{ "slot": "eye", "offset": -9 },
-					{ "slot": "mouth", "offset": -12 },
-					{ "slot": "goggles", "offset": -12 }
-				]
-			},
-			{ "time": 1.3333 }
-		],
-		"events": [
-			{ "time": 0, "name": "headPop", "int": 0, "float": 0, "string": "pop.wav" },
-			{ "time": 1, "name": "headBehind", "int": 7, "float": 8, "string": "animate" },
-			{ "time": 2, "name": "headAttach", "int": 0, "float": 0, "string": "attach.wav" }
-		]
-	},
-	"walk": {
-		"slots": {
-			"front_fist": {
-				"attachment": [
-					{ "time": 0, "name": "front_fist_closed" }
-				]
-			},
-			"mouth": {
-				"attachment": [
-					{ "time": 0, "name": "mouth_smile" }
-				]
-			},
-			"torso": {
-				"attachment": [
-					{ "time": 0, "name": "torso" }
-				]
-			}
-		},
-		"bones": {
-			"front_thigh": {
-				"rotate": [
-					{ "time": 0, "angle": 15.79 },
-					{ "time": 0.1, "angle": 27.39 },
-					{ "time": 0.2, "angle": -7.94 },
-					{ "time": 0.3, "angle": -16.94 },
-					{ "time": 0.4, "angle": -28.62 },
-					{ "time": 0.5, "angle": -19.3 },
-					{ "time": 0.6, "angle": -3.08 },
-					{ "time": 0.7, "angle": 29.51 },
-					{ "time": 0.8, "angle": 15.79 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 },
-					{ "time": 0.4, "x": -1.18, "y": 0.54 },
-					{ "time": 0.5, "x": 0.11, "y": 0.41 },
-					{ "time": 0.6, "x": 9.48, "y": 0.27 },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.4, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"front_shin": {
-				"rotate": [
-					{ "time": 0, "angle": 5.12 },
-					{ "time": 0.1, "angle": -20.87 },
-					{ "time": 0.2, "angle": 13.37 },
-					{ "time": 0.3, "angle": 15.98 },
-					{ "time": 0.4, "angle": 5.94 },
-					{ "time": 0.5, "angle": -26.76 },
-					{ "time": 0.7, "angle": -55.44 },
-					{ "time": 0.8, "angle": 5.12 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"rear_thigh": {
-				"rotate": [
-					{ "time": 0, "angle": -34.38 },
-					{ "time": 0.1, "angle": -30.32 },
-					{ "time": 0.2, "angle": -37.22 },
-					{ "time": 0.3, "angle": 20.73 },
-					{ "time": 0.4, "angle": 8.69 },
-					{ "time": 0.5, "angle": 12.16 },
-					{ "time": 0.6, "angle": -24.62 },
-					{ "time": 0.7, "angle": -27.26 },
-					{ "time": 0.8, "angle": -34.38 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0 },
-					{ "time": 0.4, "x": 4.08, "y": -9.53 },
-					{ "time": 0.5, "x": 0, "y": 0 },
-					{ "time": 0.7, "x": -21.14, "y": -9.6 },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"rear_shin": {
-				"rotate": [
-					{ "time": 0, "angle": 14.26 },
-					{ "time": 0.1, "angle": -17.3 },
-					{ "time": 0.2, "angle": -12.67 },
-					{ "time": 0.3, "angle": -58.89 },
-					{ "time": 0.4, "angle": 15.95 },
-					{ "time": 0.5, "angle": -9 },
-					{ "time": 0.6, "angle": 26.06 },
-					{ "time": 0.7, "angle": 21.85 },
-					{ "time": 0.8, "angle": 14.26 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1 },
-					{ "time": 0.1, "x": 0.951, "y": 1 },
-					{ "time": 0.5, "x": 0.975, "y": 1 },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"rear_foot": {
-				"rotate": [
-					{ "time": 0, "angle": 10.13 },
-					{ "time": 0.1, "angle": 12.27 },
-					{ "time": 0.2, "angle": -2.94 },
-					{ "time": 0.3, "angle": 6.29 },
-					{ "time": 0.4, "angle": 13.45 },
-					{ "time": 0.5, "angle": -3.57 },
-					{ "time": 0.6, "angle": -0.97 },
-					{ "time": 0.7, "angle": 2.97 },
-					{ "time": 0.8, "angle": 10.13 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"front_upper_arm": {
-				"rotate": [
-					{ "time": 0, "angle": -23.74 },
-					{ "time": 0.4, "angle": -320.57 },
-					{ "time": 0.8, "angle": -23.74 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"rear_upper_arm": {
-				"rotate": [
-					{ "time": 0, "angle": 11.62 },
-					{ "time": 0.1, "angle": 19.36 },
-					{ "time": 0.4, "angle": 345.26 },
-					{ "time": 0.5, "angle": 343.44 },
-					{ "time": 0.8, "angle": 11.62 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"torso": {
-				"rotate": [
-					{ "time": 0, "angle": -12.11 },
-					{ "time": 0.1666, "angle": -17.16 },
-					{ "time": 0.4, "angle": -12.11 },
-					{ "time": 0.5666, "angle": -15.81 },
-					{ "time": 0.8, "angle": -12.11 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"neck": {
-				"rotate": [
-					{ "time": 0, "angle": 1.41 },
-					{ "time": 0.2333, "angle": -3.04 },
-					{ "time": 0.4, "angle": 1.41 },
-					{ "time": 0.6333, "angle": -3.04 },
-					{ "time": 0.8, "angle": 1.41 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.4, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"head": {
-				"rotate": [
-					{ "time": 0, "angle": 6.97 },
-					{ "time": 0.1666, "angle": 8.02 },
-					{ "time": 0.2666, "angle": 12.65 },
-					{ "time": 0.4, "angle": 6.97 },
-					{ "time": 0.5666, "angle": 8.02 },
-					{ "time": 0.6666, "angle": 12.65 },
-					{ "time": 0.8, "angle": 6.97 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.4, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"hip": {
-				"rotate": [
-					{ "time": 0, "angle": 0, "curve": "stepped" },
-					{ "time": 0.8, "angle": 0 }
-				],
-				"translate": [
-					{
-						"time": 0,
-						"x": -23.93,
-						"y": 3.22,
-						"curve": [ 0.518, 0.03, 0.807, 0.61 ]
-					},
-					{
-						"time": 0.1,
-						"x": -23.93,
-						"y": -9.24,
-						"curve": [ 0.135, 0.33, 0.601, 0.99 ]
-					},
-					{
-						"time": 0.2,
-						"x": -23.93,
-						"y": 4.35,
-						"curve": [ 0.204, 0.68, 0.75, 1 ]
-					},
-					{
-						"time": 0.3,
-						"x": -23.93,
-						"y": 2.38,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.4,
-						"x": -23.93,
-						"y": -2.5,
-						"curve": [ 0.692, 0.01, 0.75, 1 ]
-					},
-					{
-						"time": 0.5,
-						"x": -23.93,
-						"y": -10.32,
-						"curve": [ 0.235, 0.77, 0.75, 1 ]
-					},
-					{
-						"time": 0.6,
-						"x": -23.93,
-						"y": 4.35,
-						"curve": [ 0.287, 0.37, 0.718, 0.76 ]
-					},
-					{
-						"time": 0.7,
-						"x": -23.93,
-						"y": 10.34,
-						"curve": [ 0.615, 0, 0.75, 1 ]
-					},
-					{ "time": 0.8, "x": -23.93, "y": 3.22 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"front_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": 0 },
-					{ "time": 0.4, "angle": 20.59 },
-					{ "time": 0.8, "angle": 0 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"front_foot": {
-				"rotate": [
-					{ "time": 0, "angle": 12.49 },
-					{ "time": 0.1, "angle": -8.34 },
-					{ "time": 0.2, "angle": -6.17 },
-					{ "time": 0.3, "angle": -0.75 },
-					{ "time": 0.3333, "angle": 3.89 },
-					{ "time": 0.4, "angle": 10.22 },
-					{ "time": 0.5, "angle": 11.44 },
-					{ "time": 0.6, "angle": -0.33 },
-					{ "time": 0.7, "angle": 0.15 },
-					{ "time": 0.8, "angle": 12.49 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"rear_bracer": {
-				"rotate": [
-					{ "time": 0, "angle": 3.58 },
-					{ "time": 0.1, "angle": 5.51 },
-					{ "time": 0.4, "angle": -22.77 },
-					{ "time": 0.5, "angle": -9.65 },
-					{ "time": 0.8, "angle": 3.58 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"front_fist": {
-				"rotate": [
-					{ "time": 0, "angle": -15.22 },
-					{ "time": 0.1, "angle": -51.4 },
-					{ "time": 0.4, "angle": -39.4 },
-					{ "time": 0.5, "angle": 19.26 },
-					{ "time": 0.8, "angle": -15.22 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			},
-			"gun": {
-				"rotate": [
-					{
-						"time": 0,
-						"angle": -24.06,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.1,
-						"angle": -10.94,
-						"curve": [ 0.381, 0.54, 0.742, 1 ]
-					},
-					{
-						"time": 0.4,
-						"angle": 25.34,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{
-						"time": 0.6666,
-						"angle": -27.47,
-						"curve": [ 0.25, 0, 0.75, 1 ]
-					},
-					{ "time": 0.8, "angle": -24.06 }
-				],
-				"translate": [
-					{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
-					{ "time": 0.8, "x": 0, "y": 0 }
-				],
-				"scale": [
-					{ "time": 0, "x": 1, "y": 1, "curve": "stepped" },
-					{ "time": 0.8, "x": 1, "y": 1 }
-				]
-			}
-		}
-	}
-}
-}

TEMPAT SAMPAH
spine-c/data/spineboy.png


+ 45 - 2
spine-c/include/spine/Animation.h

@@ -89,12 +89,14 @@ typedef enum {
 	SP_TIMELINE_SCALE,
 	SP_TIMELINE_SCALE,
 	SP_TIMELINE_ROTATE,
 	SP_TIMELINE_ROTATE,
 	SP_TIMELINE_TRANSLATE,
 	SP_TIMELINE_TRANSLATE,
+	SP_TIMELINE_SHEAR,
 	SP_TIMELINE_COLOR,
 	SP_TIMELINE_COLOR,
 	SP_TIMELINE_ATTACHMENT,
 	SP_TIMELINE_ATTACHMENT,
 	SP_TIMELINE_EVENT,
 	SP_TIMELINE_EVENT,
 	SP_TIMELINE_DRAWORDER,
 	SP_TIMELINE_DRAWORDER,
 	SP_TIMELINE_FFD,
 	SP_TIMELINE_FFD,
-	SP_TIMELINE_IKCONSTRAINT
+	SP_TIMELINE_IKCONSTRAINT,
+	SP_TIMELINE_TRANSFORMCONSTRAINT
 } spTimelineType;
 } spTimelineType;
 
 
 struct spTimeline {
 struct spTimeline {
@@ -219,6 +221,20 @@ typedef spScaleTimeline ScaleTimeline;
 
 
 /**/
 /**/
 
 
+typedef struct spBaseTimeline spShearTimeline;
+
+spShearTimeline* spShearTimeline_create (int framesCount);
+
+void spShearTimeline_setFrame (spShearTimeline* self, int frameIndex, float time, float x, float y);
+
+#ifdef SPINE_SHORT_NAMES
+typedef spShearTimeline ShearTimeline;
+#define ShearTimeline_create(...) spShearTimeline_create(__VA_ARGS__)
+#define ShearTimeline_setFrame(...) spShearTimeline_setFrame(__VA_ARGS__)
+#endif
+
+/**/
+
 typedef struct spColorTimeline {
 typedef struct spColorTimeline {
 	spCurveTimeline super;
 	spCurveTimeline super;
 	int const framesCount;
 	int const framesCount;
@@ -387,7 +403,6 @@ typedef struct spIkConstraintTimeline {
 
 
 spIkConstraintTimeline* spIkConstraintTimeline_create (int framesCount);
 spIkConstraintTimeline* spIkConstraintTimeline_create (int framesCount);
 
 
-/* @param attachmentName May be 0. */
 void spIkConstraintTimeline_setFrame (spIkConstraintTimeline* self, int frameIndex, float time, float mix, int bendDirection);
 void spIkConstraintTimeline_setFrame (spIkConstraintTimeline* self, int frameIndex, float time, float mix, int bendDirection);
 
 
 #ifdef SPINE_SHORT_NAMES
 #ifdef SPINE_SHORT_NAMES
@@ -398,6 +413,34 @@ typedef spIkConstraintTimeline IkConstraintTimeline;
 
 
 /**/
 /**/
 
 
+typedef struct spTransformConstraintTimeline {
+	spCurveTimeline super;
+	int const framesCount;
+	float* const frames; /* time, mix, bendDirection, ... */
+	int transformConstraintIndex;
+
+#ifdef __cplusplus
+	spTransformConstraintTimeline() :
+		super(),
+		framesCount(0),
+		frames(0),
+		transformConstraintIndex(0) {
+	}
+#endif
+} spTransformConstraintTimeline;
+
+spTransformConstraintTimeline* spTransformConstraintTimeline_create (int framesCount);
+
+void spTransformConstraintTimeline_setFrame (spTransformConstraintTimeline* self, int frameIndex, float time, float rotateMix, float translateMix, float scaleMix, float shearMix);
+
+#ifdef SPINE_SHORT_NAMES
+typedef spTransformConstraintTimeline TransformConstraintTimeline;
+#define TransformConstraintTimeline_create(...) spTransformConstraintTimeline_create(__VA_ARGS__)
+#define TransformConstraintTimeline_setFrame(...) spTransformConstraintTimeline_setFrame(__VA_ARGS__)
+#endif
+
+/**/
+
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }
 #endif
 #endif

+ 2 - 2
spine-c/include/spine/Bone.h

@@ -45,7 +45,7 @@ struct spBone {
 	spBoneData* const data;
 	spBoneData* const data;
 	struct spSkeleton* const skeleton;
 	struct spSkeleton* const skeleton;
 	spBone* const parent;
 	spBone* const parent;
-	float x, y, rotation, scaleX, scaleY;
+	float x, y, rotation, scaleX, scaleY, shearX, shearY;
 	float appliedRotation, appliedScaleX, appliedScaleY;
 	float appliedRotation, appliedScaleX, appliedScaleY;
 
 
 	float const a, b, worldX;
 	float const a, b, worldX;
@@ -77,7 +77,7 @@ void spBone_dispose (spBone* self);
 void spBone_setToSetupPose (spBone* self);
 void spBone_setToSetupPose (spBone* self);
 
 
 void spBone_updateWorldTransform (spBone* self);
 void spBone_updateWorldTransform (spBone* self);
-void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rotation, float scaleX, float scaleY);
+void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rotation, float scaleX, float scaleY, float shearX, float shearY);
 
 
 float spBone_getWorldRotationX (spBone* self);
 float spBone_getWorldRotationX (spBone* self);
 float spBone_getWorldRotationY (spBone* self);
 float spBone_getWorldRotationY (spBone* self);

+ 1 - 3
spine-c/include/spine/BoneData.h

@@ -41,9 +41,7 @@ struct spBoneData {
 	const char* const name;
 	const char* const name;
 	spBoneData* const parent;
 	spBoneData* const parent;
 	float length;
 	float length;
-	float x, y;
-	float rotation;
-	float scaleX, scaleY;
+	float x, y, rotation, scaleX, scaleY, shearX, shearY;
 	int/*bool*/inheritScale, inheritRotation;
 	int/*bool*/inheritScale, inheritRotation;
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus

+ 11 - 4
spine-c/include/spine/TransformConstraint.h

@@ -45,17 +45,24 @@ typedef struct spTransformConstraint {
 	spTransformConstraintData* const data;
 	spTransformConstraintData* const data;
 	spBone* bone;
 	spBone* bone;
 	spBone* target;
 	spBone* target;
-	float translateMix;
-	float x, y;
+	float rotateMix, translateMix, scaleMix, shearMix;
+	float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY;
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 	spTransformConstraint() :
 	spTransformConstraint() :
 		data(0),
 		data(0),
 		bone(0),
 		bone(0),
 		target(0),
 		target(0),
+		rotateMix(0),
 		translateMix(0),
 		translateMix(0),
-		x(0),
-		y(0) {
+		scaleMix(0),
+		shearMix(0),
+		offsetRotation(0),
+		offsetX(0),
+		offsetY(0),
+		offsetScaleX(0),
+		offsetScaleY(0),
+		offsetShearY(0) {
 	}
 	}
 #endif
 #endif
 } spTransformConstraint;
 } spTransformConstraint;

+ 11 - 4
spine-c/include/spine/TransformConstraintData.h

@@ -43,17 +43,24 @@ typedef struct spTransformConstraintData {
 
 
 	spBoneData* bone;
 	spBoneData* bone;
 	spBoneData* target;
 	spBoneData* target;
-	float translateMix;
-	float x, y;
+	float rotateMix, translateMix, scaleMix, shearMix;
+	float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY;
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 	spTransformConstraintData() :
 	spTransformConstraintData() :
 		name(0),
 		name(0),
 		bone(0),
 		bone(0),
 		target(0),
 		target(0),
+		rotateMix(0),
 		translateMix(0),
 		translateMix(0),
-		x(0),
-		y(0) {
+		scaleMix(0),
+		shearMix(0),
+		offsetRotation(0),
+		offsetX(0),
+		offsetY(0),
+		offsetScaleX(0),
+		offsetScaleY(0),
+		offsetShearY(0) {
 	}
 	}
 #endif
 #endif
 } spTransformConstraintData;
 } spTransformConstraintData;

+ 5 - 0
spine-c/include/spine/extension.h

@@ -58,9 +58,14 @@
 #define MALLOC_STR(TO,FROM) strcpy(CONST_CAST(char*, TO) = (char*)MALLOC(char, strlen(FROM) + 1), FROM)
 #define MALLOC_STR(TO,FROM) strcpy(CONST_CAST(char*, TO) = (char*)MALLOC(char, strlen(FROM) + 1), FROM)
 
 
 #define PI 3.1415926535897932385f
 #define PI 3.1415926535897932385f
+#define PI2 (PI * 2)
 #define DEG_RAD (PI / 180)
 #define DEG_RAD (PI / 180)
 #define RAD_DEG (180 / PI)
 #define RAD_DEG (180 / PI)
 
 
+#define SIN_DEG(A) sinf((A) * DEG_RAD)
+#define COS_DEG(A) cosf((A) * DEG_RAD)
+#define ABS(A) ((A) < 0? -(A): (A))
+
 #ifdef __STDC_VERSION__
 #ifdef __STDC_VERSION__
 #define FMOD(A,B) fmodf(A, B)
 #define FMOD(A,B) fmodf(A, B)
 #define ATAN2(A,B) atan2f(A, B)
 #define ATAN2(A,B) atan2f(A, B)

+ 0 - 20
spine-c/spine-c.sln

@@ -1,20 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual C++ Express 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spine-c", "spine-c.vcxproj", "{5D74934A-7512-45EE-8402-7B95D3642E85}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{5D74934A-7512-45EE-8402-7B95D3642E85}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5D74934A-7512-45EE-8402-7B95D3642E85}.Debug|Win32.Build.0 = Debug|Win32
-		{5D74934A-7512-45EE-8402-7B95D3642E85}.Release|Win32.ActiveCfg = Release|Win32
-		{5D74934A-7512-45EE-8402-7B95D3642E85}.Release|Win32.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal

+ 0 - 140
spine-c/spine-c.vcxproj

@@ -1,140 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{5D74934A-7512-45EE-8402-7B95D3642E85}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>SpineC</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v110</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup />
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>.\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>.\include</AdditionalIncludeDirectories>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="include\spine\Animation.h" />
-    <ClInclude Include="include\spine\AnimationState.h" />
-    <ClInclude Include="include\spine\AnimationStateData.h" />
-    <ClInclude Include="include\spine\Atlas.h" />
-    <ClInclude Include="include\spine\AtlasAttachmentLoader.h" />
-    <ClInclude Include="include\spine\Attachment.h" />
-    <ClInclude Include="include\spine\AttachmentLoader.h" />
-    <ClInclude Include="include\spine\Bone.h" />
-    <ClInclude Include="include\spine\BoneData.h" />
-    <ClInclude Include="include\spine\BoundingBoxAttachment.h" />
-    <ClInclude Include="include\spine\Event.h" />
-    <ClInclude Include="include\spine\EventData.h" />
-    <ClInclude Include="include\spine\extension.h" />
-    <ClInclude Include="include\spine\IkConstraint.h" />
-    <ClInclude Include="include\spine\IkConstraintData.h" />
-    <ClInclude Include="include\spine\MeshAttachment.h" />
-    <ClInclude Include="include\spine\RegionAttachment.h" />
-    <ClInclude Include="include\spine\Skeleton.h" />
-    <ClInclude Include="include\spine\SkeletonBounds.h" />
-    <ClInclude Include="include\spine\SkeletonData.h" />
-    <ClInclude Include="include\spine\SkeletonJson.h" />
-    <ClInclude Include="include\spine\Skin.h" />
-    <ClInclude Include="include\spine\SkinnedMeshAttachment.h" />
-    <ClInclude Include="include\spine\Slot.h" />
-    <ClInclude Include="include\spine\SlotData.h" />
-    <ClInclude Include="include\spine\spine.h" />
-    <ClInclude Include="include\spine\TransformConstraint.h" />
-    <ClInclude Include="include\spine\TransformConstraintData.h" />
-    <ClInclude Include="include\spine\WeightedMeshAttachment.h" />
-    <ClInclude Include="src\spine\Json.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="src\spine\Animation.c" />
-    <ClCompile Include="src\spine\AnimationState.c" />
-    <ClCompile Include="src\spine\AnimationStateData.c" />
-    <ClCompile Include="src\spine\Atlas.c" />
-    <ClCompile Include="src\spine\AtlasAttachmentLoader.c" />
-    <ClCompile Include="src\spine\Attachment.c" />
-    <ClCompile Include="src\spine\AttachmentLoader.c" />
-    <ClCompile Include="src\spine\Bone.c" />
-    <ClCompile Include="src\spine\BoneData.c" />
-    <ClCompile Include="src\spine\BoundingBoxAttachment.c" />
-    <ClCompile Include="src\spine\Event.c" />
-    <ClCompile Include="src\spine\EventData.c" />
-    <ClCompile Include="src\spine\extension.c" />
-    <ClCompile Include="src\spine\IkConstraint.c" />
-    <ClCompile Include="src\spine\IkConstraintData.c" />
-    <ClCompile Include="src\spine\Json.c" />
-    <ClCompile Include="src\spine\MeshAttachment.c" />
-    <ClCompile Include="src\spine\RegionAttachment.c" />
-    <ClCompile Include="src\spine\Skeleton.c" />
-    <ClCompile Include="src\spine\SkeletonBounds.c" />
-    <ClCompile Include="src\spine\SkeletonData.c" />
-    <ClCompile Include="src\spine\SkeletonJson.c" />
-    <ClCompile Include="src\spine\Skin.c" />
-    <ClCompile Include="src\spine\Slot.c" />
-    <ClCompile Include="src\spine\SlotData.c" />
-    <ClCompile Include="src\spine\TransformConstraint.c" />
-    <ClCompile Include="src\spine\TransformConstraintData.c" />
-    <ClCompile Include="src\spine\WeightedMeshAttachment.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>

+ 0 - 195
spine-c/spine-c.vcxproj.filters

@@ -1,195 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Resource Files">
-      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
-      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="include\spine\Atlas.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\Attachment.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\extension.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\Skeleton.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="src\spine\Json.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\Animation.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\AnimationState.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\AnimationStateData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\AtlasAttachmentLoader.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\AttachmentLoader.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\Bone.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\BoneData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\BoundingBoxAttachment.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\Event.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\EventData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\RegionAttachment.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\SkeletonBounds.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\SkeletonData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\SkeletonJson.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\Skin.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\Slot.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\SlotData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\MeshAttachment.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\SkinnedMeshAttachment.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\spine.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\IkConstraint.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\IkConstraintData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\TransformConstraint.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\TransformConstraintData.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="include\spine\WeightedMeshAttachment.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="src\spine\Atlas.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\Attachment.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\extension.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\Json.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\Skeleton.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\Animation.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\AnimationState.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\AnimationStateData.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\AttachmentLoader.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\Bone.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\BoneData.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\BoundingBoxAttachment.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\Event.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\EventData.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\RegionAttachment.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\SkeletonBounds.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\SkeletonData.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\SkeletonJson.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\Skin.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\Slot.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\SlotData.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\AtlasAttachmentLoader.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\MeshAttachment.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\IkConstraint.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\IkConstraintData.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\TransformConstraint.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\TransformConstraintData.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="src\spine\WeightedMeshAttachment.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>

+ 204 - 97
spine-c/src/spine/Animation.c

@@ -251,13 +251,13 @@ struct spBaseTimeline* _spBaseTimeline_create (int framesCount, spTimelineType t
 
 
 /**/
 /**/
 
 
-static const int ROTATE_PREV_FRAME_TIME = -2;
-static const int ROTATE_FRAME_VALUE = 1;
+static const int ROTATE_PREV_TIME = -2;
+static const int ROTATE_FRAME = 1;
 
 
 void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 		int* eventsCount, float alpha) {
 		int* eventsCount, float alpha) {
 	spBone *bone;
 	spBone *bone;
-	int frameIndex;
+	int frame;
 	float prevFrameValue, frameTime, percent, amount;
 	float prevFrameValue, frameTime, percent, amount;
 
 
 	spRotateTimeline* self = SUB_CAST(spRotateTimeline, timeline);
 	spRotateTimeline* self = SUB_CAST(spRotateTimeline, timeline);
@@ -277,13 +277,13 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton,
 	}
 	}
 
 
 	/* Interpolate between the previous frame and the current frame. */
 	/* Interpolate between the previous frame and the current frame. */
-	frameIndex = binarySearch(self->frames, self->framesCount, time, 2);
-	prevFrameValue = self->frames[frameIndex - 1];
-	frameTime = self->frames[frameIndex];
-	percent = 1 - (time - frameTime) / (self->frames[frameIndex + ROTATE_PREV_FRAME_TIME] - frameTime);
-	percent = spCurveTimeline_getCurvePercent(SUPER(self), (frameIndex >> 1) - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
+	frame = binarySearch(self->frames, self->framesCount, time, 2);
+	prevFrameValue = self->frames[frame - 1];
+	frameTime = self->frames[frame];
+	percent = 1 - (time - frameTime) / (self->frames[frame + ROTATE_PREV_TIME] - frameTime);
+	percent = spCurveTimeline_getCurvePercent(SUPER(self), (frame >> 1) - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
 
 
-	amount = self->frames[frameIndex + ROTATE_FRAME_VALUE] - prevFrameValue;
+	amount = self->frames[frame + ROTATE_FRAME] - prevFrameValue;
 	while (amount > 180)
 	while (amount > 180)
 		amount -= 360;
 		amount -= 360;
 	while (amount < -180)
 	while (amount < -180)
@@ -312,14 +312,14 @@ void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float ti
 
 
 /**/
 /**/
 
 
-static const int TRANSLATE_PREV_FRAME_TIME = -3;
-static const int TRANSLATE_FRAME_X = 1;
-static const int TRANSLATE_FRAME_Y = 2;
+static const int TRANSLATE_PREV_TIME = -3;
+static const int TRANSLATE_X = 1;
+static const int TRANSLATE_Y = 2;
 
 
 void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
 void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
 		spEvent** firedEvents, int* eventsCount, float alpha) {
 		spEvent** firedEvents, int* eventsCount, float alpha) {
 	spBone *bone;
 	spBone *bone;
-	int frameIndex;
+	int frame;
 	float prevFrameX, prevFrameY, frameTime, percent;
 	float prevFrameX, prevFrameY, frameTime, percent;
 
 
 	spTranslateTimeline* self = SUB_CAST(spTranslateTimeline, timeline);
 	spTranslateTimeline* self = SUB_CAST(spTranslateTimeline, timeline);
@@ -335,16 +335,16 @@ void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleto
 	}
 	}
 
 
 	/* Interpolate between the previous frame and the current frame. */
 	/* Interpolate between the previous frame and the current frame. */
-	frameIndex = binarySearch(self->frames, self->framesCount, time, 3);
-	prevFrameX = self->frames[frameIndex - 2];
-	prevFrameY = self->frames[frameIndex - 1];
-	frameTime = self->frames[frameIndex];
-	percent = 1 - (time - frameTime) / (self->frames[frameIndex + TRANSLATE_PREV_FRAME_TIME] - frameTime);
-	percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
-
-	bone->x += (bone->data->x + prevFrameX + (self->frames[frameIndex + TRANSLATE_FRAME_X] - prevFrameX) * percent - bone->x)
+	frame = binarySearch(self->frames, self->framesCount, time, 3);
+	prevFrameX = self->frames[frame - 2];
+	prevFrameY = self->frames[frame - 1];
+	frameTime = self->frames[frame];
+	percent = 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime);
+	percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
+
+	bone->x += (bone->data->x + prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent - bone->x)
 			* alpha;
 			* alpha;
-	bone->y += (bone->data->y + prevFrameY + (self->frames[frameIndex + TRANSLATE_FRAME_Y] - prevFrameY) * percent - bone->y)
+	bone->y += (bone->data->y + prevFrameY + (self->frames[frame + TRANSLATE_Y] - prevFrameY) * percent - bone->y)
 			* alpha;
 			* alpha;
 
 
 	UNUSED(lastTime);
 	UNUSED(lastTime);
@@ -368,7 +368,7 @@ void spTranslateTimeline_setFrame (spTranslateTimeline* self, int frameIndex, fl
 void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 		int* eventsCount, float alpha) {
 		int* eventsCount, float alpha) {
 	spBone *bone;
 	spBone *bone;
-	int frameIndex;
+	int frame;
 	float prevFrameX, prevFrameY, frameTime, percent;
 	float prevFrameX, prevFrameY, frameTime, percent;
 
 
 	spScaleTimeline* self = SUB_CAST(spScaleTimeline, timeline);
 	spScaleTimeline* self = SUB_CAST(spScaleTimeline, timeline);
@@ -383,16 +383,16 @@ void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f
 	}
 	}
 
 
 	/* Interpolate between the previous frame and the current frame. */
 	/* Interpolate between the previous frame and the current frame. */
-	frameIndex = binarySearch(self->frames, self->framesCount, time, 3);
-	prevFrameX = self->frames[frameIndex - 2];
-	prevFrameY = self->frames[frameIndex - 1];
-	frameTime = self->frames[frameIndex];
-	percent = 1 - (time - frameTime) / (self->frames[frameIndex + TRANSLATE_PREV_FRAME_TIME] - frameTime);
-	percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
-
-	bone->scaleX += (bone->data->scaleX * (prevFrameX + (self->frames[frameIndex + TRANSLATE_FRAME_X] - prevFrameX) * percent)
+	frame = binarySearch(self->frames, self->framesCount, time, 3);
+	prevFrameX = self->frames[frame - 2];
+	prevFrameY = self->frames[frame - 1];
+	frameTime = self->frames[frame];
+	percent = 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime);
+	percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
+
+	bone->scaleX += (bone->data->scaleX * (prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent)
 			- bone->scaleX) * alpha;
 			- bone->scaleX) * alpha;
-	bone->scaleY += (bone->data->scaleY * (prevFrameY + (self->frames[frameIndex + TRANSLATE_FRAME_Y] - prevFrameY) * percent)
+	bone->scaleY += (bone->data->scaleY * (prevFrameY + (self->frames[frame + TRANSLATE_Y] - prevFrameY) * percent)
 			- bone->scaleY) * alpha;
 			- bone->scaleY) * alpha;
 
 
 	UNUSED(lastTime);
 	UNUSED(lastTime);
@@ -410,24 +410,68 @@ void spScaleTimeline_setFrame (spScaleTimeline* self, int frameIndex, float time
 
 
 /**/
 /**/
 
 
-static const int COLOR_PREV_FRAME_TIME = -5;
-static const int COLOR_FRAME_R = 1;
-static const int COLOR_FRAME_G = 2;
-static const int COLOR_FRAME_B = 3;
-static const int COLOR_FRAME_A = 4;
+void _spShearTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
+							 int* eventsCount, float alpha) {
+	spBone *bone;
+	int frame;
+	float prevFrameX, prevFrameY, frameTime, percent;
+
+	spShearTimeline* self = SUB_CAST(spShearTimeline, timeline);
+
+	if (time < self->frames[0]) return; /* Time is before first frame. */
+
+	bone = skeleton->bones[self->boneIndex];
+	if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */
+		bone->shearX += (bone->data->shearX * self->frames[self->framesCount - 2] - bone->shearX) * alpha;
+		bone->shearY += (bone->data->shearY * self->frames[self->framesCount - 1] - bone->shearY) * alpha;
+		return;
+	}
+
+	/* Interpolate between the previous frame and the current frame. */
+	frame = binarySearch(self->frames, self->framesCount, time, 3);
+	prevFrameX = self->frames[frame - 2];
+	prevFrameY = self->frames[frame - 1];
+	frameTime = self->frames[frame];
+	percent = 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime);
+	percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
+
+	bone->shearX += (bone->data->shearX + (prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent)
+					 - bone->shearX) * alpha;
+	bone->shearY += (bone->data->shearY + (prevFrameY + (self->frames[frame + TRANSLATE_Y] - prevFrameY) * percent)
+					 - bone->shearY) * alpha;
+
+	UNUSED(lastTime);
+	UNUSED(firedEvents);
+	UNUSED(eventsCount);
+}
+
+spShearTimeline* spShearTimeline_create (int framesCount) {
+	return (spShearTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_SHEAR, 3, _spShearTimeline_apply);
+}
+
+void spShearTimeline_setFrame (spShearTimeline* self, int frameIndex, float time, float x, float y) {
+	spTranslateTimeline_setFrame(self, frameIndex, time, x, y);
+}
+
+/**/
+
+static const int COLOR_PREV_TIME = -5;
+static const int COLOR_R = 1;
+static const int COLOR_G = 2;
+static const int COLOR_B = 3;
+static const int COLOR_A = 4;
 
 
 void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 		int* eventsCount, float alpha) {
 		int* eventsCount, float alpha) {
 	spSlot *slot;
 	spSlot *slot;
-	int frameIndex;
-	float prevFrameR, prevFrameG, prevFrameB, prevFrameA, percent, frameTime;
+	int frame;
+	float percent, frameTime;
 	float r, g, b, a;
 	float r, g, b, a;
 	spColorTimeline* self = (spColorTimeline*)timeline;
 	spColorTimeline* self = (spColorTimeline*)timeline;
 
 
 	if (time < self->frames[0]) return; /* Time is before first frame. */
 	if (time < self->frames[0]) return; /* Time is before first frame. */
 
 
-	if (time >= self->frames[self->framesCount - 5]) {
-		/* Time is after last frame. */
+	if (time >= self->frames[self->framesCount - 5]) { /* Time is after last frame */
 		int i = self->framesCount - 1;
 		int i = self->framesCount - 1;
 		r = self->frames[i - 3];
 		r = self->frames[i - 3];
 		g = self->frames[i - 2];
 		g = self->frames[i - 2];
@@ -435,19 +479,20 @@ void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f
 		a = self->frames[i];
 		a = self->frames[i];
 	} else {
 	} else {
 		/* Interpolate between the previous frame and the current frame. */
 		/* Interpolate between the previous frame and the current frame. */
-		frameIndex = binarySearch(self->frames, self->framesCount, time, 5);
-		prevFrameR = self->frames[frameIndex - 4];
-		prevFrameG = self->frames[frameIndex - 3];
-		prevFrameB = self->frames[frameIndex - 2];
-		prevFrameA = self->frames[frameIndex - 1];
-		frameTime = self->frames[frameIndex];
-		percent = 1 - (time - frameTime) / (self->frames[frameIndex + COLOR_PREV_FRAME_TIME] - frameTime);
-		percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 5 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
-
-		r = prevFrameR + (self->frames[frameIndex + COLOR_FRAME_R] - prevFrameR) * percent;
-		g = prevFrameG + (self->frames[frameIndex + COLOR_FRAME_G] - prevFrameG) * percent;
-		b = prevFrameB + (self->frames[frameIndex + COLOR_FRAME_B] - prevFrameB) * percent;
-		a = prevFrameA + (self->frames[frameIndex + COLOR_FRAME_A] - prevFrameA) * percent;
+		frame = binarySearch(self->frames, self->framesCount, time, 5);
+		frameTime = self->frames[frame];
+		percent = 1 - (time - frameTime) / (self->frames[frame + COLOR_PREV_TIME] - frameTime);
+		percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 5 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
+
+		r = self->frames[frame - 4];
+		g = self->frames[frame - 3];
+		b = self->frames[frame - 2];
+		a = self->frames[frame - 1];
+
+		r += (self->frames[frame + COLOR_R] - r) * percent;
+		g += (self->frames[frame + COLOR_G] - g) * percent;
+		b += (self->frames[frame + COLOR_B] - b) * percent;
+		a += (self->frames[frame + COLOR_A] - a) * percent;
 	}
 	}
 	slot = skeleton->slots[self->slotIndex];
 	slot = skeleton->slots[self->slotIndex];
 	if (alpha < 1) {
 	if (alpha < 1) {
@@ -484,7 +529,7 @@ void spColorTimeline_setFrame (spColorTimeline* self, int frameIndex, float time
 
 
 void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
 void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
 		spEvent** firedEvents, int* eventsCount, float alpha) {
 		spEvent** firedEvents, int* eventsCount, float alpha) {
-	int frameIndex;
+	int frame;
 	const char* attachmentName;
 	const char* attachmentName;
 	spAttachmentTimeline* self = (spAttachmentTimeline*)timeline;
 	spAttachmentTimeline* self = (spAttachmentTimeline*)timeline;
 
 
@@ -494,11 +539,11 @@ void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skelet
 	} else if (lastTime > time) /**/
 	} else if (lastTime > time) /**/
 		lastTime = -1;
 		lastTime = -1;
 
 
-	frameIndex = time >= self->frames[self->framesCount - 1] ?
+	frame = time >= self->frames[self->framesCount - 1] ?
 		self->framesCount - 1 : binarySearch1(self->frames, self->framesCount, time) - 1;
 		self->framesCount - 1 : binarySearch1(self->frames, self->framesCount, time) - 1;
-	if (self->frames[frameIndex] < lastTime) return;
+	if (self->frames[frame] < lastTime) return;
 
 
-	attachmentName = self->attachmentNames[frameIndex];
+	attachmentName = self->attachmentNames[frame];
 	spSlot_setAttachment(skeleton->slots[self->slotIndex],
 	spSlot_setAttachment(skeleton->slots[self->slotIndex],
 			attachmentName ? spSkeleton_getAttachmentForSlotIndex(skeleton, self->slotIndex, attachmentName) : 0);
 			attachmentName ? spSkeleton_getAttachmentForSlotIndex(skeleton, self->slotIndex, attachmentName) : 0);
 
 
@@ -547,7 +592,7 @@ void spAttachmentTimeline_setFrame (spAttachmentTimeline* self, int frameIndex,
 void _spEventTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 void _spEventTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 		int* eventsCount, float alpha) {
 		int* eventsCount, float alpha) {
 	spEventTimeline* self = (spEventTimeline*)timeline;
 	spEventTimeline* self = (spEventTimeline*)timeline;
-	int frameIndex;
+	int frame;
 	if (!firedEvents) return;
 	if (!firedEvents) return;
 
 
 	if (lastTime > time) { /* Fire events after last time for looped animations. */
 	if (lastTime > time) { /* Fire events after last time for looped animations. */
@@ -558,18 +603,18 @@ void _spEventTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f
 	if (time < self->frames[0]) return; /* Time is before first frame. */
 	if (time < self->frames[0]) return; /* Time is before first frame. */
 
 
 	if (lastTime < self->frames[0])
 	if (lastTime < self->frames[0])
-		frameIndex = 0;
+		frame = 0;
 	else {
 	else {
-		float frame;
-		frameIndex = binarySearch1(self->frames, self->framesCount, lastTime);
-		frame = self->frames[frameIndex];
-		while (frameIndex > 0) { /* Fire multiple events with the same frame. */
-			if (self->frames[frameIndex - 1] != frame) break;
-			frameIndex--;
+		float frameTime;
+		frame = binarySearch1(self->frames, self->framesCount, lastTime);
+		frameTime = self->frames[frame];
+		while (frame > 0) { /* Fire multiple events with the same frame. */
+			if (self->frames[frame - 1] != frameTime) break;
+			frame--;
 		}
 		}
 	}
 	}
-	for (; frameIndex < self->framesCount && time >= self->frames[frameIndex]; ++frameIndex) {
-		firedEvents[*eventsCount] = self->events[frameIndex];
+	for (; frame < self->framesCount && time >= self->frames[frame]; ++frame) {
+		firedEvents[*eventsCount] = self->events[frame];
 		(*eventsCount)++;
 		(*eventsCount)++;
 	}
 	}
 }
 }
@@ -610,18 +655,18 @@ void spEventTimeline_setFrame (spEventTimeline* self, int frameIndex, spEvent* e
 void _spDrawOrderTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
 void _spDrawOrderTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
 		spEvent** firedEvents, int* eventsCount, float alpha) {
 		spEvent** firedEvents, int* eventsCount, float alpha) {
 	int i;
 	int i;
-	int frameIndex;
+	int frame;
 	const int* drawOrderToSetupIndex;
 	const int* drawOrderToSetupIndex;
 	spDrawOrderTimeline* self = (spDrawOrderTimeline*)timeline;
 	spDrawOrderTimeline* self = (spDrawOrderTimeline*)timeline;
 
 
 	if (time < self->frames[0]) return; /* Time is before first frame. */
 	if (time < self->frames[0]) return; /* Time is before first frame. */
 
 
 	if (time >= self->frames[self->framesCount - 1]) /* Time is after last frame. */
 	if (time >= self->frames[self->framesCount - 1]) /* Time is after last frame. */
-		frameIndex = self->framesCount - 1;
+		frame = self->framesCount - 1;
 	else
 	else
-		frameIndex = binarySearch1(self->frames, self->framesCount, time) - 1;
+		frame = binarySearch1(self->frames, self->framesCount, time) - 1;
 
 
-	drawOrderToSetupIndex = self->drawOrders[frameIndex];
+	drawOrderToSetupIndex = self->drawOrders[frame];
 	if (!drawOrderToSetupIndex)
 	if (!drawOrderToSetupIndex)
 		memcpy(skeleton->drawOrder, skeleton->slots, self->slotsCount * sizeof(spSlot*));
 		memcpy(skeleton->drawOrder, skeleton->slots, self->slotsCount * sizeof(spSlot*));
 	else {
 	else {
@@ -676,7 +721,7 @@ void spDrawOrderTimeline_setFrame (spDrawOrderTimeline* self, int frameIndex, fl
 
 
 void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
 		int* eventsCount, float alpha) {
 		int* eventsCount, float alpha) {
-	int frameIndex, i, vertexCount;
+	int frame, i, vertexCount;
 	float percent, frameTime;
 	float percent, frameTime;
 	const float* prevVertices;
 	const float* prevVertices;
 	const float* nextVertices;
 	const float* nextVertices;
@@ -727,13 +772,13 @@ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, flo
 	}
 	}
 
 
 	/* Interpolate between the previous frame and the current frame. */
 	/* Interpolate between the previous frame and the current frame. */
-	frameIndex = binarySearch1(self->frames, self->framesCount, time);
-	frameTime = self->frames[frameIndex];
-	percent = 1 - (time - frameTime) / (self->frames[frameIndex - 1] - frameTime);
-	percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
+	frame = binarySearch1(self->frames, self->framesCount, time);
+	frameTime = self->frames[frame];
+	percent = 1 - (time - frameTime) / (self->frames[frame - 1] - frameTime);
+	percent = spCurveTimeline_getCurvePercent(SUPER(self), frame - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
 
 
-	prevVertices = self->frameVertices[frameIndex - 1];
-	nextVertices = self->frameVertices[frameIndex];
+	prevVertices = self->frameVertices[frame - 1];
+	nextVertices = self->frameVertices[frame];
 
 
 	if (alpha < 1) {
 	if (alpha < 1) {
 		for (i = 0; i < vertexCount; ++i) {
 		for (i = 0; i < vertexCount; ++i) {
@@ -790,38 +835,37 @@ void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, fl
 
 
 /**/
 /**/
 
 
-static const int IKCONSTRAINT_PREV_FRAME_TIME = -3;
-static const int IKCONSTRAINT_PREV_FRAME_MIX = -2;
-static const int IKCONSTRAINT_PREV_FRAME_BEND_DIRECTION = -1;
-static const int IKCONSTRAINT_FRAME_MIX = 1;
+static const int IKCONSTRAINT_PREV_TIME = -3;
+static const int IKCONSTRAINT_PREV_MIX = -2;
+static const int IKCONSTRAINT_PREV_BEND_DIRECTION = -1;
+static const int IKCONSTRAINT_MIX = 1;
 
 
 void _spIkConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
 void _spIkConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
 		spEvent** firedEvents, int* eventsCount, float alpha) {
 		spEvent** firedEvents, int* eventsCount, float alpha) {
-	int frameIndex;
-	float prevFrameMix, frameTime, percent, mix;
-	spIkConstraint* ikConstraint;
+	int frame;
+	float frameTime, percent, mix;
+	spIkConstraint* constraint;
 	spIkConstraintTimeline* self = (spIkConstraintTimeline*)timeline;
 	spIkConstraintTimeline* self = (spIkConstraintTimeline*)timeline;
 
 
 	if (time < self->frames[0]) return; /* Time is before first frame. */
 	if (time < self->frames[0]) return; /* Time is before first frame. */
 
 
-	ikConstraint = skeleton->ikConstraints[self->ikConstraintIndex];
+	constraint = skeleton->ikConstraints[self->ikConstraintIndex];
 
 
 	if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */
 	if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */
-		ikConstraint->mix += (self->frames[self->framesCount - 2] - ikConstraint->mix) * alpha;
-		ikConstraint->bendDirection = (int)self->frames[self->framesCount - 1];
+		constraint->mix += (self->frames[self->framesCount + IKCONSTRAINT_PREV_MIX] - constraint->mix) * alpha;
+		constraint->bendDirection = (int)self->frames[self->framesCount + IKCONSTRAINT_PREV_BEND_DIRECTION];
 		return;
 		return;
 	}
 	}
 
 
 	/* Interpolate between the previous frame and the current frame. */
 	/* Interpolate between the previous frame and the current frame. */
-	frameIndex = binarySearch(self->frames, self->framesCount, time, 3);
-	prevFrameMix = self->frames[frameIndex + IKCONSTRAINT_PREV_FRAME_MIX];
-	frameTime = self->frames[frameIndex];
-	percent = 1 - (time - frameTime) / (self->frames[frameIndex + IKCONSTRAINT_PREV_FRAME_TIME] - frameTime);
-	percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
+	frame = binarySearch(self->frames, self->framesCount, time, 3);
+	frameTime = self->frames[frame];
+	percent = 1 - (time - frameTime) / (self->frames[frame + IKCONSTRAINT_PREV_TIME] - frameTime);
+	percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
 
 
-	mix = prevFrameMix + (self->frames[frameIndex + IKCONSTRAINT_FRAME_MIX] - prevFrameMix) * percent;
-	ikConstraint->mix += (mix - ikConstraint->mix) * alpha;
-	ikConstraint->bendDirection = (int)self->frames[frameIndex + IKCONSTRAINT_PREV_FRAME_BEND_DIRECTION];
+	mix = self->frames[frame + IKCONSTRAINT_PREV_MIX];
+	constraint->mix += (mix + (self->frames[frame + IKCONSTRAINT_MIX] - mix) * percent - constraint->mix) * alpha;
+	constraint->bendDirection = (int)self->frames[frame + IKCONSTRAINT_PREV_BEND_DIRECTION];
 
 
 	UNUSED(lastTime);
 	UNUSED(lastTime);
 	UNUSED(firedEvents);
 	UNUSED(firedEvents);
@@ -840,3 +884,66 @@ void spIkConstraintTimeline_setFrame (spIkConstraintTimeline* self, int frameInd
 }
 }
 
 
 /**/
 /**/
+static const int TRANSFORMCONSTRAINT_PREV_TIME = -5;
+static const int TRANSFORMCONSTRAINT_PREV_ROTATE_MIX = -4;
+static const int TRANSFORMCONSTRAINT_PREV_TRANSLATE_MIX = -3;
+static const int TRANSFORMCONSTRAINT_PREV_SCALE_MIX = -2;
+static const int TRANSFORMCONSTRAINT_PREV_SHEAR_MIX = -1;
+static const int TRANSFORMCONSTRAINT_ROTATE_MIX = 1;
+static const int TRANSFORMCONSTRAINT_TRANSLATE_MIX = 2;
+static const int TRANSFORMCONSTRAINT_SCALE_MIX = 3;
+static const int TRANSFORMCONSTRAINT_SHEAR_MIX = 4;
+
+void _spTransformConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
+									spEvent** firedEvents, int* eventsCount, float alpha) {
+	int frame;
+	float frameTime, percent, rotate, translate, scale, shear;
+	spTransformConstraint* constraint;
+	spTransformConstraintTimeline* self = (spTransformConstraintTimeline*)timeline;
+
+	if (time < self->frames[0]) return; /* Time is before first frame. */
+
+	constraint = skeleton->transformConstraints[self->transformConstraintIndex];
+
+	if (time >= self->frames[self->framesCount - 5]) { /* Time is after last frame. */
+		int len = self->framesCount;
+		constraint->rotateMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_ROTATE_MIX] - constraint->rotateMix) * alpha;
+		constraint->translateMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_TRANSLATE_MIX] - constraint->translateMix) * alpha;
+		constraint->scaleMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_SCALE_MIX] - constraint->scaleMix) * alpha;
+		constraint->shearMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_SHEAR_MIX] - constraint->shearMix) * alpha;
+		return;
+	}
+
+	/* Interpolate between the previous frame and the current frame. */
+	frame = binarySearch(self->frames, self->framesCount, time, 5);
+	frameTime = self->frames[frame];
+	percent = 1 - (time - frameTime) / (self->frames[frame + TRANSFORMCONSTRAINT_PREV_TIME] - frameTime);
+	percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 5 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
+
+	rotate = self->frames[frame + TRANSFORMCONSTRAINT_PREV_ROTATE_MIX];
+	translate = self->frames[frame + TRANSFORMCONSTRAINT_PREV_TRANSLATE_MIX];
+	scale = self->frames[frame + TRANSFORMCONSTRAINT_PREV_SCALE_MIX];
+	shear = self->frames[frame + TRANSFORMCONSTRAINT_PREV_SHEAR_MIX];
+	constraint->rotateMix += (rotate + (self->frames[frame + TRANSFORMCONSTRAINT_ROTATE_MIX] - rotate) * percent - constraint->rotateMix) * alpha;
+	constraint->translateMix += (translate + (self->frames[frame + TRANSFORMCONSTRAINT_TRANSLATE_MIX] - translate) * percent - constraint->translateMix)
+							   * alpha;
+	constraint->scaleMix += (scale + (self->frames[frame + TRANSFORMCONSTRAINT_SCALE_MIX] - scale) * percent - constraint->scaleMix) * alpha;
+	constraint->shearMix += (shear + (self->frames[frame + TRANSFORMCONSTRAINT_SHEAR_MIX] - shear) * percent - constraint->shearMix) * alpha;
+
+	UNUSED(lastTime);
+	UNUSED(firedEvents);
+	UNUSED(eventsCount);
+}
+
+spTransformConstraintTimeline* spTransformConstraintTimeline_create (int framesCount) {
+	return (spTransformConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSFORMCONSTRAINT, 5, _spTransformConstraintTimeline_apply);
+}
+
+void spTransformConstraintTimeline_setFrame (spTransformConstraintTimeline* self, int frameIndex, float time, float rotateMix, float translateMix, float scaleMix, float shearMix) {
+	frameIndex *= 5;
+	self->frames[frameIndex] = time;
+	self->frames[frameIndex + 1] = rotateMix;
+	self->frames[frameIndex + 2] = translateMix;
+	self->frames[frameIndex + 3] = scaleMix;
+	self->frames[frameIndex + 4] = shearMix;
+}

+ 16 - 19
spine-c/src/spine/Bone.c

@@ -31,7 +31,7 @@
 
 
 #include <spine/Bone.h>
 #include <spine/Bone.h>
 #include <spine/extension.h>
 #include <spine/extension.h>
-
+#include <stdio.h>
 static int yDown;
 static int yDown;
 
 
 void spBone_setYDown (int value) {
 void spBone_setYDown (int value) {
@@ -56,14 +56,14 @@ void spBone_dispose (spBone* self) {
 }
 }
 
 
 void spBone_updateWorldTransform (spBone* self) {
 void spBone_updateWorldTransform (spBone* self) {
-	spBone_updateWorldTransformWith(self, self->x, self->y, self->rotation, self->scaleX, self->scaleY);
+	spBone_updateWorldTransformWith(self, self->x, self->y, self->rotation, self->scaleX, self->scaleY, self->shearX, self->shearY);
 }
 }
 
 
-void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rotation, float scaleX, float scaleY) {
-	float radians = rotation * DEG_RAD;
-	float cosine = COS(radians);
-	float sine = SIN(radians);
-	float la = cosine * scaleX, lb = -sine * scaleY, lc = sine * scaleX, ld = cosine * scaleY;
+void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rotation, float scaleX, float scaleY, float shearX, float shearY) {
+	float cosine, sine;
+	float rotationY = rotation + 90 + shearY;
+	float la = COS_DEG(rotation + shearX) * scaleX, lb = COS_DEG(rotationY) * scaleY;
+	float lc = SIN_DEG(rotation + shearX) * scaleX, ld = SIN_DEG(rotationY) * scaleY;
 	float pa, pb, pc, pd, temp;
 	float pa, pb, pc, pd, temp;
 	spBone* parent = self->parent;
 	spBone* parent = self->parent;
 
 
@@ -115,8 +115,7 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
 			pc = 0;
 			pc = 0;
 			pd = 1;
 			pd = 1;
 			do {
 			do {
-				cosine = COS(parent->appliedRotation * DEG_RAD);
-				sine = SIN(parent->appliedRotation * DEG_RAD);
+				cosine = COS_DEG(parent->appliedRotation); sine = SIN_DEG(parent->appliedRotation);
 				temp = pa * cosine + pb * sine;
 				temp = pa * cosine + pb * sine;
 				pb = pa * -sine + pb * cosine;
 				pb = pa * -sine + pb * cosine;
 				pa = temp;
 				pa = temp;
@@ -138,14 +137,10 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
 			pd = 1;
 			pd = 1;
 			do {
 			do {
 				float za, zb, zc, zd;
 				float za, zb, zc, zd;
-				float r = parent->rotation;
-				float psx = parent->appliedScaleX, psy = parent->appliedScaleY;
-				cosine = COS(r * DEG_RAD);
-				sine = SIN(r * DEG_RAD);
-				za = cosine * psx;
-				zb = -sine * psy;
-				zc = sine * psx;
-				zd = cosine * psy;
+				float r = parent->appliedRotation;
+				float psx = parent->appliedScaleX; float psy = parent->appliedScaleY;
+				cosine = COS_DEG(r); sine = SIN_DEG(r);
+				za = cosine * psx; zb = -sine * psy; zc = sine * psx; zd = cosine * psy;
 				temp = pa * za + pb * zc;
 				temp = pa * za + pb * zc;
 				pb = pa * zb + pb * zd;
 				pb = pa * zb + pb * zd;
 				pa = temp;
 				pa = temp;
@@ -154,8 +149,8 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
 				pc = temp;
 				pc = temp;
 
 
 				if (psx < 0) r = -r;
 				if (psx < 0) r = -r;
-				cosine = COS(-r * DEG_RAD);
-				sine = SIN(-r * DEG_RAD);
+				cosine = COS_DEG(-r);
+				sine = SIN_DEG(-r);
 				temp = pa * cosine + pb * sine;
 				temp = pa * cosine + pb * sine;
 				pb = pa * -sine + pb * cosine;
 				pb = pa * -sine + pb * cosine;
 				pa = temp;
 				pa = temp;
@@ -193,6 +188,8 @@ void spBone_setToSetupPose (spBone* self) {
 	self->rotation = self->data->rotation;
 	self->rotation = self->data->rotation;
 	self->scaleX = self->data->scaleX;
 	self->scaleX = self->data->scaleX;
 	self->scaleY = self->data->scaleY;
 	self->scaleY = self->data->scaleY;
+	self->shearX = self->data->shearX;
+	self->shearY = self->data->shearY;
 }
 }
 
 
 float spBone_getWorldRotationX (spBone* self) {
 float spBone_getWorldRotationX (spBone* self) {

+ 172 - 166
spine-c/src/spine/IkConstraint.c

@@ -34,181 +34,187 @@
 #include <spine/extension.h>
 #include <spine/extension.h>
 #include <float.h>
 #include <float.h>
 
 
-spIkConstraint* spIkConstraint_create (spIkConstraintData* data, const spSkeleton* skeleton) {
-	int i;
+spIkConstraint *spIkConstraint_create(spIkConstraintData *data, const spSkeleton *skeleton) {
+    int i;
 
 
-	spIkConstraint* self = NEW(spIkConstraint);
-	CONST_CAST(spIkConstraintData*, self->data) = data;
-	self->bendDirection = data->bendDirection;
-	self->mix = data->mix;
+    spIkConstraint *self = NEW(spIkConstraint);
+    CONST_CAST(spIkConstraintData*, self->data) = data;
+    self->bendDirection = data->bendDirection;
+    self->mix = data->mix;
 
 
-	self->bonesCount = self->data->bonesCount;
-	self->bones = MALLOC(spBone*, self->bonesCount);
-	for (i = 0; i < self->bonesCount; ++i)
-		self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name);
-	self->target = spSkeleton_findBone(skeleton, self->data->target->name);
+    self->bonesCount = self->data->bonesCount;
+    self->bones = MALLOC(spBone*, self->bonesCount);
+    for (i = 0; i < self->bonesCount; ++i)
+        self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name);
+    self->target = spSkeleton_findBone(skeleton, self->data->target->name);
 
 
-	return self;
+    return self;
 }
 }
 
 
-void spIkConstraint_dispose (spIkConstraint* self) {
-	FREE(self->bones);
-	FREE(self);
+void spIkConstraint_dispose(spIkConstraint *self) {
+    FREE(self->bones);
+    FREE(self);
 }
 }
 
 
-void spIkConstraint_apply (spIkConstraint* self) {
-	switch (self->bonesCount) {
-	case 1:
-		spIkConstraint_apply1(self->bones[0], self->target->worldX, self->target->worldY, self->mix);
-		break;
-	case 2:
-		spIkConstraint_apply2(self->bones[0], self->bones[1], self->target->worldX, self->target->worldY, self->bendDirection,
-				self->mix);
-		break;
-	}
+void spIkConstraint_apply(spIkConstraint *self) {
+    switch (self->bonesCount) {
+        case 1:
+            spIkConstraint_apply1(self->bones[0], self->target->worldX, self->target->worldY, self->mix);
+            break;
+        case 2:
+            spIkConstraint_apply2(self->bones[0], self->bones[1], self->target->worldX, self->target->worldY,
+                                  self->bendDirection,
+                                  self->mix);
+            break;
+    }
 }
 }
 
 
-void spIkConstraint_apply1 (spBone* bone, float targetX, float targetY, float alpha) {
-	float parentRotation = !bone->parent ? 0 : spBone_getWorldRotationX(bone->parent);
-	float rotation = bone->rotation;
-	float rotationIK = ATAN2(targetY - bone->worldY, targetX - bone->worldX) * RAD_DEG - parentRotation;
-	if ((bone->worldSignX != bone->worldSignY) != (bone->skeleton->flipX != (bone->skeleton->flipY != spBone_isYDown())))
-		rotationIK = 360 - rotationIK;
-	if (rotationIK > 180) rotationIK -= 360;
-	else if (rotationIK < -180) rotationIK += 360;
-	spBone_updateWorldTransformWith(bone, bone->x, bone->y, rotation + (rotationIK - rotation) * alpha, bone->appliedScaleX,
-		bone->appliedScaleY);
+void spIkConstraint_apply1(spBone *bone, float targetX, float targetY, float alpha) {
+    spBone *pp = bone->parent;
+    float id = 1 / (pp->a * pp->d - pp->b * pp->c);
+    float x = targetX - pp->worldX, y = targetY - pp->worldY;
+    float tx = (x * pp->d - y * pp->b) * id - bone->x, ty = (y * pp->a - x * pp->c) * id - bone->y;
+    float rotationIK = ATAN2(ty, tx) * RAD_DEG - bone->shearX;
+    if (bone->scaleX < 0) rotationIK += 180;
+    if (rotationIK > 180)
+        rotationIK -= 360;
+    else if (rotationIK < -180) rotationIK += 360;
+    spBone_updateWorldTransformWith(bone, bone->x, bone->y, bone->rotation + (rotationIK - bone->rotation) * alpha,
+                                    bone->appliedScaleX,
+                                    bone->appliedScaleY, bone->shearX, bone->shearY);
 }
 }
 
 
-void spIkConstraint_apply2 (spBone* parent, spBone* child, float targetX, float targetY, int bendDir, float alpha) {
-	float px = parent->x, py = parent->y, psx = parent->appliedScaleX, psy = parent->appliedScaleY;
-	float cx = child->x, cy = child->y, csx = child->appliedScaleX, cwx = child->worldX, cwy = child->worldY;
-	int o1, o2, s2, u;
-	spBone* pp = parent->parent;
-	float tx, ty, dx, dy, l1, l2, a1, a2, r;
-	if (alpha == 0) return;
-	if (psx < 0) {
-		psx = -psx;
-		o1 = 180;
-		s2 = -1;
-	} else {
-		o1 = 0;
-		s2 = 1;
-	}
-	if (psy < 0) {
-		psy = -psy;
-		s2 = -s2;
-	}
-	r = psx - psy;
-	u = (r < 0 ? -r : r) <= 0.0001f;
-	if (!u && cy != 0) {
-		cwx = parent->a * cx + parent->worldX;
-		cwy = parent->c * cx + parent->worldY;
-		cy = 0;
-	}
-	if (csx < 0) {
-		csx = -csx;
-		o2 = 180;
-	} else
-		o2 = 0;
-	if (!pp) {
-		tx = targetX - px;
-		ty = targetY - py;
-		dx = cwx - px;
-		dy = cwy - py;
-	} else {
-		float a = pp->a, b = pp->b, c = pp->c, d = pp->d, invDet = 1 / (a * d - b * c);
-		float wx = pp->worldX, wy = pp->worldY, x = targetX - wx, y = targetY - wy;
-		tx = (x * d - y * b) * invDet - px;
-		ty = (y * a - x * c) * invDet - py;
-		x = cwx - wx;
-		y = cwy - wy;
-		dx = (x * d - y * b) * invDet - px;
-		dy = (y * a - x * c) * invDet - py;
-	}
-	l1 = SQRT(dx * dx + dy * dy);
-	l2 = child->data->length * csx;
-	if (u) {
-		float cos, a, o;
-		l2 *= psx;
-		cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2);
-		if (cos < -1) cos = -1;
-		else if (cos > 1) cos = 1;
-		a2 = ACOS(cos) * bendDir;
-		a = l1 + l2 * cos;
-		o = l2 * SIN(a2);
-		a1 = ATAN2(ty * a - tx * o, tx * a + ty * o);
-	} else {
-		float a = psx * l2, b = psy * l2, ta = ATAN2(ty, tx);
-		float aa = a * a, bb = b * b, ll = l1 * l1, dd = tx * tx + ty * ty;
-		float c0 = bb * ll + aa * dd - aa * bb, c1 = -2 * bb * l1, c2 = bb - aa;
-		float d = c1 * c1 - 4 * c2 * c0;
-		float minAngle = 0, minDist = FLT_MAX, minX = 0, minY = 0;
-		float maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0;
-		float x = l1 + a, dist = x * x, angle, y;
-		if (d >= 0) {
-			float q = SQRT(d), r0, r1, ar0, ar1;;
-			if (c1 < 0) q = -q;
-			q = -(c1 + q) / 2;
-			r0 = q / c2;
-			r1 = c0 / q;
-			ar0 = r0 < 0 ? -r0 : r0;
-			ar1 = r1 < 0 ? -r1 : r1;
-			r = ar0 < ar1 ? r0 : r1;
-			if (r * r <= dd) {
-				float y1 = SQRT(dd - r * r) * bendDir;
-				a1 = ta - ATAN2(y1, r);
-				a2 = ATAN2(y1 / psy, (r - l1) / psx);
-				goto outer;
-			}
-		}
-		if (dist > maxDist) {
-			maxAngle = 0;
-			maxDist = dist;
-			maxX = x;
-		}
-		x = l1 - a;
-		dist = x * x;
-		if (dist < minDist) {
-			minAngle = PI;
-			minDist = dist;
-			minX = x;
-		}
-		angle = ACOS(-a * l1 / (aa - bb));
-		x = a * COS(angle) + l1;
-		y = b * SIN(angle);
-		dist = x * x + y * y;
-		if (dist < minDist) {
-			minAngle = angle;
-			minDist = dist;
-			minX = x;
-			minY = y;
-		}
-		if (dist > maxDist) {
-			maxAngle = angle;
-			maxDist = dist;
-			maxX = x;
-			maxY = y;
-		}
-		if (dd <= (minDist + maxDist) / 2) {
-			a1 = ta - ATAN2(minY * bendDir, minX);
-			a2 = minAngle * bendDir;
-		} else {
-			a1 = ta - ATAN2(maxY * bendDir, maxX);
-			a2 = maxAngle * bendDir;
-		}
-	}
-	outer: {
-		float os = ATAN2(cy, cx) * s2;
-		a1 = (a1 - os) * RAD_DEG + o1;
-		a2 = (a2 + os) * RAD_DEG * s2 + o2;
-		if (a1 > 180) a1 -= 360;
-		else if (a1 < -180) a1 += 360;
-		if (a2 > 180) a2 -= 360;
-		else if (a2 < -180) a2 += 360;
-		r = parent->rotation;
-		spBone_updateWorldTransformWith(parent, px, py, r + (a1 - r) * alpha, parent->appliedScaleX, parent->appliedScaleY);
-		r = child->rotation;
-		spBone_updateWorldTransformWith(child, cx, cy, r + (a2 - r) * alpha, child->appliedScaleX, child->appliedScaleY);
-	}
+void spIkConstraint_apply2(spBone *parent, spBone *child, float targetX, float targetY, int bendDir, float alpha) {
+    float px = parent->x, py = parent->y, psx = parent->appliedScaleX, psy = parent->appliedScaleY;
+    int os1, os2, s2;
+    float cx, cy, csx;
+    int u;
+    spBone *pp;
+    float ppa, ppb, ppc, ppd, id;
+    float x, y;
+    float tx, ty;
+    float dx, dy;
+    float l1, l2, a1, a2;
+    float os;
+    float rotation;
+
+    if (alpha == 0) return;
+    if (psx < 0) {
+        psx = -psx;
+        os1 = 180;
+        s2 = -1;
+    } else {
+        os1 = 0;
+        s2 = 1;
+    }
+    if (psy < 0) {
+        psy = -psy;
+        s2 = -s2;
+    }
+    cx = child->x; cy = child->y; csx = child->appliedScaleX;
+    u = ABS(psx - psy) <= 0.0001f;
+    if (!u && cy != 0) {
+        CONST_CAST(float, child->worldX) = parent->a * cx + parent->worldX;
+        CONST_CAST(float, child->worldY) = parent->c * cx + parent->worldY;
+        cy = 0;
+    }
+    if (csx < 0) {
+        csx = -csx;
+        os2 = 180;
+    } else
+        os2 = 0;
+    pp = parent->parent;
+    ppa = pp->a; ppb = pp->b; ppc = pp->c; ppd = pp->d; id = 1 / (ppa * ppd - ppb * ppc);
+    x = targetX - pp->worldX; y = targetY - pp->worldY;
+    tx = (x * ppd - y * ppb) * id - px; ty = (y * ppa - x * ppc) * id - py;
+    x = child->worldX - pp->worldX;
+    y = child->worldY - pp->worldY;
+    dx = (x * ppd - y * ppb) * id - px; dy = (y * ppa - x * ppc) * id - py;
+    l1 = SQRT(dx * dx + dy * dy); l2 = child->data->length * csx;
+    outer:
+    if (u) {
+        float cosine, a, o;
+        l2 *= psx;
+        cosine = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2);
+        if (cosine < -1)
+            cosine = -1;
+        else if (cosine > 1) cosine = 1;
+        a2 = ACOS(cosine) * bendDir;
+        a = l1 + l2 * cosine, o = l2 * SIN(a2);
+        a1 = ATAN2(ty * a - tx * o, tx * a + ty * o);
+    } else {
+        float minAngle, minDist, minX, minY, maxAngle, maxDist, maxX, maxY, angle;
+        float a = psx * l2, b = psy * l2, ta = ATAN2(ty, tx);
+        float aa = a * a, bb = b * b, ll = l1 * l1, dd = tx * tx + ty * ty;
+        float c0 = bb * ll + aa * dd - aa * bb, c1 = -2 * bb * l1, c2 = bb - aa;
+        float d = c1 * c1 - 4 * c2 * c0;
+        if (d >= 0) {
+            float q = SQRT(d), r0, r, r1;
+            if (c1 < 0) q = -q;
+            q = -(c1 + q) / 2;
+            r0 = q / c2; r1 = c0 / q;
+            r = ABS(r0) < ABS(r1) ? r0 : r1;
+            if (r * r <= dd) {
+                y = SQRT(dd - r * r) * bendDir;
+                a1 = ta - ATAN2(y, r);
+                a2 = ATAN2(y / psy, (r - l1) / psx);
+                goto outer;
+            }
+        }
+        minAngle = 0; minDist = FLT_MAX; minX = 0; minY = 0;
+        maxAngle = 0; maxDist = 0; maxX = 0; maxY = 0;
+        x = l1 + a;
+        d = x * x;
+        if (d > maxDist) {
+            maxAngle = 0;
+            maxDist = d;
+            maxX = x;
+        }
+        x = l1 - a;
+        d = x * x;
+        if (d < minDist) {
+            minAngle = PI;
+            minDist = d;
+            minX = x;
+        }
+        angle = ACOS(-a * l1 / (aa - bb));
+        x = a * COS(angle) + l1;
+        y = b * SIN(angle);
+        d = x * x + y * y;
+        if (d < minDist) {
+            minAngle = angle;
+            minDist = d;
+            minX = x;
+            minY = y;
+        }
+        if (d > maxDist) {
+            maxAngle = angle;
+            maxDist = d;
+            maxX = x;
+            maxY = y;
+        }
+        if (dd <= (minDist + maxDist) / 2) {
+            a1 = ta - ATAN2(minY * bendDir, minX);
+            a2 = minAngle * bendDir;
+        } else {
+            a1 = ta - ATAN2(maxY * bendDir, maxX);
+            a2 = maxAngle * bendDir;
+        }
+    }
+    os = ATAN2(cy, cx) * s2;
+    a1 = (a1 - os) * RAD_DEG + os1;
+    a2 = ((a2 + os) * RAD_DEG - child->shearX) * s2 + os2;
+    if (a1 > 180)
+        a1 -= 360;
+    else if (a1 < -180) a1 += 360;
+    if (a2 > 180)
+        a2 -= 360;
+    else if (a2 < -180) a2 += 360;
+
+    rotation = parent->rotation;
+    spBone_updateWorldTransformWith(parent, px, py, rotation + (a1 - rotation) * alpha, parent->appliedScaleX,
+                                    parent->appliedScaleY, 0, 0);
+    rotation = child->rotation;
+    spBone_updateWorldTransformWith(child, cx, cy, rotation + (a2 - rotation) * alpha, child->appliedScaleX,
+                                    child->appliedScaleY, child->shearX, child->shearY);
 }
 }

+ 7 - 6
spine-c/src/spine/Skeleton.c

@@ -169,8 +169,7 @@ void spSkeleton_updateCache (const spSkeleton* self) {
 	for (i = 0; i < self->transformConstraintsCount; ++i) {
 	for (i = 0; i < self->transformConstraintsCount; ++i) {
 		spTransformConstraint* transformConstraint = self->transformConstraints[i];
 		spTransformConstraint* transformConstraint = self->transformConstraints[i];
 		for (ii = internal->updateCacheCount - 1; ii >= 0; --ii) {
 		for (ii = internal->updateCacheCount - 1; ii >= 0; --ii) {
-			void* object = internal->updateCache[ii].object;
-			if (object == transformConstraint->bone || object == transformConstraint->target) {
+			if (internal->updateCache[ii].object == transformConstraint->bone) {
 				int insertIndex = ii + 1;
 				int insertIndex = ii + 1;
 				update = internal->updateCache + insertIndex;
 				update = internal->updateCache + insertIndex;
 				memmove(update + 1, update, (internal->updateCacheCount - insertIndex) * sizeof(_spUpdate));
 				memmove(update + 1, update, (internal->updateCacheCount - insertIndex) * sizeof(_spUpdate));
@@ -220,10 +219,12 @@ void spSkeleton_setBonesToSetupPose (const spSkeleton* self) {
 	}
 	}
 
 
 	for (i = 0; i < self->transformConstraintsCount; ++i) {
 	for (i = 0; i < self->transformConstraintsCount; ++i) {
-		spTransformConstraint* transformConstraint = self->transformConstraints[i];
-		transformConstraint->translateMix = transformConstraint->data->translateMix;
-		transformConstraint->x = transformConstraint->data->x;
-		transformConstraint->y = transformConstraint->data->y;
+		spTransformConstraint* constraint = self->transformConstraints[i];
+		spTransformConstraintData* data = constraint->data;
+		constraint->rotateMix = data->rotateMix;
+		constraint->translateMix = data->translateMix;
+		constraint->scaleMix = data->scaleMix;
+		constraint->shearMix = data->shearMix;
 	}
 	}
 }
 }
 
 

+ 50 - 15
spine-c/src/spine/SkeletonJson.c

@@ -148,10 +148,11 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r
 	Json* bones = Json_getItem(root, "bones");
 	Json* bones = Json_getItem(root, "bones");
 	Json* slots = Json_getItem(root, "slots");
 	Json* slots = Json_getItem(root, "slots");
 	Json* ik = Json_getItem(root, "ik");
 	Json* ik = Json_getItem(root, "ik");
+	Json* transform = Json_getItem(root, "transform");
 	Json* ffd = Json_getItem(root, "ffd");
 	Json* ffd = Json_getItem(root, "ffd");
 	Json* drawOrder = Json_getItem(root, "drawOrder");
 	Json* drawOrder = Json_getItem(root, "drawOrder");
 	Json* events = Json_getItem(root, "events");
 	Json* events = Json_getItem(root, "events");
-	Json *boneMap, *slotMap, *ikMap, *ffdMap;
+	Json *boneMap, *slotMap, *constraintMap, *ffdMap;
 	if (!drawOrder) drawOrder = Json_getItem(root, "draworder");
 	if (!drawOrder) drawOrder = Json_getItem(root, "draworder");
 
 
 	for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next)
 	for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next)
@@ -238,10 +239,15 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r
 
 
 			} else {
 			} else {
 				int isScale = strcmp(timelineArray->name, "scale") == 0;
 				int isScale = strcmp(timelineArray->name, "scale") == 0;
-				if (isScale || strcmp(timelineArray->name, "translate") == 0) {
-					float scale = isScale ? 1 : self->scale;
-					spTranslateTimeline *timeline =
-							isScale ? spScaleTimeline_create(timelineArray->size) : spTranslateTimeline_create(timelineArray->size);
+				int isTranslate = strcmp(timelineArray->name, "translate") == 0;
+				int isShear = strcmp(timelineArray->name, "shear") == 0;
+				if (isScale || isTranslate || isShear) {
+					float scale = isTranslate ? self->scale: 1;
+					spTranslateTimeline *timeline = 0;
+					if (isScale) timeline = spScaleTimeline_create(timelineArray->size);
+					else if (isTranslate) timeline = spTranslateTimeline_create(timelineArray->size);
+					else if (isShear) timeline = spShearTimeline_create(timelineArray->size);
+
 					timeline->boneIndex = boneIndex;
 					timeline->boneIndex = boneIndex;
 					for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) {
 					for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) {
 						spTranslateTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "x", 0) * scale,
 						spTranslateTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "x", 0) * scale,
@@ -261,23 +267,43 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r
 		}
 		}
 	}
 	}
 
 
-	/* IK timelines. */
-	for (ikMap = ik ? ik->child : 0; ikMap; ikMap = ikMap->next) {
-		spIkConstraintData* ikConstraint = spSkeletonData_findIkConstraint(skeletonData, ikMap->name);
-		spIkConstraintTimeline* timeline = spIkConstraintTimeline_create(ikMap->size);
+	/* IK constraint timelines. */
+	for (constraintMap = ik ? ik->child : 0; constraintMap; constraintMap = constraintMap->next) {
+		spIkConstraintData* constraint = spSkeletonData_findIkConstraint(skeletonData, constraintMap->name);
+		spIkConstraintTimeline* timeline = spIkConstraintTimeline_create(constraintMap->size);
 		for (i = 0; i < skeletonData->ikConstraintsCount; ++i) {
 		for (i = 0; i < skeletonData->ikConstraintsCount; ++i) {
-			if (ikConstraint == skeletonData->ikConstraints[i]) {
+			if (constraint == skeletonData->ikConstraints[i]) {
 				timeline->ikConstraintIndex = i;
 				timeline->ikConstraintIndex = i;
 				break;
 				break;
 			}
 			}
 		}
 		}
-		for (frame = ikMap->child, i = 0; frame; frame = frame->next, ++i) {
-			spIkConstraintTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "mix", 0),
+		for (frame = constraintMap->child, i = 0; frame; frame = frame->next, ++i) {
+			spIkConstraintTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "mix", 1),
 					Json_getInt(frame, "bendPositive", 1) ? 1 : -1);
 					Json_getInt(frame, "bendPositive", 1) ? 1 : -1);
 			readCurve(SUPER(timeline), i, frame);
 			readCurve(SUPER(timeline), i, frame);
 		}
 		}
 		animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline);
 		animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline);
-		duration = timeline->frames[ikMap->size * 3 - 3];
+		duration = timeline->frames[constraintMap->size * 3 - 3];
+		if (duration > animation->duration) animation->duration = duration;
+	}
+
+	/* Transform constraint timelines. */
+	for (constraintMap = transform ? transform->child : 0; constraintMap; constraintMap = constraintMap->next) {
+		spTransformConstraintData* constraint = spSkeletonData_findTransformConstraint(skeletonData, constraintMap->name);
+		spTransformConstraintTimeline* timeline = spTransformConstraintTimeline_create(constraintMap->size);
+		for (i = 0; i < skeletonData->transformConstraintsCount; ++i) {
+			if (constraint == skeletonData->transformConstraints[i]) {
+				timeline->transformConstraintIndex = i;
+				break;
+			}
+		}
+		for (frame = constraintMap->child, i = 0; frame; frame = frame->next, ++i) {
+			spTransformConstraintTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "rotateMix", 1),
+												   Json_getFloat(frame, "translateMix", 1), Json_getFloat(frame, "scaleMix", 1), Json_getFloat(frame, "shearMix", 1));
+			readCurve(SUPER(timeline), i, frame);
+		}
+		animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline);
+		duration = timeline->frames[constraintMap->size * 5 - 5];
 		if (duration > animation->duration) animation->duration = duration;
 		if (duration > animation->duration) animation->duration = duration;
 	}
 	}
 
 
@@ -491,6 +517,8 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
 		boneData->rotation = Json_getFloat(boneMap, "rotation", 0);
 		boneData->rotation = Json_getFloat(boneMap, "rotation", 0);
 		boneData->scaleX = Json_getFloat(boneMap, "scaleX", 1);
 		boneData->scaleX = Json_getFloat(boneMap, "scaleX", 1);
 		boneData->scaleY = Json_getFloat(boneMap, "scaleY", 1);
 		boneData->scaleY = Json_getFloat(boneMap, "scaleY", 1);
+		boneData->shearX = Json_getFloat(boneMap, "shearX", 0);
+		boneData->shearY = Json_getFloat(boneMap, "shearY", 0);
 		boneData->inheritScale = Json_getInt(boneMap, "inheritScale", 1);
 		boneData->inheritScale = Json_getInt(boneMap, "inheritScale", 1);
 		boneData->inheritRotation = Json_getInt(boneMap, "inheritRotation", 1);
 		boneData->inheritRotation = Json_getInt(boneMap, "inheritRotation", 1);
 
 
@@ -562,9 +590,16 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
 				return 0;
 				return 0;
 			}
 			}
 
 
+			transformConstraintData->offsetRotation = Json_getFloat(transformMap, "rotation", 0);
+			transformConstraintData->offsetX = Json_getFloat(transformMap, "x", 0) * self->scale;
+			transformConstraintData->offsetY = Json_getFloat(transformMap, "y", 0) * self->scale;
+			transformConstraintData->offsetScaleX = Json_getFloat(transformMap, "scaleX", 0) * self->scale;
+			transformConstraintData->offsetScaleY = Json_getFloat(transformMap, "scaleY", 0) * self->scale;
+			transformConstraintData->offsetShearY = Json_getFloat(transformMap, "shearY", 0) * self->scale;
+			transformConstraintData->rotateMix = Json_getFloat(transformMap, "rotateMix", 1);
 			transformConstraintData->translateMix = Json_getFloat(transformMap, "translateMix", 1);
 			transformConstraintData->translateMix = Json_getFloat(transformMap, "translateMix", 1);
-			transformConstraintData->x = Json_getFloat(transformMap, "x", 0) * self->scale;
-			transformConstraintData->y = Json_getFloat(transformMap, "y", 0) * self->scale;
+			transformConstraintData->scaleMix = Json_getFloat(transformMap, "scaleMix", 1);
+			transformConstraintData->shearMix = Json_getFloat(transformMap, "shearMix", 1);
 
 
 			skeletonData->transformConstraints[i] = transformConstraintData;
 			skeletonData->transformConstraints[i] = transformConstraintData;
 		}
 		}

+ 53 - 5
spine-c/src/spine/TransformConstraint.c

@@ -37,8 +37,11 @@ spTransformConstraint* spTransformConstraint_create (spTransformConstraintData*
 	spTransformConstraint* self = NEW(spTransformConstraint);
 	spTransformConstraint* self = NEW(spTransformConstraint);
 	CONST_CAST(spTransformConstraintData*, self->data) = data;
 	CONST_CAST(spTransformConstraintData*, self->data) = data;
 	self->translateMix = data->translateMix;
 	self->translateMix = data->translateMix;
-	self->x = data->x;
-	self->y = data->y;
+	self->rotateMix = data->rotateMix;
+	self->scaleMix = data->scaleMix;
+	self->shearMix = data->shearMix;
+	self->offsetX = data->offsetX;
+	self->offsetY = data->offsetY;
 	self->bone = spSkeleton_findBone(skeleton, self->data->bone->name);
 	self->bone = spSkeleton_findBone(skeleton, self->data->bone->name);
 	self->target = spSkeleton_findBone(skeleton, self->data->target->name);
 	self->target = spSkeleton_findBone(skeleton, self->data->target->name);
 	return self;
 	return self;
@@ -49,10 +52,55 @@ void spTransformConstraint_dispose (spTransformConstraint* self) {
 }
 }
 
 
 void spTransformConstraint_apply (spTransformConstraint* self) {
 void spTransformConstraint_apply (spTransformConstraint* self) {
+	spBone* bone = self->bone;
+	spBone* target = self->target;
+
+	if (self->rotateMix > 0) {
+		float cosine, sine;
+		float a = bone->a, b = bone->b, c = bone->c, d = bone->d;
+		float r = atan2(target->c, target->a) - atan2(c, a) + self->offsetRotation * DEG_RAD;
+		if (r > PI)
+			r -= PI2;
+		else if (r < -PI) r += PI2;
+		r *= self->rotateMix;
+		cosine = COS(r); sine = SIN(r);
+		CONST_CAST(float, bone->a) = cosine * a - sine * c;
+		CONST_CAST(float, bone->b) = cosine * b - sine * d;
+		CONST_CAST(float, bone->c) = sine * a + cosine * c;
+		CONST_CAST(float, bone->d) = sine * b + cosine * d;
+	}
+
+	if (self->scaleMix > 0) {
+		float bs = (float)SQRT(bone->a * bone->a + bone->c * bone->c);
+		float ts = (float)SQRT(target->a * target->a + target->c * target->c);
+		float s = bs > 0.00001f ? (bs + (ts - bs + self->offsetScaleX) * self->scaleMix) / bs : 0;
+		CONST_CAST(float, bone->a) *= s;
+		CONST_CAST(float, bone->c) *= s;
+		bs = (float)SQRT(bone->b * bone->b + bone->d * bone->d);
+		ts = (float)SQRT(target->b * target->b + target->d * target->d);
+		s = bs > 0.00001f ? (bs + (ts - bs + self->offsetScaleY) * self->scaleMix) / bs : 0;
+		CONST_CAST(float, bone->b) *= s;
+		CONST_CAST(float, bone->d) *= s;
+	}
+
+	if (self->shearMix > 0) {
+		float b = bone->b, d = bone->d;
+		float by = atan2(d, b);
+		float r = atan2(target->d, target->b) - atan2(target->c, target->a) - (by - atan2(bone->c, bone->a));
+		float s;
+		if (r > PI)
+			r -= PI2;
+		else if (r < -PI) r += PI2;
+		r = by + (r + self->offsetShearY * DEG_RAD) * self->shearMix;
+		s = (float)SQRT(b * b + d * d);
+		CONST_CAST(float, bone->b) = COS(r) * s;
+		CONST_CAST(float, bone->d) = SIN(r) * s;
+	}
+
 	if (self->translateMix > 0) {
 	if (self->translateMix > 0) {
 		float tx, ty;
 		float tx, ty;
-		spBone_localToWorld(self->target, self->x, self->y, &tx, &ty);
-		CONST_CAST(float, self->bone->worldX) = self->bone->worldX + (tx - self->bone->worldX) * self->translateMix;
-		CONST_CAST(float, self->bone->worldY) = self->bone->worldY + (ty - self->bone->worldY) * self->translateMix;
+		spBone_localToWorld(self->target, self->offsetX, self->offsetY, &tx, &ty);
+		CONST_CAST(float, self->bone->worldX) += (tx - self->bone->worldX) * self->translateMix;
+		CONST_CAST(float, self->bone->worldY) += (ty - self->bone->worldY) * self->translateMix;
 	}
 	}
 }
 }

+ 0 - 34
spine-cocos2d-iphone/2/README.md

@@ -1,34 +0,0 @@
-# spine-cocos2d-iphone v2
-
-The spine-cocos2d-iphone runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-iphone](http://www.cocos2d-iphone.org/). spine-cocos2d-iphone is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c).
-
-## Licensing
-
-This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information.
-
-The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes.
-
-## Spine version
-
-spine-cocos2d-iphone v2 works with data exported from Spine 3.1.08. Updating spine-cocos2d-iphone v2 to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress.
-
-spine-cocos2d-iphone v2 supports all Spine features.
-
-spine-cocos2d-iphone v2 does not yet support loading the binary format.
-
-## Setup
-
-1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip).
-1. Place the contents of a cocos2d version 2.1.0 distribution into the `spine-cocos2d-iphone/2/cocos2d` directory.
-1. Open the XCode project file for iOS or Mac from the `spine-cocos2d-iphone/2` directory.
-
-Alternatively, the contents of the `spine-c/src`, `spine-c/include` and `spine-cocos2d-iphone/2/src` directories can be copied into your project. Be sure your header search path will find the contents of the `spine-c/include` and `spine-cocos2d-iphone/2/src` directories. Note that the includes use `spine/Xxx.h`, so the `spine` directory cannot be omitted when copying the files.
-
-## Examples
-
-[Spineboy](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2d-iphone/2/example/SpineboyExample.m)
-[Golbins](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2d-iphone/2/example/GoblinsExample.m)
-
-## Links
-
-[podspec](https://github.com/ldomaradzki/spine-runtimes/blob/master/Spine-Cocos2d-iPhone.podspec) (maintained externally)

+ 0 - 20
spine-cocos2d-iphone/2/Resources-ios/AppDelegate.h

@@ -1,20 +0,0 @@
-
-#import <UIKit/UIKit.h>
-#import "cocos2d.h"
-
-// Added only for iOS 6 support
-@interface MyNavigationController : UINavigationController <CCDirectorDelegate>
-@end
-
-@interface AppController : NSObject <UIApplicationDelegate> {
-	UIWindow *window_;
-	MyNavigationController *navController_;
-
-	CCDirectorIOS	*director_; // weak ref
-}
-
-@property (nonatomic, retain) UIWindow *window;
-@property (readonly) MyNavigationController *navController;
-@property (readonly) CCDirectorIOS *director;
-
-@end

+ 0 - 162
spine-cocos2d-iphone/2/Resources-ios/AppDelegate.m

@@ -1,162 +0,0 @@
-
-#import "cocos2d.h"
-#import "AppDelegate.h"
-#import "SpineboyExample.h"
-
-@implementation MyNavigationController
-
-// The available orientations should be defined in the Info.plist file.
-// And in iOS 6+ only, you can override it in the Root View controller in the "supportedInterfaceOrientations" method.
-// Only valid for iOS 6+. NOT VALID for iOS 4 / 5.
--(NSUInteger)supportedInterfaceOrientations {
-	// iPhone only
-	if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone )
-		return UIInterfaceOrientationMaskLandscape;
-	
-	// iPad only
-	return UIInterfaceOrientationMaskLandscape;
-}
-
-// Supported orientations. Customize it for your own needs
-// Only valid on iOS 4 / 5. NOT VALID for iOS 6.
-- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
-	// iPhone only
-	if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone )
-		return UIInterfaceOrientationIsLandscape(interfaceOrientation);
-	
-	// iPad only
-	// iPhone only
-	return UIInterfaceOrientationIsLandscape(interfaceOrientation);
-}
-
-// This is needed for iOS4 and iOS5 in order to ensure
-// that the 1st scene has the correct dimensions
-// This is not needed on iOS6 and could be added to the application:didFinish...
--(void) directorDidReshapeProjection:(CCDirector*)director {
-	if(director.runningScene == nil) {
-		// Add the first scene to the stack. The director will draw it immediately into the framebuffer. (Animation is started automatically when the view is displayed.)
-		// and add the scene to the stack. The director will run it when it automatically when the view is displayed.
-		[director runWithScene: [SpineboyExample scene]];
-	}
-}
-@end
-
-
-@implementation AppController
-
-@synthesize window=window_, navController=navController_, director=director_;
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-	// Create the main window
-	window_ = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
-
-	// Create an CCGLView with a RGB565 color buffer, and a depth buffer of 0-bits
-	CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds]
-								   pixelFormat:kEAGLColorFormatRGB565	//kEAGLColorFormatRGBA8
-								   depthFormat:0	//GL_DEPTH_COMPONENT24_OES
-							preserveBackbuffer:NO
-									sharegroup:nil
-								 multiSampling:NO
-							   numberOfSamples:0];
-	
-	director_ = (CCDirectorIOS*) [CCDirector sharedDirector];
-	
-	director_.wantsFullScreenLayout = YES;
-	
-	// Display FSP and SPF
-	[director_ setDisplayStats:YES];
-	
-	// set FPS at 60
-	[director_ setAnimationInterval:1.0/60];
-	
-	// attach the openglView to the director
-	[director_ setView:glView];
-	
-	// 2D projection
-	[director_ setProjection:kCCDirectorProjection2D];
-	//	[director setProjection:kCCDirectorProjection3D];
-	
-	// Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
-	if( ! [director_ enableRetinaDisplay:YES] )
-		CCLOG(@"Retina Display Not supported");
-	
-	// Default texture format for PNG/BMP/TIFF/JPEG/GIF images
-	// It can be RGBA8888, RGBA4444, RGB5_A1, RGB565
-	// You can change this setting at any time.
-	[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
-	
-	// If the 1st suffix is not found and if fallback is enabled then fallback suffixes are going to searched. If none is found, it will try with the name without suffix.
-	// On iPad HD  : "-ipadhd", "-ipad",  "-hd"
-	// On iPad     : "-ipad", "-hd"
-	// On iPhone HD: "-hd"
-	CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils];
-	[sharedFileUtils setEnableFallbackSuffixes:NO];				// Default: NO. No fallback suffixes are going to be used
-	[sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"];		// Default on iPhone RetinaDisplay is "-hd"
-	[sharedFileUtils setiPadSuffix:@"-ipad"];					// Default on iPad is "ipad"
-	[sharedFileUtils setiPadRetinaDisplaySuffix:@"-ipadhd"];	// Default on iPad RetinaDisplay is "-ipadhd"
-	
-	// Assume that PVR images have premultiplied alpha
-	[CCTexture2D PVRImagesHavePremultipliedAlpha:YES];
-	
-	// Create a Navigation Controller with the Director
-	navController_ = [[MyNavigationController alloc] initWithRootViewController:director_];
-	navController_.navigationBarHidden = YES;
-
-	// for rotation and other messages
-	[director_ setDelegate:navController_];
-	
-	// set the Navigation Controller as the root view controller
-	[window_ setRootViewController:navController_];
-	
-	// make main window visible
-	[window_ makeKeyAndVisible];
-	
-	return YES;
-}
-
-// getting a call, pause the game
--(void) applicationWillResignActive:(UIApplication *)application {
-	if( [navController_ visibleViewController] == director_ )
-		[director_ pause];
-}
-
-// call got rejected
--(void) applicationDidBecomeActive:(UIApplication *)application {
-	[[CCDirector sharedDirector] setNextDeltaTimeZero:YES];	
-	if( [navController_ visibleViewController] == director_ )
-		[director_ resume];
-}
-
--(void) applicationDidEnterBackground:(UIApplication*)application {
-	if( [navController_ visibleViewController] == director_ )
-		[director_ stopAnimation];
-}
-
--(void) applicationWillEnterForeground:(UIApplication*)application {
-	if( [navController_ visibleViewController] == director_ )
-		[director_ startAnimation];
-}
-
-// application will be killed
-- (void)applicationWillTerminate:(UIApplication *)application {
-	CC_DIRECTOR_END();
-}
-
-// purge memory
-- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
-{
-	[[CCDirector sharedDirector] purgeCachedData];
-}
-
-// next delta time will be zero
--(void) applicationSignificantTimeChange:(UIApplication *)application {
-	[[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
-}
-
-- (void) dealloc {
-	[window_ release];
-	[navController_ release];
-	
-	[super dealloc];
-}
-@end

+ 0 - 9
spine-cocos2d-iphone/2/Resources-ios/main.m

@@ -1,9 +0,0 @@
-
-#import <UIKit/UIKit.h>
-
-int main(int argc, char *argv[]) {   
-	NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
-	int retVal = UIApplicationMain(argc, argv, nil, @"AppController");
-	[pool release];
-	return retVal;
-}

+ 0 - 14
spine-cocos2d-iphone/2/Resources-mac/AppDelegate.h

@@ -1,14 +0,0 @@
-
-#import "cocos2d.h"
-
-@interface spine_cocos2d_iphoneAppDelegate : NSObject <NSApplicationDelegate> {
-	NSWindow *window_;
-	CCGLView *glView_;
-}
-
-@property (assign) IBOutlet NSWindow *window;
-@property (assign) IBOutlet CCGLView *glView;
-
-- (IBAction)toggleFullScreen:(id)sender;
-
-@end

+ 0 - 38
spine-cocos2d-iphone/2/Resources-mac/AppDelegate.m

@@ -1,38 +0,0 @@
-
-#import "AppDelegate.h"
-#import "SpineboyExample.h"
-
-@implementation spine_cocos2d_iphoneAppDelegate
-@synthesize window=window_, glView=glView_;
-
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
-	CCDirectorMac *director = (CCDirectorMac*)[CCDirector sharedDirector];
-
-	[director setDisplayStats:YES];
-	[director setView:glView_];
-	[director setResizeMode:kCCDirectorResize_AutoScale];
-
-	[window_ setAcceptsMouseMovedEvents:NO];
-	[window_ center];
-
-	[director runWithScene:[SpineboyExample scene]];
-}
-
-- (BOOL) applicationShouldTerminateAfterLastWindowClosed: (NSApplication *) theApplication {
-	return YES;
-}
-
-- (void)dealloc {
-	[[CCDirector sharedDirector] end];
-	[window_ release];
-	[super dealloc];
-}
-
-#pragma mark AppDelegate - IBActions
-
-- (IBAction)toggleFullScreen: (id)sender {
-	CCDirectorMac *director = (CCDirectorMac*) [CCDirector sharedDirector];
-	[director setFullScreen:![director isFullScreen]];
-}
-
-@end

+ 0 - 0
spine-cocos2d-iphone/2/cocos2d/Place cocos2d here.txt


+ 0 - 41
spine-cocos2d-iphone/2/example/GoblinsExample.h

@@ -1,41 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import "cocos2d.h"
-#import <spine/spine-cocos2d-iphone.h>
-
-@interface GoblinsExample : CCLayerColor {
-	SkeletonAnimation* skeletonNode;
-}
-
-+ (CCScene*) scene;
-
-@end

+ 0 - 80
spine-cocos2d-iphone/2/example/GoblinsExample.m

@@ -1,80 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import "GoblinsExample.h"
-#import "SpineboyExample.h"
-
-@implementation GoblinsExample
-
-+ (CCScene*) scene {
-	CCScene *scene = [CCScene node];
-	[scene addChild:[GoblinsExample node]];
-	return scene;
-}
-
--(id) init {
-	self = [super initWithColor:ccc4(128, 128, 128, 255)];
-	if (!self) return nil;
-
-	skeletonNode = [SkeletonAnimation skeletonWithFile:@"goblins-mesh.json" atlasFile:@"goblins-mesh.atlas" scale:1];
-	[skeletonNode setSkin:@"goblin"];
-	[skeletonNode setAnimationForTrack:0 name:@"walk" loop:YES];
-
-	CGSize windowSize = [[CCDirector sharedDirector] winSize];
-	[skeletonNode setPosition:ccp(windowSize.width / 2, 20)];
-	[self addChild:skeletonNode];
-
-#if __CC_PLATFORM_MAC
-	[self setMouseEnabled:YES];
-#else
-	[self setTouchEnabled:YES];
-#endif
-
-	return self;
-}
-
-#if __CC_PLATFORM_MAC
-- (BOOL) ccMouseDown:(NSEvent*)event {
-#else
-- (void) ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
-#endif
-	if (!skeletonNode.debugBones)
-		skeletonNode.debugBones = true;
-	else if (skeletonNode.timeScale == 1)
-		skeletonNode.timeScale = 0.3f;
-	else
-		[[CCDirector sharedDirector] replaceScene:[SpineboyExample scene]];
-#if __CC_PLATFORM_MAC
-	return YES;
-#endif
-}
-
-@end

+ 0 - 41
spine-cocos2d-iphone/2/example/SpineboyExample.h

@@ -1,41 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import "cocos2d.h"
-#import <spine/spine-cocos2d-iphone.h>
-
-@interface SpineboyExample : CCLayerColor {
-	SkeletonAnimation* skeletonNode;
-}
-
-+ (CCScene*) scene;
-
-@end

+ 0 - 105
spine-cocos2d-iphone/2/example/SpineboyExample.m

@@ -1,105 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import "SpineboyExample.h"
-#import "GoblinsExample.h"
-
-@implementation SpineboyExample
-
-+ (CCScene*) scene {
-	CCScene *scene = [CCScene node];
-	[scene addChild:[SpineboyExample node]];
-	return scene;
-}
-
--(id) init {
-	self = [super initWithColor:ccc4(128, 128, 128, 255)];
-	if (!self) return nil;
-
-	skeletonNode = [SkeletonAnimation skeletonWithFile:@"spineboy.json" atlasFile:@"spineboy.atlas" scale:0.6];
-	[skeletonNode setMixFrom:@"walk" to:@"jump" duration:0.2f];
-	[skeletonNode setMixFrom:@"jump" to:@"run" duration:0.2f];
-
-	skeletonNode.startListener = ^(int trackIndex) {
-		spTrackEntry* entry = spAnimationState_getCurrent(skeletonNode.state, trackIndex);
-		const char* animationName = (entry && entry->animation) ? entry->animation->name : 0;
-		CCLOG(@"%d start: %s", trackIndex, animationName);
-	};
-	skeletonNode.endListener = ^(int trackIndex) {
-		CCLOG(@"%d end", trackIndex);
-	};
-	skeletonNode.completeListener = ^(int trackIndex, int loopCount) {
-		CCLOG(@"%d complete: %d", trackIndex, loopCount);
-	};
-	skeletonNode.eventListener = ^(int trackIndex, spEvent* event) {
-		CCLOG(@"%d event: %s, %d, %f, %s", trackIndex, event->data->name, event->intValue, event->floatValue, event->stringValue);
-	};
-
-	[skeletonNode setAnimationForTrack:0 name:@"walk" loop:YES];
-	spTrackEntry* jumpEntry = [skeletonNode addAnimationForTrack:0 name:@"jump" loop:NO afterDelay:3];
-	[skeletonNode addAnimationForTrack:0 name:@"run" loop:YES afterDelay:0];
-
-	[skeletonNode setListenerForEntry:jumpEntry onStart:^(int trackIndex) {
-		CCLOG(@"jumped!");
-	}];
-
-	// [skeletonNode setAnimationForTrack:1 name:@"test" loop:YES];
-
-	CGSize windowSize = [[CCDirector sharedDirector] winSize];
-	[skeletonNode setPosition:ccp(windowSize.width / 2, 20)];
-	[self addChild:skeletonNode];
-
-#if __CC_PLATFORM_MAC
-	[self setMouseEnabled:YES];
-#else
-	[self setTouchEnabled:YES];
-#endif
-
-	return self;
-}
-
-#if __CC_PLATFORM_MAC
-- (BOOL) ccMouseDown:(NSEvent*)event {
-#else
-- (void) ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
-#endif
-	if (!skeletonNode.debugBones)
-		skeletonNode.debugBones = true;
-	else if (skeletonNode.timeScale == 1)
-		skeletonNode.timeScale = 0.3f;
-	else
-		[[CCDirector sharedDirector] replaceScene:[GoblinsExample scene]];
-#if __CC_PLATFORM_MAC
-	return YES;
-#endif
-}
-
-@end

+ 0 - 831
spine-cocos2d-iphone/2/spine-cocos2d-iphone-ios.xcodeproj/project.pbxproj

@@ -1,831 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 46;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		4327E30419E9879C007E7FB7 /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 4327E30219E9879C007E7FB7 /* IkConstraint.c */; };
-		4327E30519E9879C007E7FB7 /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 4327E30319E9879C007E7FB7 /* IkConstraintData.c */; };
-		4327E30619E98913007E7FB7 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 652107951895250000B1FF07 /* CoreText.framework */; };
-		4327E30919E98977007E7FB7 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4327E30819E98977007E7FB7 /* GLKit.framework */; };
-		4327E30A19E989A3007E7FB7 /* libcocos2d_chipmunk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 434D47E6192A246B003127B5 /* libcocos2d_chipmunk.a */; };
-		4327E30B19E98A32007E7FB7 /* libChipmunk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 434D47E0192A246B003127B5 /* libChipmunk.a */; };
-		43C3282F170B0C19004A9460 /* spine-cocos2d-iphone.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C3282D170B0C19004A9460 /* spine-cocos2d-iphone.m */; };
-		43C3286C170B0DA6004A9460 /* spineboy.json in Resources */ = {isa = PBXBuildFile; fileRef = 43C32868170B0DA6004A9460 /* spineboy.json */; };
-		43C3286E170B0DA6004A9460 /* spineboy.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 43C3286A170B0DA6004A9460 /* spineboy.atlas */; };
-		43C3286F170B0DA6004A9460 /* spineboy.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C3286B170B0DA6004A9460 /* spineboy.png */; };
-		43C3287D170B0DBE004A9460 /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 43C32871170B0DBE004A9460 /* [email protected] */; };
-		43C3287E170B0DBE004A9460 /* Default-Landscape~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32872170B0DBE004A9460 /* Default-Landscape~ipad.png */; };
-		43C3287F170B0DBE004A9460 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32873170B0DBE004A9460 /* Default.png */; };
-		43C32880170B0DBE004A9460 /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 43C32874170B0DBE004A9460 /* [email protected] */; };
-		43C32881170B0DBE004A9460 /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32875170B0DBE004A9460 /* Icon-72.png */; };
-		43C32882170B0DBE004A9460 /* Icon-Small-50.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32876170B0DBE004A9460 /* Icon-Small-50.png */; };
-		43C32883170B0DBE004A9460 /* Icon-Small.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32877170B0DBE004A9460 /* Icon-Small.png */; };
-		43C32884170B0DBE004A9460 /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 43C32878170B0DBE004A9460 /* [email protected] */; };
-		43C32885170B0DBE004A9460 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32879170B0DBE004A9460 /* Icon.png */; };
-		43C32886170B0DBE004A9460 /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 43C3287A170B0DBE004A9460 /* [email protected] */; };
-		43C32888170B0DBE004A9460 /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 43C3287C170B0DBE004A9460 /* iTunesArtwork */; };
-		43C32A06170B0F93004A9460 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C32A05170B0F93004A9460 /* main.m */; };
-		43C32A09170B10FF004A9460 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C32A08170B10FF004A9460 /* AppDelegate.m */; };
-		43D73BD61C7352D100F73E38 /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 43D73BD31C7352D100F73E38 /* TransformConstraint.c */; };
-		43D73BD71C7352D100F73E38 /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43D73BD41C7352D100F73E38 /* TransformConstraintData.c */; };
-		43D73BD81C7352D100F73E38 /* WeightedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43D73BD51C7352D100F73E38 /* WeightedMeshAttachment.c */; };
-		43F7010F1927FBC700CA4038 /* goblins-mesh.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */; };
-		43F701101927FBC700CA4038 /* goblins-mesh.json in Resources */ = {isa = PBXBuildFile; fileRef = 43F7010D1927FBC700CA4038 /* goblins-mesh.json */; };
-		43F701111927FBC700CA4038 /* goblins-mesh.png in Resources */ = {isa = PBXBuildFile; fileRef = 43F7010E1927FBC700CA4038 /* goblins-mesh.png */; };
-		43F7FF511927F91900CA4038 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF381927F91900CA4038 /* Animation.c */; };
-		43F7FF521927F91900CA4038 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF391927F91900CA4038 /* AnimationState.c */; };
-		43F7FF531927F91900CA4038 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3A1927F91900CA4038 /* AnimationStateData.c */; };
-		43F7FF541927F91900CA4038 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3B1927F91900CA4038 /* Atlas.c */; };
-		43F7FF551927F91900CA4038 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */; };
-		43F7FF561927F91900CA4038 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3D1927F91900CA4038 /* Attachment.c */; };
-		43F7FF571927F91900CA4038 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */; };
-		43F7FF581927F91900CA4038 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3F1927F91900CA4038 /* Bone.c */; };
-		43F7FF591927F91900CA4038 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF401927F91900CA4038 /* BoneData.c */; };
-		43F7FF5A1927F91900CA4038 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */; };
-		43F7FF5B1927F91900CA4038 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF421927F91900CA4038 /* Event.c */; };
-		43F7FF5C1927F91900CA4038 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF431927F91900CA4038 /* EventData.c */; };
-		43F7FF5D1927F91900CA4038 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF441927F91900CA4038 /* extension.c */; };
-		43F7FF5E1927F91900CA4038 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF451927F91900CA4038 /* Json.c */; };
-		43F7FF5F1927F91900CA4038 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF471927F91900CA4038 /* MeshAttachment.c */; };
-		43F7FF601927F91900CA4038 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF481927F91900CA4038 /* RegionAttachment.c */; };
-		43F7FF611927F91900CA4038 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF491927F91900CA4038 /* Skeleton.c */; };
-		43F7FF621927F91900CA4038 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */; };
-		43F7FF631927F91900CA4038 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4B1927F91900CA4038 /* SkeletonData.c */; };
-		43F7FF641927F91900CA4038 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4C1927F91900CA4038 /* SkeletonJson.c */; };
-		43F7FF651927F91900CA4038 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4D1927F91900CA4038 /* Skin.c */; };
-		43F7FF671927F91900CA4038 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4F1927F91900CA4038 /* Slot.c */; };
-		43F7FF681927F91900CA4038 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF501927F91900CA4038 /* SlotData.c */; };
-		43F7FF871927F94800CA4038 /* PolygonBatch.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF821927F94800CA4038 /* PolygonBatch.m */; };
-		43F7FF881927F94800CA4038 /* SkeletonAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF841927F94800CA4038 /* SkeletonAnimation.m */; };
-		43F7FF891927F94800CA4038 /* SkeletonRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF861927F94800CA4038 /* SkeletonRenderer.m */; };
-		43F7FF8E1927F96700CA4038 /* GoblinsExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF8B1927F96700CA4038 /* GoblinsExample.m */; };
-		43F7FF8F1927F96700CA4038 /* SpineboyExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF8D1927F96700CA4038 /* SpineboyExample.m */; };
-		9A5D2499170A94DA0030D4DD /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D2498170A94DA0030D4DD /* QuartzCore.framework */; };
-		9A5D249B170A94DA0030D4DD /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D249A170A94DA0030D4DD /* OpenGLES.framework */; };
-		9A5D249D170A94DA0030D4DD /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D249C170A94DA0030D4DD /* OpenAL.framework */; };
-		9A5D249F170A94DA0030D4DD /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D249E170A94DA0030D4DD /* AudioToolbox.framework */; };
-		9A5D24A1170A94DA0030D4DD /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D24A0170A94DA0030D4DD /* AVFoundation.framework */; };
-		9A5D24A3170A94DA0030D4DD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D24A2170A94DA0030D4DD /* UIKit.framework */; };
-		9A5D24A5170A94DA0030D4DD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D24A4170A94DA0030D4DD /* Foundation.framework */; };
-		9A5D24A7170A94DA0030D4DD /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D24A6170A94DA0030D4DD /* CoreGraphics.framework */; };
-		9A5D24A9170A94DA0030D4DD /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D24A8170A94DA0030D4DD /* GameKit.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
-		434D47DB192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = 509807081175041800EA7266;
-			remoteInfo = "build all libs";
-		};
-		434D47DD192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = 504225700FC0B39C00B992F7;
-			remoteInfo = box2d;
-		};
-		434D47DF192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = 50B2C4D10E100AEA00AE9530;
-			remoteInfo = Chipmunk;
-		};
-		434D47E1192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = 5018F24D0DFDEAC400C013A5;
-			remoteInfo = cocos2d;
-		};
-		434D47E3192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A0EFA7AC169CDF9C006D1B22;
-			remoteInfo = cocos2d_box2d;
-		};
-		434D47E5192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A0EFA886169CDFA4006D1B22;
-			remoteInfo = cocos2d_chipmunk;
-		};
-		434D47E7192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = 502C65EE0DFEF3DD00E4107D;
-			remoteInfo = "cocos2d-documentation";
-		};
-		434D47E9192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = 50CB2FCA1004C8B100B7A750;
-			remoteInfo = CocosDenshion;
-		};
-		434D47EB192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A02900ED15B5FA9E00D64F82;
-			remoteInfo = CocosBuilderReader;
-		};
-		434D47ED192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A031B73915D9BD0800E1986C;
-			remoteInfo = jsbindings;
-		};
-		434D47EF192A246B003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A04A1FEB13B826B300ABAFB7;
-			remoteInfo = kazmath;
-		};
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
-		4327E30019E9879C007E7FB7 /* IkConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraint.h; path = "../../spine-c/include/spine/IkConstraint.h"; sourceTree = "<group>"; };
-		4327E30119E9879C007E7FB7 /* IkConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraintData.h; path = "../../spine-c/include/spine/IkConstraintData.h"; sourceTree = "<group>"; };
-		4327E30219E9879C007E7FB7 /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../../spine-c/src/spine/IkConstraint.c"; sourceTree = "<group>"; };
-		4327E30319E9879C007E7FB7 /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../../spine-c/src/spine/IkConstraintData.c"; sourceTree = "<group>"; };
-		4327E30819E98977007E7FB7 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
-		434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "cocos2d-ios.xcodeproj"; path = "cocos2d/cocos2d-ios.xcodeproj"; sourceTree = SOURCE_ROOT; };
-		43C3282D170B0C19004A9460 /* spine-cocos2d-iphone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "spine-cocos2d-iphone.m"; path = "src/spine/spine-cocos2d-iphone.m"; sourceTree = "<group>"; };
-		43C3282E170B0C19004A9460 /* spine-cocos2d-iphone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "spine-cocos2d-iphone.h"; path = "src/spine/spine-cocos2d-iphone.h"; sourceTree = "<group>"; };
-		43C32868170B0DA6004A9460 /* spineboy.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = spineboy.json; path = Resources/spineboy.json; sourceTree = "<group>"; };
-		43C3286A170B0DA6004A9460 /* spineboy.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = spineboy.atlas; path = Resources/spineboy.atlas; sourceTree = "<group>"; };
-		43C3286B170B0DA6004A9460 /* spineboy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = spineboy.png; path = Resources/spineboy.png; sourceTree = "<group>"; };
-		43C32871170B0DBE004A9460 /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "[email protected]"; path = "Resources-ios/[email protected]"; sourceTree = "<group>"; };
-		43C32872170B0DBE004A9460 /* Default-Landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-Landscape~ipad.png"; path = "Resources-ios/Default-Landscape~ipad.png"; sourceTree = "<group>"; };
-		43C32873170B0DBE004A9460 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = "Resources-ios/Default.png"; sourceTree = "<group>"; };
-		43C32874170B0DBE004A9460 /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "[email protected]"; path = "Resources-ios/[email protected]"; sourceTree = "<group>"; };
-		43C32875170B0DBE004A9460 /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-72.png"; path = "Resources-ios/Icon-72.png"; sourceTree = "<group>"; };
-		43C32876170B0DBE004A9460 /* Icon-Small-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small-50.png"; path = "Resources-ios/Icon-Small-50.png"; sourceTree = "<group>"; };
-		43C32877170B0DBE004A9460 /* Icon-Small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small.png"; path = "Resources-ios/Icon-Small.png"; sourceTree = "<group>"; };
-		43C32878170B0DBE004A9460 /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "[email protected]"; path = "Resources-ios/[email protected]"; sourceTree = "<group>"; };
-		43C32879170B0DBE004A9460 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = "Resources-ios/Icon.png"; sourceTree = "<group>"; };
-		43C3287A170B0DBE004A9460 /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "[email protected]"; path = "Resources-ios/[email protected]"; sourceTree = "<group>"; };
-		43C3287B170B0DBE004A9460 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = "Resources-ios/Info.plist"; sourceTree = "<group>"; };
-		43C3287C170B0DBE004A9460 /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = file; name = iTunesArtwork; path = "Resources-ios/iTunesArtwork"; sourceTree = "<group>"; };
-		43C32889170B0E9F004A9460 /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Prefix.pch; path = "Resources-ios/Prefix.pch"; sourceTree = "<group>"; };
-		43C32A05170B0F93004A9460 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = "Resources-ios/main.m"; sourceTree = "<group>"; };
-		43C32A07170B10FF004A9460 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = "Resources-ios/AppDelegate.h"; sourceTree = "<group>"; };
-		43C32A08170B10FF004A9460 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = "Resources-ios/AppDelegate.m"; sourceTree = "<group>"; };
-		43D73BD31C7352D100F73E38 /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../../spine-c/src/spine/TransformConstraint.c"; sourceTree = "<group>"; };
-		43D73BD41C7352D100F73E38 /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../../spine-c/src/spine/TransformConstraintData.c"; sourceTree = "<group>"; };
-		43D73BD51C7352D100F73E38 /* WeightedMeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = WeightedMeshAttachment.c; path = "../../spine-c/src/spine/WeightedMeshAttachment.c"; sourceTree = "<group>"; };
-		43D73BD91C7352E200F73E38 /* TransformConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraint.h; path = "../../spine-c/include/spine/TransformConstraint.h"; sourceTree = "<group>"; };
-		43D73BDA1C7352E200F73E38 /* TransformConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraintData.h; path = "../../spine-c/include/spine/TransformConstraintData.h"; sourceTree = "<group>"; };
-		43D73BDB1C7352E200F73E38 /* WeightedMeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WeightedMeshAttachment.h; path = "../../spine-c/include/spine/WeightedMeshAttachment.h"; sourceTree = "<group>"; };
-		43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "goblins-mesh.atlas"; path = "Resources/goblins-mesh.atlas"; sourceTree = "<group>"; };
-		43F7010D1927FBC700CA4038 /* goblins-mesh.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "goblins-mesh.json"; path = "Resources/goblins-mesh.json"; sourceTree = "<group>"; };
-		43F7010E1927FBC700CA4038 /* goblins-mesh.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "goblins-mesh.png"; path = "Resources/goblins-mesh.png"; sourceTree = "<group>"; };
-		43F7FF381927F91900CA4038 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../../spine-c/src/spine/Animation.c"; sourceTree = "<group>"; };
-		43F7FF391927F91900CA4038 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../../spine-c/src/spine/AnimationState.c"; sourceTree = "<group>"; };
-		43F7FF3A1927F91900CA4038 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../../spine-c/src/spine/AnimationStateData.c"; sourceTree = "<group>"; };
-		43F7FF3B1927F91900CA4038 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../../spine-c/src/spine/Atlas.c"; sourceTree = "<group>"; };
-		43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = "<group>"; };
-		43F7FF3D1927F91900CA4038 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../../spine-c/src/spine/Attachment.c"; sourceTree = "<group>"; };
-		43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../../spine-c/src/spine/AttachmentLoader.c"; sourceTree = "<group>"; };
-		43F7FF3F1927F91900CA4038 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../../spine-c/src/spine/Bone.c"; sourceTree = "<group>"; };
-		43F7FF401927F91900CA4038 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../../spine-c/src/spine/BoneData.c"; sourceTree = "<group>"; };
-		43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = "<group>"; };
-		43F7FF421927F91900CA4038 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../../spine-c/src/spine/Event.c"; sourceTree = "<group>"; };
-		43F7FF431927F91900CA4038 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../../spine-c/src/spine/EventData.c"; sourceTree = "<group>"; };
-		43F7FF441927F91900CA4038 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../../spine-c/src/spine/extension.c"; sourceTree = "<group>"; };
-		43F7FF451927F91900CA4038 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../../spine-c/src/spine/Json.c"; sourceTree = "<group>"; };
-		43F7FF461927F91900CA4038 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../../spine-c/src/spine/Json.h"; sourceTree = "<group>"; };
-		43F7FF471927F91900CA4038 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../../spine-c/src/spine/MeshAttachment.c"; sourceTree = "<group>"; };
-		43F7FF481927F91900CA4038 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../../spine-c/src/spine/RegionAttachment.c"; sourceTree = "<group>"; };
-		43F7FF491927F91900CA4038 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../../spine-c/src/spine/Skeleton.c"; sourceTree = "<group>"; };
-		43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../../spine-c/src/spine/SkeletonBounds.c"; sourceTree = "<group>"; };
-		43F7FF4B1927F91900CA4038 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../../spine-c/src/spine/SkeletonData.c"; sourceTree = "<group>"; };
-		43F7FF4C1927F91900CA4038 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../../spine-c/src/spine/SkeletonJson.c"; sourceTree = "<group>"; };
-		43F7FF4D1927F91900CA4038 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../../spine-c/src/spine/Skin.c"; sourceTree = "<group>"; };
-		43F7FF4F1927F91900CA4038 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../../spine-c/src/spine/Slot.c"; sourceTree = "<group>"; };
-		43F7FF501927F91900CA4038 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../../spine-c/src/spine/SlotData.c"; sourceTree = "<group>"; };
-		43F7FF691927F92500CA4038 /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animation.h; path = "../../spine-c/include/spine/Animation.h"; sourceTree = "<group>"; };
-		43F7FF6A1927F92500CA4038 /* AnimationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationState.h; path = "../../spine-c/include/spine/AnimationState.h"; sourceTree = "<group>"; };
-		43F7FF6B1927F92500CA4038 /* AnimationStateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationStateData.h; path = "../../spine-c/include/spine/AnimationStateData.h"; sourceTree = "<group>"; };
-		43F7FF6C1927F92500CA4038 /* Atlas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Atlas.h; path = "../../spine-c/include/spine/Atlas.h"; sourceTree = "<group>"; };
-		43F7FF6D1927F92500CA4038 /* AtlasAttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AtlasAttachmentLoader.h; path = "../../spine-c/include/spine/AtlasAttachmentLoader.h"; sourceTree = "<group>"; };
-		43F7FF6E1927F92500CA4038 /* Attachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Attachment.h; path = "../../spine-c/include/spine/Attachment.h"; sourceTree = "<group>"; };
-		43F7FF6F1927F92500CA4038 /* AttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttachmentLoader.h; path = "../../spine-c/include/spine/AttachmentLoader.h"; sourceTree = "<group>"; };
-		43F7FF701927F92500CA4038 /* Bone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bone.h; path = "../../spine-c/include/spine/Bone.h"; sourceTree = "<group>"; };
-		43F7FF711927F92500CA4038 /* BoneData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoneData.h; path = "../../spine-c/include/spine/BoneData.h"; sourceTree = "<group>"; };
-		43F7FF721927F92500CA4038 /* BoundingBoxAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoundingBoxAttachment.h; path = "../../spine-c/include/spine/BoundingBoxAttachment.h"; sourceTree = "<group>"; };
-		43F7FF731927F92500CA4038 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Event.h; path = "../../spine-c/include/spine/Event.h"; sourceTree = "<group>"; };
-		43F7FF741927F92500CA4038 /* EventData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EventData.h; path = "../../spine-c/include/spine/EventData.h"; sourceTree = "<group>"; };
-		43F7FF751927F92500CA4038 /* extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = extension.h; path = "../../spine-c/include/spine/extension.h"; sourceTree = "<group>"; };
-		43F7FF761927F92500CA4038 /* MeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeshAttachment.h; path = "../../spine-c/include/spine/MeshAttachment.h"; sourceTree = "<group>"; };
-		43F7FF771927F92500CA4038 /* RegionAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegionAttachment.h; path = "../../spine-c/include/spine/RegionAttachment.h"; sourceTree = "<group>"; };
-		43F7FF781927F92500CA4038 /* Skeleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skeleton.h; path = "../../spine-c/include/spine/Skeleton.h"; sourceTree = "<group>"; };
-		43F7FF791927F92500CA4038 /* SkeletonBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonBounds.h; path = "../../spine-c/include/spine/SkeletonBounds.h"; sourceTree = "<group>"; };
-		43F7FF7A1927F92500CA4038 /* SkeletonData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonData.h; path = "../../spine-c/include/spine/SkeletonData.h"; sourceTree = "<group>"; };
-		43F7FF7B1927F92500CA4038 /* SkeletonJson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonJson.h; path = "../../spine-c/include/spine/SkeletonJson.h"; sourceTree = "<group>"; };
-		43F7FF7C1927F92500CA4038 /* Skin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skin.h; path = "../../spine-c/include/spine/Skin.h"; sourceTree = "<group>"; };
-		43F7FF7E1927F92500CA4038 /* Slot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Slot.h; path = "../../spine-c/include/spine/Slot.h"; sourceTree = "<group>"; };
-		43F7FF7F1927F92500CA4038 /* SlotData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SlotData.h; path = "../../spine-c/include/spine/SlotData.h"; sourceTree = "<group>"; };
-		43F7FF801927F92500CA4038 /* spine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spine.h; path = "../../spine-c/include/spine/spine.h"; sourceTree = "<group>"; };
-		43F7FF811927F94800CA4038 /* PolygonBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolygonBatch.h; path = src/spine/PolygonBatch.h; sourceTree = "<group>"; };
-		43F7FF821927F94800CA4038 /* PolygonBatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PolygonBatch.m; path = src/spine/PolygonBatch.m; sourceTree = "<group>"; };
-		43F7FF831927F94800CA4038 /* SkeletonAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonAnimation.h; path = src/spine/SkeletonAnimation.h; sourceTree = "<group>"; };
-		43F7FF841927F94800CA4038 /* SkeletonAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SkeletonAnimation.m; path = src/spine/SkeletonAnimation.m; sourceTree = "<group>"; };
-		43F7FF851927F94800CA4038 /* SkeletonRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonRenderer.h; path = src/spine/SkeletonRenderer.h; sourceTree = "<group>"; };
-		43F7FF861927F94800CA4038 /* SkeletonRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SkeletonRenderer.m; path = src/spine/SkeletonRenderer.m; sourceTree = "<group>"; };
-		43F7FF8A1927F96700CA4038 /* GoblinsExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GoblinsExample.h; path = example/GoblinsExample.h; sourceTree = "<group>"; };
-		43F7FF8B1927F96700CA4038 /* GoblinsExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GoblinsExample.m; path = example/GoblinsExample.m; sourceTree = "<group>"; };
-		43F7FF8C1927F96700CA4038 /* SpineboyExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SpineboyExample.h; path = example/SpineboyExample.h; sourceTree = "<group>"; };
-		43F7FF8D1927F96700CA4038 /* SpineboyExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SpineboyExample.m; path = example/SpineboyExample.m; sourceTree = "<group>"; };
-		652107951895250000B1FF07 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
-		9A5D2495170A94DA0030D4DD /* SpineExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SpineExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		9A5D2498170A94DA0030D4DD /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
-		9A5D249A170A94DA0030D4DD /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
-		9A5D249C170A94DA0030D4DD /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
-		9A5D249E170A94DA0030D4DD /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
-		9A5D24A0170A94DA0030D4DD /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
-		9A5D24A2170A94DA0030D4DD /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
-		9A5D24A4170A94DA0030D4DD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
-		9A5D24A6170A94DA0030D4DD /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
-		9A5D24A8170A94DA0030D4DD /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		9A5D2492170A94DA0030D4DD /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				4327E30A19E989A3007E7FB7 /* libcocos2d_chipmunk.a in Frameworks */,
-				4327E30B19E98A32007E7FB7 /* libChipmunk.a in Frameworks */,
-				4327E30919E98977007E7FB7 /* GLKit.framework in Frameworks */,
-				4327E30619E98913007E7FB7 /* CoreText.framework in Frameworks */,
-				9A5D2499170A94DA0030D4DD /* QuartzCore.framework in Frameworks */,
-				9A5D249B170A94DA0030D4DD /* OpenGLES.framework in Frameworks */,
-				9A5D249D170A94DA0030D4DD /* OpenAL.framework in Frameworks */,
-				9A5D249F170A94DA0030D4DD /* AudioToolbox.framework in Frameworks */,
-				9A5D24A1170A94DA0030D4DD /* AVFoundation.framework in Frameworks */,
-				9A5D24A3170A94DA0030D4DD /* UIKit.framework in Frameworks */,
-				9A5D24A5170A94DA0030D4DD /* Foundation.framework in Frameworks */,
-				9A5D24A7170A94DA0030D4DD /* CoreGraphics.framework in Frameworks */,
-				9A5D24A9170A94DA0030D4DD /* GameKit.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		434D47CB192A246A003127B5 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				434D47DC192A246B003127B5 /* libbuild all libs.a */,
-				434D47DE192A246B003127B5 /* libbox2d.a */,
-				434D47E0192A246B003127B5 /* libChipmunk.a */,
-				434D47E2192A246B003127B5 /* libcocos2d.a */,
-				434D47E4192A246B003127B5 /* libcocos2d_box2d.a */,
-				434D47E6192A246B003127B5 /* libcocos2d_chipmunk.a */,
-				434D47E8192A246B003127B5 /* libcocos2d-documentation.a */,
-				434D47EA192A246B003127B5 /* libCocosDenshion.a */,
-				434D47EC192A246B003127B5 /* libCocosBuilderReader.a */,
-				434D47EE192A246B003127B5 /* libjsbindings.a */,
-				434D47F0192A246B003127B5 /* libkazmath.a */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		43C32821170B0BBC004A9460 /* Classes */ = {
-			isa = PBXGroup;
-			children = (
-				43C32822170B0BC2004A9460 /* spine-c */,
-				43C32823170B0BC7004A9460 /* spine-cocos2d-iphone */,
-				43F7FF8C1927F96700CA4038 /* SpineboyExample.h */,
-				43F7FF8D1927F96700CA4038 /* SpineboyExample.m */,
-				43F7FF8A1927F96700CA4038 /* GoblinsExample.h */,
-				43F7FF8B1927F96700CA4038 /* GoblinsExample.m */,
-				43C32A07170B10FF004A9460 /* AppDelegate.h */,
-				43C32A08170B10FF004A9460 /* AppDelegate.m */,
-				43C32A05170B0F93004A9460 /* main.m */,
-				43C32889170B0E9F004A9460 /* Prefix.pch */,
-			);
-			name = Classes;
-			sourceTree = "<group>";
-		};
-		43C32822170B0BC2004A9460 /* spine-c */ = {
-			isa = PBXGroup;
-			children = (
-				43F7FF381927F91900CA4038 /* Animation.c */,
-				43F7FF691927F92500CA4038 /* Animation.h */,
-				43F7FF391927F91900CA4038 /* AnimationState.c */,
-				43F7FF6A1927F92500CA4038 /* AnimationState.h */,
-				43F7FF3A1927F91900CA4038 /* AnimationStateData.c */,
-				43F7FF6B1927F92500CA4038 /* AnimationStateData.h */,
-				43F7FF3B1927F91900CA4038 /* Atlas.c */,
-				43F7FF6C1927F92500CA4038 /* Atlas.h */,
-				43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */,
-				43F7FF6D1927F92500CA4038 /* AtlasAttachmentLoader.h */,
-				43F7FF3D1927F91900CA4038 /* Attachment.c */,
-				43F7FF6E1927F92500CA4038 /* Attachment.h */,
-				43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */,
-				43F7FF6F1927F92500CA4038 /* AttachmentLoader.h */,
-				43F7FF3F1927F91900CA4038 /* Bone.c */,
-				43F7FF701927F92500CA4038 /* Bone.h */,
-				43F7FF401927F91900CA4038 /* BoneData.c */,
-				43F7FF711927F92500CA4038 /* BoneData.h */,
-				43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */,
-				43F7FF721927F92500CA4038 /* BoundingBoxAttachment.h */,
-				43F7FF421927F91900CA4038 /* Event.c */,
-				43F7FF731927F92500CA4038 /* Event.h */,
-				43F7FF431927F91900CA4038 /* EventData.c */,
-				43F7FF741927F92500CA4038 /* EventData.h */,
-				43F7FF441927F91900CA4038 /* extension.c */,
-				43F7FF751927F92500CA4038 /* extension.h */,
-				4327E30219E9879C007E7FB7 /* IkConstraint.c */,
-				4327E30019E9879C007E7FB7 /* IkConstraint.h */,
-				4327E30319E9879C007E7FB7 /* IkConstraintData.c */,
-				4327E30119E9879C007E7FB7 /* IkConstraintData.h */,
-				43F7FF451927F91900CA4038 /* Json.c */,
-				43F7FF461927F91900CA4038 /* Json.h */,
-				43F7FF471927F91900CA4038 /* MeshAttachment.c */,
-				43F7FF761927F92500CA4038 /* MeshAttachment.h */,
-				43F7FF481927F91900CA4038 /* RegionAttachment.c */,
-				43F7FF771927F92500CA4038 /* RegionAttachment.h */,
-				43F7FF491927F91900CA4038 /* Skeleton.c */,
-				43F7FF781927F92500CA4038 /* Skeleton.h */,
-				43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */,
-				43F7FF791927F92500CA4038 /* SkeletonBounds.h */,
-				43F7FF4B1927F91900CA4038 /* SkeletonData.c */,
-				43F7FF7A1927F92500CA4038 /* SkeletonData.h */,
-				43F7FF4C1927F91900CA4038 /* SkeletonJson.c */,
-				43F7FF7B1927F92500CA4038 /* SkeletonJson.h */,
-				43F7FF4D1927F91900CA4038 /* Skin.c */,
-				43F7FF7C1927F92500CA4038 /* Skin.h */,
-				43F7FF4F1927F91900CA4038 /* Slot.c */,
-				43F7FF7E1927F92500CA4038 /* Slot.h */,
-				43F7FF501927F91900CA4038 /* SlotData.c */,
-				43F7FF7F1927F92500CA4038 /* SlotData.h */,
-				43F7FF801927F92500CA4038 /* spine.h */,
-				43D73BD31C7352D100F73E38 /* TransformConstraint.c */,
-				43D73BD91C7352E200F73E38 /* TransformConstraint.h */,
-				43D73BD41C7352D100F73E38 /* TransformConstraintData.c */,
-				43D73BDA1C7352E200F73E38 /* TransformConstraintData.h */,
-				43D73BD51C7352D100F73E38 /* WeightedMeshAttachment.c */,
-				43D73BDB1C7352E200F73E38 /* WeightedMeshAttachment.h */,
-			);
-			name = "spine-c";
-			sourceTree = "<group>";
-		};
-		43C32823170B0BC7004A9460 /* spine-cocos2d-iphone */ = {
-			isa = PBXGroup;
-			children = (
-				43F7FF811927F94800CA4038 /* PolygonBatch.h */,
-				43F7FF821927F94800CA4038 /* PolygonBatch.m */,
-				43F7FF831927F94800CA4038 /* SkeletonAnimation.h */,
-				43F7FF841927F94800CA4038 /* SkeletonAnimation.m */,
-				43F7FF851927F94800CA4038 /* SkeletonRenderer.h */,
-				43F7FF861927F94800CA4038 /* SkeletonRenderer.m */,
-				43C3282E170B0C19004A9460 /* spine-cocos2d-iphone.h */,
-				43C3282D170B0C19004A9460 /* spine-cocos2d-iphone.m */,
-			);
-			name = "spine-cocos2d-iphone";
-			sourceTree = "<group>";
-		};
-		43C32867170B0C7F004A9460 /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */,
-				43F7010D1927FBC700CA4038 /* goblins-mesh.json */,
-				43F7010E1927FBC700CA4038 /* goblins-mesh.png */,
-				43C32868170B0DA6004A9460 /* spineboy.json */,
-				43C3286A170B0DA6004A9460 /* spineboy.atlas */,
-				43C3286B170B0DA6004A9460 /* spineboy.png */,
-			);
-			name = Resources;
-			sourceTree = "<group>";
-		};
-		43C32870170B0DAD004A9460 /* Resources-ios */ = {
-			isa = PBXGroup;
-			children = (
-				43C32871170B0DBE004A9460 /* [email protected] */,
-				43C32872170B0DBE004A9460 /* Default-Landscape~ipad.png */,
-				43C32873170B0DBE004A9460 /* Default.png */,
-				43C32874170B0DBE004A9460 /* [email protected] */,
-				43C32875170B0DBE004A9460 /* Icon-72.png */,
-				43C32876170B0DBE004A9460 /* Icon-Small-50.png */,
-				43C32877170B0DBE004A9460 /* Icon-Small.png */,
-				43C32878170B0DBE004A9460 /* [email protected] */,
-				43C32879170B0DBE004A9460 /* Icon.png */,
-				43C3287A170B0DBE004A9460 /* [email protected] */,
-				43C3287B170B0DBE004A9460 /* Info.plist */,
-				43C3287C170B0DBE004A9460 /* iTunesArtwork */,
-			);
-			name = "Resources-ios";
-			sourceTree = "<group>";
-		};
-		9A5D248C170A94DA0030D4DD = {
-			isa = PBXGroup;
-			children = (
-				43C32821170B0BBC004A9460 /* Classes */,
-				43C32867170B0C7F004A9460 /* Resources */,
-				43C32870170B0DAD004A9460 /* Resources-ios */,
-				9A5D24C3170A94DA0030D4DD /* cocos2d */,
-				9A5D2497170A94DA0030D4DD /* Frameworks */,
-				9A5D2496170A94DA0030D4DD /* Products */,
-			);
-			sourceTree = "<group>";
-		};
-		9A5D2496170A94DA0030D4DD /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				9A5D2495170A94DA0030D4DD /* SpineExample.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		9A5D2497170A94DA0030D4DD /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				4327E30819E98977007E7FB7 /* GLKit.framework */,
-				652107951895250000B1FF07 /* CoreText.framework */,
-				9A5D2498170A94DA0030D4DD /* QuartzCore.framework */,
-				9A5D249A170A94DA0030D4DD /* OpenGLES.framework */,
-				9A5D249C170A94DA0030D4DD /* OpenAL.framework */,
-				9A5D249E170A94DA0030D4DD /* AudioToolbox.framework */,
-				9A5D24A0170A94DA0030D4DD /* AVFoundation.framework */,
-				9A5D24A2170A94DA0030D4DD /* UIKit.framework */,
-				9A5D24A4170A94DA0030D4DD /* Foundation.framework */,
-				9A5D24A6170A94DA0030D4DD /* CoreGraphics.framework */,
-				9A5D24A8170A94DA0030D4DD /* GameKit.framework */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-		9A5D24C3170A94DA0030D4DD /* cocos2d */ = {
-			isa = PBXGroup;
-			children = (
-				434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */,
-			);
-			name = cocos2d;
-			path = Spine;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		9A5D2494170A94DA0030D4DD /* SpineExample */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 9A5D2643170A94DC0030D4DD /* Build configuration list for PBXNativeTarget "SpineExample" */;
-			buildPhases = (
-				9A5D2491170A94DA0030D4DD /* Sources */,
-				9A5D2492170A94DA0030D4DD /* Frameworks */,
-				9A5D2493170A94DA0030D4DD /* Resources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = SpineExample;
-			productName = "spine-cocos2d-iphone-ios";
-			productReference = 9A5D2495170A94DA0030D4DD /* SpineExample.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		9A5D248D170A94DA0030D4DD /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				LastUpgradeCheck = 0510;
-				ORGANIZATIONNAME = "Craig Hinrichs";
-			};
-			buildConfigurationList = 9A5D2490170A94DA0030D4DD /* Build configuration list for PBXProject "spine-cocos2d-iphone-ios" */;
-			compatibilityVersion = "Xcode 3.2";
-			developmentRegion = English;
-			hasScannedForEncodings = 0;
-			knownRegions = (
-				en,
-			);
-			mainGroup = 9A5D248C170A94DA0030D4DD;
-			productRefGroup = 9A5D2496170A94DA0030D4DD /* Products */;
-			projectDirPath = "";
-			projectReferences = (
-				{
-					ProductGroup = 434D47CB192A246A003127B5 /* Products */;
-					ProjectRef = 434D47CA192A246A003127B5 /* cocos2d-ios.xcodeproj */;
-				},
-			);
-			projectRoot = "";
-			targets = (
-				9A5D2494170A94DA0030D4DD /* SpineExample */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXReferenceProxy section */
-		434D47DC192A246B003127B5 /* libbuild all libs.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = "libbuild all libs.a";
-			remoteRef = 434D47DB192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D47DE192A246B003127B5 /* libbox2d.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libbox2d.a;
-			remoteRef = 434D47DD192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D47E0192A246B003127B5 /* libChipmunk.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libChipmunk.a;
-			remoteRef = 434D47DF192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D47E2192A246B003127B5 /* libcocos2d.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libcocos2d.a;
-			remoteRef = 434D47E1192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D47E4192A246B003127B5 /* libcocos2d_box2d.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libcocos2d_box2d.a;
-			remoteRef = 434D47E3192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D47E6192A246B003127B5 /* libcocos2d_chipmunk.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libcocos2d_chipmunk.a;
-			remoteRef = 434D47E5192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D47E8192A246B003127B5 /* libcocos2d-documentation.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = "libcocos2d-documentation.a";
-			remoteRef = 434D47E7192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D47EA192A246B003127B5 /* libCocosDenshion.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libCocosDenshion.a;
-			remoteRef = 434D47E9192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D47EC192A246B003127B5 /* libCocosBuilderReader.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libCocosBuilderReader.a;
-			remoteRef = 434D47EB192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D47EE192A246B003127B5 /* libjsbindings.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libjsbindings.a;
-			remoteRef = 434D47ED192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D47F0192A246B003127B5 /* libkazmath.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libkazmath.a;
-			remoteRef = 434D47EF192A246B003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-/* End PBXReferenceProxy section */
-
-/* Begin PBXResourcesBuildPhase section */
-		9A5D2493170A94DA0030D4DD /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				43C3286C170B0DA6004A9460 /* spineboy.json in Resources */,
-				43C3286E170B0DA6004A9460 /* spineboy.atlas in Resources */,
-				43C3286F170B0DA6004A9460 /* spineboy.png in Resources */,
-				43C3287D170B0DBE004A9460 /* [email protected] in Resources */,
-				43C3287E170B0DBE004A9460 /* Default-Landscape~ipad.png in Resources */,
-				43C3287F170B0DBE004A9460 /* Default.png in Resources */,
-				43C32880170B0DBE004A9460 /* [email protected] in Resources */,
-				43C32881170B0DBE004A9460 /* Icon-72.png in Resources */,
-				43C32882170B0DBE004A9460 /* Icon-Small-50.png in Resources */,
-				43C32883170B0DBE004A9460 /* Icon-Small.png in Resources */,
-				43C32884170B0DBE004A9460 /* [email protected] in Resources */,
-				43C32885170B0DBE004A9460 /* Icon.png in Resources */,
-				43C32886170B0DBE004A9460 /* [email protected] in Resources */,
-				43C32888170B0DBE004A9460 /* iTunesArtwork in Resources */,
-				43F7010F1927FBC700CA4038 /* goblins-mesh.atlas in Resources */,
-				43F701101927FBC700CA4038 /* goblins-mesh.json in Resources */,
-				43F701111927FBC700CA4038 /* goblins-mesh.png in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		9A5D2491170A94DA0030D4DD /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				43C3282F170B0C19004A9460 /* spine-cocos2d-iphone.m in Sources */,
-				43C32A06170B0F93004A9460 /* main.m in Sources */,
-				43C32A09170B10FF004A9460 /* AppDelegate.m in Sources */,
-				43F7FF511927F91900CA4038 /* Animation.c in Sources */,
-				43F7FF521927F91900CA4038 /* AnimationState.c in Sources */,
-				43F7FF531927F91900CA4038 /* AnimationStateData.c in Sources */,
-				43F7FF541927F91900CA4038 /* Atlas.c in Sources */,
-				43D73BD61C7352D100F73E38 /* TransformConstraint.c in Sources */,
-				43F7FF551927F91900CA4038 /* AtlasAttachmentLoader.c in Sources */,
-				43F7FF561927F91900CA4038 /* Attachment.c in Sources */,
-				43F7FF571927F91900CA4038 /* AttachmentLoader.c in Sources */,
-				43F7FF581927F91900CA4038 /* Bone.c in Sources */,
-				43D73BD71C7352D100F73E38 /* TransformConstraintData.c in Sources */,
-				43F7FF591927F91900CA4038 /* BoneData.c in Sources */,
-				43F7FF5A1927F91900CA4038 /* BoundingBoxAttachment.c in Sources */,
-				43F7FF5B1927F91900CA4038 /* Event.c in Sources */,
-				43F7FF5C1927F91900CA4038 /* EventData.c in Sources */,
-				43F7FF5D1927F91900CA4038 /* extension.c in Sources */,
-				4327E30419E9879C007E7FB7 /* IkConstraint.c in Sources */,
-				43F7FF5E1927F91900CA4038 /* Json.c in Sources */,
-				43F7FF5F1927F91900CA4038 /* MeshAttachment.c in Sources */,
-				43F7FF601927F91900CA4038 /* RegionAttachment.c in Sources */,
-				4327E30519E9879C007E7FB7 /* IkConstraintData.c in Sources */,
-				43F7FF611927F91900CA4038 /* Skeleton.c in Sources */,
-				43D73BD81C7352D100F73E38 /* WeightedMeshAttachment.c in Sources */,
-				43F7FF621927F91900CA4038 /* SkeletonBounds.c in Sources */,
-				43F7FF631927F91900CA4038 /* SkeletonData.c in Sources */,
-				43F7FF641927F91900CA4038 /* SkeletonJson.c in Sources */,
-				43F7FF651927F91900CA4038 /* Skin.c in Sources */,
-				43F7FF671927F91900CA4038 /* Slot.c in Sources */,
-				43F7FF681927F91900CA4038 /* SlotData.c in Sources */,
-				43F7FF871927F94800CA4038 /* PolygonBatch.m in Sources */,
-				43F7FF881927F94800CA4038 /* SkeletonAnimation.m in Sources */,
-				43F7FF891927F94800CA4038 /* SkeletonRenderer.m in Sources */,
-				43F7FF8E1927F96700CA4038 /* GoblinsExample.m in Sources */,
-				43F7FF8F1927F96700CA4038 /* SpineboyExample.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
-		9A5D2641170A94DC0030D4DD /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					DEBUG,
-					"COCOS2D_DEBUG=1",
-				);
-				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 4.0;
-				ONLY_ACTIVE_ARCH = YES;
-				SDKROOT = iphoneos;
-				TARGETED_DEVICE_FAMILY = "1,2";
-				VALID_ARCHS = "$(ARCHS_STANDARD_32_BIT)";
-			};
-			name = Debug;
-		};
-		9A5D2642170A94DC0030D4DD /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
-				CLANG_WARN_BOOL_CONVERSION = YES;
-				CLANG_WARN_CONSTANT_CONVERSION = YES;
-				CLANG_WARN_EMPTY_BODY = YES;
-				CLANG_WARN_ENUM_CONVERSION = YES;
-				CLANG_WARN_INT_CONVERSION = YES;
-				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					NDEBUG,
-					"NS_BLOCK_ASSERTIONS=1",
-				);
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_UNDECLARED_SELECTOR = YES;
-				GCC_WARN_UNINITIALIZED_AUTOS = YES;
-				GCC_WARN_UNUSED_FUNCTION = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				IPHONEOS_DEPLOYMENT_TARGET = 4.0;
-				SDKROOT = iphoneos;
-				TARGETED_DEVICE_FAMILY = "1,2";
-				VALID_ARCHS = "$(ARCHS_STANDARD_32_BIT)";
-			};
-			name = Release;
-		};
-		9A5D2644170A94DC0030D4DD /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = YES;
-				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "Resources-ios/Prefix.pch";
-				HEADER_SEARCH_PATHS = (
-					"\"cocos2d/external/kazmath/include\"",
-					"\"src\"",
-					"\"../../spine-c/include\"",
-					"\"cocos2d/cocos2d\"/**",
-				);
-				INFOPLIST_FILE = "Resources-ios/Info.plist";
-				ONLY_ACTIVE_ARCH = YES;
-				OTHER_LDFLAGS = (
-					"-lz",
-					"-lsqlite3",
-					"-ObjC",
-				);
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				VALID_ARCHS = "$(ARCHS_STANDARD_32_BIT)";
-				WRAPPER_EXTENSION = app;
-			};
-			name = Debug;
-		};
-		9A5D2645170A94DC0030D4DD /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = YES;
-				ARCHS = "$(ARCHS_STANDARD_32_BIT)";
-				COPY_PHASE_STRIP = YES;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "Resources-ios/Prefix.pch";
-				HEADER_SEARCH_PATHS = (
-					"\"cocos2d/external/kazmath/include\"",
-					"\"src\"",
-					"\"../../spine-c/include\"",
-					"\"cocos2d/cocos2d\"/**",
-				);
-				INFOPLIST_FILE = "Resources-ios/Info.plist";
-				ONLY_ACTIVE_ARCH = YES;
-				OTHER_LDFLAGS = (
-					"-lz",
-					"-lsqlite3",
-					"-ObjC",
-				);
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				VALIDATE_PRODUCT = YES;
-				VALID_ARCHS = "$(ARCHS_STANDARD_32_BIT)";
-				WRAPPER_EXTENSION = app;
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		9A5D2490170A94DA0030D4DD /* Build configuration list for PBXProject "spine-cocos2d-iphone-ios" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				9A5D2641170A94DC0030D4DD /* Debug */,
-				9A5D2642170A94DC0030D4DD /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		9A5D2643170A94DC0030D4DD /* Build configuration list for PBXNativeTarget "SpineExample" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				9A5D2644170A94DC0030D4DD /* Debug */,
-				9A5D2645170A94DC0030D4DD /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 9A5D248D170A94DA0030D4DD /* Project object */;
-}

+ 0 - 759
spine-cocos2d-iphone/2/spine-cocos2d-iphone-mac.xcodeproj/project.pbxproj

@@ -1,759 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 46;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		4319B51816FF9B2600C1D7A9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4319B51716FF9B2600C1D7A9 /* QuartzCore.framework */; };
-		4319B51A16FF9B2600C1D7A9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4319B51916FF9B2600C1D7A9 /* OpenGL.framework */; };
-		4319B51C16FF9B2600C1D7A9 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4319B51B16FF9B2600C1D7A9 /* OpenAL.framework */; };
-		4319B51E16FF9B2600C1D7A9 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4319B51D16FF9B2600C1D7A9 /* AudioToolbox.framework */; };
-		4319B52016FF9B2600C1D7A9 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4319B51F16FF9B2600C1D7A9 /* AppKit.framework */; };
-		4319B52216FF9B2600C1D7A9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4319B52116FF9B2600C1D7A9 /* Foundation.framework */; };
-		431FF7CA1C735CA100D52DF2 /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7C91C735CA100D52DF2 /* IkConstraint.c */; };
-		431FF7DA1C735CFE00D52DF2 /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7D61C735CFE00D52DF2 /* IkConstraintData.c */; };
-		431FF7DB1C735CFE00D52DF2 /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7D71C735CFE00D52DF2 /* TransformConstraint.c */; };
-		431FF7DC1C735CFE00D52DF2 /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7D81C735CFE00D52DF2 /* TransformConstraintData.c */; };
-		431FF7DD1C735CFE00D52DF2 /* WeightedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7D91C735CFE00D52DF2 /* WeightedMeshAttachment.c */; };
-		431FF7E51C735D4300D52DF2 /* goblins-mesh.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 431FF7E21C735D4300D52DF2 /* goblins-mesh.atlas */; };
-		431FF7E61C735D4300D52DF2 /* goblins-mesh.json in Resources */ = {isa = PBXBuildFile; fileRef = 431FF7E31C735D4300D52DF2 /* goblins-mesh.json */; };
-		431FF7E71C735D4300D52DF2 /* goblins-mesh.png in Resources */ = {isa = PBXBuildFile; fileRef = 431FF7E41C735D4300D52DF2 /* goblins-mesh.png */; };
-		434D4819192A2B49003127B5 /* libcocos2d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 434D4808192A2B35003127B5 /* libcocos2d.a */; };
-		43BFBE0F170A778A00ECBACB /* spine-cocos2d-iphone.m in Sources */ = {isa = PBXBuildFile; fileRef = 43BFBE0D170A778A00ECBACB /* spine-cocos2d-iphone.m */; };
-		43C32A1B170B1295004A9460 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C32A11170B1295004A9460 /* AppDelegate.m */; };
-		43C32A1C170B1295004A9460 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A13170B1295004A9460 /* InfoPlist.strings */; };
-		43C32A1D170B1295004A9460 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A15170B1295004A9460 /* MainMenu.xib */; };
-		43C32A1E170B1295004A9460 /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 43C32A17170B1295004A9460 /* icon.icns */; };
-		43C32A20170B1295004A9460 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C32A19170B1295004A9460 /* main.m */; };
-		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 */; };
-		43F7FD711927C31700CA4038 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD581927C31700CA4038 /* Animation.c */; };
-		43F7FD721927C31700CA4038 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD591927C31700CA4038 /* AnimationState.c */; };
-		43F7FD731927C31700CA4038 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD5A1927C31700CA4038 /* AnimationStateData.c */; };
-		43F7FD741927C31700CA4038 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD5B1927C31700CA4038 /* Atlas.c */; };
-		43F7FD751927C31700CA4038 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD5C1927C31700CA4038 /* AtlasAttachmentLoader.c */; };
-		43F7FD761927C31700CA4038 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD5D1927C31700CA4038 /* Attachment.c */; };
-		43F7FD771927C31700CA4038 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD5E1927C31700CA4038 /* AttachmentLoader.c */; };
-		43F7FD781927C31700CA4038 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD5F1927C31700CA4038 /* Bone.c */; };
-		43F7FD791927C31700CA4038 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD601927C31700CA4038 /* BoneData.c */; };
-		43F7FD7A1927C31700CA4038 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD611927C31700CA4038 /* BoundingBoxAttachment.c */; };
-		43F7FD7B1927C31700CA4038 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD621927C31700CA4038 /* Event.c */; };
-		43F7FD7C1927C31700CA4038 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD631927C31700CA4038 /* EventData.c */; };
-		43F7FD7D1927C31700CA4038 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD641927C31700CA4038 /* extension.c */; };
-		43F7FD7E1927C31700CA4038 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD651927C31700CA4038 /* Json.c */; };
-		43F7FD7F1927C31700CA4038 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD671927C31700CA4038 /* MeshAttachment.c */; };
-		43F7FD801927C31700CA4038 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD681927C31700CA4038 /* RegionAttachment.c */; };
-		43F7FD811927C31700CA4038 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD691927C31700CA4038 /* Skeleton.c */; };
-		43F7FD821927C31700CA4038 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD6A1927C31700CA4038 /* SkeletonBounds.c */; };
-		43F7FD831927C31700CA4038 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD6B1927C31700CA4038 /* SkeletonData.c */; };
-		43F7FD841927C31700CA4038 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD6C1927C31700CA4038 /* SkeletonJson.c */; };
-		43F7FD851927C31700CA4038 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD6D1927C31700CA4038 /* Skin.c */; };
-		43F7FD871927C31700CA4038 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD6F1927C31700CA4038 /* Slot.c */; };
-		43F7FD881927C31700CA4038 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FD701927C31700CA4038 /* SlotData.c */; };
-		43F7FDA71927C33C00CA4038 /* PolygonBatch.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FDA21927C33C00CA4038 /* PolygonBatch.m */; };
-		43F7FDA81927C33C00CA4038 /* SkeletonAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FDA41927C33C00CA4038 /* SkeletonAnimation.m */; };
-		43F7FDA91927C33C00CA4038 /* SkeletonRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FDA61927C33C00CA4038 /* SkeletonRenderer.m */; };
-		43F7FDAC1927C34600CA4038 /* SpineboyExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FDAB1927C34600CA4038 /* SpineboyExample.m */; };
-		43F7FDB51927D04200CA4038 /* GoblinsExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FDB41927D04200CA4038 /* GoblinsExample.m */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
-		434D4807192A2B35003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = E01E663D121CA00A001A484F;
-			remoteInfo = cocos2d;
-		};
-		434D4809192A2B35003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A0EFA65C169CDAC8006D1B22;
-			remoteInfo = cocos2d_box2d;
-		};
-		434D480B192A2B35003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A0EFA585169CDABA006D1B22;
-			remoteInfo = cocos2d_chipmunk;
-		};
-		434D480D192A2B35003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = 4AD3B8A7159A5415002E68D1;
-			remoteInfo = CocosDenshion;
-		};
-		434D480F192A2B35003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A0644A5215B609D3004AB807;
-			remoteInfo = CocosBuilderReader;
-		};
-		434D4811192A2B35003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A0FBA8AF14A5138F002DF395;
-			remoteInfo = box2d;
-		};
-		434D4813192A2B35003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A0FBA8A614A51386002DF395;
-			remoteInfo = chipmunk;
-		};
-		434D4815192A2B35003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A0191CB1167FD65B0099349A;
-			remoteInfo = jsbindings;
-		};
-		434D4817192A2B35003127B5 /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = 434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */;
-			proxyType = 2;
-			remoteGlobalIDString = A06430E713C1414300CC5554;
-			remoteInfo = kazmath;
-		};
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
-		4319B51316FF9B2600C1D7A9 /* SpineExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SpineExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		4319B51716FF9B2600C1D7A9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
-		4319B51916FF9B2600C1D7A9 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
-		4319B51B16FF9B2600C1D7A9 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
-		4319B51D16FF9B2600C1D7A9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
-		4319B51F16FF9B2600C1D7A9 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
-		4319B52116FF9B2600C1D7A9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
-		431FF7C91C735CA100D52DF2 /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../../spine-c/src/spine/IkConstraint.c"; sourceTree = "<group>"; };
-		431FF7D51C735CAE00D52DF2 /* IkConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraint.h; path = "../../spine-c/include/spine/IkConstraint.h"; sourceTree = "<group>"; };
-		431FF7D61C735CFE00D52DF2 /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../../spine-c/src/spine/IkConstraintData.c"; sourceTree = "<group>"; };
-		431FF7D71C735CFE00D52DF2 /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../../spine-c/src/spine/TransformConstraint.c"; sourceTree = "<group>"; };
-		431FF7D81C735CFE00D52DF2 /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../../spine-c/src/spine/TransformConstraintData.c"; sourceTree = "<group>"; };
-		431FF7D91C735CFE00D52DF2 /* WeightedMeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = WeightedMeshAttachment.c; path = "../../spine-c/src/spine/WeightedMeshAttachment.c"; sourceTree = "<group>"; };
-		431FF7DE1C735D1500D52DF2 /* IkConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraintData.h; path = "../../spine-c/include/spine/IkConstraintData.h"; sourceTree = "<group>"; };
-		431FF7DF1C735D1500D52DF2 /* TransformConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraint.h; path = "../../spine-c/include/spine/TransformConstraint.h"; sourceTree = "<group>"; };
-		431FF7E01C735D1500D52DF2 /* TransformConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraintData.h; path = "../../spine-c/include/spine/TransformConstraintData.h"; sourceTree = "<group>"; };
-		431FF7E11C735D1500D52DF2 /* WeightedMeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WeightedMeshAttachment.h; path = "../../spine-c/include/spine/WeightedMeshAttachment.h"; sourceTree = "<group>"; };
-		431FF7E21C735D4300D52DF2 /* goblins-mesh.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "goblins-mesh.atlas"; sourceTree = "<group>"; };
-		431FF7E31C735D4300D52DF2 /* goblins-mesh.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "goblins-mesh.json"; sourceTree = "<group>"; };
-		431FF7E41C735D4300D52DF2 /* goblins-mesh.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "goblins-mesh.png"; sourceTree = "<group>"; };
-		434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "cocos2d-osx.xcodeproj"; path = "cocos2d/cocos2d-osx.xcodeproj"; sourceTree = SOURCE_ROOT; };
-		43BFBE0D170A778A00ECBACB /* spine-cocos2d-iphone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "spine-cocos2d-iphone.m"; path = "src/spine/spine-cocos2d-iphone.m"; sourceTree = "<group>"; };
-		43BFBE0E170A778A00ECBACB /* spine-cocos2d-iphone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "spine-cocos2d-iphone.h"; path = "src/spine/spine-cocos2d-iphone.h"; sourceTree = "<group>"; };
-		43C32A10170B1295004A9460 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = "../Resources-mac/AppDelegate.h"; sourceTree = "<group>"; };
-		43C32A11170B1295004A9460 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = "../Resources-mac/AppDelegate.m"; sourceTree = "<group>"; };
-		43C32A14170B1295004A9460 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = InfoPlist.strings; sourceTree = "<group>"; };
-		43C32A16170B1295004A9460 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = MainMenu.xib; sourceTree = "<group>"; };
-		43C32A17170B1295004A9460 /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = icon.icns; path = "Resources-mac/icon.icns"; 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>"; };
-		43C32A1A170B1295004A9460 /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Prefix.pch; path = "../Resources-mac/Prefix.pch"; 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>"; };
-		43F7FD581927C31700CA4038 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../../spine-c/src/spine/Animation.c"; sourceTree = "<group>"; };
-		43F7FD591927C31700CA4038 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../../spine-c/src/spine/AnimationState.c"; sourceTree = "<group>"; };
-		43F7FD5A1927C31700CA4038 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../../spine-c/src/spine/AnimationStateData.c"; sourceTree = "<group>"; };
-		43F7FD5B1927C31700CA4038 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../../spine-c/src/spine/Atlas.c"; sourceTree = "<group>"; };
-		43F7FD5C1927C31700CA4038 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = "<group>"; };
-		43F7FD5D1927C31700CA4038 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../../spine-c/src/spine/Attachment.c"; sourceTree = "<group>"; };
-		43F7FD5E1927C31700CA4038 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../../spine-c/src/spine/AttachmentLoader.c"; sourceTree = "<group>"; };
-		43F7FD5F1927C31700CA4038 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../../spine-c/src/spine/Bone.c"; sourceTree = "<group>"; };
-		43F7FD601927C31700CA4038 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../../spine-c/src/spine/BoneData.c"; sourceTree = "<group>"; };
-		43F7FD611927C31700CA4038 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = "<group>"; };
-		43F7FD621927C31700CA4038 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../../spine-c/src/spine/Event.c"; sourceTree = "<group>"; };
-		43F7FD631927C31700CA4038 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../../spine-c/src/spine/EventData.c"; sourceTree = "<group>"; };
-		43F7FD641927C31700CA4038 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../../spine-c/src/spine/extension.c"; sourceTree = "<group>"; };
-		43F7FD651927C31700CA4038 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../../spine-c/src/spine/Json.c"; sourceTree = "<group>"; };
-		43F7FD661927C31700CA4038 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../../spine-c/src/spine/Json.h"; sourceTree = "<group>"; };
-		43F7FD671927C31700CA4038 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../../spine-c/src/spine/MeshAttachment.c"; sourceTree = "<group>"; };
-		43F7FD681927C31700CA4038 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../../spine-c/src/spine/RegionAttachment.c"; sourceTree = "<group>"; };
-		43F7FD691927C31700CA4038 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../../spine-c/src/spine/Skeleton.c"; sourceTree = "<group>"; };
-		43F7FD6A1927C31700CA4038 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../../spine-c/src/spine/SkeletonBounds.c"; sourceTree = "<group>"; };
-		43F7FD6B1927C31700CA4038 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../../spine-c/src/spine/SkeletonData.c"; sourceTree = "<group>"; };
-		43F7FD6C1927C31700CA4038 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../../spine-c/src/spine/SkeletonJson.c"; sourceTree = "<group>"; };
-		43F7FD6D1927C31700CA4038 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../../spine-c/src/spine/Skin.c"; sourceTree = "<group>"; };
-		43F7FD6F1927C31700CA4038 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../../spine-c/src/spine/Slot.c"; sourceTree = "<group>"; };
-		43F7FD701927C31700CA4038 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../../spine-c/src/spine/SlotData.c"; sourceTree = "<group>"; };
-		43F7FD891927C32800CA4038 /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animation.h; path = "../../spine-c/include/spine/Animation.h"; sourceTree = "<group>"; };
-		43F7FD8A1927C32800CA4038 /* AnimationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationState.h; path = "../../spine-c/include/spine/AnimationState.h"; sourceTree = "<group>"; };
-		43F7FD8B1927C32800CA4038 /* AnimationStateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationStateData.h; path = "../../spine-c/include/spine/AnimationStateData.h"; sourceTree = "<group>"; };
-		43F7FD8C1927C32800CA4038 /* Atlas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Atlas.h; path = "../../spine-c/include/spine/Atlas.h"; sourceTree = "<group>"; };
-		43F7FD8D1927C32800CA4038 /* AtlasAttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AtlasAttachmentLoader.h; path = "../../spine-c/include/spine/AtlasAttachmentLoader.h"; sourceTree = "<group>"; };
-		43F7FD8E1927C32800CA4038 /* Attachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Attachment.h; path = "../../spine-c/include/spine/Attachment.h"; sourceTree = "<group>"; };
-		43F7FD8F1927C32800CA4038 /* AttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttachmentLoader.h; path = "../../spine-c/include/spine/AttachmentLoader.h"; sourceTree = "<group>"; };
-		43F7FD901927C32800CA4038 /* Bone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bone.h; path = "../../spine-c/include/spine/Bone.h"; sourceTree = "<group>"; };
-		43F7FD911927C32800CA4038 /* BoneData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoneData.h; path = "../../spine-c/include/spine/BoneData.h"; sourceTree = "<group>"; };
-		43F7FD921927C32800CA4038 /* BoundingBoxAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoundingBoxAttachment.h; path = "../../spine-c/include/spine/BoundingBoxAttachment.h"; sourceTree = "<group>"; };
-		43F7FD931927C32800CA4038 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Event.h; path = "../../spine-c/include/spine/Event.h"; sourceTree = "<group>"; };
-		43F7FD941927C32800CA4038 /* EventData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EventData.h; path = "../../spine-c/include/spine/EventData.h"; sourceTree = "<group>"; };
-		43F7FD951927C32800CA4038 /* extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = extension.h; path = "../../spine-c/include/spine/extension.h"; sourceTree = "<group>"; };
-		43F7FD961927C32800CA4038 /* MeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeshAttachment.h; path = "../../spine-c/include/spine/MeshAttachment.h"; sourceTree = "<group>"; };
-		43F7FD971927C32800CA4038 /* RegionAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegionAttachment.h; path = "../../spine-c/include/spine/RegionAttachment.h"; sourceTree = "<group>"; };
-		43F7FD981927C32800CA4038 /* Skeleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skeleton.h; path = "../../spine-c/include/spine/Skeleton.h"; sourceTree = "<group>"; };
-		43F7FD991927C32800CA4038 /* SkeletonBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonBounds.h; path = "../../spine-c/include/spine/SkeletonBounds.h"; sourceTree = "<group>"; };
-		43F7FD9A1927C32800CA4038 /* SkeletonData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonData.h; path = "../../spine-c/include/spine/SkeletonData.h"; sourceTree = "<group>"; };
-		43F7FD9B1927C32800CA4038 /* SkeletonJson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonJson.h; path = "../../spine-c/include/spine/SkeletonJson.h"; sourceTree = "<group>"; };
-		43F7FD9C1927C32800CA4038 /* Skin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skin.h; path = "../../spine-c/include/spine/Skin.h"; sourceTree = "<group>"; };
-		43F7FD9E1927C32800CA4038 /* Slot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Slot.h; path = "../../spine-c/include/spine/Slot.h"; sourceTree = "<group>"; };
-		43F7FD9F1927C32800CA4038 /* SlotData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SlotData.h; path = "../../spine-c/include/spine/SlotData.h"; sourceTree = "<group>"; };
-		43F7FDA01927C32800CA4038 /* spine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spine.h; path = "../../spine-c/include/spine/spine.h"; sourceTree = "<group>"; };
-		43F7FDA11927C33C00CA4038 /* PolygonBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PolygonBatch.h; path = src/spine/PolygonBatch.h; sourceTree = "<group>"; };
-		43F7FDA21927C33C00CA4038 /* PolygonBatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PolygonBatch.m; path = src/spine/PolygonBatch.m; sourceTree = "<group>"; };
-		43F7FDA31927C33C00CA4038 /* SkeletonAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonAnimation.h; path = src/spine/SkeletonAnimation.h; sourceTree = "<group>"; };
-		43F7FDA41927C33C00CA4038 /* SkeletonAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SkeletonAnimation.m; path = src/spine/SkeletonAnimation.m; sourceTree = "<group>"; };
-		43F7FDA51927C33C00CA4038 /* SkeletonRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonRenderer.h; path = src/spine/SkeletonRenderer.h; sourceTree = "<group>"; };
-		43F7FDA61927C33C00CA4038 /* SkeletonRenderer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SkeletonRenderer.m; path = src/spine/SkeletonRenderer.m; sourceTree = "<group>"; };
-		43F7FDAA1927C34600CA4038 /* SpineboyExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpineboyExample.h; sourceTree = "<group>"; };
-		43F7FDAB1927C34600CA4038 /* SpineboyExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpineboyExample.m; sourceTree = "<group>"; };
-		43F7FDB31927D04200CA4038 /* GoblinsExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GoblinsExample.h; sourceTree = "<group>"; };
-		43F7FDB41927D04200CA4038 /* GoblinsExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GoblinsExample.m; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		4319B51016FF9B2600C1D7A9 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				434D4819192A2B49003127B5 /* libcocos2d.a in Frameworks */,
-				4319B51816FF9B2600C1D7A9 /* QuartzCore.framework in Frameworks */,
-				4319B51A16FF9B2600C1D7A9 /* OpenGL.framework in Frameworks */,
-				4319B51C16FF9B2600C1D7A9 /* OpenAL.framework in Frameworks */,
-				4319B51E16FF9B2600C1D7A9 /* AudioToolbox.framework in Frameworks */,
-				4319B52016FF9B2600C1D7A9 /* AppKit.framework in Frameworks */,
-				4319B52216FF9B2600C1D7A9 /* Foundation.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		4319B50816FF9B2600C1D7A9 = {
-			isa = PBXGroup;
-			children = (
-				4319B6BC16FF9D1700C1D7A9 /* Classes */,
-				4319B7CB16FF9D3900C1D7A9 /* Resources */,
-				43C32A0F170B1282004A9460 /* Resources-mac */,
-				4319B6C616FF9D3900C1D7A9 /* cocos2d */,
-				4319B51616FF9B2600C1D7A9 /* Frameworks */,
-				4319B51416FF9B2600C1D7A9 /* Products */,
-			);
-			sourceTree = "<group>";
-		};
-		4319B51416FF9B2600C1D7A9 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				4319B51316FF9B2600C1D7A9 /* SpineExample.app */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		4319B51616FF9B2600C1D7A9 /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				4319B51716FF9B2600C1D7A9 /* QuartzCore.framework */,
-				4319B51916FF9B2600C1D7A9 /* OpenGL.framework */,
-				4319B51B16FF9B2600C1D7A9 /* OpenAL.framework */,
-				4319B51D16FF9B2600C1D7A9 /* AudioToolbox.framework */,
-				4319B51F16FF9B2600C1D7A9 /* AppKit.framework */,
-				4319B52116FF9B2600C1D7A9 /* Foundation.framework */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-		4319B6BC16FF9D1700C1D7A9 /* Classes */ = {
-			isa = PBXGroup;
-			children = (
-				4319B8921701168A00C1D7A9 /* spine-c */,
-				4319B8931701168F00C1D7A9 /* spine-cocos2d-iphone */,
-				43F7FDAA1927C34600CA4038 /* SpineboyExample.h */,
-				43F7FDAB1927C34600CA4038 /* SpineboyExample.m */,
-				43F7FDB31927D04200CA4038 /* GoblinsExample.h */,
-				43F7FDB41927D04200CA4038 /* GoblinsExample.m */,
-				43C32A10170B1295004A9460 /* AppDelegate.h */,
-				43C32A11170B1295004A9460 /* AppDelegate.m */,
-				43C32A19170B1295004A9460 /* main.m */,
-				43C32A1A170B1295004A9460 /* Prefix.pch */,
-			);
-			name = Classes;
-			path = example;
-			sourceTree = SOURCE_ROOT;
-		};
-		4319B6C616FF9D3900C1D7A9 /* cocos2d */ = {
-			isa = PBXGroup;
-			children = (
-				434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */,
-			);
-			name = cocos2d;
-			path = libs;
-			sourceTree = SOURCE_ROOT;
-		};
-		4319B7CB16FF9D3900C1D7A9 /* Resources */ = {
-			isa = PBXGroup;
-			children = (
-				431FF7E21C735D4300D52DF2 /* goblins-mesh.atlas */,
-				431FF7E31C735D4300D52DF2 /* goblins-mesh.json */,
-				431FF7E41C735D4300D52DF2 /* goblins-mesh.png */,
-				43C32A30170D0A4D004A9460 /* spineboy.atlas */,
-				43C32A31170D0A4D004A9460 /* spineboy.json */,
-				43C32A32170D0A4D004A9460 /* spineboy.png */,
-			);
-			path = Resources;
-			sourceTree = SOURCE_ROOT;
-		};
-		4319B8921701168A00C1D7A9 /* spine-c */ = {
-			isa = PBXGroup;
-			children = (
-				43F7FD581927C31700CA4038 /* Animation.c */,
-				43F7FD891927C32800CA4038 /* Animation.h */,
-				43F7FD591927C31700CA4038 /* AnimationState.c */,
-				43F7FD8A1927C32800CA4038 /* AnimationState.h */,
-				43F7FD5A1927C31700CA4038 /* AnimationStateData.c */,
-				43F7FD8B1927C32800CA4038 /* AnimationStateData.h */,
-				43F7FD5B1927C31700CA4038 /* Atlas.c */,
-				43F7FD8C1927C32800CA4038 /* Atlas.h */,
-				43F7FD5C1927C31700CA4038 /* AtlasAttachmentLoader.c */,
-				43F7FD8D1927C32800CA4038 /* AtlasAttachmentLoader.h */,
-				43F7FD5D1927C31700CA4038 /* Attachment.c */,
-				43F7FD8E1927C32800CA4038 /* Attachment.h */,
-				43F7FD5E1927C31700CA4038 /* AttachmentLoader.c */,
-				43F7FD8F1927C32800CA4038 /* AttachmentLoader.h */,
-				43F7FD5F1927C31700CA4038 /* Bone.c */,
-				43F7FD901927C32800CA4038 /* Bone.h */,
-				43F7FD601927C31700CA4038 /* BoneData.c */,
-				43F7FD911927C32800CA4038 /* BoneData.h */,
-				43F7FD611927C31700CA4038 /* BoundingBoxAttachment.c */,
-				43F7FD921927C32800CA4038 /* BoundingBoxAttachment.h */,
-				43F7FD621927C31700CA4038 /* Event.c */,
-				43F7FD931927C32800CA4038 /* Event.h */,
-				43F7FD631927C31700CA4038 /* EventData.c */,
-				43F7FD941927C32800CA4038 /* EventData.h */,
-				43F7FD641927C31700CA4038 /* extension.c */,
-				43F7FD951927C32800CA4038 /* extension.h */,
-				431FF7C91C735CA100D52DF2 /* IkConstraint.c */,
-				431FF7D51C735CAE00D52DF2 /* IkConstraint.h */,
-				431FF7D61C735CFE00D52DF2 /* IkConstraintData.c */,
-				431FF7DE1C735D1500D52DF2 /* IkConstraintData.h */,
-				43F7FD651927C31700CA4038 /* Json.c */,
-				43F7FD661927C31700CA4038 /* Json.h */,
-				43F7FD671927C31700CA4038 /* MeshAttachment.c */,
-				43F7FD961927C32800CA4038 /* MeshAttachment.h */,
-				43F7FD681927C31700CA4038 /* RegionAttachment.c */,
-				43F7FD971927C32800CA4038 /* RegionAttachment.h */,
-				43F7FD691927C31700CA4038 /* Skeleton.c */,
-				43F7FD981927C32800CA4038 /* Skeleton.h */,
-				43F7FD6A1927C31700CA4038 /* SkeletonBounds.c */,
-				43F7FD991927C32800CA4038 /* SkeletonBounds.h */,
-				43F7FD6B1927C31700CA4038 /* SkeletonData.c */,
-				43F7FD9A1927C32800CA4038 /* SkeletonData.h */,
-				43F7FD6C1927C31700CA4038 /* SkeletonJson.c */,
-				43F7FD9B1927C32800CA4038 /* SkeletonJson.h */,
-				43F7FD6D1927C31700CA4038 /* Skin.c */,
-				43F7FD9C1927C32800CA4038 /* Skin.h */,
-				43F7FD6F1927C31700CA4038 /* Slot.c */,
-				43F7FD9E1927C32800CA4038 /* Slot.h */,
-				43F7FD701927C31700CA4038 /* SlotData.c */,
-				43F7FD9F1927C32800CA4038 /* SlotData.h */,
-				43F7FDA01927C32800CA4038 /* spine.h */,
-				431FF7D71C735CFE00D52DF2 /* TransformConstraint.c */,
-				431FF7DF1C735D1500D52DF2 /* TransformConstraint.h */,
-				431FF7D81C735CFE00D52DF2 /* TransformConstraintData.c */,
-				431FF7E01C735D1500D52DF2 /* TransformConstraintData.h */,
-				431FF7D91C735CFE00D52DF2 /* WeightedMeshAttachment.c */,
-				431FF7E11C735D1500D52DF2 /* WeightedMeshAttachment.h */,
-			);
-			name = "spine-c";
-			path = ..;
-			sourceTree = "<group>";
-		};
-		4319B8931701168F00C1D7A9 /* spine-cocos2d-iphone */ = {
-			isa = PBXGroup;
-			children = (
-				43F7FDA11927C33C00CA4038 /* PolygonBatch.h */,
-				43F7FDA21927C33C00CA4038 /* PolygonBatch.m */,
-				43F7FDA31927C33C00CA4038 /* SkeletonAnimation.h */,
-				43F7FDA41927C33C00CA4038 /* SkeletonAnimation.m */,
-				43F7FDA51927C33C00CA4038 /* SkeletonRenderer.h */,
-				43F7FDA61927C33C00CA4038 /* SkeletonRenderer.m */,
-				43BFBE0D170A778A00ECBACB /* spine-cocos2d-iphone.m */,
-				43BFBE0E170A778A00ECBACB /* spine-cocos2d-iphone.h */,
-			);
-			name = "spine-cocos2d-iphone";
-			path = ..;
-			sourceTree = "<group>";
-		};
-		434D47F8192A2B35003127B5 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				434D4808192A2B35003127B5 /* libcocos2d.a */,
-				434D480A192A2B35003127B5 /* libcocos2d_box2d.a */,
-				434D480C192A2B35003127B5 /* libcocos2d_chipmunk.a */,
-				434D480E192A2B35003127B5 /* libCocosDenshion.a */,
-				434D4810192A2B35003127B5 /* libCocosBuilderReader.a */,
-				434D4812192A2B35003127B5 /* libbox2d.a */,
-				434D4814192A2B35003127B5 /* libchipmunk.a */,
-				434D4816192A2B35003127B5 /* libjsbindings.a */,
-				434D4818192A2B35003127B5 /* libkazmath.a */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		43C32A0F170B1282004A9460 /* Resources-mac */ = {
-			isa = PBXGroup;
-			children = (
-				43C32A12170B1295004A9460 /* English.lproj */,
-				43C32A17170B1295004A9460 /* icon.icns */,
-				43C32A18170B1295004A9460 /* Info.plist */,
-			);
-			name = "Resources-mac";
-			sourceTree = "<group>";
-		};
-		43C32A12170B1295004A9460 /* English.lproj */ = {
-			isa = PBXGroup;
-			children = (
-				43C32A13170B1295004A9460 /* InfoPlist.strings */,
-				43C32A15170B1295004A9460 /* MainMenu.xib */,
-			);
-			name = English.lproj;
-			path = "Resources-mac/English.lproj";
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		4319B51216FF9B2600C1D7A9 /* SpineExample */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 4319B6AC16FF9B2B00C1D7A9 /* Build configuration list for PBXNativeTarget "SpineExample" */;
-			buildPhases = (
-				4319B50F16FF9B2600C1D7A9 /* Sources */,
-				4319B51016FF9B2600C1D7A9 /* Frameworks */,
-				4319B51116FF9B2600C1D7A9 /* Resources */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = SpineExample;
-			productName = "spine-cocos2d-iphone-mac";
-			productReference = 4319B51316FF9B2600C1D7A9 /* SpineExample.app */;
-			productType = "com.apple.product-type.application";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		4319B50A16FF9B2600C1D7A9 /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				LastUpgradeCheck = 0450;
-				ORGANIZATIONNAME = "Esoteric Software";
-			};
-			buildConfigurationList = 4319B50D16FF9B2600C1D7A9 /* Build configuration list for PBXProject "spine-cocos2d-iphone-mac" */;
-			compatibilityVersion = "Xcode 3.2";
-			developmentRegion = English;
-			hasScannedForEncodings = 0;
-			knownRegions = (
-				en,
-				English,
-			);
-			mainGroup = 4319B50816FF9B2600C1D7A9;
-			productRefGroup = 4319B51416FF9B2600C1D7A9 /* Products */;
-			projectDirPath = "";
-			projectReferences = (
-				{
-					ProductGroup = 434D47F8192A2B35003127B5 /* Products */;
-					ProjectRef = 434D47F7192A2B35003127B5 /* cocos2d-osx.xcodeproj */;
-				},
-			);
-			projectRoot = "";
-			targets = (
-				4319B51216FF9B2600C1D7A9 /* SpineExample */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXReferenceProxy section */
-		434D4808192A2B35003127B5 /* libcocos2d.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libcocos2d.a;
-			remoteRef = 434D4807192A2B35003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D480A192A2B35003127B5 /* libcocos2d_box2d.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libcocos2d_box2d.a;
-			remoteRef = 434D4809192A2B35003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D480C192A2B35003127B5 /* libcocos2d_chipmunk.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libcocos2d_chipmunk.a;
-			remoteRef = 434D480B192A2B35003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D480E192A2B35003127B5 /* libCocosDenshion.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libCocosDenshion.a;
-			remoteRef = 434D480D192A2B35003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D4810192A2B35003127B5 /* libCocosBuilderReader.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libCocosBuilderReader.a;
-			remoteRef = 434D480F192A2B35003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D4812192A2B35003127B5 /* libbox2d.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libbox2d.a;
-			remoteRef = 434D4811192A2B35003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D4814192A2B35003127B5 /* libchipmunk.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libchipmunk.a;
-			remoteRef = 434D4813192A2B35003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D4816192A2B35003127B5 /* libjsbindings.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libjsbindings.a;
-			remoteRef = 434D4815192A2B35003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-		434D4818192A2B35003127B5 /* libkazmath.a */ = {
-			isa = PBXReferenceProxy;
-			fileType = archive.ar;
-			path = libkazmath.a;
-			remoteRef = 434D4817192A2B35003127B5 /* PBXContainerItemProxy */;
-			sourceTree = BUILT_PRODUCTS_DIR;
-		};
-/* End PBXReferenceProxy section */
-
-/* Begin PBXResourcesBuildPhase section */
-		4319B51116FF9B2600C1D7A9 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				43C32A1C170B1295004A9460 /* InfoPlist.strings in Resources */,
-				431FF7E61C735D4300D52DF2 /* goblins-mesh.json in Resources */,
-				431FF7E71C735D4300D52DF2 /* goblins-mesh.png in Resources */,
-				431FF7E51C735D4300D52DF2 /* goblins-mesh.atlas in Resources */,
-				43C32A1D170B1295004A9460 /* MainMenu.xib in Resources */,
-				43C32A1E170B1295004A9460 /* icon.icns in Resources */,
-				43C32A36170D0A4D004A9460 /* spineboy.atlas in Resources */,
-				43C32A37170D0A4D004A9460 /* spineboy.json in Resources */,
-				43C32A38170D0A4D004A9460 /* spineboy.png in Resources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
-		4319B50F16FF9B2600C1D7A9 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				43BFBE0F170A778A00ECBACB /* spine-cocos2d-iphone.m in Sources */,
-				43C32A1B170B1295004A9460 /* AppDelegate.m in Sources */,
-				43C32A20170B1295004A9460 /* main.m in Sources */,
-				43F7FD711927C31700CA4038 /* Animation.c in Sources */,
-				43F7FD721927C31700CA4038 /* AnimationState.c in Sources */,
-				43F7FD731927C31700CA4038 /* AnimationStateData.c in Sources */,
-				43F7FD741927C31700CA4038 /* Atlas.c in Sources */,
-				431FF7DB1C735CFE00D52DF2 /* TransformConstraint.c in Sources */,
-				43F7FD751927C31700CA4038 /* AtlasAttachmentLoader.c in Sources */,
-				43F7FD761927C31700CA4038 /* Attachment.c in Sources */,
-				43F7FD771927C31700CA4038 /* AttachmentLoader.c in Sources */,
-				43F7FD781927C31700CA4038 /* Bone.c in Sources */,
-				431FF7DC1C735CFE00D52DF2 /* TransformConstraintData.c in Sources */,
-				43F7FD791927C31700CA4038 /* BoneData.c in Sources */,
-				43F7FD7A1927C31700CA4038 /* BoundingBoxAttachment.c in Sources */,
-				43F7FD7B1927C31700CA4038 /* Event.c in Sources */,
-				43F7FD7C1927C31700CA4038 /* EventData.c in Sources */,
-				431FF7DA1C735CFE00D52DF2 /* IkConstraintData.c in Sources */,
-				43F7FD7D1927C31700CA4038 /* extension.c in Sources */,
-				431FF7CA1C735CA100D52DF2 /* IkConstraint.c in Sources */,
-				43F7FD7E1927C31700CA4038 /* Json.c in Sources */,
-				43F7FD7F1927C31700CA4038 /* MeshAttachment.c in Sources */,
-				43F7FD801927C31700CA4038 /* RegionAttachment.c in Sources */,
-				43F7FD811927C31700CA4038 /* Skeleton.c in Sources */,
-				431FF7DD1C735CFE00D52DF2 /* WeightedMeshAttachment.c in Sources */,
-				43F7FD821927C31700CA4038 /* SkeletonBounds.c in Sources */,
-				43F7FD831927C31700CA4038 /* SkeletonData.c in Sources */,
-				43F7FD841927C31700CA4038 /* SkeletonJson.c in Sources */,
-				43F7FD851927C31700CA4038 /* Skin.c in Sources */,
-				43F7FD871927C31700CA4038 /* Slot.c in Sources */,
-				43F7FD881927C31700CA4038 /* SlotData.c in Sources */,
-				43F7FDA71927C33C00CA4038 /* PolygonBatch.m in Sources */,
-				43F7FDA81927C33C00CA4038 /* SkeletonAnimation.m in Sources */,
-				43F7FDA91927C33C00CA4038 /* SkeletonRenderer.m in Sources */,
-				43F7FDAC1927C34600CA4038 /* SpineboyExample.m in Sources */,
-				43F7FDB51927D04200CA4038 /* GoblinsExample.m in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXVariantGroup section */
-		43C32A13170B1295004A9460 /* InfoPlist.strings */ = {
-			isa = PBXVariantGroup;
-			children = (
-				43C32A14170B1295004A9460 /* English */,
-			);
-			name = InfoPlist.strings;
-			sourceTree = "<group>";
-		};
-		43C32A15170B1295004A9460 /* MainMenu.xib */ = {
-			isa = PBXVariantGroup;
-			children = (
-				43C32A16170B1295004A9460 /* English */,
-			);
-			name = MainMenu.xib;
-			sourceTree = "<group>";
-		};
-/* End PBXVariantGroup section */
-
-/* Begin XCBuildConfiguration section */
-		4319B6AA16FF9B2B00C1D7A9 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					DEBUG,
-					"COCOS2D_DEBUG=1",
-				);
-				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.7;
-				ONLY_ACTIVE_ARCH = YES;
-				SDKROOT = macosx;
-			};
-			name = Debug;
-		};
-		4319B6AB16FF9B2B00C1D7A9 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					NDEBUG,
-					"NS_BLOCK_ASSERTIONS=1",
-				);
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_UNUSED_VARIABLE = YES;
-				MACOSX_DEPLOYMENT_TARGET = 10.7;
-				SDKROOT = macosx;
-			};
-			name = Release;
-		};
-		4319B6AD16FF9B2B00C1D7A9 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ENABLE_OBJC_ARC = NO;
-				COPY_PHASE_STRIP = NO;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "Resources-mac/Prefix.pch";
-				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
-				HEADER_SEARCH_PATHS = (
-					"\"cocos2d/external/kazmath/include\"",
-					"\"src\"",
-					"\"../../spine-c/include\"",
-					"\"cocos2d/cocos2d\"/**",
-				);
-				INFOPLIST_FILE = "Resources-mac/Info.plist";
-				OTHER_CFLAGS = "";
-				OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)";
-				OTHER_LDFLAGS = (
-					"-lz",
-					"-lsqlite3",
-					"-ObjC",
-				);
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				WRAPPER_EXTENSION = app;
-			};
-			name = Debug;
-		};
-		4319B6AE16FF9B2B00C1D7A9 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_ENABLE_OBJC_ARC = NO;
-				COPY_PHASE_STRIP = YES;
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = "Resources-mac/Prefix.pch";
-				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
-				HEADER_SEARCH_PATHS = (
-					"\"cocos2d/external/kazmath/include\"",
-					"\"src\"",
-					"\"../../spine-c/include\"",
-					"\"cocos2d/cocos2d\"/**",
-				);
-				INFOPLIST_FILE = "Resources-mac/Info.plist";
-				OTHER_CFLAGS = "";
-				OTHER_CPLUSPLUSFLAGS = "$(OTHER_CFLAGS)";
-				OTHER_LDFLAGS = (
-					"-lz",
-					"-lsqlite3",
-					"-ObjC",
-				);
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				WRAPPER_EXTENSION = app;
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		4319B50D16FF9B2600C1D7A9 /* Build configuration list for PBXProject "spine-cocos2d-iphone-mac" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				4319B6AA16FF9B2B00C1D7A9 /* Debug */,
-				4319B6AB16FF9B2B00C1D7A9 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		4319B6AC16FF9B2B00C1D7A9 /* Build configuration list for PBXNativeTarget "SpineExample" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				4319B6AD16FF9B2B00C1D7A9 /* Debug */,
-				4319B6AE16FF9B2B00C1D7A9 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 4319B50A16FF9B2600C1D7A9 /* Project object */;
-}

+ 0 - 52
spine-cocos2d-iphone/2/src/spine/PolygonBatch.h

@@ -1,52 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import <spine/spine-cocos2d-iphone.h>
-
-@interface spPolygonBatch : NSObject {
-	int _capacity;
-	ccV2F_C4B_T2F* _vertices;
-	int _verticesCount;
-	GLushort* _triangles;
-	int _trianglesCount;
-	CCTexture2D* _texture;
-}
-
-+ (id) createWithCapacity:(int)capacity;
-
-- (id) initWithCapacity:(int)capacity;
-
-- (void) add:(CCTexture2D*)texture vertices:(const float*)vertices uvs:(const float*)uvs
-	verticesCount:(int)verticesCount triangles:(const int*)triangles trianglesCount:(int)trianglesCount
-	color:(ccColor4B*)color;
-- (void) flush;
-
-@end

+ 0 - 107
spine-cocos2d-iphone/2/src/spine/PolygonBatch.m

@@ -1,107 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import <spine/PolygonBatch.h>
-#import <spine/spine-cocos2d-iphone.h>
-#import <spine/extension.h>
-
-@implementation spPolygonBatch
-
-+ (id) createWithCapacity:(int)capacity {
-	return [[(spPolygonBatch*)[self alloc] initWithCapacity:capacity] autorelease];
-}
-
-- (id) initWithCapacity:(int)capacity {
-	// 32767 is max index, so 32767 / 3 - (32767 / 3 % 3) = 10920.
-	NSAssert(capacity <= 10920, @"capacity cannot be > 10920");
-	NSAssert(capacity >= 0, @"capacity cannot be < 0");
-
-	self = [super init];
-	if (!self) return nil;
-
-	_capacity = capacity;
-	_vertices = MALLOC(ccV2F_C4B_T2F, capacity);
-	_triangles = MALLOC(GLushort, capacity * 3);
-
-	return self;
-}
-
-- (void) dealloc {
-	FREE(_vertices);
-	FREE(_triangles);
-	[super dealloc];
-}
-
-- (void) add:(CCTexture2D*)addTexture vertices:(const float*)addVertices uvs:(const float*)uvs
-	verticesCount:(int)addVerticesCount triangles:(const int*)addTriangles trianglesCount:(int)addTrianglesCount
-	color:(ccColor4B*)color {
-
-	if (
-		addTexture != _texture
-		|| _verticesCount + (addVerticesCount >> 1) > _capacity
-		|| _trianglesCount + addTrianglesCount > _capacity * 3) {
-		[self flush];
-		_texture = addTexture;
-	}
-
-	for (int i = 0; i < addTrianglesCount; ++i, ++_trianglesCount)
-		_triangles[_trianglesCount] = addTriangles[i] + _verticesCount;
-
-	for (int i = 0; i < addVerticesCount; i += 2, ++_verticesCount) {
-		ccV2F_C4B_T2F* vertex = _vertices + _verticesCount;
-		vertex->vertices.x = addVertices[i];
-		vertex->vertices.y = addVertices[i + 1];
-		vertex->colors = *color;
-		vertex->texCoords.u = uvs[i];
-		vertex->texCoords.v = uvs[i + 1];
-	}
-}
-
-- (void) flush {
-	if (!_verticesCount) return;
-
-	ccGLBindTexture2D(_texture.name);
-	glEnableVertexAttribArray(kCCVertexAttrib_Position);
-	glEnableVertexAttribArray(kCCVertexAttrib_Color);
-	glEnableVertexAttribArray(kCCVertexAttrib_TexCoords);
-	glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, sizeof(ccV2F_C4B_T2F), &_vertices[0].vertices);
-	glVertexAttribPointer(kCCVertexAttrib_Color, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(ccV2F_C4B_T2F), &_vertices[0].colors);
-	glVertexAttribPointer(kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, sizeof(ccV2F_C4B_T2F), &_vertices[0].texCoords);
-
-	glDrawElements(GL_TRIANGLES, _trianglesCount, GL_UNSIGNED_SHORT, _triangles);
-
-	_verticesCount = 0;
-	_trianglesCount = 0;
-
-	CHECK_GL_ERROR_DEBUG();
-}
-
-@end

+ 0 - 256
spine-cocos2d-iphone/2/src/spine/SkeletonAnimation.m

@@ -1,256 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import <spine/SkeletonAnimation.h>
-#import <spine/spine-cocos2d-iphone.h>
-#import <spine/extension.h>
-
-static void animationCallback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) {
-	[(SkeletonAnimation*)state->rendererObject onAnimationStateEvent:trackIndex type:type event:event loopCount:loopCount];
-}
-
-void trackEntryCallback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) {
-	[(SkeletonAnimation*)state->rendererObject onTrackEntryEvent:trackIndex type:type event:event loopCount:loopCount];
-}
-
-typedef struct _TrackEntryListeners {
-	spStartListener startListener;
-	spEndListener endListener;
-	spCompleteListener completeListener;
-	spEventListener eventListener;
-} _TrackEntryListeners;
-
-static _TrackEntryListeners* getListeners (spTrackEntry* entry) {
-	if (!entry->rendererObject) {
-		entry->rendererObject = NEW(_TrackEntryListeners);
-		entry->listener = trackEntryCallback;
-	}
-	return (_TrackEntryListeners*)entry->rendererObject;
-}
-
-void disposeTrackEntry (spTrackEntry* entry) {
-	if (entry->rendererObject) {
-		_TrackEntryListeners* listeners = (_TrackEntryListeners*)entry->rendererObject;
-		[listeners->startListener release];
-		[listeners->endListener release];
-		[listeners->completeListener release];
-		[listeners->eventListener release];
-		FREE(listeners);
-	}
-	_spTrackEntry_dispose(entry);
-}
-
-//
-
-@interface SkeletonAnimation (Private)
-- (void) initialize;
-@end
-
-@implementation SkeletonAnimation
-
-@synthesize state = _state;
-@synthesize timeScale = _timeScale;
-@synthesize startListener = _startListener;
-@synthesize endListener = _endListener;
-@synthesize completeListener = _completeListener;
-@synthesize eventListener = _eventListener;
-
-+ (id) skeletonWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData {
-	return [[[self alloc] initWithData:skeletonData ownsSkeletonData:ownsSkeletonData] autorelease];
-}
-
-+ (id) skeletonWithFile:(NSString*)skeletonDataFile atlas:(spAtlas*)atlas scale:(float)scale {
-	return [[[self alloc] initWithFile:skeletonDataFile atlas:atlas scale:scale] autorelease];
-}
-
-+ (id) skeletonWithFile:(NSString*)skeletonDataFile atlasFile:(NSString*)atlasFile scale:(float)scale {
-	return [[[self alloc] initWithFile:skeletonDataFile atlasFile:atlasFile scale:scale] autorelease];
-}
-
-- (void) initialize {
-	_ownsAnimationStateData = true;
-	_timeScale = 1;
-
-	_state = spAnimationState_create(spAnimationStateData_create(_skeleton->data));
-	_state->rendererObject = self;
-	_state->listener = animationCallback;
-
-	_spAnimationState* stateInternal = (_spAnimationState*)_state;
-	stateInternal->disposeTrackEntry = disposeTrackEntry;
-}
-
-- (id) initWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData {
-	self = [super initWithData:skeletonData ownsSkeletonData:ownsSkeletonData];
-	if (!self) return nil;
-	
-	[self initialize];
-	
-	return self;
-}
-
-- (id) initWithFile:(NSString*)skeletonDataFile atlas:(spAtlas*)atlas scale:(float)scale {
-	self = [super initWithFile:skeletonDataFile atlas:atlas scale:scale];
-	if (!self) return nil;
-	
-	[self initialize];
-	
-	return self;
-}
-
-- (id) initWithFile:(NSString*)skeletonDataFile atlasFile:(NSString*)atlasFile scale:(float)scale {
-	self = [super initWithFile:skeletonDataFile atlasFile:atlasFile scale:scale];
-	if (!self) return nil;
-	
-	[self initialize];
-	
-	return self;
-}
-
-- (void) dealloc {
-	if (_ownsAnimationStateData) spAnimationStateData_dispose(_state->data);
-	spAnimationState_dispose(_state);
-
-	[_startListener release];
-	[_endListener release];
-	[_completeListener release];
-	[_eventListener release];
-
-	[super dealloc];
-}
-
-- (void) update:(ccTime)deltaTime {
-	deltaTime *= _timeScale;
-	spSkeleton_update(_skeleton, deltaTime);
-	spAnimationState_update(_state, deltaTime);
-	spAnimationState_apply(_state, _skeleton);
-	spSkeleton_updateWorldTransform(_skeleton);
-}
-
-- (void) setAnimationStateData:(spAnimationStateData*)stateData {
-	NSAssert(stateData, @"stateData cannot be null.");
-	
-	if (_ownsAnimationStateData) spAnimationStateData_dispose(_state->data);
-	spAnimationState_dispose(_state);
-
-	_ownsAnimationStateData = false;
-	_state = spAnimationState_create(stateData);
-	_state->rendererObject = self;
-	_state->listener = animationCallback;
-}
-
-- (void) setMixFrom:(NSString*)fromAnimation to:(NSString*)toAnimation duration:(float)duration {
-	spAnimationStateData_setMixByName(_state->data, [fromAnimation UTF8String], [toAnimation UTF8String], duration);
-}
-
-- (spTrackEntry*) setAnimationForTrack:(int)trackIndex name:(NSString*)name loop:(bool)loop {
-	spAnimation* animation = spSkeletonData_findAnimation(_skeleton->data, [name UTF8String]);
-	if (!animation) {
-		CCLOG(@"Spine: Animation not found: %@", name);
-		return 0;
-	}
-	return spAnimationState_setAnimation(_state, trackIndex, animation, loop);
-}
-
-- (spTrackEntry*) addAnimationForTrack:(int)trackIndex name:(NSString*)name loop:(bool)loop afterDelay:(int)delay {
-	spAnimation* animation = spSkeletonData_findAnimation(_skeleton->data, [name UTF8String]);
-	if (!animation) {
-		CCLOG(@"Spine: Animation not found: %@", name);
-		return 0;
-	}
-	return spAnimationState_addAnimation(_state, trackIndex, animation, loop, delay);
-}
-
-- (spTrackEntry*) getCurrentForTrack:(int)trackIndex {
-	return spAnimationState_getCurrent(_state, trackIndex);
-}
-
-- (void) clearTracks {
-	spAnimationState_clearTracks(_state);
-}
-
-- (void) clearTrack:(int)trackIndex {
-	spAnimationState_clearTrack(_state, trackIndex);
-}
-
-- (void) onAnimationStateEvent:(int)trackIndex type:(spEventType)type event:(spEvent*)event loopCount:(int)loopCount {
-	switch (type) {
-	case SP_ANIMATION_START:
-		if (_startListener) _startListener(trackIndex);
-		break;
-	case SP_ANIMATION_END:
-		if (_endListener) _endListener(trackIndex);
-		break;
-	case SP_ANIMATION_COMPLETE:
-		if (_completeListener) _completeListener(trackIndex, loopCount);
-		break;
-	case SP_ANIMATION_EVENT:
-		if (_eventListener) _eventListener(trackIndex, event);
-		break;
-	}
-}
-
-- (void) onTrackEntryEvent:(int)trackIndex type:(spEventType)type event:(spEvent*)event loopCount:(int)loopCount {
-	spTrackEntry* entry = spAnimationState_getCurrent(_state, trackIndex);
-	if (!entry->rendererObject) return;
-	_TrackEntryListeners* listeners = (_TrackEntryListeners*)entry->rendererObject;
-	switch (type) {
-	case SP_ANIMATION_START:
-		if (listeners->startListener) listeners->startListener(trackIndex);
-		break;
-	case SP_ANIMATION_END:
-		if (listeners->endListener) listeners->endListener(trackIndex);
-		break;
-	case SP_ANIMATION_COMPLETE:
-		if (listeners->completeListener) listeners->completeListener(trackIndex, loopCount);
-		break;
-	case SP_ANIMATION_EVENT:
-		if (listeners->eventListener) listeners->eventListener(trackIndex, event);
-		break;
-	}
-}
-
-- (void) setListenerForEntry:(spTrackEntry*)entry onStart:(spStartListener)listener {
-	getListeners(entry)->startListener = [listener copy];
-}
-
-- (void) setListenerForEntry:(spTrackEntry*)entry onEnd:(spEndListener)listener {
-	getListeners(entry)->endListener = [listener copy];
-}
-
-- (void) setListenerForEntry:(spTrackEntry*)entry onComplete:(spCompleteListener)listener {
-	getListeners(entry)->completeListener = [listener copy];
-}
-
-- (void) setListenerForEntry:(spTrackEntry*)entry onEvent:(spEventListener)listener {
-	getListeners(entry)->eventListener = [listener copy];
-}
-
-@end

+ 0 - 93
spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.h

@@ -1,93 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import <spine/spine.h>
-#import "cocos2d.h"
-
-@class spPolygonBatch;
-
-/** Draws a skeleton. */
-@interface SkeletonRenderer : CCNodeRGBA<CCBlendProtocol> {
-	spSkeleton* _skeleton;
-	spBone* _rootBone;
-	bool _debugSlots;
-	bool _debugBones;
-	bool _premultipliedAlpha;
-	ccBlendFunc _blendFunc;
-
-	bool _ownsSkeletonData;
-	spAtlas* _atlas;
-	spPolygonBatch* batch;
-	float* worldVertices;
-}
-
-+ (id) skeletonWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData;
-+ (id) skeletonWithFile:(NSString*)skeletonDataFile atlas:(spAtlas*)atlas scale:(float)scale;
-+ (id) skeletonWithFile:(NSString*)skeletonDataFile atlasFile:(NSString*)atlasFile scale:(float)scale;
-
-- (id) initWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData;
-- (id) initWithFile:(NSString*)skeletonDataFile atlas:(spAtlas*)atlas scale:(float)scale;
-- (id) initWithFile:(NSString*)skeletonDataFile atlasFile:(NSString*)atlasFile scale:(float)scale;
-
-- (CCTexture2D*) getTextureForRegion:(spRegionAttachment*)attachment;
-- (CCTexture2D*) getTextureForMesh:(spMeshAttachment*)attachment;
-- (CCTexture2D*) getTextureForWeightedMesh:(spWeightedMeshAttachment*)attachment;
-
-// --- Convenience methods for common Skeleton_* functions.
-- (void) updateWorldTransform;
-
-- (void) setToSetupPose;
-- (void) setBonesToSetupPose;
-- (void) setSlotsToSetupPose;
-
-/* Returns 0 if the bone was not found. */
-- (spBone*) findBone:(NSString*)boneName;
-
-/* Returns 0 if the slot was not found. */
-- (spSlot*) findSlot:(NSString*)slotName;
-
-/* Sets the skin used to look up attachments not found in the SkeletonData defaultSkin. Attachments from the new skin are
- * attached if the corresponding attachment from the old skin was attached. If there was no old skin, each slot's setup mode
- * attachment is attached from the new skin. Returns false if the skin was not found.
- * @param skin May be 0.*/
-- (bool) setSkin:(NSString*)skinName;
-
-/* Returns 0 if the slot or attachment was not found. */
-- (spAttachment*) getAttachment:(NSString*)slotName attachmentName:(NSString*)attachmentName;
-/* Returns false if the slot or attachment was not found. */
-- (bool) setAttachment:(NSString*)slotName attachmentName:(NSString*)attachmentName;
-
-@property (nonatomic, readonly) spSkeleton* skeleton;
-@property (nonatomic) bool debugSlots;
-@property (nonatomic) bool debugBones;
-@property (nonatomic) spBone* rootBone;
-
-@end

+ 0 - 370
spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.m

@@ -1,370 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import <spine/SkeletonRenderer.h>
-#import <spine/spine-cocos2d-iphone.h>
-#import <spine/extension.h>
-#import <spine/PolygonBatch.h>
-
-static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0};
-
-@interface SkeletonRenderer (Private)
-- (void) initialize:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData;
-@end
-
-@implementation SkeletonRenderer
-
-@synthesize skeleton = _skeleton;
-@synthesize rootBone = _rootBone;
-@synthesize debugSlots = _debugSlots;
-@synthesize debugBones = _debugBones;
-
-+ (id) skeletonWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData {
-	return [[[self alloc] initWithData:skeletonData ownsSkeletonData:ownsSkeletonData] autorelease];
-}
-
-+ (id) skeletonWithFile:(NSString*)skeletonDataFile atlas:(spAtlas*)atlas scale:(float)scale {
-	return [[[self alloc] initWithFile:skeletonDataFile atlas:atlas scale:scale] autorelease];
-}
-
-+ (id) skeletonWithFile:(NSString*)skeletonDataFile atlasFile:(NSString*)atlasFile scale:(float)scale {
-	return [[[self alloc] initWithFile:skeletonDataFile atlasFile:atlasFile scale:scale] autorelease];
-}
-
-- (void) initialize:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData {
-	_ownsSkeletonData = ownsSkeletonData;
-
-	worldVertices = MALLOC(float, 1000); // Max number of vertices per mesh.
-
-	batch = [[spPolygonBatch createWithCapacity:2000] retain]; // Max number of vertices and triangles per batch.
-
-	_skeleton = spSkeleton_create(skeletonData);
-	_rootBone = _skeleton->bones[0];
-
-	_blendFunc.src = GL_ONE;
-	_blendFunc.dst = GL_ONE_MINUS_SRC_ALPHA;
-	[self setOpacityModifyRGB:YES];
-
-	[self setShaderProgram:[[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTextureColor]];
-	[self scheduleUpdate];
-}
-
-- (id) initWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData {
-	NSAssert(skeletonData, @"skeletonData cannot be null.");
-
-	self = [super init];
-	if (!self) return nil;
-
-	[self initialize:skeletonData ownsSkeletonData:ownsSkeletonData];
-
-	return self;
-}
-
-- (id) initWithFile:(NSString*)skeletonDataFile atlas:(spAtlas*)atlas scale:(float)scale {
-	self = [super init];
-	if (!self) return nil;
-
-	spSkeletonJson* json = spSkeletonJson_create(atlas);
-	json->scale = scale;
-	spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, [skeletonDataFile UTF8String]);
-	NSAssert(skeletonData, ([NSString stringWithFormat:@"Error reading skeleton data file: %@\nError: %s", skeletonDataFile, json->error]));
-	spSkeletonJson_dispose(json);
-	if (!skeletonData) return 0;
-
-	[self initialize:skeletonData ownsSkeletonData:YES];
-
-	return self;
-}
-
-- (id) initWithFile:(NSString*)skeletonDataFile atlasFile:(NSString*)atlasFile scale:(float)scale {
-	self = [super init];
-	if (!self) return nil;
-
-	_atlas = spAtlas_createFromFile([atlasFile UTF8String], 0);
-	NSAssert(_atlas, ([NSString stringWithFormat:@"Error reading atlas file: %@", atlasFile]));
-	if (!_atlas) return 0;
-
-	spSkeletonJson* json = spSkeletonJson_create(_atlas);
-	json->scale = scale;
-	spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, [skeletonDataFile UTF8String]);
-	NSAssert(skeletonData, ([NSString stringWithFormat:@"Error reading skeleton data file: %@\nError: %s", skeletonDataFile, json->error]));
-	spSkeletonJson_dispose(json);
-	if (!skeletonData) return 0;
-
-	[self initialize:skeletonData ownsSkeletonData:YES];
-
-	return self;
-}
-
-- (void) dealloc {
-	if (_ownsSkeletonData) spSkeletonData_dispose(_skeleton->data);
-	if (_atlas) spAtlas_dispose(_atlas);
-	spSkeleton_dispose(_skeleton);
-	[batch release];
-	FREE(worldVertices);
-	[super dealloc];
-}
-
-- (void) draw {
-	CC_NODE_DRAW_SETUP();
-	ccGLBindVAO(0);
-
-	ccColor3B nodeColor = self.color;
-	_skeleton->r = nodeColor.r / (float)255;
-	_skeleton->g = nodeColor.g / (float)255;
-	_skeleton->b = nodeColor.b / (float)255;
-	_skeleton->a = self.opacity / (float)255;
-
-	int blendMode = -1;
-	ccColor4B color;
-	const float* uvs = 0;
-	int verticesCount = 0;
-	const int* triangles = 0;
-	int trianglesCount = 0;
-	float r = 0, g = 0, b = 0, a = 0;
-	for (int i = 0, n = _skeleton->slotsCount; i < n; i++) {
-		spSlot* slot = _skeleton->drawOrder[i];
-		if (!slot->attachment) continue;
-		CCTexture2D *texture = 0;
-		switch (slot->attachment->type) {
-		case SP_ATTACHMENT_REGION: {
-			spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment;
-			spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices);
-			texture = [self getTextureForRegion:attachment];
-			uvs = attachment->uvs;
-			verticesCount = 8;
-			triangles = quadTriangles;
-			trianglesCount = 6;
-			r = attachment->r;
-			g = attachment->g;
-			b = attachment->b;
-			a = attachment->a;
-			break;
-		}
-		case SP_ATTACHMENT_MESH: {
-			spMeshAttachment* attachment = (spMeshAttachment*)slot->attachment;
-			spMeshAttachment_computeWorldVertices(attachment, slot, worldVertices);
-			texture = [self getTextureForMesh:attachment];
-			uvs = attachment->uvs;
-			verticesCount = attachment->verticesCount;
-			triangles = attachment->triangles;
-			trianglesCount = attachment->trianglesCount;
-			r = attachment->r;
-			g = attachment->g;
-			b = attachment->b;
-			a = attachment->a;
-			break;
-		}
-		case SP_ATTACHMENT_WEIGHTED_MESH: {
-			spWeightedMeshAttachment* attachment = (spWeightedMeshAttachment*)slot->attachment;
-			spWeightedMeshAttachment_computeWorldVertices(attachment, slot, worldVertices);
-			texture = [self getTextureForWeightedMesh:attachment];
-			uvs = attachment->uvs;
-			verticesCount = attachment->uvsCount;
-			triangles = attachment->triangles;
-			trianglesCount = attachment->trianglesCount;
-			r = attachment->r;
-			g = attachment->g;
-			b = attachment->b;
-			a = attachment->a;
-			break;
-		}
-		default: ;
-		}
-		if (texture) {
-			if (slot->data->blendMode != blendMode) {
-				[batch flush];
-				blendMode = slot->data->blendMode;
-				switch (slot->data->blendMode) {
-				case SP_BLEND_MODE_ADDITIVE:
-					ccGLBlendFunc(_premultipliedAlpha ? GL_ONE : GL_SRC_ALPHA, GL_ONE);
-					break;
-				case SP_BLEND_MODE_MULTIPLY:
-					ccGLBlendFunc(GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA);
-					break;
-				case SP_BLEND_MODE_SCREEN:
-					ccGLBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR);
-					break;
-				default:
-					ccGLBlendFunc(_premultipliedAlpha ? GL_ONE : GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-				}
-			}
-			color.a = _skeleton->a * slot->a * a * 255;
-			float multiplier = _premultipliedAlpha ? color.a : 255;
-			color.r = _skeleton->r * slot->r * r * multiplier;
-			color.g = _skeleton->g * slot->g * g * multiplier;
-			color.b = _skeleton->b * slot->b * b * multiplier;
-			[batch add:texture vertices:worldVertices uvs:uvs verticesCount:verticesCount
-				triangles:triangles trianglesCount:trianglesCount color:&color];
-		}
-	}
-	[batch flush];
-
-	if (_debugSlots) {
-		// Slots.
-		ccDrawColor4B(0, 0, 255, 255);
-		glLineWidth(1);
-		CGPoint points[4];
-		for (int i = 0, n = _skeleton->slotsCount; i < n; i++) {
-			spSlot* slot = _skeleton->drawOrder[i];
-			if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue;
-			spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment;
-			spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices);
-			points[0] = ccp(worldVertices[0], worldVertices[1]);
-			points[1] = ccp(worldVertices[2], worldVertices[3]);
-			points[2] = ccp(worldVertices[4], worldVertices[5]);
-			points[3] = ccp(worldVertices[6], worldVertices[7]);
-			ccDrawPoly(points, 4, true);
-		}
-	}
-	if (_debugBones) {
-		// Bone lengths.
-		glLineWidth(2);
-		ccDrawColor4B(255, 0, 0, 255);
-		for (int i = 0, n = _skeleton->bonesCount; i < n; i++) {
-			spBone *bone = _skeleton->bones[i];
-			float x = bone->data->length * bone->a + bone->worldX;
-			float y = bone->data->length * bone->c + bone->worldY;
-			ccDrawLine(ccp(bone->worldX, bone->worldY), ccp(x, y));
-		}
-		// Bone origins.
-		ccPointSize(4);
-		ccDrawColor4B(0, 0, 255, 255); // Root bone is blue.
-		for (int i = 0, n = _skeleton->bonesCount; i < n; i++) {
-			spBone *bone = _skeleton->bones[i];
-			ccDrawPoint(ccp(bone->worldX, bone->worldY));
-			if (i == 0) ccDrawColor4B(0, 255, 0, 255);
-		}
-	}
-}
-
-- (CCTexture2D*) getTextureForRegion:(spRegionAttachment*)attachment {
-	return (CCTexture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject;
-}
-
-- (CCTexture2D*) getTextureForMesh:(spMeshAttachment*)attachment {
-	return (CCTexture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject;
-}
-
-- (CCTexture2D*) getTextureForWeightedMesh:(spWeightedMeshAttachment*)attachment {
-	return (CCTexture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject;
-}
-
-- (CGRect) boundingBox {
-	float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN;
-	float scaleX = self.scaleX, scaleY = self.scaleY;
-	for (int i = 0; i < _skeleton->slotsCount; ++i) {
-		spSlot* slot = _skeleton->slots[i];
-		if (!slot->attachment) continue;
-		int verticesCount;
-		if (slot->attachment->type == SP_ATTACHMENT_REGION) {
-			spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment;
-			spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices);
-			verticesCount = 8;
-		} else if (slot->attachment->type == SP_ATTACHMENT_MESH) {
-			spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment;
-			spMeshAttachment_computeWorldVertices(mesh, slot, worldVertices);
-			verticesCount = mesh->verticesCount;
-		} else if (slot->attachment->type == SP_ATTACHMENT_WEIGHTED_MESH) {
-			spWeightedMeshAttachment* mesh = (spWeightedMeshAttachment*)slot->attachment;
-			spWeightedMeshAttachment_computeWorldVertices(mesh, slot, worldVertices);
-			verticesCount = mesh->uvsCount;
-		} else
-			continue;
-		for (int ii = 0; ii < verticesCount; ii += 2) {
-			float x = worldVertices[ii] * scaleX, y = worldVertices[ii + 1] * scaleY;
-			minX = min(minX, x);
-			minY = min(minY, y);
-			maxX = max(maxX, x);
-			maxY = max(maxY, y);
-		}
-	}
-	minX = self.position.x + minX;
-	minY = self.position.y + minY;
-	maxX = self.position.x + maxX;
-	maxY = self.position.y + maxY;
-	return CGRectMake(minX, minY, maxX - minX, maxY - minY);
-}
-
-// --- Convenience methods for Skeleton_* functions.
-
-- (void) updateWorldTransform {
-	spSkeleton_updateWorldTransform(_skeleton);
-}
-
-- (void) setToSetupPose {
-	spSkeleton_setToSetupPose(_skeleton);
-}
-- (void) setBonesToSetupPose {
-	spSkeleton_setBonesToSetupPose(_skeleton);
-}
-- (void) setSlotsToSetupPose {
-	spSkeleton_setSlotsToSetupPose(_skeleton);
-}
-
-- (spBone*) findBone:(NSString*)boneName {
-	return spSkeleton_findBone(_skeleton, [boneName UTF8String]);
-}
-
-- (spSlot*) findSlot:(NSString*)slotName {
-	return spSkeleton_findSlot(_skeleton, [slotName UTF8String]);
-}
-
-- (bool) setSkin:(NSString*)skinName {
-	return (bool)spSkeleton_setSkinByName(_skeleton, skinName ? [skinName UTF8String] : 0);
-}
-
-- (spAttachment*) getAttachment:(NSString*)slotName attachmentName:(NSString*)attachmentName {
-	return spSkeleton_getAttachmentForSlotName(_skeleton, [slotName UTF8String], [attachmentName UTF8String]);
-}
-- (bool) setAttachment:(NSString*)slotName attachmentName:(NSString*)attachmentName {
-	return (bool)spSkeleton_setAttachment(_skeleton, [slotName UTF8String], [attachmentName UTF8String]);
-}
-
-// --- CCBlendProtocol
-
-- (void) setBlendFunc:(ccBlendFunc)func {
-	self.blendFunc = func;
-}
-
-- (ccBlendFunc) blendFunc {
-	return _blendFunc;
-}
-
-- (void) setOpacityModifyRGB:(BOOL)value {
-	_premultipliedAlpha = value;
-}
-
-- (BOOL) doesOpacityModifyRGB {
-	return _premultipliedAlpha;
-}
-
-@end

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

@@ -1,49 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import <spine/spine-cocos2d-iphone.h>
-#import <spine/extension.h>
-
-void _spAtlasPage_createTexture (spAtlasPage* self, const char* path) {
-	CCTexture2D* texture = [[[CCTextureCache sharedTextureCache] addImage:@(path)] retain];
-	self->rendererObject = texture;
-	CGSize size = texture.contentSizeInPixels;
-	self->width = size.width;
-	self->height = size.height;
-}
-
-void _spAtlasPage_disposeTexture (spAtlasPage* self) {
-	[(CCTexture2D*)self->rendererObject release];
-}
-
-char* _spUtil_readFile (const char* path, int* length) {
-	return _readFile([[[CCFileUtils sharedFileUtils] fullPathForFilename:@(path)] UTF8String], length);
-}

+ 0 - 34
spine-cocos2d-iphone/3/README.md

@@ -1,34 +0,0 @@
-# spine-cocos2d-iphone v3.0
-
-The spine-cocos2d-iphone runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-iphone](http://www.cocos2d-iphone.org/). spine-cocos2d-iphone is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c).
-
-## Licensing
-
-This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information.
-
-The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes.
-
-## Spine version
-
-spine-cocos2d-iphone v3 works with data exported from Spine 3.1.08. Updating spine-cocos2d-iphone v3 to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress.
-
-spine-cocos2d-iphone v3 supports all Spine features.
-
-spine-cocos2d-iphone v3 does not yet support loading the binary format.
-
-## Setup
-
-1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip).
-1. Place the contents of a cocos2d version 3.1 (or higher) distribution into the `spine-cocos2d-iphone/3/cocos2d` directory.
-1. Open the Xcode project file for iOS or Mac from the `spine-cocos2d-iphone/3` directory.
-
-Alternatively, the contents of the `spine-c/src`, `spine-c/include` and `spine-cocos2d-iphone/3/src` directories can be copied into your project. Be sure your header search path will find the contents of the `spine-c/include` and `spine-cocos2d-iphone/3/src` directories. Note that the includes use `spine/Xxx.h`, so the `spine` directory cannot be omitted when copying the files.
-
-## Examples
-
-[Spineboy](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2d-iphone/3/example/SpineboyExample.m)
-[Golbins](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2d-iphone/3/example/GoblinsExample.m)
-
-## Links
-
-[podspec](https://github.com/ldomaradzki/spine-runtimes/blob/master/Spine-Cocos2d-iPhone.podspec) (maintained externally)

TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/[email protected]


TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/Default-Landscape~ipad.png


TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/Default.png


TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/[email protected]


TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/Icon-72.png


TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/Icon-Small-50.png


TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/Icon-Small.png


TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/[email protected]


TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/Icon.png


TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/[email protected]


+ 0 - 11
spine-cocos2d-iphone/3/Resources-ios/Prefix.pch

@@ -1,11 +0,0 @@
-
-#import <Availability.h>
-
-#ifndef __IPHONE_3_0
-#warning "This project uses features only available in iPhone SDK 3.0 and later."
-#endif
-
-#ifdef __OBJC__
-#import <UIKit/UIKit.h>
-#import <Foundation/Foundation.h>
-#endif

TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-ios/iTunesArtwork


+ 0 - 2
spine-cocos2d-iphone/3/Resources-mac/English.lproj/InfoPlist.strings

@@ -1,2 +0,0 @@
-/* Localized versions of Info.plist keys */
-

+ 0 - 896
spine-cocos2d-iphone/3/Resources-mac/English.lproj/MainMenu.xib

@@ -1,896 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
-	<data>
-		<int key="IBDocument.SystemTarget">1060</int>
-		<string key="IBDocument.SystemVersion">10K549</string>
-		<string key="IBDocument.InterfaceBuilderVersion">1938</string>
-		<string key="IBDocument.AppKitVersion">1038.36</string>
-		<string key="IBDocument.HIToolboxVersion">461.00</string>
-		<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
-			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
-			<string key="NS.object.0">1938</string>
-		</object>
-		<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
-			<bool key="EncodedWithXMLCoder">YES</bool>
-			<string>NSOpenGLView</string>
-			<string>NSWindowTemplate</string>
-			<string>NSView</string>
-			<string>NSMenu</string>
-			<string>NSMenuItem</string>
-			<string>NSCustomObject</string>
-		</object>
-		<object class="NSArray" key="IBDocument.PluginDependencies">
-			<bool key="EncodedWithXMLCoder">YES</bool>
-			<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-		</object>
-		<object class="NSMutableDictionary" key="IBDocument.Metadata">
-			<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
-			<integer value="1" key="NS.object.0"/>
-		</object>
-		<object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
-			<bool key="EncodedWithXMLCoder">YES</bool>
-			<object class="NSCustomObject" id="1021">
-				<string key="NSClassName">NSApplication</string>
-			</object>
-			<object class="NSCustomObject" id="1014">
-				<string key="NSClassName">FirstResponder</string>
-			</object>
-			<object class="NSCustomObject" id="1050">
-				<string key="NSClassName">NSApplication</string>
-			</object>
-			<object class="NSMenu" id="649796088">
-				<string key="NSTitle">AMainMenu</string>
-				<object class="NSMutableArray" key="NSMenuItems">
-					<bool key="EncodedWithXMLCoder">YES</bool>
-					<object class="NSMenuItem" id="694149608">
-						<reference key="NSMenu" ref="649796088"/>
-						<string key="NSTitle">spine-cocos2d-iphone</string>
-						<string key="NSKeyEquiv"/>
-						<int key="NSKeyEquivModMask">1048576</int>
-						<int key="NSMnemonicLoc">2147483647</int>
-						<object class="NSCustomResource" key="NSOnImage" id="35465992">
-							<string key="NSClassName">NSImage</string>
-							<string key="NSResourceName">NSMenuCheckmark</string>
-						</object>
-						<object class="NSCustomResource" key="NSMixedImage" id="502551668">
-							<string key="NSClassName">NSImage</string>
-							<string key="NSResourceName">NSMenuMixedState</string>
-						</object>
-						<string key="NSAction">submenuAction:</string>
-						<object class="NSMenu" key="NSSubmenu" id="110575045">
-							<string key="NSTitle">spine-cocos2d-iphone</string>
-							<object class="NSMutableArray" key="NSMenuItems">
-								<bool key="EncodedWithXMLCoder">YES</bool>
-								<object class="NSMenuItem" id="238522557">
-									<reference key="NSMenu" ref="110575045"/>
-									<string key="NSTitle">About spine-cocos2d-iphone</string>
-									<string key="NSKeyEquiv"/>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="304266470">
-									<reference key="NSMenu" ref="110575045"/>
-									<bool key="NSIsDisabled">YES</bool>
-									<bool key="NSIsSeparator">YES</bool>
-									<string key="NSTitle"/>
-									<string key="NSKeyEquiv"/>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="609285721">
-									<reference key="NSMenu" ref="110575045"/>
-									<string key="NSTitle">Preferences…</string>
-									<string key="NSKeyEquiv">,</string>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="481834944">
-									<reference key="NSMenu" ref="110575045"/>
-									<bool key="NSIsDisabled">YES</bool>
-									<bool key="NSIsSeparator">YES</bool>
-									<string key="NSTitle"/>
-									<string key="NSKeyEquiv"/>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="1046388886">
-									<reference key="NSMenu" ref="110575045"/>
-									<string key="NSTitle">Services</string>
-									<string key="NSKeyEquiv"/>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-									<string key="NSAction">submenuAction:</string>
-									<object class="NSMenu" key="NSSubmenu" id="752062318">
-										<string key="NSTitle">Services</string>
-										<object class="NSMutableArray" key="NSMenuItems">
-											<bool key="EncodedWithXMLCoder">YES</bool>
-										</object>
-										<string key="NSName">_NSServicesMenu</string>
-									</object>
-								</object>
-								<object class="NSMenuItem" id="646227648">
-									<reference key="NSMenu" ref="110575045"/>
-									<bool key="NSIsDisabled">YES</bool>
-									<bool key="NSIsSeparator">YES</bool>
-									<string key="NSTitle"/>
-									<string key="NSKeyEquiv"/>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="755159360">
-									<reference key="NSMenu" ref="110575045"/>
-									<string key="NSTitle">Hide spine-cocos2d-iphone</string>
-									<string key="NSKeyEquiv">h</string>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="342932134">
-									<reference key="NSMenu" ref="110575045"/>
-									<string key="NSTitle">Hide Others</string>
-									<string key="NSKeyEquiv">h</string>
-									<int key="NSKeyEquivModMask">1572864</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="908899353">
-									<reference key="NSMenu" ref="110575045"/>
-									<string key="NSTitle">Show All</string>
-									<string key="NSKeyEquiv"/>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="1056857174">
-									<reference key="NSMenu" ref="110575045"/>
-									<bool key="NSIsDisabled">YES</bool>
-									<bool key="NSIsSeparator">YES</bool>
-									<string key="NSTitle"/>
-									<string key="NSKeyEquiv"/>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="632727374">
-									<reference key="NSMenu" ref="110575045"/>
-									<string key="NSTitle">Quit spine-cocos2d-iphone</string>
-									<string key="NSKeyEquiv">q</string>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-							</object>
-							<string key="NSName">_NSAppleMenu</string>
-						</object>
-					</object>
-					<object class="NSMenuItem" id="586577488">
-						<reference key="NSMenu" ref="649796088"/>
-						<string key="NSTitle">View</string>
-						<string key="NSKeyEquiv"/>
-						<int key="NSKeyEquivModMask">1048576</int>
-						<int key="NSMnemonicLoc">2147483647</int>
-						<reference key="NSOnImage" ref="35465992"/>
-						<reference key="NSMixedImage" ref="502551668"/>
-						<string key="NSAction">submenuAction:</string>
-						<object class="NSMenu" key="NSSubmenu" id="466310130">
-							<string key="NSTitle">View</string>
-							<object class="NSMutableArray" key="NSMenuItems">
-								<bool key="EncodedWithXMLCoder">YES</bool>
-								<object class="NSMenuItem" id="593943139">
-									<reference key="NSMenu" ref="466310130"/>
-									<string key="NSTitle">Toggle Full Screen</string>
-									<string key="NSKeyEquiv">f</string>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-							</object>
-						</object>
-					</object>
-					<object class="NSMenuItem" id="713487014">
-						<reference key="NSMenu" ref="649796088"/>
-						<string key="NSTitle">Window</string>
-						<string key="NSKeyEquiv"/>
-						<int key="NSKeyEquivModMask">1048576</int>
-						<int key="NSMnemonicLoc">2147483647</int>
-						<reference key="NSOnImage" ref="35465992"/>
-						<reference key="NSMixedImage" ref="502551668"/>
-						<string key="NSAction">submenuAction:</string>
-						<object class="NSMenu" key="NSSubmenu" id="835318025">
-							<string key="NSTitle">Window</string>
-							<object class="NSMutableArray" key="NSMenuItems">
-								<bool key="EncodedWithXMLCoder">YES</bool>
-								<object class="NSMenuItem" id="1011231497">
-									<reference key="NSMenu" ref="835318025"/>
-									<string key="NSTitle">Minimize</string>
-									<string key="NSKeyEquiv">m</string>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="575023229">
-									<reference key="NSMenu" ref="835318025"/>
-									<string key="NSTitle">Zoom</string>
-									<string key="NSKeyEquiv"/>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="299356726">
-									<reference key="NSMenu" ref="835318025"/>
-									<bool key="NSIsDisabled">YES</bool>
-									<bool key="NSIsSeparator">YES</bool>
-									<string key="NSTitle"/>
-									<string key="NSKeyEquiv"/>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-								<object class="NSMenuItem" id="625202149">
-									<reference key="NSMenu" ref="835318025"/>
-									<string key="NSTitle">Bring All to Front</string>
-									<string key="NSKeyEquiv"/>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-							</object>
-							<string key="NSName">_NSWindowsMenu</string>
-						</object>
-					</object>
-					<object class="NSMenuItem" id="448692316">
-						<reference key="NSMenu" ref="649796088"/>
-						<string key="NSTitle">Help</string>
-						<string key="NSKeyEquiv"/>
-						<int key="NSMnemonicLoc">2147483647</int>
-						<reference key="NSOnImage" ref="35465992"/>
-						<reference key="NSMixedImage" ref="502551668"/>
-						<string key="NSAction">submenuAction:</string>
-						<object class="NSMenu" key="NSSubmenu" id="992780483">
-							<string key="NSTitle">Help</string>
-							<object class="NSMutableArray" key="NSMenuItems">
-								<bool key="EncodedWithXMLCoder">YES</bool>
-								<object class="NSMenuItem" id="105068016">
-									<reference key="NSMenu" ref="992780483"/>
-									<string key="NSTitle">spine-cocos2d-iphone Help</string>
-									<string key="NSKeyEquiv">?</string>
-									<int key="NSKeyEquivModMask">1048576</int>
-									<int key="NSMnemonicLoc">2147483647</int>
-									<reference key="NSOnImage" ref="35465992"/>
-									<reference key="NSMixedImage" ref="502551668"/>
-								</object>
-							</object>
-							<string key="NSName">_NSHelpMenu</string>
-						</object>
-					</object>
-				</object>
-				<string key="NSName">_NSMainMenu</string>
-			</object>
-			<object class="NSWindowTemplate" id="972006081">
-				<int key="NSWindowStyleMask">15</int>
-				<int key="NSWindowBacking">2</int>
-				<string key="NSWindowRect">{{335, 435}, {580, 416}}</string>
-				<int key="NSWTFlags">1685585920</int>
-				<string key="NSWindowTitle">spine-cocos2d-iphone</string>
-				<string key="NSWindowClass">NSWindow</string>
-				<nil key="NSViewClass"/>
-				<object class="NSView" key="NSWindowView" id="439893737">
-					<reference key="NSNextResponder"/>
-					<int key="NSvFlags">256</int>
-					<object class="NSMutableArray" key="NSSubviews">
-						<bool key="EncodedWithXMLCoder">YES</bool>
-						<object class="NSOpenGLView" id="335206536">
-							<reference key="NSNextResponder" ref="439893737"/>
-							<int key="NSvFlags">1298</int>
-							<object class="NSPSMatrix" key="NSDrawMatrix"/>
-							<string key="NSFrame">{{0, 20}, {580, 396}}</string>
-							<reference key="NSSuperview" ref="439893737"/>
-							<reference key="NSWindow"/>
-							<reference key="NSNextKeyView"/>
-							<int key="NSViewLayerContentsRedrawPolicy">2</int>
-							<object class="NSOpenGLPixelFormat" key="NSPixelFormat">
-								<object class="NSMutableData" key="NSPixelAttributes">
-									<bytes key="NS.bytes">AAAABQAAAGAAAAAIAAAADwAAAAsAAAAIAAAAAA</bytes>
-								</object>
-							</object>
-						</object>
-					</object>
-					<string key="NSFrameSize">{580, 416}</string>
-					<reference key="NSSuperview"/>
-					<reference key="NSWindow"/>
-					<reference key="NSNextKeyView" ref="335206536"/>
-				</object>
-				<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
-				<string key="NSMaxSize">{1e+13, 1e+13}</string>
-			</object>
-			<object class="NSCustomObject" id="976324537">
-				<string key="NSClassName">spine_cocos2d_iphoneAppDelegate</string>
-			</object>
-			<object class="NSCustomObject" id="755631768">
-				<string key="NSClassName">NSFontManager</string>
-			</object>
-			<object class="NSMenuItem" id="313989180">
-				<string key="NSTitle">Item</string>
-				<string key="NSKeyEquiv"/>
-				<int key="NSMnemonicLoc">2147483647</int>
-				<reference key="NSOnImage" ref="35465992"/>
-				<reference key="NSMixedImage" ref="502551668"/>
-			</object>
-		</object>
-		<object class="IBObjectContainer" key="IBDocument.Objects">
-			<object class="NSMutableArray" key="connectionRecords">
-				<bool key="EncodedWithXMLCoder">YES</bool>
-				<object class="IBConnectionRecord">
-					<object class="IBActionConnection" key="connection">
-						<string key="label">terminate:</string>
-						<reference key="source" ref="1050"/>
-						<reference key="destination" ref="632727374"/>
-					</object>
-					<int key="connectionID">449</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBActionConnection" key="connection">
-						<string key="label">orderFrontStandardAboutPanel:</string>
-						<reference key="source" ref="1021"/>
-						<reference key="destination" ref="238522557"/>
-					</object>
-					<int key="connectionID">142</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">delegate</string>
-						<reference key="source" ref="1021"/>
-						<reference key="destination" ref="976324537"/>
-					</object>
-					<int key="connectionID">495</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBActionConnection" key="connection">
-						<string key="label">performMiniaturize:</string>
-						<reference key="source" ref="1014"/>
-						<reference key="destination" ref="1011231497"/>
-					</object>
-					<int key="connectionID">37</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBActionConnection" key="connection">
-						<string key="label">arrangeInFront:</string>
-						<reference key="source" ref="1014"/>
-						<reference key="destination" ref="625202149"/>
-					</object>
-					<int key="connectionID">39</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBActionConnection" key="connection">
-						<string key="label">performZoom:</string>
-						<reference key="source" ref="1014"/>
-						<reference key="destination" ref="575023229"/>
-					</object>
-					<int key="connectionID">240</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBActionConnection" key="connection">
-						<string key="label">hide:</string>
-						<reference key="source" ref="1014"/>
-						<reference key="destination" ref="755159360"/>
-					</object>
-					<int key="connectionID">367</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBActionConnection" key="connection">
-						<string key="label">hideOtherApplications:</string>
-						<reference key="source" ref="1014"/>
-						<reference key="destination" ref="342932134"/>
-					</object>
-					<int key="connectionID">368</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBActionConnection" key="connection">
-						<string key="label">unhideAllApplications:</string>
-						<reference key="source" ref="1014"/>
-						<reference key="destination" ref="908899353"/>
-					</object>
-					<int key="connectionID">370</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBActionConnection" key="connection">
-						<string key="label">showHelp:</string>
-						<reference key="source" ref="1014"/>
-						<reference key="destination" ref="105068016"/>
-					</object>
-					<int key="connectionID">493</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">window</string>
-						<reference key="source" ref="976324537"/>
-						<reference key="destination" ref="972006081"/>
-					</object>
-					<int key="connectionID">536</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBOutletConnection" key="connection">
-						<string key="label">glView</string>
-						<reference key="source" ref="976324537"/>
-						<reference key="destination" ref="335206536"/>
-					</object>
-					<int key="connectionID">537</int>
-				</object>
-				<object class="IBConnectionRecord">
-					<object class="IBActionConnection" key="connection">
-						<string key="label">toggleFullScreen:</string>
-						<reference key="source" ref="976324537"/>
-						<reference key="destination" ref="593943139"/>
-					</object>
-					<int key="connectionID">541</int>
-				</object>
-			</object>
-			<object class="IBMutableOrderedSet" key="objectRecords">
-				<object class="NSArray" key="orderedObjects">
-					<bool key="EncodedWithXMLCoder">YES</bool>
-					<object class="IBObjectRecord">
-						<int key="objectID">0</int>
-						<object class="NSArray" key="object" id="0">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-						</object>
-						<reference key="children" ref="1048"/>
-						<nil key="parent"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">-2</int>
-						<reference key="object" ref="1021"/>
-						<reference key="parent" ref="0"/>
-						<string key="objectName">File's Owner</string>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">-1</int>
-						<reference key="object" ref="1014"/>
-						<reference key="parent" ref="0"/>
-						<string key="objectName">First Responder</string>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">-3</int>
-						<reference key="object" ref="1050"/>
-						<reference key="parent" ref="0"/>
-						<string key="objectName">Application</string>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">29</int>
-						<reference key="object" ref="649796088"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="713487014"/>
-							<reference ref="694149608"/>
-							<reference ref="586577488"/>
-							<reference ref="448692316"/>
-						</object>
-						<reference key="parent" ref="0"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">19</int>
-						<reference key="object" ref="713487014"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="835318025"/>
-						</object>
-						<reference key="parent" ref="649796088"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">56</int>
-						<reference key="object" ref="694149608"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="110575045"/>
-						</object>
-						<reference key="parent" ref="649796088"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">57</int>
-						<reference key="object" ref="110575045"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="238522557"/>
-							<reference ref="755159360"/>
-							<reference ref="908899353"/>
-							<reference ref="632727374"/>
-							<reference ref="646227648"/>
-							<reference ref="609285721"/>
-							<reference ref="481834944"/>
-							<reference ref="304266470"/>
-							<reference ref="1046388886"/>
-							<reference ref="1056857174"/>
-							<reference ref="342932134"/>
-						</object>
-						<reference key="parent" ref="694149608"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">58</int>
-						<reference key="object" ref="238522557"/>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">134</int>
-						<reference key="object" ref="755159360"/>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">150</int>
-						<reference key="object" ref="908899353"/>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">136</int>
-						<reference key="object" ref="632727374"/>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">144</int>
-						<reference key="object" ref="646227648"/>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">129</int>
-						<reference key="object" ref="609285721"/>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">143</int>
-						<reference key="object" ref="481834944"/>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">236</int>
-						<reference key="object" ref="304266470"/>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">131</int>
-						<reference key="object" ref="1046388886"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="752062318"/>
-						</object>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">149</int>
-						<reference key="object" ref="1056857174"/>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">145</int>
-						<reference key="object" ref="342932134"/>
-						<reference key="parent" ref="110575045"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">130</int>
-						<reference key="object" ref="752062318"/>
-						<reference key="parent" ref="1046388886"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">24</int>
-						<reference key="object" ref="835318025"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="299356726"/>
-							<reference ref="625202149"/>
-							<reference ref="575023229"/>
-							<reference ref="1011231497"/>
-						</object>
-						<reference key="parent" ref="713487014"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">92</int>
-						<reference key="object" ref="299356726"/>
-						<reference key="parent" ref="835318025"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">5</int>
-						<reference key="object" ref="625202149"/>
-						<reference key="parent" ref="835318025"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">239</int>
-						<reference key="object" ref="575023229"/>
-						<reference key="parent" ref="835318025"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">23</int>
-						<reference key="object" ref="1011231497"/>
-						<reference key="parent" ref="835318025"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">295</int>
-						<reference key="object" ref="586577488"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="466310130"/>
-						</object>
-						<reference key="parent" ref="649796088"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">296</int>
-						<reference key="object" ref="466310130"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="593943139"/>
-						</object>
-						<reference key="parent" ref="586577488"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">371</int>
-						<reference key="object" ref="972006081"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="439893737"/>
-						</object>
-						<reference key="parent" ref="0"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">372</int>
-						<reference key="object" ref="439893737"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="335206536"/>
-						</object>
-						<reference key="parent" ref="972006081"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">420</int>
-						<reference key="object" ref="755631768"/>
-						<reference key="parent" ref="0"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">490</int>
-						<reference key="object" ref="448692316"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="992780483"/>
-						</object>
-						<reference key="parent" ref="649796088"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">491</int>
-						<reference key="object" ref="992780483"/>
-						<object class="NSMutableArray" key="children">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<reference ref="105068016"/>
-						</object>
-						<reference key="parent" ref="448692316"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">492</int>
-						<reference key="object" ref="105068016"/>
-						<reference key="parent" ref="992780483"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">494</int>
-						<reference key="object" ref="976324537"/>
-						<reference key="parent" ref="0"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">533</int>
-						<reference key="object" ref="335206536"/>
-						<reference key="parent" ref="439893737"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">538</int>
-						<reference key="object" ref="313989180"/>
-						<reference key="parent" ref="0"/>
-					</object>
-					<object class="IBObjectRecord">
-						<int key="objectID">540</int>
-						<reference key="object" ref="593943139"/>
-						<reference key="parent" ref="466310130"/>
-					</object>
-				</object>
-			</object>
-			<object class="NSMutableDictionary" key="flattenedProperties">
-				<bool key="EncodedWithXMLCoder">YES</bool>
-				<object class="NSArray" key="dict.sortedKeys">
-					<bool key="EncodedWithXMLCoder">YES</bool>
-					<string>-1.IBPluginDependency</string>
-					<string>-2.IBPluginDependency</string>
-					<string>-3.IBPluginDependency</string>
-					<string>129.IBPluginDependency</string>
-					<string>130.IBPluginDependency</string>
-					<string>131.IBPluginDependency</string>
-					<string>134.IBPluginDependency</string>
-					<string>136.IBPluginDependency</string>
-					<string>143.IBPluginDependency</string>
-					<string>144.IBPluginDependency</string>
-					<string>145.IBPluginDependency</string>
-					<string>149.IBPluginDependency</string>
-					<string>150.IBPluginDependency</string>
-					<string>19.IBPluginDependency</string>
-					<string>23.IBPluginDependency</string>
-					<string>236.IBPluginDependency</string>
-					<string>239.IBPluginDependency</string>
-					<string>24.IBPluginDependency</string>
-					<string>29.IBPluginDependency</string>
-					<string>295.IBPluginDependency</string>
-					<string>296.IBPluginDependency</string>
-					<string>371.IBPluginDependency</string>
-					<string>371.IBWindowTemplateEditedContentRect</string>
-					<string>371.NSWindowTemplate.visibleAtLaunch</string>
-					<string>372.IBPluginDependency</string>
-					<string>420.IBPluginDependency</string>
-					<string>490.IBPluginDependency</string>
-					<string>491.IBPluginDependency</string>
-					<string>492.IBPluginDependency</string>
-					<string>494.IBPluginDependency</string>
-					<string>5.IBPluginDependency</string>
-					<string>533.CustomClassName</string>
-					<string>533.IBPluginDependency</string>
-					<string>538.IBPluginDependency</string>
-					<string>540.IBPluginDependency</string>
-					<string>56.IBPluginDependency</string>
-					<string>57.IBPluginDependency</string>
-					<string>58.IBPluginDependency</string>
-					<string>92.IBPluginDependency</string>
-				</object>
-				<object class="NSMutableArray" key="dict.values">
-					<bool key="EncodedWithXMLCoder">YES</bool>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>{{395, 107}, {580, 416}}</string>
-					<integer value="1"/>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>CCGLView</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-					<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-				</object>
-			</object>
-			<object class="NSMutableDictionary" key="unlocalizedProperties">
-				<bool key="EncodedWithXMLCoder">YES</bool>
-				<reference key="dict.sortedKeys" ref="0"/>
-				<reference key="dict.values" ref="0"/>
-			</object>
-			<nil key="activeLocalization"/>
-			<object class="NSMutableDictionary" key="localizations">
-				<bool key="EncodedWithXMLCoder">YES</bool>
-				<reference key="dict.sortedKeys" ref="0"/>
-				<reference key="dict.values" ref="0"/>
-			</object>
-			<nil key="sourceID"/>
-			<int key="maxID">541</int>
-		</object>
-		<object class="IBClassDescriber" key="IBDocument.Classes">
-			<object class="NSMutableArray" key="referencedPartialClassDescriptions">
-				<bool key="EncodedWithXMLCoder">YES</bool>
-				<object class="IBPartialClassDescription">
-					<string key="className">MacGLView</string>
-					<string key="superclassName">NSOpenGLView</string>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/MacGLView.h</string>
-					</object>
-				</object>
-				<object class="IBPartialClassDescription">
-					<string key="className">spine_cocos2d_iphoneAppDelegate</string>
-					<string key="superclassName">NSObject</string>
-					<object class="NSMutableDictionary" key="actions">
-						<string key="NS.key.0">toggleFullScreen:</string>
-						<string key="NS.object.0">id</string>
-					</object>
-					<object class="NSMutableDictionary" key="actionInfosByName">
-						<string key="NS.key.0">toggleFullScreen:</string>
-						<object class="IBActionInfo" key="NS.object.0">
-							<string key="name">toggleFullScreen:</string>
-							<string key="candidateClassName">id</string>
-						</object>
-					</object>
-					<object class="NSMutableDictionary" key="outlets">
-						<bool key="EncodedWithXMLCoder">YES</bool>
-						<object class="NSArray" key="dict.sortedKeys">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>glView</string>
-							<string>window</string>
-						</object>
-						<object class="NSMutableArray" key="dict.values">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>MacGLView</string>
-							<string>NSWindow</string>
-						</object>
-					</object>
-					<object class="NSMutableDictionary" key="toOneOutletInfosByName">
-						<bool key="EncodedWithXMLCoder">YES</bool>
-						<object class="NSArray" key="dict.sortedKeys">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<string>glView</string>
-							<string>window</string>
-						</object>
-						<object class="NSMutableArray" key="dict.values">
-							<bool key="EncodedWithXMLCoder">YES</bool>
-							<object class="IBToOneOutletInfo">
-								<string key="name">glView</string>
-								<string key="candidateClassName">MacGLView</string>
-							</object>
-							<object class="IBToOneOutletInfo">
-								<string key="name">window</string>
-								<string key="candidateClassName">NSWindow</string>
-							</object>
-						</object>
-					</object>
-					<object class="IBClassDescriptionSource" key="sourceIdentifier">
-						<string key="majorKey">IBProjectSource</string>
-						<string key="minorKey">./Classes/spine_cocos2d_iphoneAppDelegate.h</string>
-					</object>
-				</object>
-			</object>
-		</object>
-		<int key="IBDocument.localizationMode">0</int>
-		<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
-		<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
-			<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
-			<integer value="3000" key="NS.object.0"/>
-		</object>
-		<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
-		<int key="IBDocument.defaultPropertyAccessControl">3</int>
-		<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
-			<bool key="EncodedWithXMLCoder">YES</bool>
-			<object class="NSArray" key="dict.sortedKeys">
-				<bool key="EncodedWithXMLCoder">YES</bool>
-				<string>NSMenuCheckmark</string>
-				<string>NSMenuMixedState</string>
-			</object>
-			<object class="NSMutableArray" key="dict.values">
-				<bool key="EncodedWithXMLCoder">YES</bool>
-				<string>{9, 8}</string>
-				<string>{7, 2}</string>
-			</object>
-		</object>
-	</data>
-</archive>

+ 0 - 4
spine-cocos2d-iphone/3/Resources-mac/Prefix.pch

@@ -1,4 +0,0 @@
-
-#ifdef __OBJC__
-    #import <Cocoa/Cocoa.h>
-#endif

TEMPAT SAMPAH
spine-cocos2d-iphone/3/Resources-mac/icon.icns


+ 0 - 8
spine-cocos2d-iphone/3/Resources-mac/main.m

@@ -1,8 +0,0 @@
-
-#import <Cocoa/Cocoa.h>
-#import "cocos2d.h"
-
-int main(int argc, char *argv[]) {
-	[CCGLView load_];
-    return NSApplicationMain(argc,  (const char **) argv);
-}

+ 0 - 7
spine-cocos2d-iphone/3/spine-cocos2d-iphone-ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
-   version = "1.0">
-   <FileRef
-      location = "self:spine-cocos2d-iphone-ios.xcodeproj">
-   </FileRef>
-</Workspace>

+ 0 - 88
spine-cocos2d-iphone/3/src/spine/SkeletonAnimation.h

@@ -1,88 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import <spine/spine.h>
-#import <spine/SkeletonRenderer.h>
-#import "cocos2d.h"
-
-@class SkeletonAnimation;
-
-typedef void(^spStartListener)(int trackIndex);
-typedef void(^spEndListener)(int trackIndex);
-typedef void(^spCompleteListener)(int trackIndex, int loopCount);
-typedef void(^spEventListener)(int trackIndex, spEvent* event);
-
-/** Draws an animated skeleton, providing an AnimationState for applying one or more animations and queuing animations to be
- * played later. */
-@interface SkeletonAnimation : SkeletonRenderer {
-	spAnimationState* _state;
-	bool _ownsAnimationStateData;
-	float _timeScale;
-
-	spStartListener _startListener;
-	spEndListener _endListener;
-	spCompleteListener _completeListener;
-	spEventListener _eventListener;
-}
-
-+ (id) skeletonWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData;
-+ (id) skeletonWithFile:(NSString*)skeletonDataFile atlas:(spAtlas*)atlas scale:(float)scale;
-+ (id) skeletonWithFile:(NSString*)skeletonDataFile atlasFile:(NSString*)atlasFile scale:(float)scale;
-
-- (id) initWithData:(spSkeletonData*)skeletonData ownsSkeletonData:(bool)ownsSkeletonData;
-- (id) initWithFile:(NSString*)skeletonDataFile atlas:(spAtlas*)atlas scale:(float)scale;
-- (id) initWithFile:(NSString*)skeletonDataFile atlasFile:(NSString*)atlasFile scale:(float)scale;
-
-- (void) setAnimationStateData:(spAnimationStateData*)stateData;
-- (void) setMixFrom:(NSString*)fromAnimation to:(NSString*)toAnimation duration:(float)duration;
-
-- (spTrackEntry*) setAnimationForTrack:(int)trackIndex name:(NSString*)name loop:(bool)loop;
-- (spTrackEntry*) addAnimationForTrack:(int)trackIndex name:(NSString*)name loop:(bool)loop afterDelay:(int)delay;
-- (spTrackEntry*) getCurrentForTrack:(int)trackIndex;
-- (void) clearTracks;
-- (void) clearTrack:(int)trackIndex;
-
-- (void) setListenerForEntry:(spTrackEntry*)entry onStart:(spStartListener)listener;
-- (void) setListenerForEntry:(spTrackEntry*)entry onEnd:(spEndListener)listener;
-- (void) setListenerForEntry:(spTrackEntry*)entry onComplete:(spCompleteListener)listener;
-- (void) setListenerForEntry:(spTrackEntry*)entry onEvent:(spEventListener)listener;
-
-- (void) onAnimationStateEvent:(int)trackIndex type:(spEventType)type event:(spEvent*)event loopCount:(int)loopCount;
-- (void) onTrackEntryEvent:(int)trackIndex type:(spEventType)type event:(spEvent*)event loopCount:(int)loopCount;
-
-@property (nonatomic, readonly) spAnimationState* state;
-@property (nonatomic) float timeScale;
-@property (nonatomic, copy) spStartListener startListener;
-@property (nonatomic, copy) spEndListener endListener;
-@property (nonatomic, copy) spCompleteListener completeListener;
-@property (nonatomic, copy) spEventListener eventListener;
-
-@end

+ 0 - 35
spine-cocos2d-iphone/3/src/spine/spine-cocos2d-iphone.h

@@ -1,35 +0,0 @@
-/******************************************************************************
- * Spine Runtimes Software License
- * Version 2.3
- * 
- * Copyright (c) 2013-2015, Esoteric Software
- * All rights reserved.
- * 
- * You are granted a perpetual, non-exclusive, non-sublicensable and
- * non-transferable license to use, install, execute and perform the Spine
- * Runtimes Software (the "Software") and derivative works solely for personal
- * or internal use. Without the written permission of Esoteric Software (see
- * Section 2 of the Spine Software License Agreement), you may not (a) modify,
- * translate, adapt or otherwise create derivative works, improvements of the
- * Software or develop new applications using the Software or (b) remove,
- * delete, alter or obscure any trademarks or any copyright, trademark, patent
- * or other intellectual property or proprietary rights notices on or in the
- * Software, including any copy thereof. Redistributions in binary or source
- * form must include this license and terms.
- * 
- * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
- * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *****************************************************************************/
-
-#import <spine/spine.h>
-#import "cocos2d.h"
-#import <spine/SkeletonRenderer.h>
-#import <spine/SkeletonAnimation.h>

+ 5 - 0
spine-cocos2d-objc/CMakeLists.txt

@@ -0,0 +1,5 @@
+set(COCOS2D_DIR "${CMAKE_CURRENT_LIST_DIR}")
+if (NOT EXISTS ${COCOS2D_DIR}/cocos2d)
+	execute_process(COMMAND git clone --recursive https://github.com/cocos2d/cocos2d-objc cocos2d
+					WORKING_DIRECTORY ${COCOS2D_DIR}) 
+endif()

+ 0 - 0
spine-cocos2d-iphone/2/LICENSE → spine-cocos2d-objc/LICENSE


+ 44 - 0
spine-cocos2d-objc/README.md

@@ -0,0 +1,44 @@
+# spine-cocos2d-objc
+
+The spine-cocos2d-objc runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using the latest [cocos2d-objc](http://cocos2d-objc.org/). spine-cocos2d-objc is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c).
+
+## Licensing
+
+This Spine Runtime may only be used for personal or internal use, typically to evaluate Spine before purchasing. If you would like to incorporate a Spine Runtime into your applications, distribute software containing a Spine Runtime, or modify a Spine Runtime, then you will need a valid [Spine license](https://esotericsoftware.com/spine-purchase). Please see the [Spine Runtimes Software License](https://github.com/EsotericSoftware/spine-runtimes/blob/master/LICENSE) for detailed information.
+
+The Spine Runtimes are developed with the intent to be used with data exported from Spine. By purchasing Spine, `Section 2` of the [Spine Software License](https://esotericsoftware.com/files/license.txt) grants the right to create and distribute derivative works of the Spine Runtimes.
+
+## Spine version
+
+spine-cocos2d-objc works with data exported from Spine version 3.2.01.
+
+spine-cocos2d-objc supports all Spine features.
+
+spine-cocos2d-objc does not yet support loading the binary format.
+
+## Usage
+
+1. Create a new cocos2d-obj project. See the [cocos2d-objc documentation](http://cocos2d-objc.org/started/) or have a look at the example in this repository.
+2. Download the Spine Runtimes source using git (`git clone https://github.com/esotericsoftware/spine-runtimes`) or download it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip)
+3. Add the sources from `spine-c/src/spine` and `spine-cocos2d-objc/src/spine` to your project
+4. Add the folders `spine-c/include` and `spine-cocos2d-objc/src` to your header search path. Note that includes are specified as `#inclue <spine/file.h>`, so the `spine` directory cannot be omitted when copying the source files.
+
+See the [Spine Runtimes documentation](http://esotericsoftware.com/spine-documentation#runtimesTitle) on how to use the APIs or check out the Spine cocos2d-objc example.
+
+## Examples
+
+The Spine cocos2d-objc example works on iOS simulators and devices.
+
+### iOS
+1. Install [Xcode](https://developer.apple.com/xcode/)
+2. Install [Homebrew](http://brew.sh/)
+3. Open a terminal and install CMake via `brew install cmake`
+3. Download the Spine Runtimes repository using git (`git clone https://github.com/esotericsoftware/spine-runtimes`) or download it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip)
+4. Open a terminal, and `cd` into the `spine-runtimes/spine-cocos2d-objc` folder
+5. Type `mkdir build && cd build && cmake ../..`, this will download the cocos2d-objc dependency
+6. Open the Xcode project in `spine-runtimes/spine-cocos2d-objc/spine-cocos2d-objc.xcodeproj/`
+7. In Xcode, click the `Run` button or type `CMD+R` to run the example on the simulator
+
+## Links
+
+[podspec](https://github.com/ldomaradzki/spine-runtimes/blob/master/Spine-Cocos2d-iPhone.podspec) (maintained externally)

+ 0 - 0
spine-cocos2d-iphone/3/Resources-ios/AppDelegate.h → spine-cocos2d-objc/Resources-ios/AppDelegate.h


+ 0 - 0
spine-cocos2d-iphone/3/Resources-ios/AppDelegate.m → spine-cocos2d-objc/Resources-ios/AppDelegate.m


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/[email protected] → spine-cocos2d-objc/Resources-ios/[email protected]


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/Default-Landscape~ipad.png → spine-cocos2d-objc/Resources-ios/Default-Landscape~ipad.png


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/Default.png → spine-cocos2d-objc/Resources-ios/Default.png


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/[email protected] → spine-cocos2d-objc/Resources-ios/[email protected]


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/Icon-72.png → spine-cocos2d-objc/Resources-ios/Icon-72.png


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/Icon-Small-50.png → spine-cocos2d-objc/Resources-ios/Icon-Small-50.png


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/Icon-Small.png → spine-cocos2d-objc/Resources-ios/Icon-Small.png


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/[email protected] → spine-cocos2d-objc/Resources-ios/[email protected]


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/Icon.png → spine-cocos2d-objc/Resources-ios/Icon.png


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/[email protected] → spine-cocos2d-objc/Resources-ios/[email protected]


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/Info.plist → spine-cocos2d-objc/Resources-ios/Info.plist


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/Prefix.pch → spine-cocos2d-objc/Resources-ios/Prefix.pch


+ 0 - 0
spine-cocos2d-iphone/2/Resources-ios/iTunesArtwork → spine-cocos2d-objc/Resources-ios/iTunesArtwork


+ 0 - 0
spine-cocos2d-iphone/3/Resources-ios/main.m → spine-cocos2d-objc/Resources-ios/main.m


+ 0 - 0
spine-cocos2d-iphone/3/Resources-mac/AppDelegate.h → spine-cocos2d-objc/Resources-mac/AppDelegate.h


+ 0 - 0
spine-cocos2d-iphone/3/Resources-mac/AppDelegate.m → spine-cocos2d-objc/Resources-mac/AppDelegate.m


+ 0 - 0
spine-cocos2d-iphone/2/Resources-mac/English.lproj/InfoPlist.strings → spine-cocos2d-objc/Resources-mac/English.lproj/InfoPlist.strings


+ 0 - 0
spine-cocos2d-iphone/2/Resources-mac/English.lproj/MainMenu.xib → spine-cocos2d-objc/Resources-mac/English.lproj/MainMenu.xib


+ 0 - 0
spine-cocos2d-iphone/2/Resources-mac/Info.plist → spine-cocos2d-objc/Resources-mac/Info.plist


+ 0 - 0
spine-cocos2d-iphone/2/Resources-mac/Prefix.pch → spine-cocos2d-objc/Resources-mac/Prefix.pch


+ 0 - 0
spine-cocos2d-iphone/2/Resources-mac/icon.icns → spine-cocos2d-objc/Resources-mac/icon.icns


+ 0 - 0
spine-cocos2d-iphone/2/Resources-mac/main.m → spine-cocos2d-objc/Resources-mac/main.m


+ 0 - 0
spine-cocos2d-iphone/2/Resources/goblins-mesh.atlas → spine-cocos2d-objc/Resources/goblins-mesh.atlas


+ 0 - 0
spine-cocos2d-iphone/2/Resources/goblins-mesh.json → spine-cocos2d-objc/Resources/goblins-mesh.json


+ 0 - 0
spine-cocos2d-iphone/2/Resources/goblins-mesh.png → spine-cocos2d-objc/Resources/goblins-mesh.png


+ 0 - 0
spine-c/data/spineboy.atlas → spine-cocos2d-objc/Resources/spineboy.atlas


+ 0 - 0
spine-cocos2d-iphone/2/Resources/spineboy.json → spine-cocos2d-objc/Resources/spineboy.json


+ 0 - 0
spine-cocos2d-iphone/2/Resources/spineboy.png → spine-cocos2d-objc/Resources/spineboy.png


+ 1 - 1
spine-cocos2d-iphone/3/example/GoblinsExample.h → spine-cocos2d-objc/example/GoblinsExample.h

@@ -30,7 +30,7 @@
  *****************************************************************************/
  *****************************************************************************/
 
 
 #import "cocos2d.h"
 #import "cocos2d.h"
-#import <spine/spine-cocos2d-iphone.h>
+#import <spine/spine-cocos2d-objc.h>
 
 
 @interface GoblinsExample : CCNode {
 @interface GoblinsExample : CCNode {
 	SkeletonAnimation* skeletonNode;
 	SkeletonAnimation* skeletonNode;

+ 0 - 0
spine-cocos2d-iphone/3/example/GoblinsExample.m → spine-cocos2d-objc/example/GoblinsExample.m


+ 1 - 1
spine-cocos2d-iphone/3/example/SpineboyExample.h → spine-cocos2d-objc/example/SpineboyExample.h

@@ -30,7 +30,7 @@
  *****************************************************************************/
  *****************************************************************************/
 
 
 #import "cocos2d.h"
 #import "cocos2d.h"
-#import <spine/spine-cocos2d-iphone.h>
+#import <spine/spine-cocos2d-objc.h>
 
 
 @interface SpineboyExample : CCNode {
 @interface SpineboyExample : CCNode {
 	SkeletonAnimation* skeletonNode;
 	SkeletonAnimation* skeletonNode;

+ 0 - 0
spine-cocos2d-iphone/3/example/SpineboyExample.m → spine-cocos2d-objc/example/SpineboyExample.m


+ 71 - 71
spine-cocos2d-iphone/3/spine-cocos2d-iphone-ios.xcodeproj/project.pbxproj → spine-cocos2d-objc/spine-cocos2d-objc.xcodeproj/project.pbxproj

@@ -12,7 +12,7 @@
 		431FF7F51C735D8D00D52DF2 /* WeightedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7F21C735D8D00D52DF2 /* WeightedMeshAttachment.c */; };
 		431FF7F51C735D8D00D52DF2 /* WeightedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7F21C735D8D00D52DF2 /* WeightedMeshAttachment.c */; };
 		43B7CC0919DC4ACD0031321C /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B7CC0719DC4ACD0031321C /* IkConstraint.c */; };
 		43B7CC0919DC4ACD0031321C /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B7CC0719DC4ACD0031321C /* IkConstraint.c */; };
 		43B7CC0A19DC4ACD0031321C /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B7CC0819DC4ACD0031321C /* IkConstraintData.c */; };
 		43B7CC0A19DC4ACD0031321C /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B7CC0819DC4ACD0031321C /* IkConstraintData.c */; };
-		43C3282F170B0C19004A9460 /* spine-cocos2d-iphone.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C3282D170B0C19004A9460 /* spine-cocos2d-iphone.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+		43C3282F170B0C19004A9460 /* spine-cocos2d-objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C3282D170B0C19004A9460 /* spine-cocos2d-objc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
 		43C3286C170B0DA6004A9460 /* spineboy.json in Resources */ = {isa = PBXBuildFile; fileRef = 43C32868170B0DA6004A9460 /* spineboy.json */; };
 		43C3286C170B0DA6004A9460 /* spineboy.json in Resources */ = {isa = PBXBuildFile; fileRef = 43C32868170B0DA6004A9460 /* spineboy.json */; };
 		43C3286E170B0DA6004A9460 /* spineboy.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 43C3286A170B0DA6004A9460 /* spineboy.atlas */; };
 		43C3286E170B0DA6004A9460 /* spineboy.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 43C3286A170B0DA6004A9460 /* spineboy.atlas */; };
 		43C3286F170B0DA6004A9460 /* spineboy.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C3286B170B0DA6004A9460 /* spineboy.png */; };
 		43C3286F170B0DA6004A9460 /* spineboy.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C3286B170B0DA6004A9460 /* spineboy.png */; };
@@ -112,18 +112,18 @@
 /* End PBXContainerItemProxy section */
 /* End PBXContainerItemProxy section */
 
 
 /* Begin PBXFileReference section */
 /* Begin PBXFileReference section */
-		431FF7ED1C735D7A00D52DF2 /* TransformConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraint.h; path = "../../spine-c/include/spine/TransformConstraint.h"; sourceTree = "<group>"; };
-		431FF7EE1C735D7A00D52DF2 /* TransformConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraintData.h; path = "../../spine-c/include/spine/TransformConstraintData.h"; sourceTree = "<group>"; };
-		431FF7EF1C735D7A00D52DF2 /* WeightedMeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WeightedMeshAttachment.h; path = "../../spine-c/include/spine/WeightedMeshAttachment.h"; sourceTree = "<group>"; };
-		431FF7F01C735D8D00D52DF2 /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../../spine-c/src/spine/TransformConstraint.c"; sourceTree = "<group>"; };
-		431FF7F11C735D8D00D52DF2 /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../../spine-c/src/spine/TransformConstraintData.c"; sourceTree = "<group>"; };
-		431FF7F21C735D8D00D52DF2 /* WeightedMeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = WeightedMeshAttachment.c; path = "../../spine-c/src/spine/WeightedMeshAttachment.c"; sourceTree = "<group>"; };
-		43B7CC0719DC4ACD0031321C /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../../spine-c/src/spine/IkConstraint.c"; sourceTree = "<group>"; };
-		43B7CC0819DC4ACD0031321C /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../../spine-c/src/spine/IkConstraintData.c"; sourceTree = "<group>"; };
-		43B7CC0D19DC4AE30031321C /* IkConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraint.h; path = "../../spine-c/include/spine/IkConstraint.h"; sourceTree = "<group>"; };
-		43B7CC0E19DC4AE30031321C /* IkConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraintData.h; path = "../../spine-c/include/spine/IkConstraintData.h"; sourceTree = "<group>"; };
-		43C3282D170B0C19004A9460 /* spine-cocos2d-iphone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "spine-cocos2d-iphone.m"; path = "src/spine/spine-cocos2d-iphone.m"; sourceTree = "<group>"; };
-		43C3282E170B0C19004A9460 /* spine-cocos2d-iphone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "spine-cocos2d-iphone.h"; path = "src/spine/spine-cocos2d-iphone.h"; sourceTree = "<group>"; };
+		431FF7ED1C735D7A00D52DF2 /* TransformConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraint.h; path = "../spine-c/include/spine/TransformConstraint.h"; sourceTree = "<group>"; };
+		431FF7EE1C735D7A00D52DF2 /* TransformConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraintData.h; path = "../spine-c/include/spine/TransformConstraintData.h"; sourceTree = "<group>"; };
+		431FF7EF1C735D7A00D52DF2 /* WeightedMeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WeightedMeshAttachment.h; path = "../spine-c/include/spine/WeightedMeshAttachment.h"; sourceTree = "<group>"; };
+		431FF7F01C735D8D00D52DF2 /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../spine-c/src/spine/TransformConstraint.c"; sourceTree = "<group>"; };
+		431FF7F11C735D8D00D52DF2 /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../spine-c/src/spine/TransformConstraintData.c"; sourceTree = "<group>"; };
+		431FF7F21C735D8D00D52DF2 /* WeightedMeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = WeightedMeshAttachment.c; path = "../spine-c/src/spine/WeightedMeshAttachment.c"; sourceTree = "<group>"; };
+		43B7CC0719DC4ACD0031321C /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../spine-c/src/spine/IkConstraint.c"; sourceTree = "<group>"; };
+		43B7CC0819DC4ACD0031321C /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../spine-c/src/spine/IkConstraintData.c"; sourceTree = "<group>"; };
+		43B7CC0D19DC4AE30031321C /* IkConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraint.h; path = "../spine-c/include/spine/IkConstraint.h"; sourceTree = "<group>"; };
+		43B7CC0E19DC4AE30031321C /* IkConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraintData.h; path = "../spine-c/include/spine/IkConstraintData.h"; sourceTree = "<group>"; };
+		43C3282D170B0C19004A9460 /* spine-cocos2d-objc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "spine-cocos2d-objc.m"; path = "src/spine/spine-cocos2d-objc.m"; sourceTree = "<group>"; };
+		43C3282E170B0C19004A9460 /* spine-cocos2d-objc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "spine-cocos2d-objc.h"; path = "src/spine/spine-cocos2d-objc.h"; sourceTree = "<group>"; };
 		43C32868170B0DA6004A9460 /* spineboy.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = spineboy.json; path = Resources/spineboy.json; sourceTree = "<group>"; };
 		43C32868170B0DA6004A9460 /* spineboy.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = spineboy.json; path = Resources/spineboy.json; sourceTree = "<group>"; };
 		43C3286A170B0DA6004A9460 /* spineboy.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = spineboy.atlas; path = Resources/spineboy.atlas; sourceTree = "<group>"; };
 		43C3286A170B0DA6004A9460 /* spineboy.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = spineboy.atlas; path = Resources/spineboy.atlas; sourceTree = "<group>"; };
 		43C3286B170B0DA6004A9460 /* spineboy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = spineboy.png; path = Resources/spineboy.png; sourceTree = "<group>"; };
 		43C3286B170B0DA6004A9460 /* spineboy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = spineboy.png; path = Resources/spineboy.png; sourceTree = "<group>"; };
@@ -146,53 +146,53 @@
 		43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "goblins-mesh.atlas"; path = "Resources/goblins-mesh.atlas"; sourceTree = "<group>"; };
 		43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "goblins-mesh.atlas"; path = "Resources/goblins-mesh.atlas"; sourceTree = "<group>"; };
 		43F7010D1927FBC700CA4038 /* goblins-mesh.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "goblins-mesh.json"; path = "Resources/goblins-mesh.json"; sourceTree = "<group>"; };
 		43F7010D1927FBC700CA4038 /* goblins-mesh.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "goblins-mesh.json"; path = "Resources/goblins-mesh.json"; sourceTree = "<group>"; };
 		43F7010E1927FBC700CA4038 /* goblins-mesh.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "goblins-mesh.png"; path = "Resources/goblins-mesh.png"; sourceTree = "<group>"; };
 		43F7010E1927FBC700CA4038 /* goblins-mesh.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "goblins-mesh.png"; path = "Resources/goblins-mesh.png"; sourceTree = "<group>"; };
-		43F7FF381927F91900CA4038 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../../spine-c/src/spine/Animation.c"; sourceTree = "<group>"; };
-		43F7FF391927F91900CA4038 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../../spine-c/src/spine/AnimationState.c"; sourceTree = "<group>"; };
-		43F7FF3A1927F91900CA4038 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../../spine-c/src/spine/AnimationStateData.c"; sourceTree = "<group>"; };
-		43F7FF3B1927F91900CA4038 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../../spine-c/src/spine/Atlas.c"; sourceTree = "<group>"; };
-		43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = "<group>"; };
-		43F7FF3D1927F91900CA4038 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../../spine-c/src/spine/Attachment.c"; sourceTree = "<group>"; };
-		43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../../spine-c/src/spine/AttachmentLoader.c"; sourceTree = "<group>"; };
-		43F7FF3F1927F91900CA4038 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../../spine-c/src/spine/Bone.c"; sourceTree = "<group>"; };
-		43F7FF401927F91900CA4038 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../../spine-c/src/spine/BoneData.c"; sourceTree = "<group>"; };
-		43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = "<group>"; };
-		43F7FF421927F91900CA4038 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../../spine-c/src/spine/Event.c"; sourceTree = "<group>"; };
-		43F7FF431927F91900CA4038 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../../spine-c/src/spine/EventData.c"; sourceTree = "<group>"; };
-		43F7FF441927F91900CA4038 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../../spine-c/src/spine/extension.c"; sourceTree = "<group>"; };
-		43F7FF451927F91900CA4038 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../../spine-c/src/spine/Json.c"; sourceTree = "<group>"; };
-		43F7FF461927F91900CA4038 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../../spine-c/src/spine/Json.h"; sourceTree = "<group>"; };
-		43F7FF471927F91900CA4038 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../../spine-c/src/spine/MeshAttachment.c"; sourceTree = "<group>"; };
-		43F7FF481927F91900CA4038 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../../spine-c/src/spine/RegionAttachment.c"; sourceTree = "<group>"; };
-		43F7FF491927F91900CA4038 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../../spine-c/src/spine/Skeleton.c"; sourceTree = "<group>"; };
-		43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../../spine-c/src/spine/SkeletonBounds.c"; sourceTree = "<group>"; };
-		43F7FF4B1927F91900CA4038 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../../spine-c/src/spine/SkeletonData.c"; sourceTree = "<group>"; };
-		43F7FF4C1927F91900CA4038 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../../spine-c/src/spine/SkeletonJson.c"; sourceTree = "<group>"; };
-		43F7FF4D1927F91900CA4038 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../../spine-c/src/spine/Skin.c"; sourceTree = "<group>"; };
-		43F7FF4F1927F91900CA4038 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../../spine-c/src/spine/Slot.c"; sourceTree = "<group>"; };
-		43F7FF501927F91900CA4038 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../../spine-c/src/spine/SlotData.c"; sourceTree = "<group>"; };
-		43F7FF691927F92500CA4038 /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animation.h; path = "../../spine-c/include/spine/Animation.h"; sourceTree = "<group>"; };
-		43F7FF6A1927F92500CA4038 /* AnimationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationState.h; path = "../../spine-c/include/spine/AnimationState.h"; sourceTree = "<group>"; };
-		43F7FF6B1927F92500CA4038 /* AnimationStateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationStateData.h; path = "../../spine-c/include/spine/AnimationStateData.h"; sourceTree = "<group>"; };
-		43F7FF6C1927F92500CA4038 /* Atlas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Atlas.h; path = "../../spine-c/include/spine/Atlas.h"; sourceTree = "<group>"; };
-		43F7FF6D1927F92500CA4038 /* AtlasAttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AtlasAttachmentLoader.h; path = "../../spine-c/include/spine/AtlasAttachmentLoader.h"; sourceTree = "<group>"; };
-		43F7FF6E1927F92500CA4038 /* Attachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Attachment.h; path = "../../spine-c/include/spine/Attachment.h"; sourceTree = "<group>"; };
-		43F7FF6F1927F92500CA4038 /* AttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttachmentLoader.h; path = "../../spine-c/include/spine/AttachmentLoader.h"; sourceTree = "<group>"; };
-		43F7FF701927F92500CA4038 /* Bone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bone.h; path = "../../spine-c/include/spine/Bone.h"; sourceTree = "<group>"; };
-		43F7FF711927F92500CA4038 /* BoneData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoneData.h; path = "../../spine-c/include/spine/BoneData.h"; sourceTree = "<group>"; };
-		43F7FF721927F92500CA4038 /* BoundingBoxAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoundingBoxAttachment.h; path = "../../spine-c/include/spine/BoundingBoxAttachment.h"; sourceTree = "<group>"; };
-		43F7FF731927F92500CA4038 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Event.h; path = "../../spine-c/include/spine/Event.h"; sourceTree = "<group>"; };
-		43F7FF741927F92500CA4038 /* EventData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EventData.h; path = "../../spine-c/include/spine/EventData.h"; sourceTree = "<group>"; };
-		43F7FF751927F92500CA4038 /* extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = extension.h; path = "../../spine-c/include/spine/extension.h"; sourceTree = "<group>"; };
-		43F7FF761927F92500CA4038 /* MeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeshAttachment.h; path = "../../spine-c/include/spine/MeshAttachment.h"; sourceTree = "<group>"; };
-		43F7FF771927F92500CA4038 /* RegionAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegionAttachment.h; path = "../../spine-c/include/spine/RegionAttachment.h"; sourceTree = "<group>"; };
-		43F7FF781927F92500CA4038 /* Skeleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skeleton.h; path = "../../spine-c/include/spine/Skeleton.h"; sourceTree = "<group>"; };
-		43F7FF791927F92500CA4038 /* SkeletonBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonBounds.h; path = "../../spine-c/include/spine/SkeletonBounds.h"; sourceTree = "<group>"; };
-		43F7FF7A1927F92500CA4038 /* SkeletonData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonData.h; path = "../../spine-c/include/spine/SkeletonData.h"; sourceTree = "<group>"; };
-		43F7FF7B1927F92500CA4038 /* SkeletonJson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonJson.h; path = "../../spine-c/include/spine/SkeletonJson.h"; sourceTree = "<group>"; };
-		43F7FF7C1927F92500CA4038 /* Skin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skin.h; path = "../../spine-c/include/spine/Skin.h"; sourceTree = "<group>"; };
-		43F7FF7E1927F92500CA4038 /* Slot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Slot.h; path = "../../spine-c/include/spine/Slot.h"; sourceTree = "<group>"; };
-		43F7FF7F1927F92500CA4038 /* SlotData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SlotData.h; path = "../../spine-c/include/spine/SlotData.h"; sourceTree = "<group>"; };
-		43F7FF801927F92500CA4038 /* spine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spine.h; path = "../../spine-c/include/spine/spine.h"; sourceTree = "<group>"; };
+		43F7FF381927F91900CA4038 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../spine-c/src/spine/Animation.c"; sourceTree = "<group>"; };
+		43F7FF391927F91900CA4038 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../spine-c/src/spine/AnimationState.c"; sourceTree = "<group>"; };
+		43F7FF3A1927F91900CA4038 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../spine-c/src/spine/AnimationStateData.c"; sourceTree = "<group>"; };
+		43F7FF3B1927F91900CA4038 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../spine-c/src/spine/Atlas.c"; sourceTree = "<group>"; };
+		43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = "<group>"; };
+		43F7FF3D1927F91900CA4038 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../spine-c/src/spine/Attachment.c"; sourceTree = "<group>"; };
+		43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../spine-c/src/spine/AttachmentLoader.c"; sourceTree = "<group>"; };
+		43F7FF3F1927F91900CA4038 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../spine-c/src/spine/Bone.c"; sourceTree = "<group>"; };
+		43F7FF401927F91900CA4038 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../spine-c/src/spine/BoneData.c"; sourceTree = "<group>"; };
+		43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = "<group>"; };
+		43F7FF421927F91900CA4038 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../spine-c/src/spine/Event.c"; sourceTree = "<group>"; };
+		43F7FF431927F91900CA4038 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../spine-c/src/spine/EventData.c"; sourceTree = "<group>"; };
+		43F7FF441927F91900CA4038 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../spine-c/src/spine/extension.c"; sourceTree = "<group>"; };
+		43F7FF451927F91900CA4038 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../spine-c/src/spine/Json.c"; sourceTree = "<group>"; };
+		43F7FF461927F91900CA4038 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../spine-c/src/spine/Json.h"; sourceTree = "<group>"; };
+		43F7FF471927F91900CA4038 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../spine-c/src/spine/MeshAttachment.c"; sourceTree = "<group>"; };
+		43F7FF481927F91900CA4038 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../spine-c/src/spine/RegionAttachment.c"; sourceTree = "<group>"; };
+		43F7FF491927F91900CA4038 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../spine-c/src/spine/Skeleton.c"; sourceTree = "<group>"; };
+		43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../spine-c/src/spine/SkeletonBounds.c"; sourceTree = "<group>"; };
+		43F7FF4B1927F91900CA4038 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../spine-c/src/spine/SkeletonData.c"; sourceTree = "<group>"; };
+		43F7FF4C1927F91900CA4038 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../spine-c/src/spine/SkeletonJson.c"; sourceTree = "<group>"; };
+		43F7FF4D1927F91900CA4038 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../spine-c/src/spine/Skin.c"; sourceTree = "<group>"; };
+		43F7FF4F1927F91900CA4038 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../spine-c/src/spine/Slot.c"; sourceTree = "<group>"; };
+		43F7FF501927F91900CA4038 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../spine-c/src/spine/SlotData.c"; sourceTree = "<group>"; };
+		43F7FF691927F92500CA4038 /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animation.h; path = "../spine-c/include/spine/Animation.h"; sourceTree = "<group>"; };
+		43F7FF6A1927F92500CA4038 /* AnimationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationState.h; path = "../spine-c/include/spine/AnimationState.h"; sourceTree = "<group>"; };
+		43F7FF6B1927F92500CA4038 /* AnimationStateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationStateData.h; path = "../spine-c/include/spine/AnimationStateData.h"; sourceTree = "<group>"; };
+		43F7FF6C1927F92500CA4038 /* Atlas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Atlas.h; path = "../spine-c/include/spine/Atlas.h"; sourceTree = "<group>"; };
+		43F7FF6D1927F92500CA4038 /* AtlasAttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AtlasAttachmentLoader.h; path = "../spine-c/include/spine/AtlasAttachmentLoader.h"; sourceTree = "<group>"; };
+		43F7FF6E1927F92500CA4038 /* Attachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Attachment.h; path = "../spine-c/include/spine/Attachment.h"; sourceTree = "<group>"; };
+		43F7FF6F1927F92500CA4038 /* AttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttachmentLoader.h; path = "../spine-c/include/spine/AttachmentLoader.h"; sourceTree = "<group>"; };
+		43F7FF701927F92500CA4038 /* Bone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bone.h; path = "../spine-c/include/spine/Bone.h"; sourceTree = "<group>"; };
+		43F7FF711927F92500CA4038 /* BoneData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoneData.h; path = "../spine-c/include/spine/BoneData.h"; sourceTree = "<group>"; };
+		43F7FF721927F92500CA4038 /* BoundingBoxAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoundingBoxAttachment.h; path = "../spine-c/include/spine/BoundingBoxAttachment.h"; sourceTree = "<group>"; };
+		43F7FF731927F92500CA4038 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Event.h; path = "../spine-c/include/spine/Event.h"; sourceTree = "<group>"; };
+		43F7FF741927F92500CA4038 /* EventData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EventData.h; path = "../spine-c/include/spine/EventData.h"; sourceTree = "<group>"; };
+		43F7FF751927F92500CA4038 /* extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = extension.h; path = "../spine-c/include/spine/extension.h"; sourceTree = "<group>"; };
+		43F7FF761927F92500CA4038 /* MeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeshAttachment.h; path = "../spine-c/include/spine/MeshAttachment.h"; sourceTree = "<group>"; };
+		43F7FF771927F92500CA4038 /* RegionAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegionAttachment.h; path = "../spine-c/include/spine/RegionAttachment.h"; sourceTree = "<group>"; };
+		43F7FF781927F92500CA4038 /* Skeleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skeleton.h; path = "../spine-c/include/spine/Skeleton.h"; sourceTree = "<group>"; };
+		43F7FF791927F92500CA4038 /* SkeletonBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonBounds.h; path = "../spine-c/include/spine/SkeletonBounds.h"; sourceTree = "<group>"; };
+		43F7FF7A1927F92500CA4038 /* SkeletonData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonData.h; path = "../spine-c/include/spine/SkeletonData.h"; sourceTree = "<group>"; };
+		43F7FF7B1927F92500CA4038 /* SkeletonJson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonJson.h; path = "../spine-c/include/spine/SkeletonJson.h"; sourceTree = "<group>"; };
+		43F7FF7C1927F92500CA4038 /* Skin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skin.h; path = "../spine-c/include/spine/Skin.h"; sourceTree = "<group>"; };
+		43F7FF7E1927F92500CA4038 /* Slot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Slot.h; path = "../spine-c/include/spine/Slot.h"; sourceTree = "<group>"; };
+		43F7FF7F1927F92500CA4038 /* SlotData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SlotData.h; path = "../spine-c/include/spine/SlotData.h"; sourceTree = "<group>"; };
+		43F7FF801927F92500CA4038 /* spine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spine.h; path = "../spine-c/include/spine/spine.h"; sourceTree = "<group>"; };
 		43F7FF831927F94800CA4038 /* SkeletonAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonAnimation.h; path = src/spine/SkeletonAnimation.h; sourceTree = "<group>"; };
 		43F7FF831927F94800CA4038 /* SkeletonAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonAnimation.h; path = src/spine/SkeletonAnimation.h; sourceTree = "<group>"; };
 		43F7FF841927F94800CA4038 /* SkeletonAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SkeletonAnimation.m; path = src/spine/SkeletonAnimation.m; sourceTree = "<group>"; };
 		43F7FF841927F94800CA4038 /* SkeletonAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SkeletonAnimation.m; path = src/spine/SkeletonAnimation.m; sourceTree = "<group>"; };
 		43F7FF851927F94800CA4038 /* SkeletonRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonRenderer.h; path = src/spine/SkeletonRenderer.h; sourceTree = "<group>"; };
 		43F7FF851927F94800CA4038 /* SkeletonRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonRenderer.h; path = src/spine/SkeletonRenderer.h; sourceTree = "<group>"; };
@@ -254,7 +254,7 @@
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
 				43C32822170B0BC2004A9460 /* spine-c */,
 				43C32822170B0BC2004A9460 /* spine-c */,
-				43C32823170B0BC7004A9460 /* spine-cocos2d-iphone */,
+				43C32823170B0BC7004A9460 /* spine-cocos2d-objc */,
 				43F7FF8C1927F96700CA4038 /* SpineboyExample.h */,
 				43F7FF8C1927F96700CA4038 /* SpineboyExample.h */,
 				43F7FF8D1927F96700CA4038 /* SpineboyExample.m */,
 				43F7FF8D1927F96700CA4038 /* SpineboyExample.m */,
 				43F7FF8A1927F96700CA4038 /* GoblinsExample.h */,
 				43F7FF8A1927F96700CA4038 /* GoblinsExample.h */,
@@ -331,17 +331,17 @@
 			name = "spine-c";
 			name = "spine-c";
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
-		43C32823170B0BC7004A9460 /* spine-cocos2d-iphone */ = {
+		43C32823170B0BC7004A9460 /* spine-cocos2d-objc */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
 				43F7FF831927F94800CA4038 /* SkeletonAnimation.h */,
 				43F7FF831927F94800CA4038 /* SkeletonAnimation.h */,
 				43F7FF841927F94800CA4038 /* SkeletonAnimation.m */,
 				43F7FF841927F94800CA4038 /* SkeletonAnimation.m */,
 				43F7FF851927F94800CA4038 /* SkeletonRenderer.h */,
 				43F7FF851927F94800CA4038 /* SkeletonRenderer.h */,
 				43F7FF861927F94800CA4038 /* SkeletonRenderer.m */,
 				43F7FF861927F94800CA4038 /* SkeletonRenderer.m */,
-				43C3282E170B0C19004A9460 /* spine-cocos2d-iphone.h */,
-				43C3282D170B0C19004A9460 /* spine-cocos2d-iphone.m */,
+				43C3282E170B0C19004A9460 /* spine-cocos2d-objc.h */,
+				43C3282D170B0C19004A9460 /* spine-cocos2d-objc.m */,
 			);
 			);
-			name = "spine-cocos2d-iphone";
+			name = "spine-cocos2d-objc";
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
 		43C32867170B0C7F004A9460 /* Resources */ = {
 		43C32867170B0C7F004A9460 /* Resources */ = {
@@ -440,7 +440,7 @@
 				43CA503B1CAF6E78005ABFFC /* PBXTargetDependency */,
 				43CA503B1CAF6E78005ABFFC /* PBXTargetDependency */,
 			);
 			);
 			name = SpineExample;
 			name = SpineExample;
-			productName = "spine-cocos2d-iphone-ios";
+			productName = "spine-cocos2d-objc";
 			productReference = 9A5D2495170A94DA0030D4DD /* SpineExample.app */;
 			productReference = 9A5D2495170A94DA0030D4DD /* SpineExample.app */;
 			productType = "com.apple.product-type.application";
 			productType = "com.apple.product-type.application";
 		};
 		};
@@ -453,7 +453,7 @@
 				LastUpgradeCheck = 0510;
 				LastUpgradeCheck = 0510;
 				ORGANIZATIONNAME = "Craig Hinrichs";
 				ORGANIZATIONNAME = "Craig Hinrichs";
 			};
 			};
-			buildConfigurationList = 9A5D2490170A94DA0030D4DD /* Build configuration list for PBXProject "spine-cocos2d-iphone-ios" */;
+			buildConfigurationList = 9A5D2490170A94DA0030D4DD /* Build configuration list for PBXProject "spine-cocos2d-objc" */;
 			compatibilityVersion = "Xcode 3.2";
 			compatibilityVersion = "Xcode 3.2";
 			developmentRegion = English;
 			developmentRegion = English;
 			hasScannedForEncodings = 0;
 			hasScannedForEncodings = 0;
@@ -539,7 +539,7 @@
 			isa = PBXSourcesBuildPhase;
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
-				43C3282F170B0C19004A9460 /* spine-cocos2d-iphone.m in Sources */,
+				43C3282F170B0C19004A9460 /* spine-cocos2d-objc.m in Sources */,
 				43C32A06170B0F93004A9460 /* main.m in Sources */,
 				43C32A06170B0F93004A9460 /* main.m in Sources */,
 				43C32A09170B10FF004A9460 /* AppDelegate.m in Sources */,
 				43C32A09170B10FF004A9460 /* AppDelegate.m in Sources */,
 				43F7FF511927F91900CA4038 /* Animation.c in Sources */,
 				43F7FF511927F91900CA4038 /* Animation.c in Sources */,
@@ -660,7 +660,7 @@
 				GCC_PREFIX_HEADER = "Resources-ios/Prefix.pch";
 				GCC_PREFIX_HEADER = "Resources-ios/Prefix.pch";
 				HEADER_SEARCH_PATHS = (
 				HEADER_SEARCH_PATHS = (
 					"\"src\"",
 					"\"src\"",
-					"\"../../spine-c/include\"",
+					"\"../spine-c/include\"",
 					"\"cocos2d/cocos2d\"/**",
 					"\"cocos2d/cocos2d\"/**",
 					"\"cocos2d/external/kazmath/include\"",
 					"\"cocos2d/external/kazmath/include\"",
 					"\"cocos2d/external/ObjectAL\"/**",
 					"\"cocos2d/external/ObjectAL\"/**",
@@ -687,7 +687,7 @@
 				GCC_PREFIX_HEADER = "Resources-ios/Prefix.pch";
 				GCC_PREFIX_HEADER = "Resources-ios/Prefix.pch";
 				HEADER_SEARCH_PATHS = (
 				HEADER_SEARCH_PATHS = (
 					"\"src\"",
 					"\"src\"",
-					"\"../../spine-c/include\"",
+					"\"../spine-c/include\"",
 					"\"cocos2d/cocos2d\"/**",
 					"\"cocos2d/cocos2d\"/**",
 					"\"cocos2d/external/kazmath/include\"",
 					"\"cocos2d/external/kazmath/include\"",
 					"\"cocos2d/external/ObjectAL\"/**",
 					"\"cocos2d/external/ObjectAL\"/**",
@@ -708,7 +708,7 @@
 /* End XCBuildConfiguration section */
 /* End XCBuildConfiguration section */
 
 
 /* Begin XCConfigurationList section */
 /* Begin XCConfigurationList section */
-		9A5D2490170A94DA0030D4DD /* Build configuration list for PBXProject "spine-cocos2d-iphone-ios" */ = {
+		9A5D2490170A94DA0030D4DD /* Build configuration list for PBXProject "spine-cocos2d-objc" */ = {
 			isa = XCConfigurationList;
 			isa = XCConfigurationList;
 			buildConfigurations = (
 			buildConfigurations = (
 				9A5D2641170A94DC0030D4DD /* Debug */,
 				9A5D2641170A94DC0030D4DD /* Debug */,

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini