diff --git a/spine-cocos2dx/example/proj.ios_mac/spine-cocos2d-x.xcodeproj/project.pbxproj b/spine-cocos2dx/example/proj.ios_mac/spine-cocos2d-x.xcodeproj/project.pbxproj index 0f52d9621..857ef2602 100644 --- a/spine-cocos2dx/example/proj.ios_mac/spine-cocos2d-x.xcodeproj/project.pbxproj +++ b/spine-cocos2dx/example/proj.ios_mac/spine-cocos2d-x.xcodeproj/project.pbxproj @@ -46,6 +46,8 @@ 521A8E6519F0C34300D177D7 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 521A8E6319F0C34300D177D7 /* Default-736h@3x.png */; }; 52B47A471A53D09C004E4C60 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52B47A461A53D09B004E4C60 /* Security.framework */; }; 7602C5551D7DAA1300C7C674 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7602C5541D7DAA1300C7C674 /* CoreText.framework */; }; + 765B3E181DA283F90071C974 /* SkeletonBinary.c in Sources */ = {isa = PBXBuildFile; fileRef = 765B3E171DA283F90071C974 /* SkeletonBinary.c */; }; + 765B3E191DA284060071C974 /* SkeletonBinary.c in Sources */ = {isa = PBXBuildFile; fileRef = 765B3E171DA283F90071C974 /* SkeletonBinary.c */; }; 76AAA3C01D180F7C00C54FCB /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B31D180F7C00C54FCB /* AppDelegate.cpp */; }; 76AAA3C11D180F7C00C54FCB /* BatchingExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B61D180F7C00C54FCB /* BatchingExample.cpp */; }; 76AAA3C21D180F7C00C54FCB /* GoblinsExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B81D180F7C00C54FCB /* GoblinsExample.cpp */; }; @@ -244,6 +246,8 @@ 521A8E6319F0C34300D177D7 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = ""; }; 52B47A461A53D09B004E4C60 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; 7602C5541D7DAA1300C7C674 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; }; + 765B3E161DA283F90071C974 /* kvec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = kvec.h; path = "../../../spine-c/src/spine/kvec.h"; sourceTree = ""; }; + 765B3E171DA283F90071C974 /* SkeletonBinary.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBinary.c; path = "../../../spine-c/src/spine/SkeletonBinary.c"; sourceTree = ""; }; 76AAA3B31D180F7C00C54FCB /* AppDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppDelegate.cpp; sourceTree = ""; }; 76AAA3B41D180F7C00C54FCB /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 76AAA3B51D180F7C00C54FCB /* AppMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppMacros.h; sourceTree = ""; }; @@ -519,6 +523,8 @@ 76AAA3B21D180F7300C54FCB /* spine */ = { isa = PBXGroup; children = ( + 765B3E161DA283F90071C974 /* kvec.h */, + 765B3E171DA283F90071C974 /* SkeletonBinary.c */, 76F5BCF41D2BB57F005917E5 /* Animation.c */, 76F5BCF51D2BB57F005917E5 /* AnimationState.c */, 76F5BCF61D2BB57F005917E5 /* AnimationStateData.c */, @@ -741,6 +747,7 @@ 76F5BD201D2BB57F005917E5 /* extension.c in Sources */, 76AAA3C01D180F7C00C54FCB /* AppDelegate.cpp in Sources */, 76AAA3C41D180F7C00C54FCB /* SimpleCommand.cpp in Sources */, + 765B3E181DA283F90071C974 /* SkeletonBinary.c in Sources */, 76F5BD261D2BB57F005917E5 /* PathConstraint.c in Sources */, 503AE10017EB989F00D1A890 /* AppController.mm in Sources */, 76AAA40E1D18106000C54FCB /* SkeletonAnimation.cpp in Sources */, @@ -768,6 +775,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 765B3E191DA284060071C974 /* SkeletonBinary.c in Sources */, 76F5BD561D2BD7EF005917E5 /* TankExample.cpp in Sources */, 76F5BD571D2BD7EF005917E5 /* TankExample.h in Sources */, 76F5BD331D2BD4A9005917E5 /* Animation.c in Sources */, diff --git a/spine-cocos2dx/src/spine/SkeletonAnimation.cpp b/spine-cocos2dx/src/spine/SkeletonAnimation.cpp index d26969aa5..2af2d9a82 100644 --- a/spine-cocos2dx/src/spine/SkeletonAnimation.cpp +++ b/spine-cocos2dx/src/spine/SkeletonAnimation.cpp @@ -80,7 +80,7 @@ SkeletonAnimation* SkeletonAnimation::createWithData (spSkeletonData* skeletonDa SkeletonAnimation* SkeletonAnimation::createWithJsonFile (const std::string& skeletonJsonFile, spAtlas* atlas, float scale) { SkeletonAnimation* node = new SkeletonAnimation(); - node->initWithFile(skeletonJsonFile, atlas, scale); + node->initWithJsonFile(skeletonJsonFile, atlas, scale); node->autorelease(); return node; } @@ -88,14 +88,14 @@ SkeletonAnimation* SkeletonAnimation::createWithJsonFile (const std::string& ske SkeletonAnimation* SkeletonAnimation::createWithJsonFile (const std::string& skeletonJsonFile, const std::string& atlasFile, float scale) { SkeletonAnimation* node = new SkeletonAnimation(); spAtlas* atlas = spAtlas_createFromFile(atlasFile.c_str(), 0); - node->initWithFile(skeletonJsonFile, atlas, scale); + node->initWithJsonFile(skeletonJsonFile, atlas, scale); node->autorelease(); return node; } SkeletonAnimation* SkeletonAnimation::createWithBinaryFile (const std::string& skeletonBinaryFile, spAtlas* atlas, float scale) { SkeletonAnimation* node = new SkeletonAnimation(); - node->initWithFile(skeletonBinaryFile, atlas, scale); + node->initWithBinaryFile(skeletonBinaryFile, atlas, scale); node->autorelease(); return node; } @@ -103,7 +103,7 @@ SkeletonAnimation* SkeletonAnimation::createWithBinaryFile (const std::string& s SkeletonAnimation* SkeletonAnimation::createWithBinaryFile (const std::string& skeletonBinaryFile, const std::string& atlasFile, float scale) { SkeletonAnimation* node = new SkeletonAnimation(); spAtlas* atlas = spAtlas_createFromFile(atlasFile.c_str(), 0); - node->initWithFile(skeletonBinaryFile, atlas, scale); + node->initWithBinaryFile(skeletonBinaryFile, atlas, scale); node->autorelease(); return node; } diff --git a/spine-cocos2dx/src/spine/SkeletonRenderer.cpp b/spine-cocos2dx/src/spine/SkeletonRenderer.cpp index 1035e692b..3dc5d3005 100644 --- a/spine-cocos2dx/src/spine/SkeletonRenderer.cpp +++ b/spine-cocos2dx/src/spine/SkeletonRenderer.cpp @@ -85,12 +85,12 @@ SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkele SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale) : _atlas(nullptr), _attachmentLoader(nullptr), _debugSlots(false), _debugBones(false), _timeScale(1) { - initWithFile(skeletonDataFile, atlas, scale); + initWithJsonFile(skeletonDataFile, atlas, scale); } SkeletonRenderer::SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) : _atlas(nullptr), _attachmentLoader(nullptr), _debugSlots(false), _debugBones(false), _timeScale(1) { - initWithFile(skeletonDataFile, atlasFile, scale); + initWithJsonFile(skeletonDataFile, atlasFile, scale); } SkeletonRenderer::~SkeletonRenderer () { @@ -107,7 +107,7 @@ void SkeletonRenderer::initWithData (spSkeletonData* skeletonData, bool ownsSkel initialize(); } -void SkeletonRenderer::initWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { +void SkeletonRenderer::initWithJsonFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { _atlas = atlas; _attachmentLoader = SUPER(Cocos2dAttachmentLoader_create(_atlas)); @@ -122,7 +122,7 @@ void SkeletonRenderer::initWithFile (const std::string& skeletonDataFile, spAtla initialize(); } -void SkeletonRenderer::initWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { +void SkeletonRenderer::initWithJsonFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { _atlas = spAtlas_createFromFile(atlasFile.c_str(), 0); CCASSERT(_atlas, "Error reading atlas file."); @@ -138,6 +138,38 @@ void SkeletonRenderer::initWithFile (const std::string& skeletonDataFile, const initialize(); } + +void SkeletonRenderer::initWithBinaryFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale) { + _atlas = atlas; + _attachmentLoader = SUPER(Cocos2dAttachmentLoader_create(_atlas)); + + spSkeletonBinary* binary = spSkeletonBinary_createWithLoader(_attachmentLoader); + binary->scale = scale; + spSkeletonData* skeletonData = spSkeletonBinary_readSkeletonDataFile(binary, skeletonDataFile.c_str()); + CCASSERT(skeletonData, binary->error ? binary->error : "Error reading skeleton data file."); + spSkeletonBinary_dispose(binary); + + setSkeletonData(skeletonData, true); + + initialize(); +} + +void SkeletonRenderer::initWithBinaryFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale) { + _atlas = spAtlas_createFromFile(atlasFile.c_str(), 0); + CCASSERT(_atlas, "Error reading atlas file."); + + _attachmentLoader = SUPER(Cocos2dAttachmentLoader_create(_atlas)); + + spSkeletonBinary* binary = spSkeletonBinary_createWithLoader(_attachmentLoader); + binary->scale = scale; + spSkeletonData* skeletonData = spSkeletonBinary_readSkeletonDataFile(binary, skeletonDataFile.c_str()); + CCASSERT(skeletonData, binary->error ? binary->error : "Error reading skeleton data file."); + spSkeletonBinary_dispose(binary); + + setSkeletonData(skeletonData, true); + + initialize(); +} void SkeletonRenderer::update (float deltaTime) { diff --git a/spine-cocos2dx/src/spine/SkeletonRenderer.h b/spine-cocos2dx/src/spine/SkeletonRenderer.h index 053a9dbff..2d3345102 100644 --- a/spine-cocos2dx/src/spine/SkeletonRenderer.h +++ b/spine-cocos2dx/src/spine/SkeletonRenderer.h @@ -108,8 +108,10 @@ CC_CONSTRUCTOR_ACCESS: virtual ~SkeletonRenderer (); void initWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false); - void initWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); - void initWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); + void initWithJsonFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); + void initWithJsonFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); + void initWithBinaryFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); + void initWithBinaryFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); virtual void initialize ();