Пример #1
0
 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);
 }
Пример #2
0
 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;
 }
Пример #3
0
        //! 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;
        }