3ds Max C++ API Reference
IParticleGroup.h

Enumerations

enum  { invalidateCurrent =0 , invalidateViewport =1 , invalidateRender =2 , invalidateBoth =3 }
 

Functions

virtual INodeGetParticleSystem () const =0
 get a primary particle system for the particle group More...
 
virtual void SetParticleSystem (INode *pSystem)=0
 set a reference on a primary particle system More...
 
virtual INodeGetActionList () const =0
 get a primary action list for the particle group More...
 
virtual void SetActionList (INode *aList)=0
 set a reference on a primary action list More...
 
virtual int GetActiveStatus () const =0
 get activity status of the group; the group can be put into "idle" mode if returns zero then the group is in the "idle" mode More...
 
virtual void SetActiveStatus (int status)=0
 set activity status of the group More...
 
virtual int UpdateActiveStatus ()=0
 updates activity status of the group taking into consideration schematics of the primary particle system and primary action list if the group is "fertile" but the primary particle system does not have direct association with the primary action list then the group is put into "idle" mode returns activity status to be set More...
 
virtual void UpdateActionSet ()=0
 updates set of actions in the particle group the set is composed from global actions from the primary particle system and local actions from the associated primary actionList More...
 
virtual MtlGetMaterial () const =0
 get material from the list of actions the last action that has a material is the one More...
 
virtual DWORD GetWireColor () const =0
 get wire color from the list of actions the last action that has a PFViewport interface is the one More...
 
virtual IObjectGetParticleContainer () const =0
 get a particle container for the particle group More...
 
virtual const IntervalGetValidityInterval () const =0
 get validity interval for the particle group More...
 
virtual void SetValidityInterval (Interval &validInterval)=0
 set validity interval for the particle group More...
 
virtual void Init (TimeValue time)=0
 set initial state for the particle group with time More...
 
virtual TimeValue GetFertilityTime ()=0
 returns fertility time of the particle group: the first time moment when the particle group can generate particles from scratch if the group is not active then it is not "fertile" More...
 
virtual bool Update (TimeValue t)=0
 advance particles in the group to the given time More...
 
virtual bool PreUpdate (TimeValue t)=0
 the following method allows to apply the actions Proceed method as a pre procedure before any modification to the particle container has been made. More...
 
virtual bool PostUpdate (TimeValue t)=0
 the following method allows to apply the actions Proceed method as a post procedure when the amount of particles in all particle groups has been established and there won't be any particle transfers from one particle group to another More...
 
virtual bool TransferSurplusContainer (IObject *&pCont, INode *&actionListTo)=0
 returns a ptr at particleContainer to be transferred to another Event the particle group looses this ptr completely if the group doesn't have surplus containers then it returns false More...
 
virtual bool AppendSurplusContainer (IObject *pCont)=0
 appends the given container to the container of the group but first the given container is advanced in time to be in sync with the container of the group More...
 
virtual bool IsSync (TimeValue &time)=0
 returns true if content of the particle group is synchronized in time if group is in "sync" then it doesn't have surplus containers if false then the method returns the closest sync time for the particle group it could be a time of the closest cache moment. More...
 
virtual bool InstantUpdate (TimeValue t)=0
 set particles in the group to the given time it should not involve any history dependent operations if the method is called it implies that the group is able to make an instant jump to the given time thus there is a cache for that time More...
 
virtual bool SetFinalUpdateTime (TimeValue t)=0
 inform the group what would be a final time for the series of update calls More...
 
virtual void SetHandle (ULONG handle)=0
 Informs the particle group about the handle of the particle group node the handle is later used to uniquely identify particle container for cache purposes. More...
 
virtual void InvalidateContainer (int type=invalidateCurrent)=0
 clear particle content in the particle group then enum should be in sync with IPFCache More...
 
virtual void InvalidateCaches (int type=invalidateCurrent)=0
 clear caches in the particle group More...
 
virtual bool HasDelayedInvalidation () const =0
 in normal circumstances when a particle group receives a change notification message from the encapsulated operator/test the particle group should invalidate itself. More...
 
virtual bool DoDelayedInvalidation ()=0
 check if the group has a delayed invalidation More...
 
virtual void InvalidateActions ()=0
 Particle Group stores pointers at IPFAction interfaces for efficiency. More...
 
FPInterfaceDescGetDesc ()
 perform invalidation that was delayed More...
 

Detailed Description

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
invalidateCurrent 
invalidateViewport 
invalidateRender 
invalidateBoth 
@ invalidateCurrent
Definition: IParticleGroup.h:187
@ invalidateViewport
Definition: IParticleGroup.h:187
@ invalidateRender
Definition: IParticleGroup.h:187
@ invalidateBoth
Definition: IParticleGroup.h:187

Function Documentation

◆ GetParticleSystem()

INode * GetParticleSystem ( ) const
pure virtual

get a primary particle system for the particle group

◆ SetParticleSystem()

void SetParticleSystem ( INode pSystem)
pure virtual

set a reference on a primary particle system

◆ GetActionList()

virtualINode * GetActionList ( ) const
pure virtual

get a primary action list for the particle group

◆ SetActionList()

void SetActionList ( INode aList)
pure virtual

set a reference on a primary action list

◆ GetActiveStatus()

int GetActiveStatus ( ) const
pure virtual

get activity status of the group; the group can be put into "idle" mode if returns zero then the group is in the "idle" mode

◆ SetActiveStatus()

void SetActiveStatus ( int  status)
pure virtual

set activity status of the group

◆ UpdateActiveStatus()

int UpdateActiveStatus ( )
pure virtual

updates activity status of the group taking into consideration schematics of the primary particle system and primary action list if the group is "fertile" but the primary particle system does not have direct association with the primary action list then the group is put into "idle" mode returns activity status to be set

◆ UpdateActionSet()

void UpdateActionSet ( )
pure virtual

updates set of actions in the particle group the set is composed from global actions from the primary particle system and local actions from the associated primary actionList

◆ GetMaterial()

Mtl * GetMaterial ( ) const
pure virtual

get material from the list of actions the last action that has a material is the one

◆ GetWireColor()

DWORD GetWireColor ( ) const
pure virtual

get wire color from the list of actions the last action that has a PFViewport interface is the one

◆ GetParticleContainer()

IObject * GetParticleContainer ( ) const
pure virtual

get a particle container for the particle group

◆ GetValidityInterval()

const Interval & GetValidityInterval ( ) const
pure virtual

get validity interval for the particle group

◆ SetValidityInterval()

void SetValidityInterval ( Interval validInterval)
pure virtual

set validity interval for the particle group

◆ Init()

void Init ( TimeValue  time)
pure virtual

set initial state for the particle group with time

◆ GetFertilityTime()

TimeValue GetFertilityTime ( )
pure virtual

returns fertility time of the particle group: the first time moment when the particle group can generate particles from scratch if the group is not active then it is not "fertile"

◆ Update()

bool Update ( TimeValue  t)
pure virtual

advance particles in the group to the given time

◆ PreUpdate()

bool PreUpdate ( TimeValue  t)
pure virtual

the following method allows to apply the actions Proceed method as a pre procedure before any modification to the particle container has been made.

It is not recommended to change the particle container in this method. It is mostly to inquiring particle properties.

◆ PostUpdate()

bool PostUpdate ( TimeValue  t)
pure virtual

the following method allows to apply the actions Proceed method as a post procedure when the amount of particles in all particle groups has been established and there won't be any particle transfers from one particle group to another

◆ TransferSurplusContainer()

bool TransferSurplusContainer ( IObject *&  pCont,
INode *&  actionListTo 
)
pure virtual

returns a ptr at particleContainer to be transferred to another Event the particle group looses this ptr completely if the group doesn't have surplus containers then it returns false

◆ AppendSurplusContainer()

bool AppendSurplusContainer ( IObject pCont)
pure virtual

appends the given container to the container of the group but first the given container is advanced in time to be in sync with the container of the group

◆ IsSync()

bool IsSync ( TimeValue time)
pure virtual

returns true if content of the particle group is synchronized in time if group is in "sync" then it doesn't have surplus containers if false then the method returns the closest sync time for the particle group it could be a time of the closest cache moment.

The closest time is always smaller (earlier) then the request time.

◆ InstantUpdate()

bool InstantUpdate ( TimeValue  t)
pure virtual

set particles in the group to the given time it should not involve any history dependent operations if the method is called it implies that the group is able to make an instant jump to the given time thus there is a cache for that time

◆ SetFinalUpdateTime()

bool SetFinalUpdateTime ( TimeValue  t)
pure virtual

inform the group what would be a final time for the series of update calls

◆ SetHandle()

void SetHandle ( ULONG  handle)
pure virtual

Informs the particle group about the handle of the particle group node the handle is later used to uniquely identify particle container for cache purposes.

◆ InvalidateContainer()

void InvalidateContainer ( int  type = invalidateCurrent)
pure virtual

clear particle content in the particle group then enum should be in sync with IPFCache

◆ InvalidateCaches()

void InvalidateCaches ( int  type = invalidateCurrent)
pure virtual

clear caches in the particle group

◆ HasDelayedInvalidation()

bool HasDelayedInvalidation ( ) const
pure virtual

in normal circumstances when a particle group receives a change notification message from the encapsulated operator/test the particle group should invalidate itself.

However if the particle system is in the stage of proceeding then it is not possible to invalidate particle group right away. The particle group can know the status of the particle system by using global IsPFProceeding method (IPViewManager.h). Then if the system has the proceed status then the particle group should delay the invalidation.

◆ DoDelayedInvalidation()

bool DoDelayedInvalidation ( )
pure virtual

check if the group has a delayed invalidation

◆ InvalidateActions()

void InvalidateActions ( )
pure virtual

Particle Group stores pointers at IPFAction interfaces for efficiency.

Those pointers are maintained automatically. In some circumstances (during Replace) it is necessary to flush those interfaces because they may become invalid.

◆ GetDesc()

FPInterfaceDesc * GetDesc ( )
inlinevirtual

perform invalidation that was delayed

Implements FPInterface.

#define PARTICLEGROUP_INTERFACE
Definition: IParticleGroup.h:23
virtual FPInterfaceDesc * GetDescByID(Interface_ID id)
Definition: ifnpub.h:613