Merge branch 'master' into dev
23
.gitignore
vendored
@ -12,29 +12,30 @@ target
|
||||
*.user
|
||||
.DS_Store
|
||||
|
||||
.idea/
|
||||
build/
|
||||
|
||||
spine-c/Debug/*
|
||||
|
||||
spine-cpp/Debug/*
|
||||
|
||||
spine-sfml/Debug/*
|
||||
spine-sfml/SFML
|
||||
spine-sfml/dependencies
|
||||
|
||||
spine-libgdx/spine-libgdx/bin/*
|
||||
spine-libgdx/spine-libgdx-tests/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-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/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-cocos2d-iphone/cocos2d/*
|
||||
spine-cocos2d-iphone/spine-cocos2d-iphone-ios.xcodeproj/project.xcworkspace/xcshareddata/
|
||||
|
||||
spine-csharp/bin
|
||||
spine-csharp/obj
|
||||
|
||||
23
CMakeLists.txt
Normal file
@ -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()
|
||||
@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
|
||||
|
||||
## Spine version
|
||||
|
||||
spine-as3 works with data exported from Spine 3.1.08. Updating spine-as3 to [v3.2](https://trello.com/c/k7KtGdPW/76-update-runtimes-to-support-v3-2-shearing) is in progress.
|
||||
spine-as3 works with data exported from Spine 3.1.08. Updating spine-as3 to [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586) and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress.
|
||||
|
||||
spine-as3 supports all Spine features, including meshes. If using the `spine.flash` classes for rendering, meshes are not supported.
|
||||
|
||||
|
||||
9
spine-c/CMakeLists.txt
Normal file
@ -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)
|
||||
@ -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/*
|
||||
@ -12,7 +12,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
|
||||
|
||||
## 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.
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 239 KiB |
@ -89,12 +89,14 @@ typedef enum {
|
||||
SP_TIMELINE_SCALE,
|
||||
SP_TIMELINE_ROTATE,
|
||||
SP_TIMELINE_TRANSLATE,
|
||||
SP_TIMELINE_SHEAR,
|
||||
SP_TIMELINE_COLOR,
|
||||
SP_TIMELINE_ATTACHMENT,
|
||||
SP_TIMELINE_EVENT,
|
||||
SP_TIMELINE_DRAWORDER,
|
||||
SP_TIMELINE_FFD,
|
||||
SP_TIMELINE_IKCONSTRAINT
|
||||
SP_TIMELINE_IKCONSTRAINT,
|
||||
SP_TIMELINE_TRANSFORMCONSTRAINT
|
||||
} spTimelineType;
|
||||
|
||||
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 {
|
||||
spCurveTimeline super;
|
||||
int const framesCount;
|
||||
@ -387,7 +403,6 @@ typedef struct spIkConstraintTimeline {
|
||||
|
||||
spIkConstraintTimeline* spIkConstraintTimeline_create (int framesCount);
|
||||
|
||||
/* @param attachmentName May be 0. */
|
||||
void spIkConstraintTimeline_setFrame (spIkConstraintTimeline* self, int frameIndex, float time, float mix, int bendDirection);
|
||||
|
||||
#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
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -45,7 +45,7 @@ struct spBone {
|
||||
spBoneData* const data;
|
||||
struct spSkeleton* const skeleton;
|
||||
spBone* const parent;
|
||||
float x, y, rotation, scaleX, scaleY;
|
||||
float x, y, rotation, scaleX, scaleY, shearX, shearY;
|
||||
float appliedRotation, appliedScaleX, appliedScaleY;
|
||||
|
||||
float const a, b, worldX;
|
||||
@ -77,7 +77,7 @@ void spBone_dispose (spBone* self);
|
||||
void spBone_setToSetupPose (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_getWorldRotationY (spBone* self);
|
||||
|
||||
@ -41,9 +41,7 @@ struct spBoneData {
|
||||
const char* const name;
|
||||
spBoneData* const parent;
|
||||
float length;
|
||||
float x, y;
|
||||
float rotation;
|
||||
float scaleX, scaleY;
|
||||
float x, y, rotation, scaleX, scaleY, shearX, shearY;
|
||||
int/*bool*/inheritScale, inheritRotation;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@ -45,17 +45,24 @@ typedef struct spTransformConstraint {
|
||||
spTransformConstraintData* const data;
|
||||
spBone* bone;
|
||||
spBone* target;
|
||||
float translateMix;
|
||||
float x, y;
|
||||
float rotateMix, translateMix, scaleMix, shearMix;
|
||||
float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spTransformConstraint() :
|
||||
data(0),
|
||||
bone(0),
|
||||
target(0),
|
||||
rotateMix(0),
|
||||
translateMix(0),
|
||||
x(0),
|
||||
y(0) {
|
||||
scaleMix(0),
|
||||
shearMix(0),
|
||||
offsetRotation(0),
|
||||
offsetX(0),
|
||||
offsetY(0),
|
||||
offsetScaleX(0),
|
||||
offsetScaleY(0),
|
||||
offsetShearY(0) {
|
||||
}
|
||||
#endif
|
||||
} spTransformConstraint;
|
||||
|
||||
@ -43,17 +43,24 @@ typedef struct spTransformConstraintData {
|
||||
|
||||
spBoneData* bone;
|
||||
spBoneData* target;
|
||||
float translateMix;
|
||||
float x, y;
|
||||
float rotateMix, translateMix, scaleMix, shearMix;
|
||||
float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spTransformConstraintData() :
|
||||
name(0),
|
||||
bone(0),
|
||||
target(0),
|
||||
rotateMix(0),
|
||||
translateMix(0),
|
||||
x(0),
|
||||
y(0) {
|
||||
scaleMix(0),
|
||||
shearMix(0),
|
||||
offsetRotation(0),
|
||||
offsetX(0),
|
||||
offsetY(0),
|
||||
offsetScaleX(0),
|
||||
offsetScaleY(0),
|
||||
offsetShearY(0) {
|
||||
}
|
||||
#endif
|
||||
} spTransformConstraintData;
|
||||
|
||||
@ -58,9 +58,14 @@
|
||||
#define MALLOC_STR(TO,FROM) strcpy(CONST_CAST(char*, TO) = (char*)MALLOC(char, strlen(FROM) + 1), FROM)
|
||||
|
||||
#define PI 3.1415926535897932385f
|
||||
#define PI2 (PI * 2)
|
||||
#define DEG_RAD (PI / 180)
|
||||
#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__
|
||||
#define FMOD(A,B) fmodf(A, B)
|
||||
#define ATAN2(A,B) atan2f(A, B)
|
||||
|
||||
@ -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
|
||||
@ -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>
|
||||
@ -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>
|
||||
@ -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,
|
||||
int* eventsCount, float alpha) {
|
||||
spBone *bone;
|
||||
int frameIndex;
|
||||
int frame;
|
||||
float prevFrameValue, frameTime, percent, amount;
|
||||
|
||||
spRotateTimeline* self = SUB_CAST(spRotateTimeline, timeline);
|
||||
@ -267,7 +267,7 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton,
|
||||
bone = skeleton->bones[self->boneIndex];
|
||||
|
||||
if (time >= self->frames[self->framesCount - 2]) { /* Time is after last frame. */
|
||||
float amount = bone->data->rotation + self->frames[self->framesCount - 1] - bone->rotation;
|
||||
amount = bone->data->rotation + self->frames[self->framesCount - 1] - bone->rotation;
|
||||
while (amount > 180)
|
||||
amount -= 360;
|
||||
while (amount < -180)
|
||||
@ -277,13 +277,13 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton,
|
||||
}
|
||||
|
||||
/* 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)
|
||||
amount -= 360;
|
||||
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,
|
||||
spEvent** firedEvents, int* eventsCount, float alpha) {
|
||||
spBone *bone;
|
||||
int frameIndex;
|
||||
int frame;
|
||||
float prevFrameX, prevFrameY, frameTime, percent;
|
||||
|
||||
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. */
|
||||
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));
|
||||
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[frameIndex + TRANSLATE_FRAME_X] - prevFrameX) * percent - bone->x)
|
||||
bone->x += (bone->data->x + prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent - bone->x)
|
||||
* 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;
|
||||
|
||||
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,
|
||||
int* eventsCount, float alpha) {
|
||||
spBone *bone;
|
||||
int frameIndex;
|
||||
int frame;
|
||||
float prevFrameX, prevFrameY, frameTime, percent;
|
||||
|
||||
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. */
|
||||
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));
|
||||
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[frameIndex + TRANSLATE_FRAME_X] - prevFrameX) * percent)
|
||||
bone->scaleX += (bone->data->scaleX * (prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent)
|
||||
- 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;
|
||||
|
||||
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,
|
||||
int* eventsCount, float alpha) {
|
||||
spSlot *slot;
|
||||
int frameIndex;
|
||||
float prevFrameR, prevFrameG, prevFrameB, prevFrameA, percent, frameTime;
|
||||
int frame;
|
||||
float percent, frameTime;
|
||||
float r, g, b, a;
|
||||
spColorTimeline* self = (spColorTimeline*)timeline;
|
||||
|
||||
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;
|
||||
r = self->frames[i - 3];
|
||||
g = self->frames[i - 2];
|
||||
@ -435,19 +479,20 @@ void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f
|
||||
a = self->frames[i];
|
||||
} else {
|
||||
/* 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));
|
||||
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 = 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;
|
||||
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];
|
||||
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,
|
||||
spEvent** firedEvents, int* eventsCount, float alpha) {
|
||||
int frameIndex;
|
||||
int frame;
|
||||
const char* attachmentName;
|
||||
spAttachmentTimeline* self = (spAttachmentTimeline*)timeline;
|
||||
|
||||
@ -494,11 +539,11 @@ void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skelet
|
||||
} else if (lastTime > time) /**/
|
||||
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;
|
||||
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],
|
||||
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,
|
||||
int* eventsCount, float alpha) {
|
||||
spEventTimeline* self = (spEventTimeline*)timeline;
|
||||
int frameIndex;
|
||||
int frame;
|
||||
if (!firedEvents) return;
|
||||
|
||||
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 (lastTime < self->frames[0])
|
||||
frameIndex = 0;
|
||||
frame = 0;
|
||||
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)++;
|
||||
}
|
||||
}
|
||||
@ -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,
|
||||
spEvent** firedEvents, int* eventsCount, float alpha) {
|
||||
int i;
|
||||
int frameIndex;
|
||||
int frame;
|
||||
const int* drawOrderToSetupIndex;
|
||||
spDrawOrderTimeline* self = (spDrawOrderTimeline*)timeline;
|
||||
|
||||
if (time < self->frames[0]) return; /* Time is before first frame. */
|
||||
|
||||
if (time >= self->frames[self->framesCount - 1]) /* Time is after last frame. */
|
||||
frameIndex = self->framesCount - 1;
|
||||
frame = self->framesCount - 1;
|
||||
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)
|
||||
memcpy(skeleton->drawOrder, skeleton->slots, self->slotsCount * sizeof(spSlot*));
|
||||
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,
|
||||
int* eventsCount, float alpha) {
|
||||
int frameIndex, i, vertexCount;
|
||||
int frame, i, vertexCount;
|
||||
float percent, frameTime;
|
||||
const float* prevVertices;
|
||||
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. */
|
||||
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) {
|
||||
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,
|
||||
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;
|
||||
|
||||
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. */
|
||||
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;
|
||||
}
|
||||
|
||||
/* 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(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;
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
|
||||
#include <spine/Bone.h>
|
||||
#include <spine/extension.h>
|
||||
|
||||
#include <stdio.h>
|
||||
static int yDown;
|
||||
|
||||
void spBone_setYDown (int value) {
|
||||
@ -56,14 +56,14 @@ void spBone_dispose (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;
|
||||
spBone* parent = self->parent;
|
||||
|
||||
@ -115,8 +115,7 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
|
||||
pc = 0;
|
||||
pd = 1;
|
||||
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;
|
||||
pb = pa * -sine + pb * cosine;
|
||||
pa = temp;
|
||||
@ -138,14 +137,10 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
|
||||
pd = 1;
|
||||
do {
|
||||
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;
|
||||
pb = pa * zb + pb * zd;
|
||||
pa = temp;
|
||||
@ -154,8 +149,8 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
|
||||
pc = temp;
|
||||
|
||||
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;
|
||||
pb = pa * -sine + pb * cosine;
|
||||
pa = temp;
|
||||
@ -193,6 +188,8 @@ void spBone_setToSetupPose (spBone* self) {
|
||||
self->rotation = self->data->rotation;
|
||||
self->scaleX = self->data->scaleX;
|
||||
self->scaleY = self->data->scaleY;
|
||||
self->shearX = self->data->shearX;
|
||||
self->shearY = self->data->shearY;
|
||||
}
|
||||
|
||||
float spBone_getWorldRotationX (spBone* self) {
|
||||
|
||||
@ -34,181 +34,187 @@
|
||||
#include <spine/extension.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);
|
||||
}
|
||||
|
||||
@ -169,8 +169,7 @@ void spSkeleton_updateCache (const spSkeleton* self) {
|
||||
for (i = 0; i < self->transformConstraintsCount; ++i) {
|
||||
spTransformConstraint* transformConstraint = self->transformConstraints[i];
|
||||
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;
|
||||
update = internal->updateCache + insertIndex;
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -148,10 +148,11 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r
|
||||
Json* bones = Json_getItem(root, "bones");
|
||||
Json* slots = Json_getItem(root, "slots");
|
||||
Json* ik = Json_getItem(root, "ik");
|
||||
Json* transform = Json_getItem(root, "transform");
|
||||
Json* ffd = Json_getItem(root, "ffd");
|
||||
Json* drawOrder = Json_getItem(root, "drawOrder");
|
||||
Json* events = Json_getItem(root, "events");
|
||||
Json *boneMap, *slotMap, *ikMap, *ffdMap;
|
||||
Json *boneMap, *slotMap, *constraintMap, *ffdMap;
|
||||
if (!drawOrder) drawOrder = Json_getItem(root, "draworder");
|
||||
|
||||
for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next)
|
||||
@ -238,10 +239,15 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r
|
||||
|
||||
} else {
|
||||
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;
|
||||
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,
|
||||
@ -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) {
|
||||
if (ikConstraint == skeletonData->ikConstraints[i]) {
|
||||
if (constraint == skeletonData->ikConstraints[i]) {
|
||||
timeline->ikConstraintIndex = i;
|
||||
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);
|
||||
readCurve(SUPER(timeline), i, frame);
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
@ -491,6 +517,8 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
|
||||
boneData->rotation = Json_getFloat(boneMap, "rotation", 0);
|
||||
boneData->scaleX = Json_getFloat(boneMap, "scaleX", 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->inheritRotation = Json_getInt(boneMap, "inheritRotation", 1);
|
||||
|
||||
@ -562,9 +590,16 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha
|
||||
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->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;
|
||||
}
|
||||
|
||||
@ -37,8 +37,11 @@ spTransformConstraint* spTransformConstraint_create (spTransformConstraintData*
|
||||
spTransformConstraint* self = NEW(spTransformConstraint);
|
||||
CONST_CAST(spTransformConstraintData*, self->data) = data;
|
||||
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->target = spSkeleton_findBone(skeleton, self->data->target->name);
|
||||
return self;
|
||||
@ -49,10 +52,55 @@ void spTransformConstraint_dispose (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) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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;
|
||||
}
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32871170B0DBE004A9460 /* Default-568h@2x.png */; };
|
||||
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 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32874170B0DBE004A9460 /* Default@2x.png */; };
|
||||
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 /* Icon-Small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32878170B0DBE004A9460 /* Icon-Small@2x.png */; };
|
||||
43C32885170B0DBE004A9460 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C32879170B0DBE004A9460 /* Icon.png */; };
|
||||
43C32886170B0DBE004A9460 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 43C3287A170B0DBE004A9460 /* Icon@2x.png */; };
|
||||
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 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "Resources-ios/Default-568h@2x.png"; 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 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "Resources-ios/Default@2x.png"; 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 /* Icon-Small@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-Small@2x.png"; path = "Resources-ios/Icon-Small@2x.png"; sourceTree = "<group>"; };
|
||||
43C32879170B0DBE004A9460 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = "Resources-ios/Icon.png"; sourceTree = "<group>"; };
|
||||
43C3287A170B0DBE004A9460 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon@2x.png"; path = "Resources-ios/Icon@2x.png"; 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 /* Default-568h@2x.png */,
|
||||
43C32872170B0DBE004A9460 /* Default-Landscape~ipad.png */,
|
||||
43C32873170B0DBE004A9460 /* Default.png */,
|
||||
43C32874170B0DBE004A9460 /* Default@2x.png */,
|
||||
43C32875170B0DBE004A9460 /* Icon-72.png */,
|
||||
43C32876170B0DBE004A9460 /* Icon-Small-50.png */,
|
||||
43C32877170B0DBE004A9460 /* Icon-Small.png */,
|
||||
43C32878170B0DBE004A9460 /* Icon-Small@2x.png */,
|
||||
43C32879170B0DBE004A9460 /* Icon.png */,
|
||||
43C3287A170B0DBE004A9460 /* Icon@2x.png */,
|
||||
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 /* Default-568h@2x.png in Resources */,
|
||||
43C3287E170B0DBE004A9460 /* Default-Landscape~ipad.png in Resources */,
|
||||
43C3287F170B0DBE004A9460 /* Default.png in Resources */,
|
||||
43C32880170B0DBE004A9460 /* Default@2x.png in Resources */,
|
||||
43C32881170B0DBE004A9460 /* Icon-72.png in Resources */,
|
||||
43C32882170B0DBE004A9460 /* Icon-Small-50.png in Resources */,
|
||||
43C32883170B0DBE004A9460 /* Icon-Small.png in Resources */,
|
||||
43C32884170B0DBE004A9460 /* Icon-Small@2x.png in Resources */,
|
||||
43C32885170B0DBE004A9460 /* Icon.png in Resources */,
|
||||
43C32886170B0DBE004A9460 /* Icon@2x.png 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 */;
|
||||
}
|
||||
@ -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 */;
|
||||
}
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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
|
||||
@ -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);
|
||||
}
|
||||
@ -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)
|
||||
|
Before Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 464 KiB |
|
Before Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 357 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 21 KiB |
@ -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
|
||||
|
Before Width: | Height: | Size: 60 KiB |
@ -1,2 +0,0 @@
|
||||
/* Localized versions of Info.plist keys */
|
||||
|
||||
@ -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>
|
||||
@ -1,4 +0,0 @@
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
@ -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);
|
||||
}
|
||||
@ -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>
|
||||
@ -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
|
||||
@ -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
spine-cocos2d-objc/CMakeLists.txt
Normal file
@ -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()
|
||||
44
spine-cocos2d-objc/README.md
Normal file
@ -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)
|
||||
|
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 464 KiB After Width: | Height: | Size: 464 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 357 KiB After Width: | Height: | Size: 357 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 217 KiB After Width: | Height: | Size: 217 KiB |
|
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 253 KiB |
@ -30,7 +30,7 @@
|
||||
*****************************************************************************/
|
||||
|
||||
#import "cocos2d.h"
|
||||
#import <spine/spine-cocos2d-iphone.h>
|
||||
#import <spine/spine-cocos2d-objc.h>
|
||||
|
||||
@interface GoblinsExample : CCNode {
|
||||
SkeletonAnimation* skeletonNode;
|
||||
@ -30,7 +30,7 @@
|
||||
*****************************************************************************/
|
||||
|
||||
#import "cocos2d.h"
|
||||
#import <spine/spine-cocos2d-iphone.h>
|
||||
#import <spine/spine-cocos2d-objc.h>
|
||||
|
||||
@interface SpineboyExample : CCNode {
|
||||
SkeletonAnimation* skeletonNode;
|
||||