Every Step Update Example

Description

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

Can Be Used With:

Used by PF_Source as default Every Step Update script.

Effect:

The script modifies particle speed and direction, causing particles to follow a spiral 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 the speed of the particle using the
           --function of the circle.
           --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 0.05 units,
           --and Angle is based on the Age of the particles (see above).
           --Changing the constant 0.05 will change the radius of the path.
           --Changing the -0.05 (Z speed) will change the height of the spiral.
           pf_node_current.particleSpeed = [0.05*cos(age), 0.05*sin(age), -0.05]

       )--end i loop
   )--end if