// 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); }
CCParticleSystem* ParticleLayer::createFireParticle() { CCParticleSystem *emitter = CCParticleFire::create(); emitter->retain(); addChild(emitter, 10); emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage("Particles/fire.png") ); return emitter; }
void TestParticle::initSun() { CCParticleSystem *emitter = CCParticleSun::create(); emitter->retain(); addChild(emitter,10); emitter->setStartSize(20.f); emitter->setSpeed(50.f); emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png")); emitter->setPosition(ccp(size.width/6*4,size.height-85)); emitter->release(); }
void TestParticle::initSpiral() { CCParticleSystem *emitter = CCParticleSpiral::create(); emitter->retain(); addChild(emitter,10); emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("fire.png")); emitter->setPosition(ccp(250,50)); emitter->release(); }
void TestParticle::initFlower() { CCParticleSystem *emitter = CCParticleFlower::create(); emitter->retain(); addChild(emitter,10); // emitter->setStartSize(20.f); emitter->setSpeed(100.f); emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("stars.png")); emitter->setPosition(ccp(size.width/6*1,size.height-250)); emitter->release(); }
CCParticleSystem* ParticleLayer::createMeteor() { CCParticleSystem *emitter = CCParticleMeteor::create(); emitter->retain(); addChild(emitter, 10); emitter->setGravity(CCPointZero); emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage("Particles/fire.png") ); return emitter; }
CCParticleSystem* ParticleLayer::createExplosion() { CCParticleSystem *emitter = CCParticleExplosion::create(); emitter->retain(); addChild(emitter, 10); emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage("Particles/stars.png") ); emitter->setAutoRemoveOnFinish(true); return emitter; }
void TestParticle::initFirework() { CCParticleSystem *emitter = CCParticleFireworks::create(); emitter->retain(); addChild(emitter,10); emitter->setStartSize(20.0f); emitter->setSpeed(150.0f); emitter->setTexture(CCTextureCache::sharedTextureCache()->addImage("stars.png")); //emitter->setDuration(5.0f); emitter->setPosition(ccp(size.width/6*2,size.height-150)); emitter->release(); }
void TestParticle::initExplosion() { CCParticleSystem *emitter = CCParticleExplosion::create(); emitter->retain(); addChild(emitter, 10); emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage("stars.png") ); emitter->setAutoRemoveOnFinish(true); emitter->setPosition(ccp(400,50)); emitter->release(); }
CCParticleSystem* ParticleLayer::createFireWorks() { CCParticleSystem *emitter = CCParticleFireworks::create(); emitter->retain(); emitter->setGravity(CCPointZero); addChild(emitter, 10); emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage("Particles/stars.png") ); emitter->setAutoRemoveOnFinish(true); return emitter; }
void TestParticle::initSmoke() { CCParticleSystem *emitter = CCParticleSmoke::create(); emitter->retain(); this->addChild(emitter, 10); emitter->setStartSize(20.0f); //emitter->setTotalParticles(300); emitter->setSpeed(150.0f); //设置速度 emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage("fire.png") ); //设置图片 //emitter->setDuration(5.0f); //设置时间 emitter->setPosition(ccp(size.width/6,size.height-150)); //设置初始位置 emitter->release(); }
void TestParticle::initRain() { CCParticleSystem *emitter = CCParticleRain::create(); emitter->retain(); addChild(emitter, 10); CCPoint p = emitter->getPosition(); emitter->setPosition( ccp( p.x, p.y-100) ); emitter->setLife(4); emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage("fire.png") ); emitter->setPosition(ccp(400,50)); emitter->release(); }
void TestParticle::initSnow() { CCParticleSystem *emitter = CCParticleSnow::create(); emitter->retain(); addChild(emitter, 10); CCPoint p = emitter->getPosition(); emitter->setPosition( ccp( p.x, p.y-110) ); emitter->setLife(3); emitter->setLifeVar(1); // gravity emitter->setGravity(ccp(0,-10)); // speed of particles emitter->setSpeed(130); emitter->setSpeedVar(30); ccColor4F startColor = emitter->getStartColor(); startColor.r = 0.9f; startColor.g = 0.9f; startColor.b = 0.9f; emitter->setStartColor(startColor); ccColor4F startColorVar = emitter->getStartColorVar(); startColorVar.b = 0.1f; emitter->setStartColorVar(startColorVar); emitter->setEmissionRate(emitter->getTotalParticles()/emitter->getLife()); emitter->setTexture( CCTextureCache::sharedTextureCache()->addImage("snow.png")); emitter->setPosition(ccp(0,480)); emitter->release(); }