3ds Max C++ API Reference
IPFTest.h

Functions

PFExport IPFTest ()
 
virtual bool Proceed (IObject *pCont, PreciseTimeValue timeStart, PreciseTimeValue &timeEnd, Object *pSystem, INode *pNode, INode *actionNode, IPFIntegrator *integrator, BitArray &testResult, Tab< float > &testTime)=0
 
virtual void ProceedStep1 (IObject *pCont, Object *pSystem, INode *pNode, INode *actionNode, FPInterface *integrator)=0
 FnPub alternative to virtual bool Proceed() above. More...
 
virtual bool ProceedStep2 (TimeValue timeStartTick, float timeStartFraction, TimeValue &timeEndTick, float &timeEndFraction, BitArray &testResult, Tab< float > &testTime)=0
 FnPub alternative to virtual bool Proceed() above. More...
 
PFExport INodeGetNextActionList (INode *test, bool *linkActive=NULL)
 Gets INode of the next ActionList. More...
 
PFExport bool SetNextActionList (INode *nextAL, INode *test)
 Modifies the next ActionList for the test. More...
 
PFExport bool SetNextActionListMXS (INode *nextAL, INode *test)
 FnPub alternative for the method above; used by maxscript to set the next action list. More...
 
PFExport bool SetLinkActive (bool active, INode *test)
 Modifies activity status for the link to the next ActionList. More...
 
PFExport bool ClearNextActionList (INode *test)
 Deletes the wire going to the nextActionList for the test. More...
 
FPInterfaceDescGetDesc ()
 
void updateNextActionListValue (INode *nextAL)
 for internal use only More...
 
void updateArrowValue (Object *arrow)
 for internal use only More...
 
void updateLinkActiveValue (bool linkActive)
 for internal use only More...
 
ObjectGetArrowToNextActionList ()
 for internal use only More...
 

Variables

INodem_nextActionList
 
Objectm_arrow
 
bool m_linkActive
 

Detailed Description

Function Documentation

◆ IPFTest()

◆ Proceed()

virtual bool Proceed ( IObject pCont,
PreciseTimeValue  timeStart,
PreciseTimeValue timeEnd,
Object pSystem,
INode pNode,
INode actionNode,
IPFIntegrator integrator,
BitArray testResult,
Tab< float > &  testTime 
)
pure virtual
 \brief Returns true if the test has been proceeded successfully. Verifies the test condition and may change particle channels;

particle (that satisfy the condition) may be advanced to the time of the condition satisfaction according to the inertia operator "integrator". If ptr to the integrator is set to NULL then particles are not advanced in time.

Parameters
pContthe particle container.
timeStartthe time for a particle to start the simulation. Each particle may have its own current valid time greater than timeStart. In this case the test should consider the current particle time and timeEnd parameter.
timeEndthe 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. Sometimes the test may not be able to proceed all the particles to the given timeEnd. In this case the operator proceeds the particles as far as possible and set the parameter to the time achieved. All the following actions will be given the new timeEnd value as a time value for particles to come to, and the particle system will run another round of action stack modification in the attempt to proceed all the particles to the initially set time.
pSystemthe particle system that generates the particle stream; the same operator may get calls from different particle systems; if the result varies according to the particle system that generates particles, then this parameter is useful
pNodeINode of the particle system that generates the particles.
actionNodeINode of the test
integratoran operator to proceed particles according to "inertia" rules. The operator updates time, speed, position, spin, orientation channels on the basis of time, acceleration, speed, angular acceleration and spin channels. Each particle system has a default inertia operator. When an action want to update current time for particles, it uses the "inertia" operator. An Action in the ActionList stack my "switch" the suggested "inertia" operator by its own if the Action support the "inertial" operator interface. The particle system recognizes such an Action as a holder of "inertia" interface, and use it for "inertia" purposes later on. If the parameter is NULL then the particle system doesn't allow the test to advance particles in the time channel
testResulta bit array to indicate which particles satisfy the test condition
testTimefor particles that satisfy the condition, the list of time moments when a particle satisfies the condifion. The tab has the same number of entry as particles in the container. Only for particles that satisfy the condition the entry is set.

Implemented in PFSimpleTest.

◆ ProceedStep1()

virtual void ProceedStep1 ( IObject pCont,
Object pSystem,
INode pNode,
INode actionNode,
FPInterface integrator 
)
pure virtual

FnPub alternative to virtual bool Proceed() above.

FnPub doesn't allow having more than 7 parameters; therefore the method consists of two parts. The methods should be called successively: Step1 and then Step2.

Implemented in PFSimpleTest.

◆ ProceedStep2()

virtual bool ProceedStep2 ( TimeValue  timeStartTick,
float  timeStartFraction,
TimeValue timeEndTick,
float &  timeEndFraction,
BitArray testResult,
Tab< float > &  testTime 
)
pure virtual

FnPub alternative to virtual bool Proceed() above.

FnPub doesn't allow having more than 7 parameters; therefore the method consists of two parts. The methods should be called successively: Step1 and then Step2.

Implemented in PFSimpleTest.

◆ GetNextActionList()

PFExport INode* GetNextActionList ( INode test,
bool *  linkActive = NULL 
)

Gets INode of the next ActionList.

If particle satisfies the test then it is directed to this ActionList. Since a test may have several INode instances with different next events, it is necessary to define the INode the method returns activity status of the link to the next ActionList.

◆ SetNextActionList()

PFExport bool SetNextActionList ( INode nextAL,
INode test 
)

Modifies the next ActionList for the test.

Returns true if the next actionList has been set successfully. The nextAL node can be rejected if it is not real actionList.

◆ SetNextActionListMXS()

PFExport bool SetNextActionListMXS ( INode nextAL,
INode test 
)

FnPub alternative for the method above; used by maxscript to set the next action list.

◆ SetLinkActive()

PFExport bool SetLinkActive ( bool  active,
INode test 
)

Modifies activity status for the link to the next ActionList.

Returns true if the modification has been done successfully

◆ ClearNextActionList()

PFExport bool ClearNextActionList ( INode test)

Deletes the wire going to the nextActionList for the test.

Returns true if the wire was deleted successfully. The test node can be rejected if it is not a real test action.

◆ GetDesc()

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

Implements FPInterface.

148 { return GetDescByID(PFTEST_INTERFACE); }
#define PFTEST_INTERFACE
Definition: IPFTest.h:23
virtual FPInterfaceDesc * GetDescByID(Interface_ID id)
Definition: ifnpub.h:613

◆ updateNextActionListValue()

void updateNextActionListValue ( INode nextAL)
inline

for internal use only

152 { m_nextActionList = nextAL; }
INode * m_nextActionList
Definition: IPFTest.h:168

◆ updateArrowValue()

void updateArrowValue ( Object arrow)
inline

for internal use only

156 { m_arrow = arrow; }
Object * m_arrow
Definition: IPFTest.h:169

◆ updateLinkActiveValue()

void updateLinkActiveValue ( bool  linkActive)
inline

for internal use only

160 { m_linkActive = linkActive; }
bool m_linkActive
Definition: IPFTest.h:170

◆ GetArrowToNextActionList()

Object* GetArrowToNextActionList ( )
inline

for internal use only

165 { return m_arrow; }

Variable Documentation

◆ m_nextActionList

INode* m_nextActionList
protected

◆ m_arrow

Object* m_arrow
protected

◆ m_linkActive

bool m_linkActive
protected