- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Examples

- Class List
- Class Hierarchy
- Class Members

Public Types | Static Public Member Functions

# MPolyMessage Class Reference
OpenMaya - API module for common classes

This reference page is linked to from the following overview topics: Overview of example plug-ins, Example C++ plug-in descriptions.

Search for all occurrences

## Detailed Description

Polygon component id change messages.

This class is used to register callbacks for poly component id modification messages.

There is 1 add callback method which will add callbacks for the following messages:

- vertex component id modified
- edge component id modified
- face component id modified

To remove a callback use MMessage::removeCallback. All callbacks that are registered by a plug-in must be removed by that plug-in when it is unloaded. Failure to do so will result in a fatal error.

`#include <MPolyMessage.h>`

Inheritance diagram for MPolyMessage:
[legend]

List of all members.

## Public Types
enum | { kVertexIndex = 0, kEdgeIndex = 1, kFaceIndex = 2, kLastErrorIndex = 3 }
| Values passed in addPolyComponentIdChangeCallback's "wantIdModifications" array to indicate which component id changes should trigger the callback. More...
## Static Public Member Functions
static MCallbackId | addPolyComponentIdChangedCallback (MObject &node, bool wantIdModifications[], unsigned int count, MMessage::MComponentFunction func, void *clientData=NULL, MStatus *ReturnStatus=NULL)
| This method registers a callback that should be called whenever a poly component id is modified.
static MCallbackId | addPolyTopologyChangedCallback (MObject &node, MMessage::MNodeFunction func, void *clientData=NULL, MStatus *ReturnStatus=NULL)
| This method registers a callback that will be called when a node impacting the topology of a meshShape is modified.
static unsigned int | deletedId (void)
| This method returns a constant which is to be used to determine if a component id has been deleted.
static const char * | className ()
| Returns the name of this class.

## Member Enumeration Documentation

anonymous enum

Search for all occurrences

Values passed in addPolyComponentIdChangeCallback's "wantIdModifications" array to indicate which component id changes should trigger the callback.

Enumerator:

  kVertexIndex | vertex component id changed Search for all occurrences
  kEdgeIndex | edge component id changed Search for all occurrences
  kFaceIndex | face component id changed Search for all occurrences
  kLastErrorIndex | Search for all occurrences

## Member Function Documentation

MCallbackId addPolyComponentIdChangedCallback | ( | MObject & | node,
|  | bool | wantIdModifications[],
|  | unsigned int | count,
|  | MMessage::MComponentFunction | func,
|  | void * | clientData = `NULL`,
|  | MStatus * | ReturnStatus = `NULL`
| ) |  | `[static]`

Search for all occurrences

This method registers a callback that should be called whenever a poly component id is modified.

Currently, there are some cases where the component ids for a polygonal mesh can be modified without generating a callback or without generating a correct mapping. These cases are outlined below.

- Polygonal mesh has construction history enabled, and there is more than one topology changing operation in the history. In this case, the callback is only called when the component ID mapping changes for the most recent operation, and performs the mapping with respect to the input and output meshes for this operation node.

- Polygonal mesh has construction history enabled, and the most recent topology changing operation is no longer the most recent operation. In this case, no id remapping callbacks will be invoked when the attributes on the operation node are changed in the history.

- When undo is used to revert a topology changing operation, the callback will not be invoked. The MEventMessage class can be used to get notification when undo is performed.

Component id mapping should always work correctly when construction history is off. It should also work correctly when construction history is on and only the most recent operation is permitted to be adjusted (eg. changing the distance parameter for a merge vertex node, when merge vertices was the most recent operation.) In either case, undo will not produce a poly message callback.

Parameters:

  [in] | node | the node callback function should listen to
  [in] | wantIdModifications | array of booleans specifying what arrays should be provided to the callback function when it is invoked. The entries in this array are kVertexIndex, kEdgeIndex, kFaceIndex for receiving vertex, edge, and face data in the callback respectively.
  [in] | count | the size of the array wantIdModifications
  [in] | func | the callback function

- componentIds an array of component id mappings
- count the size of the array componentIds
- clientData User defined data passed to the callback function

Parameters:

  [in] | clientData | User defined data passed to the callback function
  [out] | ReturnStatus | status code

Returns:
  Identifier used for removing the callback.

Status Codes:
  - MS::kSuccess Operation succeeded
  - MS::kInsufficientMemory No memory available
  - MS::kFailure Error adding callback, at least one of the want*IdModifications parameters must be true

Examples:
  polyMessageCmd.cpp.

MCallbackId addPolyTopologyChangedCallback | ( | MObject & | node,
|  | MMessage::MNodeFunction | func,
|  | void * | clientData = `NULL`,
|  | MStatus * | ReturnStatus = `NULL`
| ) |  | `[static]`

Search for all occurrences

This method registers a callback that will be called when a node impacting the topology of a meshShape is modified.

Because the callback is invoked before the mesh has evaluated, the new topology data cannot be queried at the time the callback is received. If you want to receive a callback at a time when the new mesh data can be queried, use the following technique:

- Use this method to register a topology-changed callback.
- In the topology-changed callback, add an MNodeMessage::addAttributeChangedCallback on the mesh shape.
- In the attribute-changed callback, check the inputs for an MNodeMessage::kAttributeEval message received by the "outMesh" plug of the mesh.
- Once you have received the eval message on that plug, the attribute-changed callback can be removed and the mesh topology can be queried.

Parameters:

  [in] | node | the node the callback function should listen to
  [in] | func | the callback function

- node the node whose topolgy has changed

Parameters:

  [in] | clientData | User defined data passed to the callback function
  [out] | ReturnStatus | status code

Returns:
  Identifier used for removing the callback.

Status Codes:
  - MS::kSuccess Operation succeeded
  - MS::kInsufficientMemory No memory available
  - MS::kFailure Error adding callback, at least one of the want*IdModifications parameters must be true

unsigned int deletedId | ( | void |  | ) | `[static]`

Search for all occurrences

This method returns a constant which is to be used to determine if a component id has been deleted.

Compare component ids returned by the callback with the value return by this method. If they are the same then, the component id has been deleted.

Returns:
  Value of a deleted component id.

Examples:
  polyMessageCmd.cpp.

const char * className | ( |  | ) | `[static]`

Search for all occurrences

Returns the name of this class.

Returns:
  The name of this class.

Reimplemented from MMessage.

MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage
MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage MPolyMessage