Termination in the Emitter Guide

Termination in the Emitter Guide

The Termination section of the Emitter Guide decides when a particle dies. It holds a list of terminators. Each one is a rule, and a particle is terminated as soon as any of them fires.

Add a terminator with the Add button in the section header and pick its kind from the menu. Remove one with the trash button on its row. You can mix kinds freely and add several of the same kind.

A new emitter starts with a single Max Lifetime terminator.

The link button in the section header ties the generator rate to the Max Lifetime value, so the emitter keeps about as many particles alive as it can hold. See Linking the rate to particle life.

Max Lifetime

The particle dies as soon as its lifetime reaches the value you set. The value is decided once, when the particle is born: a random range gives every particle its own lifetime, and later changes of the value do not affect particles that already exist.

Values of type Over Particle Life (graphs over the particle's normalized life) need to know the particle's whole lifetime. They are available only while the emitter has exactly one Max Lifetime terminator. The editor warns you before you add a second one or remove the last one.

Path

The particle dies when it crosses the path you draw. Press Edit path... to draw or change it in the preview.

Condition (A < B)

A generic terminator built from two values, A and B. The particle lives while A is less than B, and is terminated as soon as A reaches B (A ≥ B).

Both values are full Emitter Guide values: a fixed number, a random range, a graph, the particle's own time or position, or a multi-value combining several rows with an expression. The comparison runs every frame, so a value that changes over the particle's life — its time or position, a graph over its time — is compared with its current value. Values that are decided once at birth stay fixed for the particle's whole life: a random range, a random-from-graph value, and any row with OnInit switched on.

A Condition terminator compares single numbers. When a value carries a vector (a position, say), take one component of it in an expression.

A new Condition terminator starts with A = 0 and B = 1, so it terminates nothing until you change it.

Example: an axis-aligned border

Kill every particle that moves further right than x = 300:

  1. Add a Condition terminator.
  2. Switch A to a multi-value. Set the dimension of its row a to 3 (the number button next to the row), then set the row to Particle Position, and type the expression x(a).
  3. Set B to the fixed value 300.

For a rectangle, add one Condition terminator per side, for example y(a) against 500, and -200 against x(a) for the left side. Each comparison is much cheaper than a terminator path.

Relation to the scheme

Each Condition terminator builds one TerminatorCondit block in the Emitter Scheme, with A on its Less. value input and B on its Great. value input. Fixed values are written straight into the block's properties.