Integrator ProceedSynch Example

Description:

The following examples show the difference in particle position in two PF_Sources using the Integrator Interface’s proceedSynch methods.

Can Be Used With:

These two sample scripts should be used inside of Script_Test actions.

Effect:

Allows the user to compare the effects of two ProceedSynch calls.

The resulting positions of all particles will be printed to the Listener.

EXAMPLE 1

``` --The ChannelsUsed handler defines the channels --to be made available to the script. --For the list of all channels, see --Interface: MaxscriptParticleContainer --The parameter pCont passed to the handler --contains the Particle Container the script is applied to on ChannelsUsed pCont do ( pCont.useTime = true --enable the Time channel pCont.usePosition = true --enable the Position channel )

--The Init handler is called on initialization. --It is not used in this case. on Init pCont do ( )

--In the Proceed handler, we will call the ProceedSync method --of the integrator. on Proceed pCont do ( end = pCont.GetTimeEnd() as float _int = pCont.GetIntegrator() count = pCont.NumParticles() pCont_curr = pCont.GetParticleContainer()

for i in 1 to count do ( pCont.particleIndex = i if _int != undefined then _int.proceedSync pCont_curr (end/160) 0.0 false #{} format "p1.particle%=%\n" i (pCont.GetParticlePosition i) ) )

--The Release handler is used to do cleanup work. --Not used in this case. on Release pCont do ( )

```

EXAMPLE 2

``` --The ChannelsUsed handler defines the channels --to be made available to the script. --For the list of all channels, see --Interface: MaxscriptParticleContainer --The parameter pCont passed to the handler --contains the Particle Container the script is applied to on ChannelsUsed pCont do ( pCont.useTime = true --enable the Time channelpCont.usePosition = true --enable the Position channel ) --The Init handler is called on initialization. --It is not used in this case. on Init pCont do ( )

on Proceed pCont do ( end = pCont.GetTimeEnd()asfloat_int = pCont.GetIntegrator() count = pCont.NumParticles()pCont_curr = pCont.GetParticleContainer()

for i in 1 to count do ( pCont.particleIndex = i if _int != undefined then _int.proceedSync pCont_curr (end/160) 0.5 false #{} -- Array version to try out: --_int.proceedASync pCont_curr #((end/160), (2end/160), (3end/160)) #(0.1, 0.2, 0.5) true #{1..3}

format "p2.particle%=%\n" i (pCont.GetParticlePosition i) ) )

--The Release handler is used to do cleanup work. --Not used in this case. on Release pCont do ( )

```