3ds Max C++ API Reference
Loading...
Searching...
No Matches
IPFIntegrator.h

Functions

virtual bool Proceed (IObject *pCont, PreciseTimeValue time, int index)=0
 Proceed a single particle with the given index to the given time.
 
virtual bool Proceed (IObject *pCont, PreciseTimeValue time)=0
 Proceed all particles in the container to the given time

 
virtual bool Proceed (IObject *pCont, Tab< PreciseTimeValue > &times)=0
 Proceed all particles in the container to the given times (may be different for each particle).
 
virtual bool Proceed (IObject *pCont, PreciseTimeValue time, BitArray &selected)=0
 Proceed selected particles only to the given time.
 
virtual bool Proceed (IObject *pCont, Tab< PreciseTimeValue > &times, BitArray &selected)=0
 Proceed selected particles only to the given times (maybe different for each particle)
 
PFExport bool ProceedSync (IObject *pCont, TimeValue timeTick, float timeFraction, bool isSelected, BitArray *selected)
 "function-publishing" hook-up for the methods above
 
PFExport bool ProceedASync (IObject *pCont, Tab< TimeValue > *timeTicks, Tab< float > *timeFractions, bool isSelected, BitArray *selected)
 "function-publishing" hook-up for the methods above
 
virtual IPFIntegratorGetEncapsulatedIntegrator ()
 An integrator may rely on another integrator to calculation some particle proceedings.
 
PFExport bool HasEncapsulatedIntegrator (IPFIntegrator *integrator)
 Check if the current integrator has the given integrator encapsulated inside the encapsulated integrator can be more than one level down.
 
FPInterfaceDescGetDesc ()
 

Variables

static Tab< IObject * > m_objs
 

Friends

PFExport IPFIntegratorGetPFIntegrator ()
 Friend function declarations.
 
PFExport void ReleasePFIntegrator (IPFIntegrator *)
 Friend function declarations.
 

Detailed Description

Function Documentation

◆ Proceed() [1/5]

virtual bool Proceed ( IObject pCont,
PreciseTimeValue  time,
int  index 
)
pure virtual

Proceed a single particle with the given index to the given time.

If pCont is NULL then the method works with previously given container. It will expedite the call since the method won't acquire particle channels from the container but uses the previously acquired channels. When working with individual particles from the same container, a good practice is to make the call for the first particle with the container specified, and then for all other particles with the container set to NULL.

Parameters
pContthe particleContainer
timethe time for particles to come to; each particle may have its own current valid time; the parameter sets the time for all particles to synchronize to
indexthe index of the particle to proceed
Returns
true if the operation has been proceeded successfully.

◆ Proceed() [2/5]

virtual bool Proceed ( IObject pCont,
PreciseTimeValue  time 
)
pure virtual

Proceed all particles in the container to the given time

Parameters
pContthe particleContainer
timethe time for particles to come to; each particle may have its own current valid time; the parameter sets the time for all particles to synchronize to

◆ Proceed() [3/5]

virtual bool Proceed ( IObject pCont,
Tab< PreciseTimeValue > &  times 
)
pure virtual

Proceed all particles in the container to the given times (may be different for each particle).

Parameters
pContthe particleContainer
timestime value for a particle to come to; particles may have different time values to come to

◆ Proceed() [4/5]

virtual bool Proceed ( IObject pCont,
PreciseTimeValue  time,
BitArray selected 
)
pure virtual

Proceed selected particles only to the given time.

Parameters
pContthe particleContainer
timethe time for particles to come to; each particle may have its own current valid time; the parameter sets the time for all particles to synchronize to
selectedbitArray to define which particles to proceed

◆ Proceed() [5/5]

virtual bool Proceed ( IObject pCont,
Tab< PreciseTimeValue > &  times,
BitArray selected 
)
pure virtual

Proceed selected particles only to the given times (maybe different for each particle)

Parameters
pContthe particleContainer
timestime value for a particle to come to; particles may have different time values to come to
selectedbitArray to define which particles to proceed

◆ ProceedSync()

PFExport bool ProceedSync ( IObject pCont,
TimeValue  timeTick,
float  timeFraction,
bool  isSelected,
BitArray selected 
)

"function-publishing" hook-up for the methods above

Parameters
pContparticleContainer
timeTick,timeFractiontime for particles to come to. All particles may have the same time value to come to, in that case the method with timeTick and timeFraction have to used. Sum of timeTick and timeFraction define the exact time value (without TimeValue granularity). If particles have different time values to come to than use the second method with Tabs of timeTicks and timeFractions
isSelected,selectedif only part of particles need to be time-advanced then isSelected is true, and "selected" BitArray have to be defined

◆ ProceedASync()

PFExport bool ProceedASync ( IObject pCont,
Tab< TimeValue > *  timeTicks,
Tab< float > *  timeFractions,
bool  isSelected,
BitArray selected 
)

"function-publishing" hook-up for the methods above

Parameters
pContparticleContainer
timeTicks,timeFractionstime for particles to come to. All particles may have the same time value to come to, in that case the method with timeTick and timeFraction have to used. Sum of timeTick and timeFraction define the exact time value (without TimeValue granularity). If particles have different time values to come to than use the second method with Tabs of timeTicks and timeFractions
isSelected,selectedif only part of particles need to be time-advanced then isSelected is true, and "selected" BitArray have to be defined

◆ GetEncapsulatedIntegrator()

virtual IPFIntegrator * GetEncapsulatedIntegrator ( )
inlinevirtual

An integrator may rely on another integrator to calculation some particle proceedings.

For example, a Collision test has IPFIntegrator interface to proceed particles according to collision approximations. At the same time a Collision test doesn't proceed angular velocity of a particle. For that the test relies on encapsulated standard integrator.

130{ return NULL; }
#define NULL
Definition: autoptr.h:18

◆ HasEncapsulatedIntegrator()

PFExport bool HasEncapsulatedIntegrator ( IPFIntegrator integrator)

Check if the current integrator has the given integrator encapsulated inside the encapsulated integrator can be more than one level down.

◆ GetDesc()

FPInterfaceDesc * GetDesc ( )
inlinevirtual
Remarks
Returns a pointer to the class which contains the interface metadata.

Implements FPInterface.

#define PFINTEGRATOR_INTERFACE
Definition: IPFIntegrator.h:27
virtual FPInterfaceDesc * GetDescByID(Interface_ID id)
Definition: ifnpub.h:613

Variable Documentation

◆ m_objs

Tab<IObject*> m_objs
staticprotected

Friends

◆ GetPFIntegrator

PFExport IPFIntegrator * GetPFIntegrator ( )
friend

Friend function declarations.

◆ ReleasePFIntegrator

PFExport void ReleasePFIntegrator ( IPFIntegrator )
friend

Friend function declarations.