cocos2d-iphone  2.1
Improved Cocos2D API Reference (iOS version) for www.kobold2d.com developers
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Defines
CCParticleSystem Class Reference

#import <CCParticleSystem.h>

+ Inheritance diagram for CCParticleSystem:
+ Collaboration diagram for CCParticleSystem:

List of all members.

Public Member Functions

(id) - initWithFile:
(id) - initWithDictionary:
(id) - initWithDictionary:path:
(id) - initWithTotalParticles:
 Initializes a system with a fixed number of particles.
(void) - stopSystem
 stop emitting particles. Running particles will continue to run until they die
(void) - resetSystem
 Kill all living particles.
(BOOL) - isFull
 whether or not the system is full
(void) - updateQuadWithParticle:newPosition:
 should be overriden by subclasses
(void) - postStep
 should be overriden by subclasses
(void) - update:
 called in every loop.
(void) - updateWithNoTime

Static Public Member Functions

(id) + particleWithFile:
(id) + particleWithTotalParticles:

Protected Attributes

BOOL _active
float _duration
float _elapsed
CGPoint _sourcePosition
CGPoint _posVar
float _angle
float _angleVar
NSInteger _emitterMode
union {
   struct {
      CGPoint   gravity
      float   speed
      float   speedVar
      float   tangentialAccel
      float   tangentialAccelVar
      float   radialAccel
      float   radialAccelVar
   }   A
   struct {
      float   startRadius
      float   startRadiusVar
      float   endRadius
      float   endRadiusVar
      float   rotatePerSecond
      float   rotatePerSecondVar
   }   B
_mode
float _startSize
float _startSizeVar
float _endSize
float _endSizeVar
float _life
float _lifeVar
ccColor4F _startColor
ccColor4F _startColorVar
ccColor4F _endColor
ccColor4F _endColorVar
float _startSpin
float _startSpinVar
float _endSpin
float _endSpinVar
tCCParticle_particles
NSUInteger _totalParticles
NSUInteger _particleCount
NSUInteger _allocatedParticles
float _emissionRate
float _emitCounter
CCTexture2D_texture
ccBlendFunc _blendFunc
BOOL _opacityModifyRGB
tCCPositionType _positionType
BOOL _autoRemoveOnFinish
NSUInteger _particleIdx
CC_UPDATE_PARTICLE_IMP _updateParticleImp
SEL _updateParticleSel
CCParticleBatchNode_batchNode
NSUInteger _atlasIndex
BOOL _transformSystemDirty

Properties

BOOL active
NSUInteger particleCount
float duration
CGPoint sourcePosition
CGPoint posVar
float life
float lifeVar
float angle
float angleVar
float startSize
float startSizeVar
float endSize
float endSizeVar
ccColor4F startColor
ccColor4F startColorVar
ccColor4F endColor
ccColor4F endColorVar
float startSpin
float startSpinVar
float endSpin
float endSpinVar
float emissionRate
NSUInteger totalParticles
CCTexture2Dtexture
ccBlendFunc blendFunc
BOOL opacityModifyRGB
BOOL blendAdditive
tCCPositionType positionType
BOOL autoRemoveOnFinish
NSInteger emitterMode
CCParticleBatchNodebatchNode
NSUInteger atlasIndex

Detailed Description

Particle System base class Attributes of a Particle System:

  • emmision rate of the particles
  • Gravity Mode (Mode A):
    • gravity
    • direction
    • speed +- variance
    • tangential acceleration +- variance
    • radial acceleration +- variance
  • Radius Mode (Mode B):
    • startRadius +- variance
    • endRadius +- variance
    • rotate +- variance
  • Properties common to all modes:
    • life +- life variance
    • start spin +- variance
    • end spin +- variance
    • start size +- variance
    • end size +- variance
    • start color +- variance
    • end color +- variance
    • life +- variance
    • blending function
  • texture

cocos2d also supports particles generated by Particle Designer (http://particledesigner.71squared.com/). 'Radius Mode' in Particle Designer uses a fixed emit rate of 30 hz. Since that can't be guarateed in cocos2d, cocos2d uses a another approach, but the results are almost identical.

cocos2d supports all the variables used by Particle Designer plus a bit more:

  • spinning particles (supported when using CCParticleSystemQuad)
  • tangential acceleration (Gravity mode)
  • radial acceleration (Gravity mode)
  • radius direction (Radius mode) (Particle Designer supports outwards to inwards direction only)

It is possible to customize any of the above mentioned properties in runtime. Example:

    emitter.radialAccel = 15;
    emitter.startSpin = 0;

Member Function Documentation

- (id) initWithDictionary: (NSDictionary *)  dictionary

initializes a particle system from a NSDictionary.

Since:
v0.99.3
- (id) initWithDictionary: (NSDictionary *)  dictionary
path: (NSString *)  dirname 

initializes a particle system from a NSDictionary and the path from where to load the png

Since:
v2.1
- (id) initWithFile: (NSString *)  plistFile

initializes a CCParticleSystem from a plist file. This plist files can be creted manually or with Particle Designer: http://particledesigner.71squared.com/

Since:
v0.99.3
- (id) initWithTotalParticles: (NSUInteger)  numberOfParticles

Initializes a system with a fixed number of particles.

- (BOOL) isFull

whether or not the system is full

+ (id) particleWithFile: (NSString *)  plistFile

creates an initializes a CCParticleSystem from a plist file. This plist files can be creted manually or with Particle Designer: http://particledesigner.71squared.com/

Since:
v0.99.3
- (void) postStep

should be overriden by subclasses

- (void) resetSystem

Kill all living particles.

- (void) stopSystem

stop emitting particles. Running particles will continue to run until they die

- (void) update: (ccTime dt

called in every loop.

Implements CCNode.

- (void) updateQuadWithParticle: (tCCParticle *)  particle
newPosition: (CGPoint)  pos 

should be overriden by subclasses


Property Documentation

- (BOOL) active [read, assign]

Is the emitter active

- (float) angle [read, write, assign]

angle and angle variation of each particle

- (float) angleVar [read, write, assign]

angle variance of each particle

- (BOOL) autoRemoveOnFinish [read, write, assign]

whether or not the node will be auto-removed when it has no particles left. By default it is NO.

Since:
v0.8
- (CCParticleBatchNode*) batchNode [read, write, assign]

weak reference to the CCSpriteBatchNode that renders the CCSprite

- (BOOL) blendAdditive [read, write, assign]

whether or not the particles are using blend additive. If enabled, the following blending function will be used.

    source blend function = GL_SRC_ALPHA;
    dest blend function = GL_ONE;
- (ccBlendFunc) blendFunc [read, write, assign]

conforms to CocosNodeTexture protocol

- (float) duration [read, write, assign]

How many seconds the emitter wil run. -1 means 'forever'

- (float) emissionRate [read, write, assign]

emission rate of the particles

- (NSInteger) emitterMode [read, write, assign]

Switch between different kind of emitter modes:

  • kCCParticleModeGravity: uses gravity, speed, radial and tangential acceleration
  • kCCParticleModeRadius: uses radius movement + rotation
- (ccColor4F) endColor [read, write, assign]

end color and end color variation of each particle

- (ccColor4F) endColorVar [read, write, assign]

end color variance of each particle

- (float) endRadius [read, write, assign]

The ending radius of the particles. Only available in 'Radius' mode.

- (float) endRadiusVar [read, write, assign]

The ending radius variance of the particles. Only available in 'Radius' mode.

- (float) endSize [read, write, assign]

end size in pixels of each particle

- (float) endSizeVar [read, write, assign]

end size variance in pixels of each particle

- (CGPoint) gravity [read, write, assign]

Gravity value. Only available in 'Gravity' mode.

- (float) life [read, write, assign]

life, and life variation of each particle

- (float) lifeVar [read, write, assign]

life variance of each particle

- (BOOL) opacityModifyRGB [read, write, assign]

does the alpha value modify color

- (NSUInteger) particleCount [read, assign]

Quantity of particles that are being simulated at the moment

- (tCCPositionType) positionType [read, write, assign]

particles movement type: Free or Grouped

Since:
v0.8
- (CGPoint) posVar [read, write, assign]

Position variance of the emitter

- (float) radialAccel [read, write, assign]

radial acceleration of each particle. Only available in 'Gravity' mode.

- (float) radialAccelVar [read, write, assign]

radial acceleration variance of each particle. Only available in 'Gravity' mode.

- (float) rotatePerSecond [read, write, assign]

Number of degress to rotate a particle around the source pos per second. Only available in 'Radius' mode.

- (float) rotatePerSecondVar [read, write, assign]

Variance in degrees for rotatePerSecond. Only available in 'Radius' mode.

- (CGPoint) sourcePosition [read, write, assign]

sourcePosition of the emitter

- (float) speed [read, write, assign]

speed of each particle. Only available in 'Gravity' mode.

- (float) speedVar [read, write, assign]

speed variance of each particle. Only available in 'Gravity' mode.

- (ccColor4F) startColor [read, write, assign]

start color of each particle

- (ccColor4F) startColorVar [read, write, assign]

start color variance of each particle

- (float) startRadius [read, write, assign]

The starting radius of the particles. Only available in 'Radius' mode.

- (float) startRadiusVar [read, write, assign]

The starting radius variance of the particles. Only available in 'Radius' mode.

- (float) startSize [read, write, assign]

start size in pixels of each particle

- (float) startSizeVar [read, write, assign]

size variance in pixels of each particle

- (float) tangentialAccel [read, write, assign]

tangential acceleration of each particle. Only available in 'Gravity' mode.

- (float) tangentialAccelVar [read, write, assign]

tangential acceleration variance of each particle. Only available in 'Gravity' mode.

- (CCTexture2D*) texture [read, write, retain]

conforms to CocosNodeTexture protocol

- (NSUInteger) totalParticles [read, write, assign]

maximum particles of the system


The documentation for this class was generated from the following file: