C++ API Reference
|
Provides access to Evaluation Manager node information. More...
#include <MEvaluationNode.h>
Public Member Functions | |
~MEvaluationNode () | |
Destructor. | |
MEvaluationNode (const MEvaluationNode &evalNode) | |
Copy Constructor. More... | |
int | parentCount () const |
Returns the number of parent nodes this evaluation node has. More... | |
MEvaluationNode | parent (int index) const |
Returns the parent node of this evaluation node at given index. More... | |
int | childCount () const |
Returns the number of children nodes this evaluation node has. More... | |
MEvaluationNode | child (int index) const |
Returns the child node of this evaluation node at given index. More... | |
MEvaluationNodeIterator | iterator (MStatus *ReturnStatus=nullptr) const |
Returns an iterator at the beginning of the dirty plug list. More... | |
bool | dirtyPlugExists (const MObject &attribute, MStatus *ReturnStatus=nullptr) const |
Returns true if the specified attribute has a dirty plug. More... | |
MPlug | dirtyPlug (const MObject &attribute, MStatus *ReturnStatus=nullptr) const |
Returns the top-most plug for the specified attribute if the attribute has dirty plugs. More... | |
MObject | dependencyNode (MStatus *ReturnStatus=nullptr) const |
Returns the dependency node this evaluation node represents. More... | |
MDataBlock | datablock (MStatus *ReturnStatus=nullptr) const |
Returns the datablock for this node. More... | |
void | connect (MEvaluationNode &child, MStatus *ReturnStatus=nullptr) |
Connect two generic evaluation nodes. More... | |
void | skipEvaluation (const MObject &attribute, bool allowSingleDownstreamDependency=false, MStatus *ReturnStatus=nullptr) const |
Hint the Evaluation Manager that the attribute can be skipped for the current evaluation. More... | |
bool | skippingEvaluation (const MObject &attribute, MStatus *ReturnStatus=nullptr) const |
Returns true if the attribute was marked to be skipped. More... | |
Static Public Member Functions | |
static const char * | className () |
Returns the name of this class. More... | |
Provides access to Evaluation Manager node information.
An evaluation node and the connections between them form an evaluation graph. Each evaluation context uses a unique evaluation graph with its own set of evaluation nodes. Evaluation graphs are scheduled to speed up the operations within Maya.
This class contains methods for querying which attributes or plugs on a node will be set dirty prior to evaluation by the evaluation manager.
It is sometimes necessary to know the dirty state of plugs/attributes if your node is handling custom information. This handling would be done in the MPxNode preEvaluation()/postEvaluation() methods.
If you need to access the list of dirty plugs in the evaluation node then use the internal iterator:
for( MEvaluationNodeIterator nodeIt = theNode.iterator(); ! nodeIt.isDone(); nodeIt.next() ) { doSomePlugThing( nodeIt.plug() ); }
|
default |
Copy Constructor.
[in] | evalNode | An existing evaluation node |
int parentCount | ( | ) | const |
Returns the number of parent nodes this evaluation node has.
MEvaluationNode parent | ( | int | index | ) | const |
Returns the parent node of this evaluation node at given index.
[in] | index | Index of the parent evaluation node to access. No bound check is done so respect parentCount. |
int childCount | ( | ) | const |
Returns the number of children nodes this evaluation node has.
MEvaluationNode child | ( | int | index | ) | const |
Returns the child node of this evaluation node at given index.
[in] | index | Index of the child evaluation node to access. No bound check is done so respect childCount. |
MEvaluationNodeIterator iterator | ( | MStatus * | ReturnStatus = nullptr | ) | const |
Returns an iterator at the beginning of the dirty plug list.
[out] | ReturnStatus | Status Code |
Returns true if the specified attribute has a dirty plug.
This call should be made from MPxNode::preEvaluation() and MPxNode::postEvaluation() to verify which plugs are going to be dirty and computed.
[in] | attribute | Attribute whose root plug is to be checked for membership in the dirty plug list |
[out] | ReturnStatus | Status Code |
Returns the top-most plug for the specified attribute if the attribute has dirty plugs.
This call should be made from MPxNode::preEvaluation() and MPxNode::postEvaluation() to access a networked plug which is going to be dirty and computed.
[in] | attribute | Attribute whose root plug is returned if it is in the dirty plug list |
[out] | ReturnStatus | Status Code |
Returns the dependency node this evaluation node represents.
[out] | ReturnStatus | Status Code |
MDataBlock datablock | ( | MStatus * | ReturnStatus = nullptr | ) | const |
Returns the datablock for this node.
[out] | ReturnStatus | Status Code |
void connect | ( | MEvaluationNode & | child, |
MStatus * | ReturnStatus = nullptr |
||
) |
Connect two generic evaluation nodes.
Generic evaluation nodes are explicitly created by topology evaluators to override topology of base layer evaluation nodes claimed by topology cluster nodes.
[in] | child | Generic evaluation node to connect as a child |
[out] | ReturnStatus | Status Code |
void skipEvaluation | ( | const MObject & | attribute, |
bool | allowSingleDownstreamDependency = false , |
||
MStatus * | ReturnStatus = nullptr |
||
) | const |
Hint the Evaluation Manager that the attribute can be skipped for the current evaluation.
This method tries to mark the attribute for the Evaluation Manager to skip its evaluation.
Attributes can be marked for their evaluation to be skipped if it's safe to do so. If the attribute is skipped, it will not be evaluated but will be left dirty so that subsequent pull evaluation will trigger evaluation and report the right value.
If the attribute is animated and driving more than one connected node, it is never safe to skip its evaluation, because the downstream nodes could trigger concurrent, and unsafe, pull evaluation. Therefore, this method does not have an effect if the attribute has more than one downstream dependency.
If the attribute has a single downstream dependency, it is potentially safe. Only a single node can pull on this attribute, but other nodes might be pulling on other attributes on the same node, which could result in a race condition. If the attribute is the only one skipped, the skipEvaluation method can allow a single connection through the allowSingleDownstreamDependency parameter.
If this attribute is not set, the skipEvaluation method will have the safest possible behavior of only skipping the evaluation if there are no downstream dependencies for the attribute to skip.
[in] | attribute | Attribute whose root plug is to be marked for skipping |
[in] | allowSingleDownstreamDependency | True to allow one downstream dependency, false for the safest behavior of allowing none. |
[out] | ReturnStatus | Status Code |
Returns true if the attribute was marked to be skipped.
[in] | attribute | Attribute whose root plug is to be checked for skipping |
[out] | ReturnStatus | Status Code |
|
static |
Returns the name of this class.