MAXScript Extensions > MAXScript Extensions for Particle Flow > Particle Flow Interfaces > Interfaces >

# Interface: ActionList

The ActionList Interface is exposed by the Event Class.

It lets you add and removed Actions to/from the Event, test the type of the Actions on the list and control the Event’s appearance in the Particle View.

Methods:

    <integer><PF_Event>.numActions()

Returns the number of actions in the list.

    <node><PF_Event>.getAction <index>index

Returns the indexed action from the list.

    <bool><PF_Event>.appendAction <node>action

Appends the specified action to the list, returns true on success.

See VolumeDocking Sample Script for a complete example.

    <bool><PF_Event>.insertAction <node>action <index>index

Inserts the specified action in the list at the position defined by the index value. Returns true on success.

See VolumeDocking Sample Script for a complete example.

    <bool><PF_Event>.removeAction <index>index

Removes the indexed action from the list. Returns true on success.

    <bool><PF_Event>.hasAction <node>action <&index>index

    index is In and Out parameter

Returns true if the specified action is on the list. When true, the by-reference index variable will contain the actual index of the existing action on the list.

    <bool><PF_Event>.isAction <node>action

Returns true if the specified node is an action.

    <bool><PF_Event>.isOperator <node>action

Returns true if the specified node is an operator.

    <bool><PF_Event>.isTest <node>action

Returns true if the specified node is a test.

    <bool><PF_Event>.isActivated()

Returns true if activated.

    <void><PF_Event>.activate <bool>active

Sets the active state to the boolean value specified by the active parameter.

    <integer><PF_Event>.isActionActive <index>index

Returns 1 if the indexed action is active, 0 otherwise.

    <void><PF_Event>.activateAction <index>index <integer>active

Sets the active flag of the indexed action. 0 = inactive, 1= active

    <void><PF_Event>.getPViewLocation <&integer>x <&integer>y

    x is In and Out parameter
    y is In and Out parameter

Returns the x and y location of the Particle View in the by-reference parameters.

    <void><PF_Event>.setPViewLocation <integer>x <integer>y

Sets the Particle View location to the specified integer values.

X and Y Range is from 0 to 64000.

    <integer><PF_Event>.getPViewZOrder()

Returns the Particle View Z order.

    <void><PF_Event>.setPViewZOrder <integer>z order

Sets the Particle View Z Order. Range is from0 to 64000.

    <integer><PF_Event>.getListWidth()

Returns the List Width.

    <void>setListWidth <integer>width

Sets the List width. Range is from 100 to 1000 pixels.

    <integer><PF_Event>.getPViewRightBoundary()

Returns the right boundary of the Particle View.

    <bool><PF_Event>.isCollapsed()

Returns true if the action list is collapsed.

NoteCollapsing is not implemented yet.

    <void><PF_Event>.collapse()

Collapses the action list.

NoteCollapsing is not implemented yet.

    <void><PF_Event>.expand()

Expands the action list.

NoteExpanding is not implemented yet.

    <bool><PF_Event>.hasUpStream()

Returns true if the action list has an upstream list.

EXAMPLES AND RESULTS
    --Open Particle View to see results
    ParticleFlow.openParticleView()
    --Create an empty event
    ev = Event()
    --> $Event:Event 02 @ [0.000000,0.000000,0.000000]
    --Get the number of actions - the Event IS empty...
    ev.numActions()
    --> 0
    --Disable Automatic Event Encapsulation
    particleFlow.beginEdit()
    --> OK
    --Create a new Find_Target Action
    ft = find_target()
    --> $Find_Target:Find Target 01 @ [0.000000,0.000000,0.000000]
    --Enable Encapsulation again
    particleFlow.endEdit()
    --> OK
    --Append the Find_Target to the Event
    ev.appendAction ft
    --> true
    --Get the first action in the Event...
    ev.getAction 1
    --> $Find_Target:Find Target 01 @ [0.000000,0.000000,0.000000]
    --Let’s create another Action...
    particleFlow.beginEdit()
    --> OK
    --This time a Birth Action
    bt = birth()
    --> $Birth:Birth 01 @ [0.000000,0.000000,0.000000]
    particleFlow.endEdit()
    --> OK
    --Insert the Birth at first position
    ev.insertAction bt 1
    --> true
    --Try to insert the Find_Target
    --You cannot - it is already in the Event!
    ev.insertAction ft 1
    --> false
    --Remove the second event (Find_Target)
    ev.removeAction 2
    --> true
    --Initialize a variable to pass by reference
    ind = 0
    --> 0
    --Check if the Birth is in the Event - It is!
    ev.hasAction bt &ind
    --> true
    --The by-reference variable has the index
    ind
    --> 1
    --See if Find_Target is also there -
    --It isn’t anymore.
    ev.hasAction ft &ind
    --> false
    --See if Birth is an Action...
    ev.isAction bt
    --> true
    --See if Find_Target is an Action...
    ev.isAction ft
    --> true
    --See if Birth is an Operator...
    ev.isOperator bt
    --> true
    --See if Find_Target is an Operator...
    ev.isOperator ft
    --> false
    --See if Birth is a Test...
    ev.isTest bt
    --> false
    --See if Find_Target is a Test...
    ev.isTest ft
    --> true
    --See if the Event is activated...
    ev.isActivated()
    --> true
    --Deactivate it!
    ev.activate false
    --> OK
    --Now it is deactivated.
    ev.isActivated()
    --> false
    --Activate it again.
    ev.activate true
    --> OK
    --Works!
    ev.isActivated()
    --> true
    --See if the Birth action is active
    ev.isActionActive 1
    --> 1

    --Deactivate the Birth action
    ev.activateAction 1 0
    --> OK
    --Did it work?
    ev.isActionActive 1
    --> 0
    --Back to Active
    ev.activateAction 1 1
    --> OK
    --Birth is back to work!
    ev.isActionActive 1
    --> 1
    --Initialize some variables to pass by reference
    x = y = 0
    --> 0
    --Get the Event location in Particle View
    ev.getPViewLocation &x &y
    --> OK
    --X now contains the X coordinate...
    x
    --> 27
    --...and Y the Y coordinate
    y
    --> 14
    --Let’s change the location to 40,40
    ev.setPViewLocation 40 40
    --> OK
    --Get again to make sure it worked...
    ev.getPViewLocation &x &y
    --> OK
    x
    --> 40
    y
    --> 40
    --Get the Z order of the Event
    ev.getPViewZOrder()
    --> 1
    --Set the Z order down to 0
    ev.setPViewZOrder 0
    --> OK
    --Check that it worked
    ev.getPViewZOrder()
    --> 0
    --Get the width of the Event
    ev.getListWidth()
    --> 180
    --Set the width to something larger
    ev.setListWidth 300
    --> OK
    --It worked (you should see it in PView)
    ev.getPViewRightBoundary()
    --> 300
    --Make it smaller
    ev.setListWidth 100
    --> OK
    --Check where the right boundary is
    ev.getPViewRightBoundary()
    --> 100
    --Get the collapsed state of the Event - currently it will
    --always return false, this is for Future Use.
    ev.isCollapsed()
    --> false
    --Note: Not Implemented Yet!
    ev.collapse()
    --> OK
    --Note: Not Implemented Yet!
    ev.expand()
    --> OK
    --See if there are Events upstream - there are none
    ev.hasUpStream()
    --> false

This Interface is available in:

Event : Helper

#### See Also

- Particle Flow Interfaces