Particle Flow SDK Extensions

The following headers are added to the Particle Flow SDK (maxsdk\include\ParticleFlow).

The IParticleChannel*.h headers are added to improve the handling of particle data in the form of particle data channels.

If you implement your own data channel, you can use the IParticleChannelExt2::Deglobalize() method that makes the data non-global in the particle channel. This allows multi-threaded read/write access to the data.

If you create your own operators/test, you can now use the IParticleChannelINodeHandle interface (through GetParticleChannelShapeNodeHandleRInterface and GetParticleChannelShapeNodeHandleWInterface calls) for querying about the handles assigned to the particles. It is relevant when the particle shapes are defined as reference to the geometry objects in a scene through the particle instance or a similar operator.

The IPFActionExt interface (IPFActionExt::InteruptUpdate() method) can be used when a developer implements a PFlow operator/test with complex logic that is dependent on the entire PFlow system. This method can be used to signal a container update for a particle group. The container update can continue only after all the particle groups in the system are updated (including possible interruptions as well). This is done for operators that are instanced across a PFlow system to ensure real instant snapshot of the whole system and to guarantee proper interaction between particles at the same instant moment.

The interfaces related to the files IParticleGroupExt.h, IPFActionListMaterialHolder.h, IPFOperatorPhysXWorld.h, and PFVrayClassIDs.h are used for internal communication between different modules of Particle Flow.