本文整理汇总了C++中CCParticleSystem::getAtlasIndex方法的典型用法代码示例。如果您正苦于以下问题:C++ CCParticleSystem::getAtlasIndex方法的具体用法?C++ CCParticleSystem::getAtlasIndex怎么用?C++ CCParticleSystem::getAtlasIndex使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CCParticleSystem
的用法示例。
在下文中一共展示了CCParticleSystem::getAtlasIndex方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: reorderChild
// Reorder will be done in this function, no "lazy" reorder to particles
void CCParticleBatchNode::reorderChild(CCNode * child, int zOrder)
{
CCAssert( child != NULL, "Child must be non-NULL");
CCAssert( dynamic_cast<CCParticleSystem*>(child) != NULL, "CCParticleBatchNode only supports CCQuadParticleSystems as children");
CCAssert( m_pChildren->containsObject(child), "Child doesn't belong to batch" );
CCParticleSystem* pChild = (CCParticleSystem*)(child);
if( zOrder == child->getZOrder() )
{
return;
}
// no reordering if only 1 child
if( m_pChildren->count() > 1)
{
unsigned int newIndex = 0, oldIndex = 0;
getCurrentIndex(&oldIndex, &newIndex, pChild, zOrder);
if( oldIndex != newIndex )
{
// reorder m_pChildren->array
pChild->retain();
m_pChildren->removeObjectAtIndex(oldIndex);
m_pChildren->insertObject(pChild, newIndex);
pChild->release();
// save old altasIndex
unsigned int oldAtlasIndex = pChild->getAtlasIndex();
// update atlas index
updateAllAtlasIndexes();
// Find new AtlasIndex
unsigned int newAtlasIndex = 0;
for( unsigned int i=0; i < m_pChildren->count(); i++)
{
CCParticleSystem* pNode = (CCParticleSystem*)m_pChildren->objectAtIndex(i);
if( pNode == pChild )
{
newAtlasIndex = pChild->getAtlasIndex();
break;
}
}
// reorder textureAtlas quads
m_pTextureAtlas->moveQuadsFromIndex(oldAtlasIndex, pChild->getTotalParticles(), newAtlasIndex);
pChild->updateWithNoTime();
}
}
pChild->setZOrder(zOrder);
}
示例2: removeChild
// override removeChild:
void CCParticleBatchNode::removeChild(CCNode* child, bool cleanup)
{
// explicit nil handling
if (child == NULL)
{
return;
}
CCAssert( dynamic_cast<CCParticleSystem*>(child) != NULL, "CCParticleBatchNode only supports CCQuadParticleSystems as children");
CCAssert(m_pChildren->containsObject(child), "CCParticleBatchNode doesn't contain the sprite. Can't remove it");
CCParticleSystem* pChild = (CCParticleSystem*)child;
CCNode::removeChild(pChild, cleanup);
// remove child helper
m_pTextureAtlas->removeQuadsAtIndex(pChild->getAtlasIndex(), pChild->getTotalParticles());
// after memmove of data, empty the quads at the end of array
m_pTextureAtlas->fillWithEmptyQuadsFromIndex(m_pTextureAtlas->getTotalQuads(), pChild->getTotalParticles());
// particle could be reused for self rendering
pChild->setBatchNode(NULL);
updateAllAtlasIndexes();
}
示例3: addChild
void CCParticleBatchNode::addChild(CCNode * child, int zOrder, int tag)
{
CCAssert( child != NULL, "Argument must be non-NULL");
CCAssert( dynamic_cast<CCParticleSystem*>(child) != NULL, "CCParticleBatchNode only supports CCQuadParticleSystems as children");
CCParticleSystem* pChild = (CCParticleSystem*)child;
CCAssert( pChild->getTexture()->getName() == m_pTextureAtlas->getTexture()->getName(), "CCParticleSystem is not using the same texture id");
// If this is the 1st children, then copy blending function
if( m_pChildren->count() == 0 )
{
setBlendFunc(pChild->getBlendFunc());
}
CCAssert( m_tBlendFunc.src == pChild->getBlendFunc().src && m_tBlendFunc.dst == pChild->getBlendFunc().dst, "Can't add a PaticleSystem that uses a different blending function");
//no lazy sorting, so don't call super addChild, call helper instead
unsigned int pos = addChildHelper(pChild,zOrder,tag);
//get new atlasIndex
unsigned int atlasIndex = 0;
if (pos != 0)
{
CCParticleSystem* p = (CCParticleSystem*)m_pChildren->objectAtIndex(pos-1);
atlasIndex = p->getAtlasIndex() + p->getTotalParticles();
}
else
{
atlasIndex = 0;
}
insertChild(pChild, atlasIndex);
// update quad info
pChild->setBatchNode(this);
}