From 041b6ddb00ca9c875c3d46d06769165993779845 Mon Sep 17 00:00:00 2001 From: Jare Guo Date: Fri, 13 Oct 2017 02:50:03 -0500 Subject: [PATCH] [cocos2dx] allow load custom atlas texture in _spAtlasPage_createTexture for CocosCreator (#1018) --- spine-cocos2dx/src/spine/spine-cocos2dx.cpp | 15 ++++++++++++++- spine-cocos2dx/src/spine/spine-cocos2dx.h | 6 ++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/spine-cocos2dx/src/spine/spine-cocos2dx.cpp b/spine-cocos2dx/src/spine/spine-cocos2dx.cpp index 4a7378fb1..150700261 100644 --- a/spine-cocos2dx/src/spine/spine-cocos2dx.cpp +++ b/spine-cocos2dx/src/spine/spine-cocos2dx.cpp @@ -31,6 +31,13 @@ #include #include +namespace spine { + static CustomTextureLoader _customTextureLoader = nullptr; + void spAtlasPage_setCustomTextureLoader (CustomTextureLoader texLoader) { + _customTextureLoader = texLoader; + } +} + USING_NS_CC; GLuint wrap (spAtlasWrap wrap) { @@ -60,7 +67,13 @@ GLuint filter (spAtlasFilter filter) { } void _spAtlasPage_createTexture (spAtlasPage* self, const char* path) { - Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(path); + Texture2D* texture = nullptr; + if (spine::_customTextureLoader) { + texture = spine::_customTextureLoader(path); + } + if (!texture) { + texture = Director::getInstance()->getTextureCache()->addImage(path); + } CCASSERT(texture != nullptr, "Invalid image"); texture->retain(); diff --git a/spine-cocos2dx/src/spine/spine-cocos2dx.h b/spine-cocos2dx/src/spine/spine-cocos2dx.h index 81e2d7f12..497d12796 100644 --- a/spine-cocos2dx/src/spine/spine-cocos2dx.h +++ b/spine-cocos2dx/src/spine/spine-cocos2dx.h @@ -38,4 +38,10 @@ #include #include +namespace spine { + typedef cocos2d::Texture2D* (*CustomTextureLoader)(const char* path); + // set custom texture loader for _spAtlasPage_createTexture + void spAtlasPage_setCustomTextureLoader(CustomTextureLoader texLoader); +} + #endif /* SPINE_COCOS2DX_H_ */