| 634 | } |
| 635 | |
| 636 | void SpriteBatchNode::removeSpriteFromAtlas(Sprite* sprite) |
| 637 | { |
| 638 | // remove from TextureAtlas |
| 639 | _textureAtlas->removeQuadAtIndex(sprite->getAtlasIndex()); |
| 640 | |
| 641 | // Cleanup sprite. It might be reused (issue #569) |
| 642 | sprite->setBatchNode(nullptr); |
| 643 | |
| 644 | auto it = std::find(_descendants.begin(), _descendants.end(), sprite); |
| 645 | if (it != _descendants.end()) |
| 646 | { |
| 647 | auto next = std::next(it); |
| 648 | |
| 649 | Sprite* spr = nullptr; |
| 650 | for (auto nextEnd = _descendants.end(); next != nextEnd; ++next) |
| 651 | { |
| 652 | spr = *next; |
| 653 | spr->setAtlasIndex(spr->getAtlasIndex() - 1); |
| 654 | } |
| 655 | |
| 656 | _descendants.erase(it); |
| 657 | } |
| 658 | |
| 659 | // remove children recursively |
| 660 | auto& children = sprite->getChildren(); |
| 661 | for (const auto& obj : children) |
| 662 | { |
| 663 | Sprite* child = static_cast<Sprite*>(obj); |
| 664 | if (child) |
| 665 | { |
| 666 | removeSpriteFromAtlas(child); |
| 667 | } |
| 668 | } |
| 669 | } |
| 670 | |
| 671 | void SpriteBatchNode::updateBlendFunc() |
| 672 | { |
no test coverage detected