AndEngine
AndEngine copied to clipboard
Sprite.markTextureRegionChanged() method added
This method can be used after modifications to a Sprite texture to update the Sprite with a call to onUpdateTextureCoordinates().
E.g. with this method to truncate the Sprite texture:
public static void truncateSpriteTextureRegion(final Sprite pSprite, final ITextureRegion pOriginalTextureRegion, final float pLeftX, final float pRightX, final float pTopY, final float pBottomY, final VertexBufferObjectManager pVertexBufferObjectManager) {
final float lTruncX, lTruncY, lTruncWidth, lTruncHeight;
if (pOriginalTextureRegion.isRotated()) {
lTruncHeight = pOriginalTextureRegion.getWidth() - pLeftX - pRightX;
lTruncWidth = pOriginalTextureRegion.getHeight() - pTopY - pBottomY;
lTruncX = pOriginalTextureRegion.getTextureX() + pBottomY;
lTruncY = pOriginalTextureRegion.getTextureY() + pLeftX;
} else {
lTruncHeight = pOriginalTextureRegion.getHeight() - pTopY - pBottomY;
lTruncWidth = pOriginalTextureRegion.getWidth() - pLeftX - pRightX;
lTruncX = pOriginalTextureRegion.getTextureX() + pLeftX;
lTruncY = pOriginalTextureRegion.getTextureY() + pTopY;
}
pSprite.getTextureRegion().set(lTruncX, lTruncY, lTruncWidth, lTruncHeight);
pSprite.markTextureRegionChanged();
if (pOriginalTextureRegion.isRotated()) {
pSprite.setWidth(lTruncHeight);
pSprite.setHeight(lTruncWidth);
} else {
pSprite.setWidth(lTruncWidth);
pSprite.setHeight(lTruncHeight);
}
}