#include <MItDependencyGraph.h>
Iterate over Dependency Graph (DG) Nodes or Plugs starting at a specified root Node or Plug.
Set and query the root of the iteration.
Set and query the direction (downstream or upstream), traversal priority (depth first or breadth first) and level of detail (Node level or Plug level) of the iteration.
Set and disable a filter to iterate over only speicifc types (MFn::Type) of Nodes.
Reset the root, filter, direction, traversal priority and level of detail of the iteration.
Prune branches of the graph from iteration.
In Maya, all geometry, animation and rendering information is implemented in nodes in the Dependency Graph (DG). The DG includes the Directed Acyclic Graph (DAG). Therefore, all DAG nodes are also DG nodes. The data on nodes is associated with Attributes. Attributes on nodes are connected to Attributes on other nodes via plugs on the Attributes. Plugs are, in effect the external intefaces of Attributes.
The DG Iterator Class (MItDependencyGraph) provides methods for iterating over either nodes or plugs, as well as methods for setting and querying the characteristics and behaviour of the iterator.
This iterator will traverse all attributes upstream or downstream from the root node of the traversal. For non root nodes, only attributes that are affected by the incoming attribute to that node will be traversed. Hence, only nodes to which data from the root node is flowing will be traversed.
The DG Iterator is used in conjunction with the Maya Object (MObject), plug (MPlug), Maya Object Array (MObjectArray) and plug Array (MPlugArray) classes.
It is also useful to use Function Sets specific to the nodes returned by the iterator to query and modify the nodes in the DG.
The DG itself can be modified using a DG Modifer (MDGModifier).
Additionally, nodes can be added to and retrieved from selection lists using the Selection List (MSelectionList) class and Selection List Iterator (MItSelectionList). This can be useful for obtaining the root node for an iteration.
Attributes on the nodes can be manipulated using the Attribute Function Set (MFnAttribute) and its derivations.
Public Types | |
enum | Direction { kDownstream, kUpstream } |
Direction within the DG relative to root Node or Plug. More... | |
enum | Traversal { kDepthFirst, kBreadthFirst } |
Perform a depth first or breadth first traversal. More... | |
enum | Level { kNodeLevel, kPlugLevel } |
Level of detail of the iteration. More... | |
Public Member Functions | |
MItDependencyGraph (MObject &rootNode, MFn::Type filter=MFn::kInvalid, Direction direction=kDownstream, Traversal traversal=kDepthFirst, Level level=kNodeLevel, MStatus *ReturnStatus=NULL) | |
MItDependencyGraph (MPlug &rootPlug, MFn::Type filter=MFn::kInvalid, Direction direction=kDownstream, Traversal traversal=kDepthFirst, Level level=kPlugLevel, MStatus *ReturnStatus=NULL) | |
MItDependencyGraph (MObject &rootNode, MPlug &rootPlug, MIteratorType &infoObject, Direction direction=kDownstream, Traversal traversal=kDepthFirst, Level level=kNodeLevel, MStatus *ReturnStatus=NULL) | |
~MItDependencyGraph () | |
MStatus | reset () |
MStatus | resetTo (MObject &rootNode, MFn::Type filter=MFn::kInvalid, Direction direction=kDownstream, Traversal traversal=kDepthFirst, Level level=kNodeLevel) |
MStatus | resetTo (MPlug &rootPlug, MFn::Type filter=MFn::kInvalid, Direction direction=kDownstream, Traversal traversal=kDepthFirst, Level level=kPlugLevel) |
MStatus | resetTo (MObject *rootNode, MPlug *rootPlug, MIteratorType &infoObject, Direction direction=kDownstream, Traversal traversal=kDepthFirst, Level level=kPlugLevel) |
MObject | rootNode (MStatus *ReturnStatus=NULL) |
MPlug | rootPlug (MStatus *ReturnStatus=NULL) |
MFn::Type | currentFilter (MStatus *ReturnStatus=NULL) |
MStatus | setCurrentFilter (MFn::Type filter=MFn::kInvalid) |
MStatus | resetFilter () |
bool | isPruningOnFilter (MStatus *ReturnStatus=NULL) |
MStatus | enablePruningOnFilter () |
MStatus | disablePruningOnFilter () |
bool | isDirectionDownStream (MStatus *ReturnStatus=NULL) |
Direction | currentDirection (MStatus *ReturnStatus=NULL) |
MStatus | toggleDirection () |
bool | isTraversalDepthFirst (MStatus *ReturnStatus=NULL) |
Traversal | currentTraversal (MStatus *ReturnStatus=NULL) |
MStatus | toggleTraversal () |
bool | atNodeLevel (MStatus *ReturnStatus=NULL) |
Level | currentLevel (MStatus *ReturnStatus=NULL) |
MStatus | toggleLevel () |
MStatus | next () |
bool | isDone (MStatus *ReturnStatus=NULL) |
MStatus | prune () |
MObject | thisNode (MStatus *ReturnStatus=NULL) |
This method is obsolete. | |
MObject | currentItem (MStatus *ReturnStatus=NULL) |
bool | thisNodeHasUnknownType (MStatus *ReturnStatus=NULL) |
MPlug | thisPlug (MStatus *ReturnStatus=NULL) |
MPlug | previousPlug (MStatus *ReturnStatus=NULL) |
MStatus | getNodesVisited (MObjectArray &nodesVisted) const |
MStatus | getPlugsVisited (MPlugArray &plugsVisted) const |
MStatus | getNodePath (MObjectArray &path) const |
MStatus | getPlugPath (MPlugArray &path) const |
MItDependencyGraph::MItDependencyGraph | ( | MObject & | rootNode, | |
MFn::Type | filter = MFn::kInvalid , |
|||
Direction | direction = kDownstream , |
|||
Traversal | traversal = kDepthFirst , |
|||
Level | level = kNodeLevel , |
|||
MStatus * | ReturnStatus = NULL | |||
) |
Constructor for a DG Iterator with a root node. If a valid filter is enabled, the iterator automatically advances to the next node after the root node that matches the filter. If no matching node is found the status is failure (MFn::kFailure).
[in] | rootNode | Root node |
[in] | filter | Object type filter (see MFn::Type) |
[in] | direction | Primary direction of iteration |
[in] | traversal | Order of traversal |
[in] | level | Level of detail of the iteration |
[out] | ReturnStatus | Status Code (see below) |
MItDependencyGraph::MItDependencyGraph | ( | MPlug & | rootPlug, | |
MFn::Type | filter = MFn::kInvalid , |
|||
Direction | direction = kDownstream , |
|||
Traversal | traversal = kDepthFirst , |
|||
Level | level = kPlugLevel , |
|||
MStatus * | ReturnStatus = NULL | |||
) |
Constructor for a DG Iterator with a root plug. The type of root and the level of the iteration are independent. If a valid filter is enabled, the iterator automatically advances to the next node after the root node that matches the filter. If no matching node is found the status is failure (MFn::kFailure).
[in] | rootPlug | Root plug |
[in] | filter | Object type filter (see MFn::Type) |
[in] | direction | Primary direction of iteration |
[in] | traversal | Order of traversal |
[in] | level | Level of detail of the iteration |
[out] | ReturnStatus | Status Code (see below) |
MItDependencyGraph::MItDependencyGraph | ( | MObject & | rootNode, | |
MPlug & | rootPlug, | |||
MIteratorType & | infoObject, | |||
Direction | direction = kDownstream , |
|||
Traversal | traversal = kDepthFirst , |
|||
Level | level = kNodeLevel , |
|||
MStatus * | ReturnStatus = NULL | |||
) |
Constructor for a DG Iterator with a root node or a root plug. If the root node is to be specified, then the root plug will be null. If root plug is non-null, then null should be passed on to root node. The type of root and the level of the iteration are independent. If a valid filter is enabled, the iterator automatically advances to the next node after the root node that matches one of the filter in the filter list, which is specified thro' MIteratorType object. no matching node is found the status is failure (MFn::kFailure).
[in] | rootNode | Root node, to which the iterator has to be set to, This can be NULL if we are resetting the root to plug object. |
[in] | rootPlug | Root plug, to which the iterator has to be set to, This can be NULL if we are resetting the root to node object. |
[in] | infoObject | MIteratorType object, having info about the filter list. |
[in] | direction | Primary direction of iteration |
[in] | traversal | Order of traversal |
[in] | level | Level of detail of the iteration |
[out] | ReturnStatus | Status Code (see below) |
MItDependencyGraph::~MItDependencyGraph | ( | ) |
Class destructor.
MStatus MItDependencyGraph::reset | ( | ) |
Clears iterator data and resets the iterator to the root node or plug. If a valid filter is enabled, the iterator automatically advances to the next node after the root node that matches the filter. If no matching node is found the status is failure (MFn::kFailure).
MStatus MItDependencyGraph::resetTo | ( | MObject & | rootNode, | |
MFn::Type | filter = MFn::kInvalid , |
|||
Direction | direction = kDownstream , |
|||
Traversal | traversal = kDepthFirst , |
|||
Level | level = kNodeLevel | |||
) |
Clears iterator data and re-initializes the iterator. If a valid filter is provided, the iterator automatically advances to the next node after the root node that matches the filter. If no matching node is found the status is failure (MFn::kFailure).
[in] | rootNode | Root node of the iteration |
[in] | filter | Object type filter (see MFn::Type) |
[in] | direction | Primary direction of iteration |
[in] | traversal | Order of traversal |
[in] | level | Level of detail of the iteration |
MStatus MItDependencyGraph::resetTo | ( | MPlug & | rootPlug, | |
MFn::Type | filter = MFn::kInvalid , |
|||
Direction | direction = kDownstream , |
|||
Traversal | traversal = kDepthFirst , |
|||
Level | level = kPlugLevel | |||
) |
Clears iterator data and re-initializes the iterator. If a valid filter is enabled, the iterator automatically advances to the next node after the root node that matches the filter. If no matching node is found the status is failure (MFn::kFailure).
[in] | rootPlug | Root plug of the iteration |
[in] | filter | Object type filter (see MFn::Type) |
[in] | direction | Primary direction of iteration |
[in] | traversal | Order of traversal |
[in] | level | Level of detail of the iteration |
MStatus MItDependencyGraph::resetTo | ( | MObject * | rootNode, | |
MPlug * | rootPlug, | |||
MIteratorType & | infoObject, | |||
Direction | direction = kDownstream , |
|||
Traversal | traversal = kDepthFirst , |
|||
Level | level = kPlugLevel | |||
) |
Clears iterator data and re-initializes the iterator. The filter list is reset to the new list specified thro' MIteratorType object. If a valid filter is enabled, the iterator automatically advances to the next node after the root node/plug that matches the filter. If no matching node is found the status is failure (MFn::kFailure).
[in] | rootNode | Root Node of the iteration. This can be null if the root has to be reset to plug. |
[in] | rootPlug | Root plug of the iteration. This can be null if the root has to be reset to node. |
[in] | infoObject | MIteratorType Object which has info about the filter list and the object type, the root will be reset to. |
[in] | direction | Primary direction of iteration |
[in] | traversal | Order of traversal |
[in] | level | Level of detail of the iteration |
Retrieves the root node of the iteration.
[out] | ReturnStatus | Status Code (see below) |
Retrieves the root plug of the iteration.
[out] | ReturnStatus | Status Code (see below) |
Retrieves the current node type filter.
[out] | ReturnStatus | Status Code (see below) |
Sets the node or plug filter. Plug filtering is based on the type of the corresponding Attribute. Defaults to disabled (MFn::kInvalid). If a valid filter is specified, the iterator automatically advances to the next node that matches the filter. If no matching node status is failure (MFn::kFailure).
Disables pruning on the new filter (default). Use enablePruningOnFilter() method to enable pruning. No other iterator data is changed. If new filter is the same as current filter, no action is taken.
[in] | filter | node or Attribute type filter (see MFn::Type) |
MStatus MItDependencyGraph::resetFilter | ( | ) |
Resets the node or plug filter to default, MFn::kInvalid (filter disabled). Disables pruning on the filter (default). Resets the iterator.
bool MItDependencyGraph::isPruningOnFilter | ( | MStatus * | ReturnStatus = NULL |
) |
Tests whether or not the iteration path is pruned automatically at nodes or plugs which do not match the filter.
[in] | ReturnStatus | Status Code (see below) |
MStatus MItDependencyGraph::enablePruningOnFilter | ( | ) |
Enables automatic pruning of iteration path at nodes or plugs which do not match the filter.
MStatus MItDependencyGraph::disablePruningOnFilter | ( | ) |
Disables automatic pruning of iteration path at nodes or plugs which do not match the filter.
bool MItDependencyGraph::isDirectionDownStream | ( | MStatus * | ReturnStatus = NULL |
) |
Tests whether or not the iteration is moving downstream (in the direction of data flow) in the DG.
[out] | ReturnStatus | Status Code (see below) |
MItDependencyGraph::Direction MItDependencyGraph::currentDirection | ( | MStatus * | ReturnStatus = NULL |
) |
Reports the direction of the iteration through the graph.
[out] | ReturnStatus | Status Code (see below) |
MStatus MItDependencyGraph::toggleDirection | ( | ) |
Toggles the direction of the iteration. Resets the root of the iteration to the current node or plug depending on the level of iteration. Clears iterator path data. If a valid filter is enabled, the iterator automatically advances to the next node that matches the filter. If no matching node is found the status is failure (MFn::kFailure). No other iterator parameters are affected.
bool MItDependencyGraph::isTraversalDepthFirst | ( | MStatus * | ReturnStatus = NULL |
) |
Tests whether or not the iteration is proceeding depth first (away from the root of the iteration) in the DG.
[out] | ReturnStatus | Status Code (see below) |
MItDependencyGraph::Traversal MItDependencyGraph::currentTraversal | ( | MStatus * | ReturnStatus = NULL |
) |
Reports the traversal mode of the iteration through the graph.
[out] | ReturnStatus | Status Code (see below) |
MStatus MItDependencyGraph::toggleTraversal | ( | ) |
Toggles the traversal of the iteration. Resets the root of the iteration to the current node or plug depending on the level of iteration. Clears iterator path data. If a valid filter is enabled, the iterator automatically advances to the next node that matches the filter. If no matching node is found the status is failure (MFn::kFailure). No other iterator parameters are affected.
bool MItDependencyGraph::atNodeLevel | ( | MStatus * | ReturnStatus = NULL |
) |
Tests whether or not the iteration is at the node level of detail (every node is visited only once) in the DG.
[out] | ReturnStatus | Status Code (see below) |
MItDependencyGraph::Level MItDependencyGraph::currentLevel | ( | MStatus * | ReturnStatus = NULL |
) |
Reports the level of the iteration through the graph.
[out] | ReturnStatus | Status Code (see below) |
MStatus MItDependencyGraph::toggleLevel | ( | ) |
Toggles the level of the iteration. Resets the root of the iteration to the current node or plug depending on the level of iteration. Clears iterator path data. If a valid filter is enabled, the iterator automatically advances to the next node that matches the filter. If no matching node is found the status is failure (MFn::kFailure). No other iterator parameters are affected.
MStatus MItDependencyGraph::next | ( | ) |
Iterates to the next node or plug in accordance with the direction, traversal, level and filter. If a valid filter is set, the iterator only visits those nodes that match the filter. When filtering is enabled nodes that have unknown type are treated as non-matching nodes. With filtering disabled, iteration to a node with an unknown type is treated as a failure. An attempt to iterate when there is nothing left to iterate over results in failure.
bool MItDependencyGraph::isDone | ( | MStatus * | ReturnStatus = NULL |
) |
Indicates whether or not all nodes or plugs have been iterated over in accordance with the direction, traversal, level and filter. If a valid filter is set, the iterator only visits those nodes that match the filter.
[out] | ReturnStatus | Status Code (see below) |
MStatus MItDependencyGraph::prune | ( | ) |
Prunes the search path at the current plug. Iterator will not visit any of the plugs connected to the pruned plug.
This method is obsolete.
[out] | ReturnStatus | Status Code (see below) |
Retrieves the current node of the iteration. Results in a null object on failure or if the node is of a unrecognized type.
[out] | ReturnStatus | Status Code (see below) |
bool MItDependencyGraph::thisNodeHasUnknownType | ( | MStatus * | ReturnStatus = NULL |
) |
Indicates whether or not the current node has an unrecognised type. This is useful if an unexpected failure is encountered in the next() or thisNode() methods.
Returns true only if node exists but is not a recognizable type.
Returns false if node exists and is recognizable. Also returns false on failure or if the iteration is done.
[out] | ReturnStatus | Status Code (see below) |
Retrieves the current plug of the iteration. Results in a null plug on failure.
[out] | ReturnStatus | Status Code (see below) |
Retrieves the previous plug of the iteration. Results in a null plug on failure. Null plug may also indicate that the current plug is the root plug.
[out] | ReturnStatus | Status Code (see below) |
MStatus MItDependencyGraph::getNodesVisited | ( | MObjectArray & | nodes | ) | const |
Retrieves all nodes visited during the iteration. State of the provided array is undefined if this method fails.
[out] | nodes | Target array for retrieved nodes. On success contains all nodes visited |
MStatus MItDependencyGraph::getPlugsVisited | ( | MPlugArray & | plugs | ) | const |
Retrieves all plugs visited during the iteration. State of the provided array is undefined if this method fails.
[out] | plugs | Target array for retrieved plugs. On success contains all plugs visited |
MStatus MItDependencyGraph::getNodePath | ( | MObjectArray & | path | ) | const |
Retrieves the direct path from the current node to the root node. Path does not include the current node. State of the provided array is undefined if this method fails.
[out] | path | Target array for retrieved path. On success contains direct path from the current node to the root node |
MStatus MItDependencyGraph::getPlugPath | ( | MPlugArray & | path | ) | const |
Retrieves the direct path from the current plug to the root plug. Path does not include the current plug. State of the provided array is undefined if this method fails.
[out] | path | Target array for retrieved path. On success contains direct path from the current plug to the root plug |
Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. | Generated with 1.5.6 |