70 lines
3.3 KiB
Markdown
70 lines
3.3 KiB
Markdown
# Particles
|
|
|
|
Particles are a table, all fields of which are optional.
|
|
|
|
| Field | Description | Default |
|
|
| --------------- | --------------------------------------------------------------------- | --------------- |
|
|
| texture | Particle texture. | "" |
|
|
| frames | Animation frames (array of texture names). Must be in a single atlas. | {} |
|
|
| lighting | Lighting. | true |
|
|
| collision | Collision detection. | true |
|
|
| max_distance | Maximum distance from the camera at which particles may spawn. | 16.0 |
|
|
| spawn_interval | Particle spawn interval in seconds. | 1.0 |
|
|
| lifetime | Average lifetime of particles in seconds. | 5.0 |
|
|
| lifetime_spread | Maximum deviation of particle lifetime (from 0.0 to 1.0). | 0.2 |
|
|
| velocity | Initial linear velocity of particles. | {0, 0, 0} |
|
|
| acceleration | Particles acceleration. | {0, -16, 0} |
|
|
| explosion | Force of particles explosion on spawn. | {2, 2, 2} |
|
|
| size | Size of particles. | {0.1, 0.1, 0.1} |
|
|
| size_spread | Maximum particle size spread over time. | 0.2 |
|
|
| angle_spread | Maximum initial rotation angle spread (0 to 1) | 0.0 |
|
|
| min_angular_vel | Minimum angular velocity (radians per sec). Non-negative. | 0.0 |
|
|
| max_angular_vel | Maximum angular velocity (radians per sec). Non-negative. | 0.0 |
|
|
| spawn_shape | Shape of particle spawn area. (ball/sphere/box) | ball |
|
|
| spawn_spread | Size of particle spawn area. | {0, 0, 0} |
|
|
| random_sub_uv | Size of random texture subregion (1 - entire texture will be used). | 1.0 |
|
|
|
|
## *gfx.particles* library
|
|
|
|
```lua
|
|
gfx.particles.emit(
|
|
-- emitter position: static coordinates or entity uid
|
|
origin: vec3 | int,
|
|
-- particle count (-1 - infinite)
|
|
count: int,
|
|
-- particle settings table
|
|
preset: table,
|
|
-- additional particle settings table
|
|
[optional] extension: table
|
|
) -> int
|
|
```
|
|
|
|
Creates a particle emitter, returning its id.
|
|
|
|
```lua
|
|
gfx.particles.stop(id: int)
|
|
```
|
|
|
|
Stops the emitter permanently. The emitter will be deleted
|
|
automatically later.
|
|
|
|
```lua
|
|
gfx.particles.is_alive(id: int) -> bool
|
|
```
|
|
|
|
Checks if the emitter is running. Returns false if it is stopped or if the emitter does not exist.
|
|
|
|
```lua
|
|
gfx.particles.get_origin(id: int) -> vec3 | int
|
|
```
|
|
|
|
Returns the static position or uid of the entity the emitter is bound to.
|
|
|
|
Returns nil if the emitter does not exist.
|
|
|
|
``lua
|
|
gfx.particles.set_origin(id: int, origin: vec3 | int)
|
|
```
|
|
|
|
Sets the static position or uid of the entity the emitter will be bound to.
|