Interface: pfSystem

The pfSystem Interface is exposed by the Particle Flow Source Class.

Methods:

<float>getMultiplier <time>time

Returns the Qualtity multiplier depending on the Render State. See methods setRenderState and isRenderState below for more details on Render State.

A value of 1.0f means that the operator produces particles at 100% rate. A value of 0.5f means that the operator produces only half the particles that it is supposed to generate. For example, if a Birth operator is set to produce 1000 particles total, then when the multiplier is set to 0.5f, the operator will produce only 500 particles.

Note:

The time parameter is reserved for future use. Pass 0f or any time value to call the method.

Example:

--Create a new Particle Flow Source in the Viewport

--from the Create tab, then get it by name from the scene

pfs = $'PF Source 01'

$PF_Source:PF Source 01 @ [2.536594,-48.031052,0.000000]

--Get the Multiplier while in Viewport state

pfs.getMultiplier 0f

0.5

--Change the Particle Source State to Render

pfs.SetRenderState true

true

--Get the Multiplier again – when in Render State, the Source

--generates all particles!

pfs.getMultiplier 0f

1.0

<integer>getBornAllowance()

Returns the born allowance, which is currently the Upper Limit at time zero, same as <PF_Source>.Particle_Amount_Limit.

Note:

Implemented for future use.

<bool>hasEmitter()

Returns true if the Particle System has emitter(s), false otherwise.

<integer>getEmitterType <time>time

Returns the Emitter Type at the specified time.

<void>getEmitterDimensions <time>time <&float array>dimensions

dimensions is In and Out parameter

Returns the Emitter Dimensions at the specified time as an array of floats stored in the by-reference variable.

<mesh>getEmitterGeometry <time>time

Returns the Emitter geometry at the specified time as mesh.

<bool>isEmitterGeometryAnimated()

Returns true if the Emitter geometry is animated, false otherwise.

<void>setRenderState <bool>renderState

Sets the render State of the Particle System to the supplied boolean value. See explanation below.

<bool>isRenderState()

Returns true if the Particle System is in render state, false otherwise.

IMPORTANT:

A Particle Flow particle system has two states: render and viewport. At any given moment it is exclusively in the one state or the other. The particle system may have different parameters during render and viewport (i.e. Multiplier value, or emitter geometry etc.) therefore it's important to know what state it is in. It is possible to switch the state of a particle system using the setRenderState method. A Particle Flow particle system alternates its state automatically when the rendering starts and when the rendering ends

<time>getIntegrationStep()

Returns the Integration Step as time value.

<integer>getUpdateType()

Returns the Update Type as integer.

0: Complete

1: Forward

<integer>numParticlesSelected()

Returns the number of selected particles.

<index>getSelectedParticleID <index>index

Returns the particle ID of the indexed particle.

<bool>isParticleSelected <index>index

Returns true if the indexed particle is selected, false otherwise.

<integer>numActionListsSelected()

Returns the number of selected Action Lists.

<node>getSelectedActionList <index>index

Returns the indexed Action List.

<bool>isActionListSelected <index>index

Returns true if the indexed Action List is selected, false otherwise.

 

Examples and Results:

--Create a new Particle Flow Source in the Viewport

--from the Create tab, then get it by name from the scene

pf = $'PF Source 01'

$PF_Source:PF Source 01 @ [0.000000,0.000000,0.000000]

--Get the number of particles that the Source can give birth to

pf.getBornAllowance()

100000

--Check whether the Source has an emitter

pf.hasEmitter()

true

--Get the emitter type

pf.getEmitterType 0

0

dim = #() --define an empty array

#()

--get the Emitter dimensions,

--pass the empty array variable by reference

pf.getEmitterDimensions 0 &dim

OK

--look into the previously empty array –

--the dimensions are in it

Dim

#(20.0, 20.0)

--Get the Emitter Geometry as TriMesh on frame 0

m = pf.getEmitterGeometry 0

TriMesh

m.numverts --check the number of vertices

4

m.numfaces --check the number of faces

2

--Check if the emitter geometry is animated

pf.isEmitterGeometryAnimated()

false

--Set and get the render state

pf.setRenderState false

OK

pf.isRenderState()

false

pf.setRenderState true

OK

pf.isRenderState()

true

--Get the viewport integration step

pf.getIntegrationStep()

1f

--Get the update type – 0 means Complete!

pf.getUpdateType()

0

--Get the number of selected particles

pf.numParticlesSelected()

0

--Check if particle 1 is selected

pf.isParticleSelected 1

false

--Get the number of selected Action Lists in the UI

pf.numActionListsSelected()

0

--In the UI, select the first Action List and try again:

pf.numActionListsSelected()

1

--Get the node of the Action List you just selected:

pf.getSelectedActionList 1

$Event:Event 01 @ [0.000000,0.000000,0.000000]

This Interface is available in:

PF_Source : GeometryClass

See also

Particle Flow Interfaces