public virtual bool initWithTotalParticles(uint numberOfParticles) { this.m_uTotalParticles = numberOfParticles; this.m_pParticles = new CCParticle[this.m_uTotalParticles]; if (this.m_pParticles == null) { CCLog.Log("Particle system: not enough memory"); return(false); } for (int i = 0; i < this.m_uTotalParticles; i++) { this.m_pParticles[i] = new CCParticle(); } this.m_bIsActive = true; this.m_tBlendFunc.src = 1; this.m_tBlendFunc.dst = 0x303; this.m_ePositionType = eParticlePositionType.kCCPositionTypeFree; this.m_nEmitterMode = 0; this.m_bIsAutoRemoveOnFinish = false; base.scheduleUpdateWithPriority(1); return(true); }
public CCParticleSystem() { m_sPlistFile = ""; m_fElapsed = 0; m_pParticles = null; m_fEmitCounter = 0; m_uParticleIdx = 0; #if CC_ENABLE_PROFILERS m_pProfilingTimer = NULL; #endif m_bIsActive = true; m_uParticleCount = 0; m_fDuration = 0; m_tSourcePosition = new CCPoint(0,0); m_tPosVar = new CCPoint(0,0); m_fLife = 0; m_fLifeVar = 0; m_fAngle = 0; m_fAngleVar = 0; m_fStartSize = 0; m_fStartSizeVar = 0; m_fEndSize = 0; m_fEndSizeVar = 0; m_fStartSpin = 0; m_fStartSpinVar = 0; m_fEndSpin = 0; m_fEndSpinVar = 0; m_fEmissionRate = 0; m_uTotalParticles = 0; m_pTexture = null; m_bIsBlendAdditive = false; m_ePositionType = eParticlePositionType.kCCPositionTypeFree; m_bIsAutoRemoveOnFinish = false; m_nEmitterMode = (int)eParticleMode.kCCParticleModeGravity; modeA = new sModeA(); modeA.gravity = new CCPoint(0,0); modeA.speed = 0; modeA.speedVar = 0; modeA.tangentialAccel = 0; modeA.tangentialAccelVar = 0; modeA.radialAccel = 0; modeA.radialAccelVar = 0; modeB = new sModeB(); modeB.startRadius = 0; modeB.startRadiusVar = 0; modeB.endRadius = 0; modeB.endRadiusVar = 0; modeB.rotatePerSecond = 0; modeB.rotatePerSecondVar = 0; m_tBlendFunc = new ccBlendFunc(); m_tBlendFunc.src = 0;// CC_BLEND_SRC; m_tBlendFunc.dst = 0x0303;// CC_BLEND_DST; }
//! Initializes a system with a fixed number of particles public virtual bool initWithTotalParticles(uint numberOfParticles) { m_uTotalParticles = numberOfParticles; m_pParticles = new CCParticle[m_uTotalParticles]; if (null == m_pParticles) { Debug.WriteLine("Particle system: not enough memory"); return false; } for (int i = 0; i < m_uTotalParticles; i++) { m_pParticles[i] = new CCParticle(); } // default, active m_bIsActive = true; // default blend function m_tBlendFunc.src = 1;// CC_BLEND_SRC; m_tBlendFunc.dst = 0x0303;// CC_BLEND_DST; // default movement type; m_ePositionType = eParticlePositionType.kCCPositionTypeFree; // by default be in mode A: m_nEmitterMode = (int)eParticleMode.kCCParticleModeGravity; // default: modulate // XXX: not used // colorModulate = YES; m_bIsAutoRemoveOnFinish = false; // profiling #if CC_ENABLE_PROFILERS /// @todo _profilingTimer = [[CCProfiler timerWithName:@"particle system" andInstance:self] retain]; #endif // Optimization: compile udpateParticle method //updateParticleSel = @selector(updateQuadWithParticle:newPosition:); //updateParticleImp = (CC_UPDATE_PARTICLE_IMP) [self methodForSelector:updateParticleSel]; // udpate after action in run! this.scheduleUpdateWithPriority(1); return true; }