ParticleEmitter
Description
This component makes an entity emit particles.
Properties
Property | Type | Default | Description |
---|---|---|---|
stopped | boolean | false | Playback state of the emitter |
emitterLife | number | 0 | The lifetime of the emitter in seconds |
particlesPerShot | integer | 20 | Particles per emission |
emitDelay | number | 0.1 | The time between particle emissions |
minimumLifespan | number | 1 | Minimum lifetime range for each particle |
maximumLifespan | number | 1 | Maximum lifetime range for each particle |
mass | number | 1 | Mass of each particle |
gravity | number | 0.2 | Gravity factor of each particle |
scale | number | 0.2 | Uniform scale of each particle |
forceX | number | 5 | Force applied to each particle in the X direction |
forceY | number | 12 | Force applied to each particle in the Y direction |
forceZ | number | 5 | Force applied to each particle in the Z direction |
spread | number | 360 | Area and direction that each particles spawns relative to its origin |
radialVelocity | number | 5 | Amount of radial velocity applied to each particle |
spawnAreaType | string | 'point' | Supported types are: 'point', 'box' and 'sphere' |
spawnAreaWidth | number | 0 | Width of the spawn area box (Box only) |
spawnAreaHeight | number | 0 | Height of the spawn area box (Box only) |
spawnAreaDepth | number | 0 | Depth of the spawn area box (Box only) |
spawnAreaRadius | number | 0 | Radius of the spawn area sphere (Sphere only) |
boundingZoneType | string | 'none' | Supported types are: 'none', 'box', 'sphere' |
boundingZoneWidth | number | 0 | Width of the bounding zone (Box only) |
boundingZoneHeight | number | 0 | Height of the bounding zone (Box only) |
boundingZoneDepth | number | 0 | Depth of the bounding zone (Box only) |
boundingZoneRadius | number | 0 | Radius of the bounding zone (Sphere only) |
resourceType | string | 'sprite' | Supported types are: 'sprite', and 'model' |
resourceUrl | string (URL) | '' | URL of the resource |
blendingMode | string | 'none' | Supported types are: 'none', 'normal', 'add', 'multiply' and 'subtract' |
animateColor | boolean | false | Determines if color should be animated |
colorStart | string (Hex) | undefined | The starting color of each particle |
colorEnd | string (Hex) | undefined | The ending color of each particle |
randomDrift | boolean | false | Enable randomized drifting for each particle |
randomDriftRange | number | undefined | Determines the randomized drift range and speed of each particle |
collisions | boolean | false | Determines if particles should respond to physics collisions |
Functions
Get
Returns a read-only reference.
Example
ecs.ParticleEmitter.get(world, component.eid)
Set
Ensures the component exists on the entity, then assigns the (optional) data to the component.
Example
ecs.ParticleEmitter.set(world, component.eid, {
stopped: false,
emitterLife: 0,
particlesPerShot: 20,
emitDelay: 0.1,
minimumLifespan: 1,
maximumLifespan: 1,
mass: 1,
gravity: 0.2,
scale: 0.2,
forceX: 5,
forceY: 12,
forceZ: 5,
spread: 360
})
Mutate
Perform an update to the component within a callback function. Return true
to indicate no changes made.
Example
ecs.ParticleEmitter.mutate(world, component.eid, (cursor) => {
cursor.emitDelay = 0.05;
cursor.particlesPerShot = 50;
return false;
})
Remove
Removes the component from the entity.
Example
ecs.ParticleEmitter.remove(world, component.eid)
Has
Returns true
if the component is present on the entity.
Example
ecs.ParticleEmitter.has(world, component.eid)
Reset
Adds, or resets the component to its default state.
Example
ecs.ParticleEmitter.reset(world, component.eid)
Advanced Functions
Cursor
Returns a mutable reference. Cursors are reused so only one cursor for each component can exist at a time.
Example
ecs.ParticleEmitter.cursor(world, component.eid)
Acquire
Same behavior as cursor, but commit must be called after the cursor is done being used.
Example
ecs.ParticleEmitter.acquire(world, component.eid)
Commit
Called after acquire. An optional third argument determines whether the cursor was mutated or not.
Example
ecs.ParticleEmitter.commit(world, component.eid)
ecs.ParticleEmitter.commit(world, component.eid, false)
Dirty
Mark the entity as having been mutated. Only needed in a specific case where systems are mutating data.
Example
ecs.ParticleEmitter.dirty(world, component.eid)