mirror of https://github.com/axmolengine/axmol.git
76 lines
2.0 KiB
C++
76 lines
2.0 KiB
C++
#include "CCTextureAtlasData.h"
|
|
|
|
DRAGONBONES_NAMESPACE_BEGIN
|
|
void CCTextureAtlasData::_onClear()
|
|
{
|
|
TextureAtlasData::_onClear();
|
|
|
|
if (_renderTexture != nullptr)
|
|
{
|
|
_renderTexture->release();
|
|
_renderTexture = nullptr;
|
|
}
|
|
}
|
|
|
|
TextureData* CCTextureAtlasData::createTexture() const
|
|
{
|
|
return BaseObject::borrowObject<CCTextureData>();
|
|
}
|
|
|
|
void CCTextureAtlasData::setRenderTexture(ax::Texture2D* value)
|
|
{
|
|
if (_renderTexture == value)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_renderTexture = value;
|
|
|
|
if (_renderTexture != nullptr)
|
|
{
|
|
_renderTexture->retain();
|
|
|
|
for (const auto& pair : textures)
|
|
{
|
|
const auto textureData = static_cast<CCTextureData*>(pair.second);
|
|
|
|
if (textureData->spriteFrame == nullptr)
|
|
{
|
|
ax::Rect rect(textureData->region.x, textureData->region.y,
|
|
textureData->rotated ? textureData->region.height : textureData->region.width,
|
|
textureData->rotated ? textureData->region.width : textureData->region.height);
|
|
ax::Vec2 offset(0.0f, 0.0f);
|
|
ax::Size originSize(rect.size.width, rect.size.height);
|
|
textureData->spriteFrame = ax::SpriteFrame::createWithTexture(
|
|
_renderTexture, rect, textureData->rotated, offset, originSize); // TODO multiply textureAtlas
|
|
textureData->spriteFrame->retain();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for (const auto& pair : textures)
|
|
{
|
|
const auto textureData = static_cast<CCTextureData*>(pair.second);
|
|
|
|
if (textureData->spriteFrame != nullptr)
|
|
{
|
|
textureData->spriteFrame->release();
|
|
textureData->spriteFrame = nullptr;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CCTextureData::_onClear()
|
|
{
|
|
TextureData::_onClear();
|
|
|
|
if (spriteFrame != nullptr)
|
|
{
|
|
spriteFrame->release();
|
|
spriteFrame = nullptr;
|
|
}
|
|
}
|
|
DRAGONBONES_NAMESPACE_END
|