MAXScript Extensions > MAXScript Extensions for Particle Flow > Particle Flow Script Examples > Update Step Scripts >

# Final Step Update Example

| Particle Flow - Quick Navigation

Description:

The following example shows the default Final Step Update script with detailed comments.

Can Be Used With:

Used by PF_Source as default Final Step Update script.

Effect:

The default script modifies particle speed and direction, causing particles to follow a bulb-shaped path:

EXAMPLE
    --Get the current particle system executing the script
    pf_node_current = particleFlow.scriptRunner()

    --In case the current particle system is a valid node...
    if (pf_node_current != undefined) then(

    --Get the total number of particles
    count = pf_node_current.NumParticles()
    --Loop from 1 to the number of particles
    for i in 1 to count do(
    --Set the particle index in the container to the current i value.
    --This makes the i-th particle in the container the current one:
    pf_node_current.particleIndex = i

    --Get the age of the particle, multiply by 5 and use as angle
    --to define the particle speed
    --Decreasing the constant 5 will slow down the rotation
    --Increasing the constant will speed up the rotation
    age = 5*pf_node_current.particleAge

    --Calculate a factor variable based on the particle age
    --This variable will define the radius of the bulb and will vary
    --thanks to the sine of the age over time.
    --Change the constant 20 to change the radius.
    factor = 20*(sin(2*age)+1)

    --Finally, calculate and set the particle position
    --using the factor as Radius and the particle index as Angle
    --in the function of the circle. The position of the node has to be
    --added to move the particles to the origin of the Source.
    --Info: In general, a circle can be drawn using an Angle
    --going from 0 to 2*Pi and the following functions for X and Y:
    --X = CenterX+Radius*Cos(Angle)
    --Y = CenterY+Radius*Sin(Angle)
    --In our case, CenterX and CenterY are 0, Radius is set to factor,
    --and Angle is based on the particle index multiplied by 77.
    --The Z position is based on the age.
    pf_node_current.particlePosition = [factor*cos(77*i), factor*sin(77*i), -age] + pf_node_current.pos

    )--end i loop
    )--end if

#### See Also

- Every Step Update Example

- PF_Source : GeometryClass

- Particle Flow Sample Scripts