This reference page is linked to from the following overview topics: Parent class descriptions.
Base class for user defined manipulator containers.
MPxManipContainer is the base class for user-defined container manipulators. This class is derived from MPxNode since manipulators in Maya are dependency nodes.
MPxManipContainer is a container manipulator that has at least one base manipulator. MPxManipContainer has methods for adding the following base manipulators types to the container: FreePointTriadManip, DirectionManip, DistanceManip, PointOnCurveManip, PointOnSurfaceManip, DiscManip, CircleSweepManip, ToggleManip, StateManip, and CurveSegmentManip.
A container manipulator has one converter which is the interface between the container's children manipulators and the node plugs they affect. The values on the converter that are related to children manipulators are called converterManipValues, and the values on the converter that are related to the node plugs are called converterPlugValues.
The conversion between converterManipValues and converterPlugValues are performed through conversion callback methods, except when there is a one-to-one connection between a converterManipValue and a converterPlugValue.
There are two kinds of conversion callback methods: manipToPlug and plugToManip. A plugToManipConversionCallback is used to calculate a converterManipValue from various converterPlugValues. This callback has access to all the converterPlugValues and returns the value of a converterManipValue. A manipToPlugConversionCallback is used to calculate a converterPlugValue from various converterManipValues. This callback has access to all the converterManipValues and returns the value of a converterPlugValue.
In order for an MPxManipContainer to be able to run, the manipulator needs to know that the initialization is finished through the finishAddingManips method.
#include <MPxManipContainer.h>
Public Types |
|
enum |
baseType { kFreePointTriadManip, kDirectionManip, kDistanceManip, kPointOnCurveManip, kPointOnSurfaceManip, kDiscManip, kCircleSweepManip, kToggleManip, kStateManip, kCurveSegmentManip, kCustomManip } |
Built-in manipulator types. More... |
|
typedef MManipData(MPxManipContainer::* | plugToManipConversionCallback )(unsigned int manipIndex) |
Pointer to a plug-to-manip conversion
callback function. |
|
typedef MManipData(MPxManipContainer::* | manipToPlugConversionCallback )(unsigned int plugIndex) |
Pointer to a manip-to-plug conversion
callback function. |
|
Public Member Functions |
|
MPxManipContainer () | |
Constructor. |
|
virtual | ~MPxManipContainer () |
Destructor. |
|
virtual MPxNode::Type | type () const |
This method returns the type of the node.
|
|
virtual void | draw (M3dView &view, const MDagPath &path, M3dView::DisplayStyle style, M3dView::DisplayStatus status) |
This method can be overloaded to customize
the drawing of the child manipulators. |
|
virtual MStatus | connectToDependNode (const MObject &dependNode) |
This method connects the manipulator to the
dependency node. |
|
virtual MStatus | createChildren () |
This method should be overridden in user
defined manipulators. |
|
MDagPath | addFreePointTriadManip (const MString &manipName, const MString &pointName) |
This method creates a FreePointTriadManip
and adds it to the MPxManipContainer
container. |
|
MDagPath | addDirectionManip (const MString &manipName, const MString &directionName) |
This method creates a DirectionManip and
adds it to the MPxManipContainer
container. |
|
MDagPath | addDistanceManip (const MString &manipName, const MString &distanceName) |
This method creates a DistanceManip and adds
it to the MPxManipContainer
container. |
|
MDagPath | addPointOnCurveManip (const MString &manipName, const MString ¶mName) |
This method creates a PointOnCurveManip and
adds it to the MPxManipContainer
container. |
|
MDagPath | addPointOnSurfaceManip (const MString &manipName, const MString ¶mName) |
This method creates a PointOnSurfaceManip
and adds it to the MPxManipContainer
container. |
|
MDagPath | addDiscManip (const MString &manipName, const MString &angleName) |
This method creates a DiscManip and adds it
to the MPxManipContainer
container. |
|
MDagPath | addCircleSweepManip (const MString &manipName, const MString &angleName) |
This method creates a CircleSweepManip and
adds it to the MPxManipContainer
container. |
|
MDagPath | addToggleManip (const MString &manipName, const MString &toggleName) |
This method creates a ToggleManip and adds
it to the MPxManipContainer
container. |
|
MDagPath | addStateManip (const MString &manipName, const MString &stateName) |
This method creates a StateManip and adds it
to the MPxManipContainer
container. |
|
MDagPath | addCurveSegmentManip (const MString &manipName, const MString &startParamName, const MString &endParamName) |
This method creates a CurveSegmentManip and
adds it to the MPxManipContainer
container. |
|
MDagPath | addRotateManip (const MString &manipName, const MString &rotationName) |
This method creates a rotate manipulator and
adds it to the MPxManipContainer
container. |
|
MDagPath | addScaleManip (const MString &manipName, const MString &scaleName) |
This method creates a scale manipulator and
adds it to the MPxManipContainer
container. |
|
MStatus | addMPxManipulatorNode (const MString &manipTypeName, const MString &manipName, MPxManipulatorNode *&proxyManip) |
This method creates a custom MPxManipulatorNode and
adds it to the MPxManipContainer
container. |
|
bool | isManipActive (const MFn::Type &manipType, MObject &manipObject) |
This method determines if custom manip is
active & gets the current manip object. |
|
MStatus | finishAddingManips () |
This method should be called from the
user-defined manipulator plug-in near the end of the
connectToDependNode method so that the converter in the manipulator
can be initialized. |
|
virtual MManipData | plugToManipConversion (unsigned int manipIndex) |
This virtual method calculates and returns
the requested manipulator value, based upon the values of plugs on
the nodes being manipulated. |
|
virtual MManipData | manipToPlugConversion (unsigned int manipIndex) |
This virtual method calculates and returns
the requested plug value, based upon the container's manipulator
values. |
|
void | addPlugToManipConversion (unsigned int manipIndex) |
This method adds a plug to manipulator
converter for the specified manipulator value (e.g. |
|
unsigned int | addManipToPlugConversion (MPlug &plug) |
This method adds a manipulator to plug
converter for the specified plug. |
|
void | addPlugToManipConversionCallback (unsigned int manipIndex, plugToManipConversionCallback callback) |
NO SCRIPT SUPPORT. |
|
unsigned int | addManipToPlugConversionCallback (MPlug &plug, manipToPlugConversionCallback callback) |
NO SCRIPT SUPPORT. |
|
MStatus | getConverterManipValue (unsigned int manipIndex, unsigned int &value) |
This method retrieves the value of a
converterManipValue of type unsigned int at a given index from the
converter. |
|
MStatus | getConverterManipValue (unsigned int manipIndex, double &value) |
This method retrieves the value of a
converterManipValue of type double at a given index from the
converter. |
|
MStatus | getConverterManipValue (unsigned int manipIndex, double &x, double &y) |
This method retrieves the x and y values of
a converterManipValue of type double at a given index from the
converter. |
|
MStatus | getConverterManipValue (unsigned int manipIndex, MPoint &point) |
This method retrieves the value of a
converterManipValue of type MPoint at a given index from
the converter. |
|
MStatus | getConverterManipValue (unsigned int manipIndex, MVector &vector) |
This method retrieves the value of a
converterManipValue of type MVector at a
given index from the converter. |
|
MStatus | getConverterManipValue (unsigned int manipIndex, MMatrix &matrix) |
This method retrieves the value of a
converterManipValue of type MMatrix at a
given index from the converter. |
|
MStatus | getConverterManipValue (unsigned int manipIndex, MEulerRotation &rotation) |
This method retrieves the value of a
converterManipValue of type MEulerRotation at a given index from the
converter. |
|
MStatus | getConverterManipValue (unsigned int manipIndex, MTransformationMatrix &xform) |
This method retrieves the value of a
converterManipValue of type MTransformationMatrix at a given index
from the converter. |
|
MStatus | getConverterPlugValue (unsigned int plugIndex, double &value) |
This method retrieves the value of a
converterPlugValue of type double at a given index from the
converter. |
|
MStatus | getConverterPlugValue (unsigned int plugIndex, double &x, double &y) |
This method retrieves the x and y values of
a converterPlugValue of type double at a given index from the
converter. |
|
MStatus | getConverterPlugValue (unsigned int plugIndex, MPoint &point) |
This method retrieves the value of a
converterPlugValue of type MPoint at a given index from
the converter. |
|
MStatus | getConverterPlugValue (unsigned int plugIndex, MVector &vector) |
This method retrieves the value of a
converterPlugValue of type MVector at
a given index from the converter. |
|
MStatus | getConverterPlugValue (unsigned int plugIndex, MMatrix &matrix) |
This method retrieves the value of a
converterPlugValue of type MMatrix at a
given index from the converter. |
|
MStatus | getConverterPlugValue (unsigned int plugIndex, MEulerRotation &rotation) |
This method retrieves the value of a
converterPlugValue of type MEulerRotation at a given index from the
converter. |
|
virtual MStatus | doPress () |
This method gets called when the manipulator
recieves a mouse down event. |
|
virtual MStatus | doDrag () |
This method gets called when the manipulator
recieves a mouse drag event. |
|
virtual MStatus | doRelease () |
This method gets called when the manipulator
recieves a mouse release event. |
|
Static Public Member Functions |
|
static MStatus | initialize () |
This method initializes the manipulator, and
should be overriden in user-defined manipulators. |
|
static MPxManipContainer * | newManipulator (const MString &manipName, MObject &manipObject, MStatus *ReturnStatus=NULL) |
This static function is used to create a
user-defined manipulator. |
|
static MStatus | addToManipConnectTable (MTypeId &) |
This method adds the user defined node as an
entry in the manipConnectTable so that when this node is selected
the user can use the show manip tool to get the user defined
manipulator associated with this node. |
|
static MStatus | removeFromManipConnectTable (MTypeId &) |
This method removes the user defined node
entry from the manipConnectTable. |
|
static const char * | className () |
Returns the name of this class. |
|
Friends |
|
class | MFnPlugin |
typedef MManipData(MPxManipContainer::* plugToManipConversionCallback)(unsigned int manipIndex) |
Pointer to a plug-to-manip conversion callback function.
[in] | manipIndex | Index of the manipulator value to be calculated. |
typedef MManipData(MPxManipContainer::* manipToPlugConversionCallback)(unsigned int plugIndex) |
Pointer to a manip-to-plug conversion callback function.
[in] | plugIndex | Index of the plug value to be calculated. |
enum baseType |
Built-in manipulator types.
MPxNode::Type type | ( | ) | const [virtual] |
This method returns the type of the node.
Reimplemented from MPxNode.
MStatus initialize | ( | ) | [static] |
This method initializes the manipulator, and should be overriden in user-defined manipulators.
MPxManipContainer * newManipulator | ( | const MString & | manipName, |
MObject & | manipObject, | ||
MStatus * | ReturnStatus =
NULL |
||
) | [static] |
This static function is used to create a user-defined manipulator.
The manipObject argument is set to the new manipulator node. Note that the manipName argument must be the name of a manipulator derived from MPxManipContainer. Also note that this method creates the newManipulator, but doesn't add it to the DAG. The primary use of this method is in conjunction with MPxSelectionContext::addManipulator, to add user-defined manipulators to a context.
[in] | manipName | manipulator name |
[out] | manipObject | manipulator object |
[out] | ReturnStatus | Status code. |
void draw | ( | M3dView & | view, |
const MDagPath & | path, | ||
M3dView::DisplayStyle | style, | ||
M3dView::DisplayStatus | status | ||
) | [virtual] |
This method can be overloaded to customize the drawing of the child manipulators.
If the default draw is also required, this method should be called from the derived method.
[in] | view | the view in which to draw |
[in] | path | the current path |
[in] | style | the display appearance |
[in] | status | the display status |
This method connects the manipulator to the dependency node.
This is a virtual method and needs to be overridden from the plug-in.
[in] | node | the node to which the manipulator should be connected |
MStatus createChildren | ( | ) | [virtual] |
This method should be overridden in user defined manipulators.
This method is called after the user node derived from MPxManipContainer is set up.
This method creates a FreePointTriadManip and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | pointName | point name |
This method creates a DirectionManip and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | directionName | direction name |
This method creates a DistanceManip and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | distanceName | distance name |
This method creates a PointOnCurveManip and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | paramName | parameter name |
This method creates a PointOnSurfaceManip and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | paramName | parameter name |
This method creates a DiscManip and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | angleName | angle name |
This method creates a CircleSweepManip and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | angleName | angle name |
This method creates a ToggleManip and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | toggleName | toggle name |
This method creates a StateManip and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | stateName | state name |
MDagPath addCurveSegmentManip | ( | const MString & | manipName, |
const MString & | startParamName, | ||
const MString & | endParamName | ||
) |
This method creates a CurveSegmentManip and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | startParamName | start parameter name |
[in] | endParamName | end parameter name |
This method creates a rotate manipulator and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | rotationName | name of the rotation vector |
This method creates a scale manipulator and adds it to the MPxManipContainer container.
[in] | manipName | manipulator name |
[in] | scaleName | name of the scale vector |
MStatus addMPxManipulatorNode | ( | const MString & | manipTypeName, |
const MString & | manipName, | ||
MPxManipulatorNode *& | proxyManip | ||
) |
This method creates a custom MPxManipulatorNode and adds it to the MPxManipContainer container.
[in] | manipTypeName | manipulator name |
[in] | manipName | name of the manip |
[out] | proxyManip | returns a pointer to the new manipulator |
This method determines if custom manip is active & gets the current manip object.
[in] | manipType | the type of the custom manip |
[in] | manipObject | manipulator object |
MStatus finishAddingManips | ( | ) |
This method should be called from the user-defined manipulator plug-in near the end of the connectToDependNode method so that the converter in the manipulator can be initialized.
The converter cannot be initialized until all the connections from the manip values to the plug values have been specified.
This method adds the user defined node as an entry in the manipConnectTable so that when this node is selected the user can use the show manip tool to get the user defined manipulator associated with this node.
Note that the name of the manipulator node has to be the name of the plug-in node appended with "Manip".
[in] | mid | id of the user defined node |
This method removes the user defined node entry from the manipConnectTable.
[in] | id | id of the user defined node |
MManipData plugToManipConversion | ( | unsigned int | manipIndex | ) | [virtual] |
This virtual method calculates and returns the requested manipulator value, based upon the values of plugs on the nodes being manipulated.
To use, call addPlugToManipConversion() for each manipulator value (e.g. the start point of a distance manip) you want this method to calculate, then implement this method to calculate those manipulator values. Each manipulator value is identified by the unique index returned by the corresponding method of its functionset (e.g. MFnDistanceManip::startPointIndex).
[in] | manipIndex | the index of the manipulator value to be calculated |
MManipData manipToPlugConversion | ( | unsigned int | plugIndex | ) | [virtual] |
This virtual method calculates and returns the requested plug value, based upon the container's manipulator values.
To use, call addManipToPlugConversion() for each plug whose value you want this method to calculate then implement this method to calculate those plug values. Each plug is identified by the unique index returned by the addManipToPlugConversion() call.
[in] | plugIndex | the index of the plug value to be calculated |
void addPlugToManipConversion | ( | unsigned int | manipIndex | ) |
This method adds a plug to manipulator converter for the specified manipulator value (e.g.
the start point of a distance manip). The converter must be implemented in the plugToManipConversion() virtual method of this class.
NOTE: The conversion methods and callback methods of this class should not be mixed. The conversion methods are: addManipToPlugConversion(), addManipToPlugConversion() The callback methods are: addPlugToManipConversionCallback() addManipToPlugConversionCallback()
[in] | manipIndex | the index of the manipulator value for which the converter is being requested. The index is determined by calling the appropriate method of the manipulator's functionset (e.g. MFnDistanceManip::startPointIndex). |
unsigned int addManipToPlugConversion | ( | MPlug & | plug | ) |
This method adds a manipulator to plug converter for the specified plug.
The converter must be implemented in the manipToPlugConversion() virtual method of this class.
NOTE: The conversion methods and callback methods of this class should not be mixed. The conversion methods are: addManipToPlugConversion(), addManipToPlugConversion() The callback methods are: addPlugToManipConversionCallback() addManipToPlugConversionCallback()
[in] | plug | the plug for which the converter is being requested. |
void addPlugToManipConversionCallback | ( | unsigned int | manipIndex, |
plugToManipConversionCallback | callback | ||
) |
NO SCRIPT SUPPORT.
This method adds a callback which calculates the specified manipulator value (e.g.
the start point of a distance manip) based on the plug values of the nodes being manipulated.
NOTE: The conversion methods and callback methods of this class should not be mixed. The conversion methods are: addManipToPlugConversion(), addManipToPlugConversion() The callback methods are: addPlugToManipConversionCallback() addManipToPlugConversionCallback()
[in] | manipIndex | the index of the manipulator value for which the callback will be registered. The index is determined by calling the appropriate method of the manipulator's functionset (e.g. MFnDistanceManip::startPointIndex). |
[in] | callback | the callback that calculates a converterManipValue at the specified index from converterPlugValues |
unsigned int addManipToPlugConversionCallback | ( | MPlug & | plug, |
manipToPlugConversionCallback | callback | ||
) |
NO SCRIPT SUPPORT.
This method adds a callback that calculates the specified plug value based on the container's manipulator values.
If the same callback is used to calculate several different plug values then the indices returned by this method can be used to distinguish between them.
NOTE: The conversion methods and callback methods of this class should not be mixed. The conversion methods are: addManipToPlugConversion(), addManipToPlugConversion() The callback methods are: addPlugToManipConversionCallback() addManipToPlugConversionCallback()
[in] | plug | the plug for which the callback will be registered |
[in] | callback | the callback that calculates a converterPlugValue for the specified plug from converterManipValues |
MStatus getConverterManipValue | ( | unsigned int | manipIndex, |
unsigned int & | value | ||
) |
This method retrieves the value of a converterManipValue of type unsigned int at a given index from the converter.
[in] | manipIndex | the index of the converterManipValue |
[out] | value | the value at the specified index |
MStatus getConverterManipValue | ( | unsigned int | manipIndex, |
double & | value | ||
) |
This method retrieves the value of a converterManipValue of type double at a given index from the converter.
[in] | manipIndex | the index of the converterManipValue |
[out] | value | the value at the specified index |
MStatus getConverterManipValue | ( | unsigned int | manipIndex, |
double & | x, | ||
double & | y | ||
) |
This method retrieves the x and y values of a converterManipValue of type double at a given index from the converter.
[in] | manipIndex | the index of the converterManipValue |
[out] | x | the x value at the specified index |
[out] | y | the y value at the specified index |
This method retrieves the value of a converterManipValue of type MPoint at a given index from the converter.
[in] | manipIndex | the index of the converterManipValue |
[out] | point | the value at the specified index |
This method retrieves the value of a converterManipValue of type MVector at a given index from the converter.
[in] | manipIndex | the index of the converterManipValue |
[out] | vector | the value at the specified index |
This method retrieves the value of a converterManipValue of type MMatrix at a given index from the converter.
[in] | manipIndex | the index of the converterManipValue |
[out] | matrix | the value at the specified index |
MStatus getConverterManipValue | ( | unsigned int | manipIndex, |
MEulerRotation & | rotation | ||
) |
This method retrieves the value of a converterManipValue of type MEulerRotation at a given index from the converter.
[in] | manipIndex | the index of the converterManipValue |
[out] | rotation | the value at the specified index |
MStatus getConverterManipValue | ( | unsigned int | manipIndex, |
MTransformationMatrix & | xform | ||
) |
This method retrieves the value of a converterManipValue of type MTransformationMatrix at a given index from the converter.
[in] | manipIndex | the index of the converterManipValue |
[out] | xform | the value at the specified index |
MStatus getConverterPlugValue | ( | unsigned int | plugIndex, |
double & | value | ||
) |
This method retrieves the value of a converterPlugValue of type double at a given index from the converter.
[in] | plugIndex | the index of the converterPlugValue |
[out] | value | the value at the specified index |
MStatus getConverterPlugValue | ( | unsigned int | plugIndex, |
double & | x, | ||
double & | y | ||
) |
This method retrieves the x and y values of a converterPlugValue of type double at a given index from the converter.
[in] | plugIndex | the index of the converterPlugValue |
[out] | x | the x value at the specified index |
[out] | y | the y value at the specified index |
This method retrieves the value of a converterPlugValue of type MPoint at a given index from the converter.
[in] | plugIndex | the index of the converterPlugValue |
[out] | point | the value at the specified index |
This method retrieves the value of a converterPlugValue of type MVector at a given index from the converter.
[in] | plugIndex | the index of the converterPlugValue |
[out] | vector | the value at the specified index |
This method retrieves the value of a converterPlugValue of type MMatrix at a given index from the converter.
[in] | plugIndex | the index of the converterPlugValue |
[out] | matrix | the value at the specified index |
MStatus getConverterPlugValue | ( | unsigned int | plugIndex, |
MEulerRotation & | rotation | ||
) |
This method retrieves the value of a converterPlugValue of type MEulerRotation at a given index from the converter.
[in] | plugIndex | the index of the converterPlugValue |
[out] | rotation | the value at the specified index |
MStatus doPress | ( | ) | [virtual] |
This method gets called when the manipulator recieves a mouse down event.
You should return kUnknownParameter to specify that maya should handle this connection or if you want maya to process the connection as well.
MStatus doDrag | ( | ) | [virtual] |
This method gets called when the manipulator recieves a mouse drag event.
You should return kUnknownParameter to specify that maya should handle this connection or if you want maya to process the connection as well.
MStatus doRelease | ( | ) | [virtual] |
This method gets called when the manipulator recieves a mouse release event.
You should return kUnknownParameter to specify that maya should handle this connection or if you want maya to process the connection as well.
const char * className | ( | ) | [static] |