// don't use lazy sorting, reordering the particle systems quads afterwards would be too complex // FIXME: research whether lazy sorting + freeing current quads and calloc a new block with size of capacity would be faster // FIXME: or possibly using vertexZ for reordering, that would be fastest // this helper is almost equivalent to Node's addChild, but doesn't make use of the lazy sorting int ParticleBatchNode::addChildHelper(ParticleSystem* child, int z, int aTag, const std::string &name, bool setTag) { CCASSERT( child != nullptr, "Argument must be non-nil"); CCASSERT( child->getParent() == nullptr, "child already added. It can't be added again"); _children.reserve(4); //don't use a lazy insert auto pos = searchNewPositionInChildrenForZ(z); _children.insert(pos, child); if (setTag) child->setTag(aTag); else child->setName(name); child->setLocalZOrder(z); child->setParent(this); if( _running ) { child->onEnter(); child->onEnterTransitionDidFinish(); } return pos; }
// don't use lazy sorting, reordering the particle systems quads afterwards would be too complex // XXX research whether lazy sorting + freeing current quads and calloc a new block with size of capacity would be faster // XXX or possibly using vertexZ for reordering, that would be fastest // this helper is almost equivalent to CCNode's addChild, but doesn't make use of the lazy sorting unsigned int CCParticleBatchNode::addChildHelper(CCParticleSystem* child, int z, int aTag) { CCAssert( child != NULL, "Argument must be non-nil"); CCAssert( child->getParent() == NULL, "child already added. It can't be added again"); if( ! m_pChildren ) { m_pChildren = new CCArray(); m_pChildren->initWithCapacity(4); } //don't use a lazy insert unsigned int pos = searchNewPositionInChildrenForZ(z); m_pChildren->insertObject(child, pos); child->setTag(aTag); child->_setZOrder(z); child->setParent(this); if( m_bRunning ) { child->onEnter(); child->onEnterTransitionDidFinish(); } return pos; }