mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 17:26:01 +08:00
Merge branch '3.7-beta' into 3.7-beta-cpp
This commit is contained in:
commit
cb22d5dab9
@ -36,6 +36,8 @@ using namespace spine;
|
|||||||
|
|
||||||
#define NUM_SKELETONS 50
|
#define NUM_SKELETONS 50
|
||||||
|
|
||||||
|
Cocos2dTextureLoader textureLoader;
|
||||||
|
|
||||||
Scene* BatchingExample::scene () {
|
Scene* BatchingExample::scene () {
|
||||||
Scene *scene = Scene::create();
|
Scene *scene = Scene::create();
|
||||||
scene->addChild(BatchingExample::create());
|
scene->addChild(BatchingExample::create());
|
||||||
@ -45,8 +47,8 @@ Scene* BatchingExample::scene () {
|
|||||||
bool BatchingExample::init () {
|
bool BatchingExample::init () {
|
||||||
if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false;
|
if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false;
|
||||||
|
|
||||||
// Load the texture atlas.
|
// Load the texture atlas. Note that the texture loader has to live
|
||||||
Cocos2dTextureLoader textureLoader;
|
// as long as the Atlas, as the Atlas destructor will call TextureLoader::unload.
|
||||||
_atlas = new (__FILE__, __LINE__) Atlas("spineboy.atlas", &textureLoader);
|
_atlas = new (__FILE__, __LINE__) Atlas("spineboy.atlas", &textureLoader);
|
||||||
CCASSERT(_atlas, "Error reading atlas file.");
|
CCASSERT(_atlas, "Error reading atlas file.");
|
||||||
|
|
||||||
|
|||||||
@ -106,10 +106,6 @@ GLuint filter (TextureFilter filter) {
|
|||||||
Cocos2dTextureLoader::Cocos2dTextureLoader() : TextureLoader() { }
|
Cocos2dTextureLoader::Cocos2dTextureLoader() : TextureLoader() { }
|
||||||
Cocos2dTextureLoader::~Cocos2dTextureLoader() { }
|
Cocos2dTextureLoader::~Cocos2dTextureLoader() { }
|
||||||
|
|
||||||
static void unloadTexture (void* texture) {
|
|
||||||
((Texture2D*)texture)->release();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Cocos2dTextureLoader::load(AtlasPage& page, const spine::String& path) {
|
void Cocos2dTextureLoader::load(AtlasPage& page, const spine::String& path) {
|
||||||
Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(path.buffer());
|
Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(path.buffer());
|
||||||
CCASSERT(texture != nullptr, "Invalid image");
|
CCASSERT(texture != nullptr, "Invalid image");
|
||||||
@ -118,13 +114,13 @@ void Cocos2dTextureLoader::load(AtlasPage& page, const spine::String& path) {
|
|||||||
Texture2D::TexParams textureParams = {filter(page.minFilter), filter(page.magFilter), wrap(page.uWrap), wrap(page.vWrap)};
|
Texture2D::TexParams textureParams = {filter(page.minFilter), filter(page.magFilter), wrap(page.uWrap), wrap(page.vWrap)};
|
||||||
texture->setTexParameters(textureParams);
|
texture->setTexParameters(textureParams);
|
||||||
|
|
||||||
page.setRendererObject(texture, unloadTexture);
|
page.setRendererObject(texture);
|
||||||
page.width = texture->getPixelsWide();
|
page.width = texture->getPixelsWide();
|
||||||
page.height = texture->getPixelsHigh();
|
page.height = texture->getPixelsHigh();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cocos2dTextureLoader::unload(void* texture) {
|
void Cocos2dTextureLoader::unload(void* texture) {
|
||||||
unloadTexture(texture);
|
((Texture2D*)texture)->release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -37,7 +37,7 @@ typedef void (*DisposeRendererObject) (void* rendererObject);
|
|||||||
|
|
||||||
class HasRendererObject {
|
class HasRendererObject {
|
||||||
public:
|
public:
|
||||||
explicit HasRendererObject() : _rendererObject(NULL) {};
|
explicit HasRendererObject() : _rendererObject(NULL), _dispose(NULL) {};
|
||||||
|
|
||||||
virtual ~HasRendererObject() {
|
virtual ~HasRendererObject() {
|
||||||
if (_dispose && _rendererObject)
|
if (_dispose && _rendererObject)
|
||||||
|
|||||||
@ -71,6 +71,11 @@ Atlas::Atlas(const char *data, int length, const char *dir, TextureLoader *textu
|
|||||||
}
|
}
|
||||||
|
|
||||||
Atlas::~Atlas() {
|
Atlas::~Atlas() {
|
||||||
|
if (_textureLoader) {
|
||||||
|
for (size_t i = 0, n = _pages.size(); i < n; ++i) {
|
||||||
|
_textureLoader->unload(_pages[i]->getRendererObject());
|
||||||
|
}
|
||||||
|
}
|
||||||
ContainerUtil::cleanUpVectorOfPointers(_pages);
|
ContainerUtil::cleanUpVectorOfPointers(_pages);
|
||||||
ContainerUtil::cleanUpVectorOfPointers(_regions);
|
ContainerUtil::cleanUpVectorOfPointers(_regions);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -281,10 +281,6 @@ void SkeletonDrawable::draw(RenderTarget &target, RenderStates states) const {
|
|||||||
if (vertexEffect != 0) vertexEffect->end();
|
if (vertexEffect != 0) vertexEffect->end();
|
||||||
}
|
}
|
||||||
|
|
||||||
void deleteTexture(void* texture) {
|
|
||||||
delete (Texture *) texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SFMLTextureLoader::load(AtlasPage &page, const String &path) {
|
void SFMLTextureLoader::load(AtlasPage &page, const String &path) {
|
||||||
Texture *texture = new Texture();
|
Texture *texture = new Texture();
|
||||||
if (!texture->loadFromFile(path.buffer())) return;
|
if (!texture->loadFromFile(path.buffer())) return;
|
||||||
@ -292,14 +288,14 @@ void SFMLTextureLoader::load(AtlasPage &page, const String &path) {
|
|||||||
if (page.magFilter == TextureFilter_Linear) texture->setSmooth(true);
|
if (page.magFilter == TextureFilter_Linear) texture->setSmooth(true);
|
||||||
if (page.uWrap == TextureWrap_Repeat && page.vWrap == TextureWrap_Repeat) texture->setRepeated(true);
|
if (page.uWrap == TextureWrap_Repeat && page.vWrap == TextureWrap_Repeat) texture->setRepeated(true);
|
||||||
|
|
||||||
page.setRendererObject(texture, deleteTexture);
|
page.setRendererObject(texture);
|
||||||
Vector2u size = texture->getSize();
|
Vector2u size = texture->getSize();
|
||||||
page.width = size.x;
|
page.width = size.x;
|
||||||
page.height = size.y;
|
page.height = size.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SFMLTextureLoader::unload(void *texture) {
|
void SFMLTextureLoader::unload(void *texture) {
|
||||||
deleteTexture(texture);
|
delete (Texture *) texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
SpineExtension *getDefaultExtension() {
|
SpineExtension *getDefaultExtension() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user